mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-28 09:50:09 +00:00
200 lines
6.7 KiB
HTML
200 lines
6.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>ImageGrid.Viewer</title>
|
|
<meta charset="utf-8" />
|
|
<!--meta http-equiv="Content-Security-Policy"
|
|
content="script-src 'self' 'unsafe-inline' 'unsafe-eval';"-->
|
|
<meta name="msapplication-tap-highlight" content="no" />
|
|
<meta name="viewport" content="width=device-width, user-scalable=no" />
|
|
<!-- Fonts -->
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-Bold.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-BoldItalic.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-ExtraBold.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-Italic.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-Light.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-LightItalic.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-Regular.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-Semibold.ttf" />
|
|
<link rel="prefetch" href="css/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf" />
|
|
<!-- CSS -->
|
|
<link rel="stylesheet" href="css/fonts.css" />
|
|
<link rel="stylesheet" href="css/layout.css" />
|
|
<link rel="stylesheet" href="css/editor.css" />
|
|
<link rel="stylesheet" href="css/widget/browse.css" />
|
|
<link rel="stylesheet" href="css/widget/overlay.css" />
|
|
<link rel="stylesheet" href="css/widget/drawer.css" />
|
|
<link rel="stylesheet" href="css/loader.css" />
|
|
<link rel="stylesheet" href="css/experimenting.css" />
|
|
|
|
<!-- Scripts -->
|
|
|
|
<!-- Global scope pollution test -->
|
|
<!--script>
|
|
var __window = {...window}
|
|
function scopeDiff(cur=window, base=__window){
|
|
return Object.keys(cur)
|
|
.filter(function(k){
|
|
return base[k] !== cur[k] })
|
|
.reduce(function(res, k){
|
|
res[k] = cur[k]
|
|
return res }, {})}
|
|
</script-->
|
|
|
|
<!-- DevTools fail-safe for electron/nw... -->
|
|
<script>
|
|
// used to track stray globals...
|
|
var trackGlobal = function(name){
|
|
Object.defineProperty(window, name, {
|
|
get: function(){
|
|
return this['__tracked_'+name] },
|
|
set: function(value){
|
|
this['__tracked_'+name] = value
|
|
debugger },
|
|
}) }
|
|
|
|
if(window.require){
|
|
Object.defineProperty(window, 'STARTUP_DEVTOOLS_TIMEOUT', {
|
|
get: function(){
|
|
return parseInt(localStorage.STARTUP_DEVTOOLS_TIMEOUT || 5000) },
|
|
set: function(value){
|
|
if(value == null){
|
|
delete localStorage.STARTUP_DEVTOOLS_TIMEOUT
|
|
return }
|
|
value = parseInt(value)
|
|
;(value || value == 0)
|
|
&& (localStorage.STARTUP_DEVTOOLS_TIMEOUT = value) }, })
|
|
|
|
window.__devtools_failsafe = setTimeout(function(){
|
|
// nw...
|
|
if(window.nw){
|
|
nw.Window.get().showDevTools()
|
|
// electron...
|
|
} else {
|
|
try{
|
|
require('electron').ipcRenderer.send('openDevTools')
|
|
} catch(err){ } }
|
|
}, STARTUP_DEVTOOLS_TIMEOUT) }
|
|
</script>
|
|
|
|
<!-- Electron fix -->
|
|
<script>if(typeof(module) == 'object'){ window.__module = module; module = undefined }</script>
|
|
|
|
<!-- jQuery -->
|
|
<script src="ext-lib/jquery.js"></script>
|
|
<script src="ext-lib/jquery-ui.js"></script>
|
|
<script src="ext-lib/jquery.ui.touch-punch.min.js"></script>
|
|
<!-- velocity.js -->
|
|
<script src="ext-lib/velocity.min.js"></script>
|
|
<!-- hammer.js -->
|
|
<script src="ext-lib/hammer.min.js"></script>
|
|
<script src="ext-lib/jquery.hammer.js"></script>
|
|
<!-- lib -->
|
|
<script src="lib/jli.js"></script>
|
|
|
|
<!-- Electron unfix -->
|
|
<script>if(window.__module){ module = window.__module; delete window.__module }</script>
|
|
|
|
<!-- RequireJS -->
|
|
<script>
|
|
// Electron...
|
|
// NOTE: we need to load the electron way first because the other way
|
|
// around requirejs messes things up...
|
|
if(typeof(process) != 'undefined'){
|
|
require('./cfg/requirejs')(require)
|
|
requirejs('ui') }
|
|
</script>
|
|
<script src="node_modules/requirejs/require.js"></script>
|
|
<script>
|
|
// Browser...
|
|
if(typeof(process) == 'undefined'){
|
|
requirejs(['cfg/requirejs'])
|
|
requirejs(['ui']) }
|
|
</script>
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<!-- XXX STUB: this fixes Chrome's tendency to mess up full screen colors
|
|
unless a video is present and visible... -->
|
|
<video style="display:block; position:absolute; width:1px; height:1px; top:0px; left:0px" tabindex="-1">
|
|
<source src="data/blank.mp4" type="video/mp4">
|
|
</video>
|
|
|
|
<!-- XXX STUB: this lives in css/filters.svg but Chrome refuses to reference
|
|
it's internals from the file:// protocol... -->
|
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="0%" height="0%" class="svg-filters">
|
|
<!-- edge detect -->
|
|
<filter id="EdgeDetect">
|
|
<!--feConvolveMatrix order="3 3" preserveAlpha="true" divisor="1" bias="-1.4" kernelMatrix="-1 -1 -1 -1 9 -1 -1 -1 -1"/-->
|
|
<feConvolveMatrix order="3 3" preserveAlpha="true" kernelMatrix="-1 -1 -1 -1 8 -1 -1 -1 -1"/>
|
|
</filter>
|
|
|
|
<!-- shadows and highlights
|
|
gradient map: [blue 0-5% black 93-96% white]
|
|
via: https://justcode.today/filters/ -->
|
|
<!-- NOTE: not sure about the tail end here (white zone) might be a
|
|
bit too flat... -->
|
|
<filter id="ShadowsAndHilights">
|
|
<fecolormatrix type="saturate" values="0" />
|
|
<feComponentTransfer color-interpolation-filters="sRGB" result="cutoff">
|
|
<feFuncR type="table" tableValues="
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0.33 0.67 1 1 1 1" />
|
|
<feFuncG type="table" tableValues="
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0.33 0.67 1 1 1 1" />
|
|
<feFuncB type="table" tableValues="
|
|
1 0.8 0.6 0.4 0.2 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0 0 0 0 0 0
|
|
0 0 0 0 0.33 0.67 1 1 1 1"/>
|
|
</feComponentTransfer>
|
|
<feBlend mode="difference" in="SourceGraphic" in2="cutoff"/>
|
|
</filter>
|
|
|
|
<!-- gamma shadows -->
|
|
<!-- XXX should this be gamma or a transfer function?? -->
|
|
<filter id="GammaShadows">
|
|
<feComponentTransfer color-interpolation-filters="sRGB">
|
|
<feFuncR type="gamma" exponent="0.3" amplitude="1.0" offset="0"></feFuncR>
|
|
<feFuncG type="gamma" exponent="0.3" amplitude="1.0" offset="0"></feFuncG>
|
|
<feFuncB type="gamma" exponent="0.3" amplitude="1.0" offset="0"></feFuncB>
|
|
</feComponentTransfer>
|
|
</filter>
|
|
</svg>
|
|
|
|
|
|
<!-- The Viewer block (see: imagegrid/ribbons.js) -->
|
|
<div class="viewer gray marks-visible" tabindex="0">
|
|
<div class="drag-bar"></div>
|
|
</div>
|
|
|
|
|
|
<!-- vim:set ts=4 sw=4 spell nowrap : -->
|
|
</body>
|
|
</html>
|