mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 02:10:08 +00:00
some book-keeping + global scope leaks cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
f7d345b4ea
commit
cdbdf130de
@ -17,11 +17,10 @@
|
|||||||
* require('./cfg/requirejs.js')(require)
|
* require('./cfg/requirejs.js')(require)
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************/(function(){
|
||||||
|
|
||||||
var _requirejs = typeof(requirejs) != 'undefined' && requirejs
|
var _requirejs = typeof(requirejs) != 'undefined' && requirejs
|
||||||
|
|
||||||
|
|
||||||
var setup = function(require){
|
var setup = function(require){
|
||||||
var res = {}
|
var res = {}
|
||||||
var requirejs = _requirejs
|
var requirejs = _requirejs
|
||||||
@ -130,6 +129,5 @@ typeof(process) == 'undefined' ?
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* vim:set ts=4 sw=4 : */
|
* vim:set ts=4 sw=4 : */ })()
|
||||||
|
|||||||
12
Viewer/e.js
12
Viewer/e.js
@ -8,6 +8,18 @@
|
|||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
// Global scope pollution test...
|
||||||
|
global.__global = {...global}
|
||||||
|
global.scopeDiff = function(cur=global, base=__global){
|
||||||
|
return Object.keys(cur)
|
||||||
|
.filter(function(k){ return base[k] !== cur[k] })
|
||||||
|
.reduce(function(res, k){
|
||||||
|
res[k] = cur[k]
|
||||||
|
return res }, {})}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************/
|
||||||
|
|
||||||
//require('v8-compile-cache')
|
//require('v8-compile-cache')
|
||||||
|
|
||||||
var electron = require('electron')
|
var electron = require('electron')
|
||||||
|
|||||||
12
Viewer/ig.js
12
Viewer/ig.js
@ -8,6 +8,18 @@
|
|||||||
|
|
||||||
//var DEBUG = DEBUG != null ? DEBUG : true
|
//var DEBUG = DEBUG != null ? DEBUG : true
|
||||||
|
|
||||||
|
// Global scope pollution test...
|
||||||
|
global.__global = global.__global || {...global}
|
||||||
|
global.scopeDiff = function(cur=global, base=__global){
|
||||||
|
return Object.keys(cur)
|
||||||
|
.filter(function(k){ return base[k] !== cur[k] })
|
||||||
|
.reduce(function(res, k){
|
||||||
|
res[k] = cur[k]
|
||||||
|
return res }, {})}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************/
|
||||||
|
|
||||||
require('v8-compile-cache')
|
require('v8-compile-cache')
|
||||||
// NOTE: this fixes several issues with lib/util conflicting with stuff...
|
// NOTE: this fixes several issues with lib/util conflicting with stuff...
|
||||||
require('repl')
|
require('repl')
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -29,6 +29,19 @@
|
|||||||
<link rel="stylesheet" href="css/experimenting.css" />
|
<link rel="stylesheet" href="css/experimenting.css" />
|
||||||
|
|
||||||
<!-- Scripts -->
|
<!-- 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... -->
|
<!-- DevTools fail-safe for electron/nw... -->
|
||||||
<script>
|
<script>
|
||||||
if(window.require){
|
if(window.require){
|
||||||
@ -56,7 +69,7 @@ if(window.require){
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Electron fix -->
|
<!-- Electron fix -->
|
||||||
<script>if(typeof(module) == 'object'){ window.module = module; module = undefined }</script>
|
<script>if(typeof(module) == 'object'){ window.__module = module; module = undefined }</script>
|
||||||
|
|
||||||
<!-- jQuery -->
|
<!-- jQuery -->
|
||||||
<script src="ext-lib/jquery.js"></script>
|
<script src="ext-lib/jquery.js"></script>
|
||||||
@ -71,7 +84,7 @@ if(window.require){
|
|||||||
<script src="lib/jli.js"></script>
|
<script src="lib/jli.js"></script>
|
||||||
|
|
||||||
<!-- Electron unfix -->
|
<!-- Electron unfix -->
|
||||||
<script>if(window.module){ module = window.module }</script>
|
<script>if(window.__module){ module = window.__module; delete window.__module }</script>
|
||||||
|
|
||||||
<!-- RequireJS -->
|
<!-- RequireJS -->
|
||||||
<script>
|
<script>
|
||||||
@ -109,19 +122,52 @@ if(typeof(process) == 'undefined'){
|
|||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<!-- shadows and highlights
|
<!-- shadows and highlights
|
||||||
gradient map: [blue 0-5% black 93-96% white]
|
gradient map: [blue 0-5% black 93-96% white]
|
||||||
via: https://justcode.today/filters/ -->
|
via: https://justcode.today/filters/ -->
|
||||||
|
<!-- NOTE: not sure about the tail end here (white zone) might be a
|
||||||
|
bit too flat... -->
|
||||||
<filter id="ShadowsAndHilights">
|
<filter id="ShadowsAndHilights">
|
||||||
<fecolormatrix type="saturate" values="0" />
|
<fecolormatrix type="saturate" values="0" />
|
||||||
<feComponentTransfer color-interpolation-filters="sRGB" result="cutoff">
|
<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"/>
|
<feFuncR type="table" tableValues="
|
||||||
<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"/>
|
0 0 0 0 0 0 0 0 0 0
|
||||||
<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"/>
|
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>
|
</feComponentTransfer>
|
||||||
<feBlend mode="difference" in="SourceGraphic" in2="cutoff"/>
|
<feBlend mode="difference" in="SourceGraphic" in2="cutoff"/>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<!-- gamma shadows -->
|
<!-- gamma shadows -->
|
||||||
|
<!-- XXX should this be gamma or a transfer function?? -->
|
||||||
<filter id="GammaShadows">
|
<filter id="GammaShadows">
|
||||||
<feComponentTransfer color-interpolation-filters="sRGB">
|
<feComponentTransfer color-interpolation-filters="sRGB">
|
||||||
<feFuncR type="gamma" exponent="0.3" amplitude="1.0" offset="0"></feFuncR>
|
<feFuncR type="gamma" exponent="0.3" amplitude="1.0" offset="0"></feFuncR>
|
||||||
@ -136,6 +182,6 @@ if(typeof(process) == 'undefined'){
|
|||||||
<div class="viewer gray marks-visible" tabindex="0"></div>
|
<div class="viewer gray marks-visible" tabindex="0"></div>
|
||||||
|
|
||||||
|
|
||||||
<!-- vim:set ts=4 sw=4 spell : -->
|
<!-- vim:set ts=4 sw=4 spell nowrap : -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -62,15 +62,12 @@ function overlayMessage(text){
|
|||||||
function unanimated(obj, func, time){
|
function unanimated(obj, func, time){
|
||||||
return function(){
|
return function(){
|
||||||
if(time == null){
|
if(time == null){
|
||||||
time = 5
|
time = 5 }
|
||||||
}
|
|
||||||
obj = $(obj)
|
obj = $(obj)
|
||||||
obj.addClass('unanimated')
|
obj.addClass('unanimated')
|
||||||
var res = func.apply(func, arguments)
|
var res = func.apply(func, arguments)
|
||||||
setTimeout(function(){obj.removeClass('unanimated')}, time)
|
setTimeout(function(){obj.removeClass('unanimated')}, time)
|
||||||
return res
|
return res } }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// NOTE: this will only use the first element in a set.
|
// NOTE: this will only use the first element in a set.
|
||||||
@ -79,8 +76,7 @@ function makeCSSVendorAttrGetter(attr, dfl, callback){
|
|||||||
return function(elem){
|
return function(elem){
|
||||||
elem = $(elem)
|
elem = $(elem)
|
||||||
if(elem.length == 0){
|
if(elem.length == 0){
|
||||||
return null
|
return null }
|
||||||
}
|
|
||||||
// using the attr...
|
// using the attr...
|
||||||
var vendors = ['O', 'Moz', 'ms', 'webkit']
|
var vendors = ['O', 'Moz', 'ms', 'webkit']
|
||||||
var data = elem[0].style[attr]
|
var data = elem[0].style[attr]
|
||||||
@ -90,17 +86,11 @@ function makeCSSVendorAttrGetter(attr, dfl, callback){
|
|||||||
for(var i in vendors){
|
for(var i in vendors){
|
||||||
data = elem[0].style[vendors[i] + attr.capitalize()]
|
data = elem[0].style[vendors[i] + attr.capitalize()]
|
||||||
if(data && data != 'none'){
|
if(data && data != 'none'){
|
||||||
break
|
break } } }
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// no data is set...
|
// no data is set...
|
||||||
if(!data || data == 'none'){
|
if(!data || data == 'none'){
|
||||||
return dfl
|
return dfl }
|
||||||
}
|
return callback(data) } }
|
||||||
return callback(data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -112,8 +102,7 @@ var getElementOrigin = makeCSSVendorAttrGetter(
|
|||||||
return {
|
return {
|
||||||
left: res[1].slice(-2) == 'px' ? parseFloat(res[1]) : res[1],
|
left: res[1].slice(-2) == 'px' ? parseFloat(res[1]) : res[1],
|
||||||
top: res[3].slice(-2) == 'px' ? parseFloat(res[3]) : res[3],
|
top: res[3].slice(-2) == 'px' ? parseFloat(res[3]) : res[3],
|
||||||
}
|
} })
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Return a scale value for the given element(s).
|
// Return a scale value for the given element(s).
|
||||||
@ -122,8 +111,7 @@ var getElementScale = makeCSSVendorAttrGetter(
|
|||||||
'transform',
|
'transform',
|
||||||
1,
|
1,
|
||||||
function(data){
|
function(data){
|
||||||
return parseFloat((/(scale|matrix)\(([^),]*)\)/).exec(data)[2])
|
return parseFloat((/(scale|matrix)\(([^),]*)\)/).exec(data)[2]) })
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
var getElementOffset = makeCSSVendorAttrGetter(
|
var getElementOffset = makeCSSVendorAttrGetter(
|
||||||
@ -134,8 +122,7 @@ var getElementOffset = makeCSSVendorAttrGetter(
|
|||||||
return {
|
return {
|
||||||
left: parseFloat(res[2]),
|
left: parseFloat(res[2]),
|
||||||
top: parseFloat(res[3])
|
top: parseFloat(res[3])
|
||||||
}
|
} })
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
var getElementTransitionDuration = makeCSSVendorAttrGetter(
|
var getElementTransitionDuration = makeCSSVendorAttrGetter(
|
||||||
@ -202,14 +189,12 @@ function getRelativeOffset(container, block, point){
|
|||||||
+ (h - h*s) / (h / o.top),
|
+ (h - h*s) / (h / o.top),
|
||||||
left: l*scale
|
left: l*scale
|
||||||
+ (w - w*s) / (w / o.left),
|
+ (w - w*s) / (w / o.left),
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
top: offset.top + (H/2 - offset.top) - o.top,
|
top: offset.top + (H/2 - offset.top) - o.top,
|
||||||
left: offset.left + (W/2 - offset.left) - o.left,
|
left: offset.left + (W/2 - offset.left) - o.left,
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// NOTE: at this point this works only on the X axis...
|
// NOTE: at this point this works only on the X axis...
|
||||||
@ -233,11 +218,9 @@ function setElementTransform(elem, offset, scale, duration){
|
|||||||
offset = {
|
offset = {
|
||||||
left: offset[0] ? offset[0] : 0,
|
left: offset[0] ? offset[0] : 0,
|
||||||
top: offset[1] ? offset[1] : 0
|
top: offset[1] ? offset[1] : 0
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
if(scale == null){
|
if(scale == null){
|
||||||
var scale = getElementScale(elem)
|
var scale = getElementScale(elem) }
|
||||||
}
|
|
||||||
if(USE_TRANSFORM){
|
if(USE_TRANSFORM){
|
||||||
var transform = translate+'('+
|
var transform = translate+'('+
|
||||||
Math.round(offset.left) +'px, '+
|
Math.round(offset.left) +'px, '+
|
||||||
@ -274,10 +257,8 @@ function setElementTransform(elem, offset, scale, duration){
|
|||||||
'-moz-transform' : transform,
|
'-moz-transform' : transform,
|
||||||
'-o-transform' : transform,
|
'-o-transform' : transform,
|
||||||
'transform' : transform,
|
'transform' : transform,
|
||||||
}, duration)
|
}, duration) }
|
||||||
}
|
return elem }
|
||||||
return elem
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Run a function controllably in an animation frame
|
// Run a function controllably in an animation frame
|
||||||
@ -289,18 +270,15 @@ function animationFrameRunner(func){
|
|||||||
var _nop = function(){ return this }
|
var _nop = function(){ return this }
|
||||||
var frame
|
var frame
|
||||||
|
|
||||||
if(this === window){
|
self = this === window ?
|
||||||
self = new animationFrameRunner
|
new animationFrameRunner
|
||||||
} else {
|
: this
|
||||||
self = this
|
|
||||||
}
|
|
||||||
|
|
||||||
self.func = func
|
self.func = func
|
||||||
|
|
||||||
var _tick = function(){
|
var _tick = function(){
|
||||||
func(Date.now())
|
func(Date.now())
|
||||||
frame = getAnimationFrame(next)
|
frame = getAnimationFrame(next) }
|
||||||
}
|
|
||||||
|
|
||||||
// main user interface...
|
// main user interface...
|
||||||
var start = function(){
|
var start = function(){
|
||||||
@ -313,24 +291,20 @@ function animationFrameRunner(func){
|
|||||||
// off-frame call to func...
|
// off-frame call to func...
|
||||||
frame = getAnimationFrame(next)
|
frame = getAnimationFrame(next)
|
||||||
|
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
var stop = function(){
|
var stop = function(){
|
||||||
if(frame != null){
|
if(frame != null){
|
||||||
cancelAnimationFrame(frame)
|
cancelAnimationFrame(frame)
|
||||||
frame = null
|
frame = null }
|
||||||
}
|
|
||||||
next = _nop
|
next = _nop
|
||||||
this.start = start
|
this.start = start
|
||||||
this.stop = _nop
|
this.stop = _nop
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
|
|
||||||
// setup the ticker in stopped state...
|
// setup the ticker in stopped state...
|
||||||
stop.call(self)
|
stop.call(self)
|
||||||
|
|
||||||
return self
|
return self }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// XXX make this a drop-in replacement for setElementTransform...
|
// XXX make this a drop-in replacement for setElementTransform...
|
||||||
@ -353,17 +327,14 @@ function animateElementTo(elem, to, duration, easing, speed, callback, use_trans
|
|||||||
to = {
|
to = {
|
||||||
left: to,
|
left: to,
|
||||||
top: 0,
|
top: 0,
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
if(typeof(speed) == typeof(2)){
|
if(typeof(speed) == typeof(2)){
|
||||||
speed = {
|
speed = {
|
||||||
x: speed,
|
x: speed,
|
||||||
y: 0,
|
y: 0,
|
||||||
}
|
} }
|
||||||
}
|
|
||||||
if(duration == null){
|
if(duration == null){
|
||||||
duration = getElementTransitionDuration(elem)
|
duration = getElementTransitionDuration(elem) }
|
||||||
}
|
|
||||||
|
|
||||||
setTransitionDuration(elem, 0)
|
setTransitionDuration(elem, 0)
|
||||||
|
|
||||||
@ -387,23 +358,19 @@ function animateElementTo(elem, to, duration, easing, speed, callback, use_trans
|
|||||||
var s_t = cur.top
|
var s_t = cur.top
|
||||||
var s_l = cur.left
|
var s_l = cur.left
|
||||||
|
|
||||||
|
|
||||||
function animate(){
|
function animate(){
|
||||||
// prevent running animations till next call of animateElementTo(..)
|
// prevent running animations till next call of animateElementTo(..)
|
||||||
if(elem.next_frame === false){
|
if(elem.next_frame === false){
|
||||||
return
|
return }
|
||||||
}
|
|
||||||
var t = Date.now()
|
var t = Date.now()
|
||||||
// end of the animation...
|
// end of the animation...
|
||||||
if(t >= then){
|
if(t >= then){
|
||||||
setElementTransform(elem, to)
|
setElementTransform(elem, to)
|
||||||
return
|
return }
|
||||||
}
|
|
||||||
if(!elem.animating){
|
if(!elem.animating){
|
||||||
// XXX jittery...
|
// XXX jittery...
|
||||||
setElementTransform(elem, cur)
|
setElementTransform(elem, cur)
|
||||||
return
|
return }
|
||||||
}
|
|
||||||
|
|
||||||
// remember step start position...
|
// remember step start position...
|
||||||
s_t = cur.top
|
s_t = cur.top
|
||||||
@ -423,9 +390,7 @@ function animateElementTo(elem, to, duration, easing, speed, callback, use_trans
|
|||||||
// calc speed for next step...
|
// calc speed for next step...
|
||||||
speed.y = dist.top / (duration - (t - start))
|
speed.y = dist.top / (duration - (t - start))
|
||||||
} else {
|
} else {
|
||||||
cur.top = to.top
|
cur.top = to.top } }
|
||||||
}
|
|
||||||
}
|
|
||||||
if(Math.abs(dist.left) >= 1){
|
if(Math.abs(dist.left) >= 1){
|
||||||
dx = ((t - start) * speed.x)
|
dx = ((t - start) * speed.x)
|
||||||
if(Math.abs(dist.left) > Math.abs(dx)){
|
if(Math.abs(dist.left) > Math.abs(dx)){
|
||||||
@ -436,9 +401,7 @@ function animateElementTo(elem, to, duration, easing, speed, callback, use_trans
|
|||||||
// calc speed for next step...
|
// calc speed for next step...
|
||||||
speed.x = dist.left / (duration - (t - start))
|
speed.x = dist.left / (duration - (t - start))
|
||||||
} else {
|
} else {
|
||||||
cur.left = to.left
|
cur.left = to.left } }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// liner animate...
|
// liner animate...
|
||||||
} else {
|
} else {
|
||||||
@ -454,33 +417,26 @@ function animateElementTo(elem, to, duration, easing, speed, callback, use_trans
|
|||||||
})
|
})
|
||||||
|
|
||||||
// sched next frame...
|
// sched next frame...
|
||||||
elem.next_frame = getAnimationFrame(animate)
|
elem.next_frame = getAnimationFrame(animate) }
|
||||||
}
|
|
||||||
|
|
||||||
animate()
|
animate() } }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function stopAnimation(elem){
|
function stopAnimation(elem){
|
||||||
if(elem.next_frame){
|
if(elem.next_frame){
|
||||||
cancelAnimationFrame(elem.next_frame)
|
cancelAnimationFrame(elem.next_frame)
|
||||||
elem.next_frame = false
|
elem.next_frame = false
|
||||||
return
|
return } }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// XXX account for other transitions...
|
// XXX account for other transitions...
|
||||||
// XXX make a sync version...
|
// XXX make a sync version...
|
||||||
function setElementOffset(elem, l, t, scale){
|
function setElementOffset(elem, l, t, scale){
|
||||||
return setElementTransform(elem, [l, t], scale)
|
return setElementTransform(elem, [l, t], scale) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setElementScale(elem, scale){
|
function setElementScale(elem, scale){
|
||||||
return setElementTransform(elem, null, scale)
|
return setElementTransform(elem, null, scale) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setElementOrigin(elem, x, y, z){
|
function setElementOrigin(elem, x, y, z){
|
||||||
@ -495,8 +451,7 @@ function setElementOrigin(elem, x, y, z){
|
|||||||
'-ms-transform-origin': value,
|
'-ms-transform-origin': value,
|
||||||
'-moz-transform-origin': value,
|
'-moz-transform-origin': value,
|
||||||
'-webkit-transform-origin': value,
|
'-webkit-transform-origin': value,
|
||||||
})
|
}) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// a sync version of setElementOrigin(..), this will not trigger transforms...
|
// a sync version of setElementOrigin(..), this will not trigger transforms...
|
||||||
@ -522,8 +477,7 @@ function setElementOriginSync(elem, x, y, z){
|
|||||||
e.style.display = ''
|
e.style.display = ''
|
||||||
getComputedStyle(e).display
|
getComputedStyle(e).display
|
||||||
|
|
||||||
return $(elem)
|
return $(elem) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// this is like setElementOrigin(..) but will compensate for element
|
// this is like setElementOrigin(..) but will compensate for element
|
||||||
@ -540,36 +494,31 @@ function shiftOriginTo(elem, l, t, scale){
|
|||||||
|
|
||||||
setElementOffset(elem, cl, ct)
|
setElementOffset(elem, cl, ct)
|
||||||
|
|
||||||
return setElementOriginSync(elem, l+'px', t+'px')
|
return setElementOriginSync(elem, l+'px', t+'px') }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setTransitionEasing(elem, ease){
|
function setTransitionEasing(elem, ease){
|
||||||
if(typeof(ms) == typeof(0)){
|
if(typeof(ms) == typeof(0)){
|
||||||
ms = ms + 'ms'
|
ms = ms + 'ms' }
|
||||||
}
|
|
||||||
return $(elem).css({
|
return $(elem).css({
|
||||||
'transition-timing-function': ease,
|
'transition-timing-function': ease,
|
||||||
'-moz-transition-timing-function': ease,
|
'-moz-transition-timing-function': ease,
|
||||||
'-o-transition-timing-function': ease,
|
'-o-transition-timing-function': ease,
|
||||||
'-ms-transition-timing-function': ease,
|
'-ms-transition-timing-function': ease,
|
||||||
'-webkit-transition-timing-function': ease
|
'-webkit-transition-timing-function': ease
|
||||||
})
|
}) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function setTransitionDuration(elem, ms){
|
function setTransitionDuration(elem, ms){
|
||||||
if(typeof(ms) == typeof(0)){
|
if(typeof(ms) == typeof(0)){
|
||||||
ms = ms + 'ms'
|
ms = ms + 'ms' }
|
||||||
}
|
|
||||||
return elem.css({
|
return elem.css({
|
||||||
'transition-duration': ms,
|
'transition-duration': ms,
|
||||||
'-moz-transition-duration': ms,
|
'-moz-transition-duration': ms,
|
||||||
'-o-transition-duration': ms,
|
'-o-transition-duration': ms,
|
||||||
'-ms-transition-duration': ms,
|
'-ms-transition-duration': ms,
|
||||||
'-webkit-transition-duration': ms
|
'-webkit-transition-duration': ms
|
||||||
})
|
}) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -577,17 +526,13 @@ function setTransitionDuration(elem, ms){
|
|||||||
|
|
||||||
jQuery.fn.reverseChildren = function(){
|
jQuery.fn.reverseChildren = function(){
|
||||||
return $(this).each(function(_, e){
|
return $(this).each(function(_, e){
|
||||||
return $(e).append($(e).children().detach().get().reverse())
|
return $(e).append($(e).children().detach().get().reverse()) }) }
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jQuery.fn.sortChildren = function(func){
|
jQuery.fn.sortChildren = function(func){
|
||||||
return $(this).each(function(_, e){
|
return $(this).each(function(_, e){
|
||||||
return $(e).append($(e).children().detach().get().sort(func))
|
return $(e).append($(e).children().detach().get().sort(func)) }) }
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -770,16 +715,13 @@ function makeDeferredPool(size, paused){
|
|||||||
// i.e. do not pop another worker and let the "thread" die.
|
// i.e. do not pop another worker and let the "thread" die.
|
||||||
if(pool.len > pool_size){
|
if(pool.len > pool_size){
|
||||||
// remove self...
|
// remove self...
|
||||||
return
|
return }
|
||||||
}
|
|
||||||
// pause the queue -- do not do anything else...
|
// pause the queue -- do not do anything else...
|
||||||
if(that._paused == true){
|
if(that._paused == true){
|
||||||
// if pool is empty fire the pause event...
|
// if pool is empty fire the pause event...
|
||||||
if(pool.len == 0){
|
if(pool.len == 0){
|
||||||
Pool._event_handlers.pause.fire()
|
Pool._event_handlers.pause.fire() }
|
||||||
}
|
return }
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// get the next queued worker...
|
// get the next queued worker...
|
||||||
var next = queue.splice(0, 1)[0]
|
var next = queue.splice(0, 1)[0]
|
||||||
@ -796,26 +738,19 @@ function makeDeferredPool(size, paused){
|
|||||||
pool.length = 0
|
pool.length = 0
|
||||||
|
|
||||||
if(!that._filling){
|
if(!that._filling){
|
||||||
that._event_handlers.deplete.fire(l)
|
that._event_handlers.deplete.fire(l) } }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// keep the pool full...
|
// keep the pool full...
|
||||||
that._fill()
|
that._fill() })
|
||||||
})
|
|
||||||
.fail(function(){
|
.fail(function(){
|
||||||
Pool._event_handlers.fail.fire(pool.length - pool.len, pool.length + queue.length)
|
Pool._event_handlers.fail.fire(pool.length - pool.len, pool.length + queue.length)
|
||||||
deferred.reject.apply(deferred, arguments)
|
deferred.reject.apply(deferred, arguments) })
|
||||||
})
|
|
||||||
.progress(function(){
|
.progress(function(){
|
||||||
deferred.notify.apply(deferred, arguments)
|
deferred.notify.apply(deferred, arguments) })
|
||||||
})
|
|
||||||
.done(function(){
|
.done(function(){
|
||||||
deferred.resolve.apply(deferred, arguments)
|
deferred.resolve.apply(deferred, arguments) })
|
||||||
})
|
|
||||||
|
|
||||||
return worker
|
return worker }
|
||||||
}
|
|
||||||
|
|
||||||
// Fill the pool...
|
// Fill the pool...
|
||||||
//
|
//
|
||||||
@ -830,12 +765,9 @@ function makeDeferredPool(size, paused){
|
|||||||
&& this.queue.length > 0){
|
&& this.queue.length > 0){
|
||||||
this.queue.splice(0, pool_size - l)
|
this.queue.splice(0, pool_size - l)
|
||||||
.forEach(function(e){
|
.forEach(function(e){
|
||||||
run.apply(that, e)
|
run.apply(that, e) }) }
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Public methods...
|
// Public methods...
|
||||||
@ -852,8 +784,7 @@ function makeDeferredPool(size, paused){
|
|||||||
this._fill()
|
this._fill()
|
||||||
|
|
||||||
//return this
|
//return this
|
||||||
return deferred
|
return deferred }
|
||||||
}
|
|
||||||
|
|
||||||
// Drop the queued workers...
|
// Drop the queued workers...
|
||||||
//
|
//
|
||||||
@ -861,8 +792,7 @@ function makeDeferredPool(size, paused){
|
|||||||
// XXX should this return the pool or the dropped queue???
|
// XXX should this return the pool or the dropped queue???
|
||||||
Pool.dropQueue = function(){
|
Pool.dropQueue = function(){
|
||||||
this.queue.splice(0, this.queue.length)
|
this.queue.splice(0, this.queue.length)
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
|
|
||||||
// Filling state...
|
// Filling state...
|
||||||
//
|
//
|
||||||
@ -873,19 +803,15 @@ function makeDeferredPool(size, paused){
|
|||||||
// in the case of tasks ending faster than they are added...
|
// in the case of tasks ending faster than they are added...
|
||||||
Pool.filling = function(){
|
Pool.filling = function(){
|
||||||
this._filling = true
|
this._filling = true
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
Pool.doneFilling = function(){
|
Pool.doneFilling = function(){
|
||||||
delete this._filling
|
delete this._filling
|
||||||
// trigger depleted if we are empty...
|
// trigger depleted if we are empty...
|
||||||
if(this.pool.len == 0 && this.queue.length == 0){
|
if(this.pool.len == 0 && this.queue.length == 0){
|
||||||
that._event_handlers.deplete.fire(l)
|
that._event_handlers.deplete.fire(l) }
|
||||||
}
|
return this }
|
||||||
return this
|
|
||||||
}
|
|
||||||
Pool.isFilling = function(){
|
Pool.isFilling = function(){
|
||||||
return this._filling == true
|
return this._filling == true }
|
||||||
}
|
|
||||||
|
|
||||||
// Paused state...
|
// Paused state...
|
||||||
//
|
//
|
||||||
@ -900,10 +826,8 @@ function makeDeferredPool(size, paused){
|
|||||||
if(func == null){
|
if(func == null){
|
||||||
this._paused = true
|
this._paused = true
|
||||||
} else {
|
} else {
|
||||||
this.on('pause', func)
|
this.on('pause', func) }
|
||||||
}
|
return this }
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
// XXX test...
|
// XXX test...
|
||||||
Pool.resume = function(func){
|
Pool.resume = function(func){
|
||||||
@ -912,34 +836,27 @@ function makeDeferredPool(size, paused){
|
|||||||
this._event_handlers['resume'].forEach(function(f){ f() })
|
this._event_handlers['resume'].forEach(function(f){ f() })
|
||||||
this._fill()
|
this._fill()
|
||||||
} else {
|
} else {
|
||||||
this.on('resume', func)
|
this.on('resume', func) }
|
||||||
}
|
return this }
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
Pool.isPaused = function(){
|
Pool.isPaused = function(){
|
||||||
return this._paused
|
return this._paused }
|
||||||
}
|
|
||||||
Pool.isRunning = function(){
|
Pool.isRunning = function(){
|
||||||
return this.pool.len > 0
|
return this.pool.len > 0 }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Generic event handlers...
|
// Generic event handlers...
|
||||||
Pool.on = function(evt, handler){
|
Pool.on = function(evt, handler){
|
||||||
this._event_handlers[evt].add(handler)
|
this._event_handlers[evt].add(handler)
|
||||||
return this
|
return this }
|
||||||
}
|
|
||||||
// NOTE: if this is not given a handler, it will clear all handlers
|
// NOTE: if this is not given a handler, it will clear all handlers
|
||||||
// from the given event...
|
// from the given event...
|
||||||
Pool.off = function(evt, handler){
|
Pool.off = function(evt, handler){
|
||||||
if(handler != null){
|
if(handler != null){
|
||||||
this._event_handlers[evt].remove(handler)
|
this._event_handlers[evt].remove(handler)
|
||||||
} else {
|
} else {
|
||||||
this._event_handlers[evt].empty()
|
this._event_handlers[evt].empty() }
|
||||||
}
|
return this }
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register a queue depleted handler...
|
// Register a queue depleted handler...
|
||||||
//
|
//
|
||||||
@ -954,8 +871,7 @@ function makeDeferredPool(size, paused){
|
|||||||
// finish, as this may get called after last worker is done and
|
// finish, as this may get called after last worker is done and
|
||||||
// the next is queued...
|
// the next is queued...
|
||||||
Pool.depleted = function(func){
|
Pool.depleted = function(func){
|
||||||
return this.on('deplete', func)
|
return this.on('deplete', func) }
|
||||||
}
|
|
||||||
|
|
||||||
// Deferred compatibility...
|
// Deferred compatibility...
|
||||||
//
|
//
|
||||||
@ -973,14 +889,12 @@ function makeDeferredPool(size, paused){
|
|||||||
// - workers done
|
// - workers done
|
||||||
// - total workers (done + queued)
|
// - total workers (done + queued)
|
||||||
Pool.progress = function(func){
|
Pool.progress = function(func){
|
||||||
return this.on('progress', func)
|
return this.on('progress', func) }
|
||||||
}
|
|
||||||
|
|
||||||
// Register worker fail handler...
|
// Register worker fail handler...
|
||||||
//
|
//
|
||||||
Pool.fail = function(func){
|
Pool.fail = function(func){
|
||||||
return this.on('fail', func)
|
return this.on('fail', func) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return Pool
|
return Pool
|
||||||
@ -1016,17 +930,14 @@ function getDPI(force){
|
|||||||
screen.dpi = res
|
screen.dpi = res
|
||||||
return res
|
return res
|
||||||
} else {
|
} else {
|
||||||
return screen.dpi
|
return screen.dpi } }
|
||||||
}
|
|
||||||
}
|
|
||||||
// XXX is this correct???
|
// XXX is this correct???
|
||||||
$(getDPI)
|
$(getDPI)
|
||||||
|
|
||||||
|
|
||||||
// return 1, -1, or 0 depending on sign of x
|
// return 1, -1, or 0 depending on sign of x
|
||||||
function sign(x){
|
function sign(x){
|
||||||
return (x > 0) - (x < 0)
|
return (x > 0) - (x < 0) }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var getAnimationFrame = (window.requestAnimationFrame
|
var getAnimationFrame = (window.requestAnimationFrame
|
||||||
@ -1035,8 +946,7 @@ var getAnimationFrame = (window.requestAnimationFrame
|
|||||||
|| window.oRequestAnimationFrame
|
|| window.oRequestAnimationFrame
|
||||||
|| window.msRequestAnimationFrame
|
|| window.msRequestAnimationFrame
|
||||||
|| function(callback){
|
|| function(callback){
|
||||||
setTimeout(callback, 1000/60)
|
setTimeout(callback, 1000/60) })
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
var cancelAnimationFrame = (window.cancelAnimationFrame
|
var cancelAnimationFrame = (window.cancelAnimationFrame
|
||||||
@ -1051,11 +961,9 @@ function logCalls(func, logger){
|
|||||||
var that = this
|
var that = this
|
||||||
var _func = function(){
|
var _func = function(){
|
||||||
logger(func, arguments)
|
logger(func, arguments)
|
||||||
return func.apply(that, arguments)
|
return func.apply(that, arguments) }
|
||||||
}
|
|
||||||
_func.name = func.name
|
_func.name = func.name
|
||||||
return _func
|
return _func }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function assyncCall(func){
|
function assyncCall(func){
|
||||||
@ -1065,16 +973,16 @@ function assyncCall(func){
|
|||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
res.resolve(func.apply(that, arguments))
|
res.resolve(func.apply(that, arguments))
|
||||||
}, 0)
|
}, 0)
|
||||||
return res
|
return res }
|
||||||
}
|
|
||||||
_func.name = func.name
|
_func.name = func.name
|
||||||
return _func
|
return _func }
|
||||||
}
|
|
||||||
|
|
||||||
// Quote a string and convert to RegExp to match self literally.
|
// Quote a string and convert to RegExp to match self literally.
|
||||||
function quoteRegExp(str){
|
function quoteRegExp(str){
|
||||||
return str.replace(/([\.\\\/\(\)\[\]\$\*\+\-\{\}\@\^\&\?\<\>])/g, '\\$1')
|
return str.replace(/([\.\\\/\(\)\[\]\$\*\+\-\{\}\@\^\&\?\<\>])/g, '\\$1') }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|||||||
@ -35,7 +35,7 @@ function(path){
|
|||||||
// skip encoding windows drives...
|
// skip encoding windows drives...
|
||||||
path = path
|
path = path
|
||||||
.split(/[\\\/]/g)
|
.split(/[\\\/]/g)
|
||||||
drive = path[0].endsWith(':') ?
|
var drive = path[0].endsWith(':') ?
|
||||||
path.shift() + '/'
|
path.shift() + '/'
|
||||||
: ''
|
: ''
|
||||||
return drive + (path
|
return drive + (path
|
||||||
|
|||||||
12
Viewer/package-lock.json
generated
12
Viewer/package-lock.json
generated
@ -1119,9 +1119,9 @@
|
|||||||
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
|
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
|
||||||
},
|
},
|
||||||
"ig-actions": {
|
"ig-actions": {
|
||||||
"version": "3.24.22",
|
"version": "3.24.24",
|
||||||
"resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.24.22.tgz",
|
"resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.24.24.tgz",
|
||||||
"integrity": "sha512-aPTGlyAjecNS6eBzldLjIW0oDHHzglQYHk3eptU78OOiNkG0kTINmUAGaFjHswX0G9TftVQ4JGf+UxVQkqowAg==",
|
"integrity": "sha512-WFLV64Zn5KKZLuUz+puPTiZAakF4HuQ0LYYYXFRLMBbKXFb2oZbmuLJQIEYtanlOpW6aBeMYWmeb3Gpg0QgjyA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ig-object": "^5.4.12"
|
"ig-object": "^5.4.12"
|
||||||
}
|
}
|
||||||
@ -1156,9 +1156,9 @@
|
|||||||
"integrity": "sha512-9kZM80Js9/eTwXN9VXwLDC1wDJ7gIAdYU9GIzb5KJmNcLAMaW+zhgFrwFFMrcSfggUuadgnqSrS41E4XLe8JZw=="
|
"integrity": "sha512-9kZM80Js9/eTwXN9VXwLDC1wDJ7gIAdYU9GIzb5KJmNcLAMaW+zhgFrwFFMrcSfggUuadgnqSrS41E4XLe8JZw=="
|
||||||
},
|
},
|
||||||
"ig-types": {
|
"ig-types": {
|
||||||
"version": "5.0.40",
|
"version": "5.0.41",
|
||||||
"resolved": "https://registry.npmjs.org/ig-types/-/ig-types-5.0.40.tgz",
|
"resolved": "https://registry.npmjs.org/ig-types/-/ig-types-5.0.41.tgz",
|
||||||
"integrity": "sha512-L2tUujoojQ8rQB+grMN5BafvCRxZ94tm1GrJaxTjfGOzkDeSfFdoOXfmk1BIkrJb62DLxO6SmA1lKdf7S/4WWQ==",
|
"integrity": "sha512-ay185peZ3WfcSfbe6BsVffkqAGtKAeqMf62RqA9Z/ZVIopYSY1Ga3d08mbPD6+j4G6eT5amWZOmk6wlhnflGhQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ig-object": "^5.4.12",
|
"ig-object": "^5.4.12",
|
||||||
"object-run": "^1.0.1"
|
"object-run": "^1.0.1"
|
||||||
|
|||||||
@ -30,11 +30,11 @@
|
|||||||
"generic-walk": "^1.4.0",
|
"generic-walk": "^1.4.0",
|
||||||
"glob": "^7.1.6",
|
"glob": "^7.1.6",
|
||||||
"guarantee-events": "^1.0.0",
|
"guarantee-events": "^1.0.0",
|
||||||
"ig-actions": "^3.24.22",
|
"ig-actions": "^3.24.24",
|
||||||
"ig-argv": "^2.16.3",
|
"ig-argv": "^2.16.3",
|
||||||
"ig-features": "^3.4.2",
|
"ig-features": "^3.4.2",
|
||||||
"ig-object": "^5.4.12",
|
"ig-object": "^5.4.12",
|
||||||
"ig-types": "^5.0.40",
|
"ig-types": "^5.0.41",
|
||||||
"json5": "^2.1.3",
|
"json5": "^2.1.3",
|
||||||
"object-run": "^1.0.1",
|
"object-run": "^1.0.1",
|
||||||
"requirejs": "^2.3.6",
|
"requirejs": "^2.3.6",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user