mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
8eefbf5b6e
commit
899e42473e
@ -71,6 +71,9 @@ core.ImageGridFeatures.Feature('viewer-testing', [
|
|||||||
|
|
||||||
// XXX
|
// XXX
|
||||||
//'ui-blank-render',
|
//'ui-blank-render',
|
||||||
|
// XXX BUG: features: this pulls in all the suggestions that depend
|
||||||
|
// regardless of weather they depend on it or not:
|
||||||
|
// 'ui-partial-ribbons'
|
||||||
'ui-ribbons-render',
|
'ui-ribbons-render',
|
||||||
'ui-partial-ribbons-render',
|
'ui-partial-ribbons-render',
|
||||||
'ui-vdom-render',
|
'ui-vdom-render',
|
||||||
@ -81,6 +84,8 @@ core.ImageGridFeatures.Feature('viewer-testing', [
|
|||||||
'ui-cursor',
|
'ui-cursor',
|
||||||
|
|
||||||
'ui-single-image',
|
'ui-single-image',
|
||||||
|
|
||||||
|
// XXX remove this... (at this point this is here only to keep load order consistent)
|
||||||
'ui-partial-ribbons',
|
'ui-partial-ribbons',
|
||||||
/*/ XXX has bugs -- non-current ribbons are not always aligned...
|
/*/ XXX has bugs -- non-current ribbons are not always aligned...
|
||||||
'ui-partial-ribbons-2',
|
'ui-partial-ribbons-2',
|
||||||
|
|||||||
@ -16,14 +16,17 @@ var core = require('features/core')
|
|||||||
var ribbons = require('imagegrid/ribbons')
|
var ribbons = require('imagegrid/ribbons')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
var RibbonsClassPrototype = {
|
var RibbonsClassPrototype = {
|
||||||
|
// XXX
|
||||||
}
|
}
|
||||||
RibbonsClassPrototype.__proto__ = ribbons.BaseRibbons.prototype.__proto__
|
RibbonsClassPrototype.__proto__ = ribbons.BaseRibbons.prototype.__proto__
|
||||||
|
|
||||||
|
|
||||||
var RibbonsPrototype = {
|
var RibbonsPrototype = {
|
||||||
|
// XXX
|
||||||
}
|
}
|
||||||
RibbonsPrototype.__proto__ = ribbons.BaseRibbons.prototype
|
RibbonsPrototype.__proto__ = ribbons.BaseRibbons.prototype
|
||||||
|
|
||||||
@ -37,11 +40,35 @@ object.makeConstructor('Ribbons',
|
|||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
// XXX things that do not yet work with this:
|
||||||
|
// .nextRibbon(..) / .prevRibbon(..)
|
||||||
|
//
|
||||||
|
|
||||||
var RenderActions = actions.Actions({
|
var RenderActions = actions.Actions({
|
||||||
|
get dom(){
|
||||||
|
return this.ribbons ? this.ribbons.viewer : undefined },
|
||||||
|
|
||||||
load: [
|
load: [
|
||||||
function(data){
|
function(data){
|
||||||
|
return function(){
|
||||||
// XXX setup .ribbons
|
// XXX setup .ribbons
|
||||||
|
var viewer = data.viewer
|
||||||
|
viewer = viewer == null && this.ribbons != null
|
||||||
|
? this.dom
|
||||||
|
: viewer
|
||||||
|
|
||||||
|
if(this.ribbons == null){
|
||||||
|
this.ribbons = Ribbons(viewer, this.images)
|
||||||
|
// XXX is this correct???
|
||||||
|
//this.ribbons.__image_updaters = [this.updateImage.bind(this)]
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//this.ribbons.clear()
|
||||||
|
this.ribbons.images = this.images
|
||||||
|
}
|
||||||
|
|
||||||
|
this.reload()
|
||||||
|
}
|
||||||
}],
|
}],
|
||||||
reload: [
|
reload: [
|
||||||
function(){
|
function(){
|
||||||
@ -103,6 +130,8 @@ var RenderActions = actions.Actions({
|
|||||||
}, 'screenheight', count, whole)
|
}, 'screenheight', count, whole)
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
// XXX do we need updateImage here???
|
||||||
|
|
||||||
centerImage: ['- Interface/Center an image in ribbon horizontally',
|
centerImage: ['- Interface/Center an image in ribbon horizontally',
|
||||||
function(target, align, offset, scale){
|
function(target, align, offset, scale){
|
||||||
// XXX
|
// XXX
|
||||||
|
|||||||
@ -440,11 +440,14 @@ core.ImageGridFeatures.Feature({
|
|||||||
tag: 'ui-ribbons-render',
|
tag: 'ui-ribbons-render',
|
||||||
exclusive: ['ui-render'],
|
exclusive: ['ui-render'],
|
||||||
depends: [
|
depends: [
|
||||||
|
// XXX BUG: for some reason this causes a dependency conflict...
|
||||||
|
//'ui',
|
||||||
'base',
|
'base',
|
||||||
],
|
],
|
||||||
suggested: [
|
suggested: [
|
||||||
'ui-animation',
|
'ui-animation',
|
||||||
'ui-ribbons-edit-render',
|
'ui-ribbons-edit-render',
|
||||||
|
'ui-partial-ribbons',
|
||||||
],
|
],
|
||||||
|
|
||||||
actions: RibbonsActions,
|
actions: RibbonsActions,
|
||||||
@ -697,7 +700,8 @@ core.ImageGridFeatures.Feature({
|
|||||||
tag: 'ui-partial-ribbons',
|
tag: 'ui-partial-ribbons',
|
||||||
exclusive: ['ui-partial-ribbons'],
|
exclusive: ['ui-partial-ribbons'],
|
||||||
depends: [
|
depends: [
|
||||||
'ui'
|
//'ui',
|
||||||
|
'ui-ribbons-render',
|
||||||
],
|
],
|
||||||
suggested: [
|
suggested: [
|
||||||
'ui-partial-ribbons-precache',
|
'ui-partial-ribbons-precache',
|
||||||
|
|||||||
@ -173,6 +173,151 @@ var BaseRibbonsPrototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Helpers...
|
||||||
|
|
||||||
|
// Prevent CSS transitions...
|
||||||
|
//
|
||||||
|
// Prevent transitions globally (.viewer):
|
||||||
|
// .preventTransitions()
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// Prevent transitions on elem:
|
||||||
|
// .preventTransitions(elem)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// NOTE: this will set a .no-transitions CSS class and force
|
||||||
|
// recalculation on the given element
|
||||||
|
// NOTE: for this to have effect proper CSS configuration is needed.
|
||||||
|
preventTransitions: function(target){
|
||||||
|
target = target || this.viewer
|
||||||
|
//prevent_nested = prevent_nested || false
|
||||||
|
if(target.length == 0){
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
var t = target[0]
|
||||||
|
|
||||||
|
// handle nesting...
|
||||||
|
var l = t.getAttribute('__prevent_transitions')
|
||||||
|
if(l != null){
|
||||||
|
t.setAttribute('__prevent_transitions', parseInt(l)+1)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
t.setAttribute('__prevent_transitions', 0)
|
||||||
|
|
||||||
|
target.addClass('no-transitions')
|
||||||
|
|
||||||
|
var s = getComputedStyle(t)
|
||||||
|
s.webkitTransition
|
||||||
|
s.mozTransition
|
||||||
|
s.msTransition
|
||||||
|
s.oTransition
|
||||||
|
s.transition
|
||||||
|
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
|
||||||
|
// Restore CSS transitions...
|
||||||
|
//
|
||||||
|
// This is a companion to .preventTransitions(..)
|
||||||
|
//
|
||||||
|
// Restore transitions globally (.viewer):
|
||||||
|
// .restoreTransitions()
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// Restore transitions on elem:
|
||||||
|
// .restoreTransitions(elem)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// Restore transitions on elem (force sync):
|
||||||
|
// .restoreTransitions(elem, true)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// Force restore transitions:
|
||||||
|
// .restoreTransitions(.., .., true)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// When at least one .preventTransitions(..) is called with
|
||||||
|
// prevent_nested set to true, this will be a no-op on all nested
|
||||||
|
// levels.
|
||||||
|
// This can be overridden via setting the force to true.
|
||||||
|
//
|
||||||
|
// NOTE: the implementation of this method might seem ugly, but the
|
||||||
|
// code is speed-critical, thus we access the DOM directly and
|
||||||
|
// the two branches are unrolled...
|
||||||
|
restoreTransitions: function(target, now, force){
|
||||||
|
if(target === true || target === false){
|
||||||
|
now = target
|
||||||
|
target = this.viewer
|
||||||
|
} else {
|
||||||
|
target = target || this.viewer
|
||||||
|
}
|
||||||
|
if(target.length == 0){
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
var t = target[0]
|
||||||
|
|
||||||
|
// sync...
|
||||||
|
if(now){
|
||||||
|
// handle nesting...
|
||||||
|
var l = t.getAttribute('__prevent_transitions')
|
||||||
|
if(l != null && !force && l != '0'){
|
||||||
|
t.setAttribute('__prevent_transitions', parseInt(l)-1)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
t.removeAttribute('__prevent_transitions')
|
||||||
|
|
||||||
|
target.removeClass('no-transitions')
|
||||||
|
|
||||||
|
var s = getComputedStyle(t)
|
||||||
|
s.webkitTransition
|
||||||
|
s.mozTransition
|
||||||
|
s.msTransition
|
||||||
|
s.oTransition
|
||||||
|
s.transition
|
||||||
|
|
||||||
|
// on next exec frame...
|
||||||
|
} else {
|
||||||
|
var that = this
|
||||||
|
setTimeout(function(){
|
||||||
|
// handle nesting...
|
||||||
|
var l = t.getAttribute('__prevent_transitions')
|
||||||
|
if(l != null && !force && l != '0'){
|
||||||
|
t.setAttribute('__prevent_transitions', l-1)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
t.removeAttribute('__prevent_transitions')
|
||||||
|
|
||||||
|
target.removeClass('no-transitions')
|
||||||
|
|
||||||
|
var s = getComputedStyle(t)
|
||||||
|
s.webkitTransition
|
||||||
|
s.mozTransition
|
||||||
|
s.msTransition
|
||||||
|
s.oTransition
|
||||||
|
s.transition
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
|
||||||
|
// Shorthand wrappers of the above...
|
||||||
|
//
|
||||||
|
// XXX do we need custom target support here???
|
||||||
|
noTransitions: function(func){
|
||||||
|
this.preventTransitions()
|
||||||
|
func.apply(this, args2array(arguments).slice(1))
|
||||||
|
this.restoreTransitions(true)
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
noTransitionsDeep: function(func){
|
||||||
|
this.preventTransitions(null, true)
|
||||||
|
func.apply(this, args2array(arguments).slice(1))
|
||||||
|
this.restoreTransitions(true)
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
// Scale...
|
// Scale...
|
||||||
//
|
//
|
||||||
@ -863,151 +1008,6 @@ var RibbonsPrototype = {
|
|||||||
createImage: RibbonsClassPrototype.createImage,
|
createImage: RibbonsClassPrototype.createImage,
|
||||||
createMark: RibbonsClassPrototype.createMark,
|
createMark: RibbonsClassPrototype.createMark,
|
||||||
|
|
||||||
// Helpers...
|
|
||||||
|
|
||||||
// Prevent CSS transitions...
|
|
||||||
//
|
|
||||||
// Prevent transitions globally (.viewer):
|
|
||||||
// .preventTransitions()
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
// Prevent transitions on elem:
|
|
||||||
// .preventTransitions(elem)
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// NOTE: this will set a .no-transitions CSS class and force
|
|
||||||
// recalculation on the given element
|
|
||||||
// NOTE: for this to have effect proper CSS configuration is needed.
|
|
||||||
preventTransitions: function(target){
|
|
||||||
target = target || this.viewer
|
|
||||||
//prevent_nested = prevent_nested || false
|
|
||||||
if(target.length == 0){
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
var t = target[0]
|
|
||||||
|
|
||||||
// handle nesting...
|
|
||||||
var l = t.getAttribute('__prevent_transitions')
|
|
||||||
if(l != null){
|
|
||||||
t.setAttribute('__prevent_transitions', parseInt(l)+1)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
t.setAttribute('__prevent_transitions', 0)
|
|
||||||
|
|
||||||
target.addClass('no-transitions')
|
|
||||||
|
|
||||||
var s = getComputedStyle(t)
|
|
||||||
s.webkitTransition
|
|
||||||
s.mozTransition
|
|
||||||
s.msTransition
|
|
||||||
s.oTransition
|
|
||||||
s.transition
|
|
||||||
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
|
|
||||||
// Restore CSS transitions...
|
|
||||||
//
|
|
||||||
// This is a companion to .preventTransitions(..)
|
|
||||||
//
|
|
||||||
// Restore transitions globally (.viewer):
|
|
||||||
// .restoreTransitions()
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
// Restore transitions on elem:
|
|
||||||
// .restoreTransitions(elem)
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
// Restore transitions on elem (force sync):
|
|
||||||
// .restoreTransitions(elem, true)
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
// Force restore transitions:
|
|
||||||
// .restoreTransitions(.., .., true)
|
|
||||||
// -> data
|
|
||||||
//
|
|
||||||
// When at least one .preventTransitions(..) is called with
|
|
||||||
// prevent_nested set to true, this will be a no-op on all nested
|
|
||||||
// levels.
|
|
||||||
// This can be overridden via setting the force to true.
|
|
||||||
//
|
|
||||||
// NOTE: the implementation of this method might seem ugly, but the
|
|
||||||
// code is speed-critical, thus we access the DOM directly and
|
|
||||||
// the two branches are unrolled...
|
|
||||||
restoreTransitions: function(target, now, force){
|
|
||||||
if(target === true || target === false){
|
|
||||||
now = target
|
|
||||||
target = this.viewer
|
|
||||||
} else {
|
|
||||||
target = target || this.viewer
|
|
||||||
}
|
|
||||||
if(target.length == 0){
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
var t = target[0]
|
|
||||||
|
|
||||||
// sync...
|
|
||||||
if(now){
|
|
||||||
// handle nesting...
|
|
||||||
var l = t.getAttribute('__prevent_transitions')
|
|
||||||
if(l != null && !force && l != '0'){
|
|
||||||
t.setAttribute('__prevent_transitions', parseInt(l)-1)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
t.removeAttribute('__prevent_transitions')
|
|
||||||
|
|
||||||
target.removeClass('no-transitions')
|
|
||||||
|
|
||||||
var s = getComputedStyle(t)
|
|
||||||
s.webkitTransition
|
|
||||||
s.mozTransition
|
|
||||||
s.msTransition
|
|
||||||
s.oTransition
|
|
||||||
s.transition
|
|
||||||
|
|
||||||
// on next exec frame...
|
|
||||||
} else {
|
|
||||||
var that = this
|
|
||||||
setTimeout(function(){
|
|
||||||
// handle nesting...
|
|
||||||
var l = t.getAttribute('__prevent_transitions')
|
|
||||||
if(l != null && !force && l != '0'){
|
|
||||||
t.setAttribute('__prevent_transitions', l-1)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
t.removeAttribute('__prevent_transitions')
|
|
||||||
|
|
||||||
target.removeClass('no-transitions')
|
|
||||||
|
|
||||||
var s = getComputedStyle(t)
|
|
||||||
s.webkitTransition
|
|
||||||
s.mozTransition
|
|
||||||
s.msTransition
|
|
||||||
s.oTransition
|
|
||||||
s.transition
|
|
||||||
}, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
|
|
||||||
// Shorthand wrappers of the above...
|
|
||||||
//
|
|
||||||
// XXX do we need custom target support here???
|
|
||||||
noTransitions: function(func){
|
|
||||||
this.preventTransitions()
|
|
||||||
func.apply(this, args2array(arguments).slice(1))
|
|
||||||
this.restoreTransitions(true)
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
noTransitionsDeep: function(func){
|
|
||||||
this.preventTransitions(null, true)
|
|
||||||
func.apply(this, args2array(arguments).slice(1))
|
|
||||||
this.restoreTransitions(true)
|
|
||||||
return this
|
|
||||||
},
|
|
||||||
|
|
||||||
// Rotate...
|
// Rotate...
|
||||||
//
|
//
|
||||||
// Get ribbon rotation angle...
|
// Get ribbon rotation angle...
|
||||||
|
|||||||
@ -119,6 +119,8 @@ $(function(){
|
|||||||
//'-ui-partial-ribbons',
|
//'-ui-partial-ribbons',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
window.ImageGridFeatures = viewer.ImageGridFeatures
|
||||||
|
|
||||||
} catch(err){
|
} catch(err){
|
||||||
console.error(err)
|
console.error(err)
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user