mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
docs...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
f8244c51d6
commit
9b3a5007f3
@ -184,10 +184,12 @@ Items.ListTitle = function(){}
|
|||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
// Event system...
|
// Event system parts and helpers...
|
||||||
//
|
//
|
||||||
// XXX might be a good idea to make this a generic module...
|
// XXX might be a good idea to make this a generic module...
|
||||||
|
|
||||||
|
// Base event object...
|
||||||
|
//
|
||||||
var BrowserEvent =
|
var BrowserEvent =
|
||||||
module.BrowserEvent =
|
module.BrowserEvent =
|
||||||
object.makeConstructor('BrowserEvent',
|
object.makeConstructor('BrowserEvent',
|
||||||
@ -254,6 +256,7 @@ var makeEventMethod = function(event, handler, retrigger){
|
|||||||
event: event,
|
event: event,
|
||||||
}) }
|
}) }
|
||||||
|
|
||||||
|
|
||||||
// Call item event handlers...
|
// Call item event handlers...
|
||||||
//
|
//
|
||||||
// callItemEventHandlers(item, event_name, event_object, ...)
|
// callItemEventHandlers(item, event_name, event_object, ...)
|
||||||
@ -277,6 +280,7 @@ var callItemEventHandlers = function(item, event, evt, ...args){
|
|||||||
&& item.parent.trigger
|
&& item.parent.trigger
|
||||||
&& item.parent.trigger(evt, item, ...args) }
|
&& item.parent.trigger(evt, item, ...args) }
|
||||||
|
|
||||||
|
|
||||||
// Generate item event method...
|
// Generate item event method...
|
||||||
//
|
//
|
||||||
// This extends makeEventMethod(..) by adding an option to pass an item
|
// This extends makeEventMethod(..) by adding an option to pass an item
|
||||||
@ -287,10 +291,12 @@ var callItemEventHandlers = function(item, event, evt, ...args){
|
|||||||
// .event([item, ..], ..)
|
// .event([item, ..], ..)
|
||||||
// -> this
|
// -> this
|
||||||
//
|
//
|
||||||
|
//
|
||||||
// NOTE: item is compatible to .search(item, ..) spec, see that for more
|
// NOTE: item is compatible to .search(item, ..) spec, see that for more
|
||||||
// details...
|
// details...
|
||||||
// NOTE: triggering an event that matches several items will handle each
|
// NOTE: triggering an event that matches several items will handle each
|
||||||
// item-parent chain individually, and independently...
|
// item-parent chain individually, and independently when propagating
|
||||||
|
// the event up...
|
||||||
// NOTE: a parent that contains multiple items will get triggered multiple
|
// NOTE: a parent that contains multiple items will get triggered multiple
|
||||||
// times, once per each item...
|
// times, once per each item...
|
||||||
// NOTE: item events do not directly trigger the original caller's handlers
|
// NOTE: item events do not directly trigger the original caller's handlers
|
||||||
@ -1816,12 +1822,25 @@ var BaseBrowserPrototype = {
|
|||||||
// XXX
|
// XXX
|
||||||
__event_handlers: null,
|
__event_handlers: null,
|
||||||
|
|
||||||
// generic event infrastructure...
|
// Generic event infrastructure...
|
||||||
// XXX add support for item events...
|
//
|
||||||
// e.g. item.focus(..) -> root.focus(..)
|
// Bind a handler to an event...
|
||||||
// XXX also need to design a means for this system to interact both
|
// .on(event, func)
|
||||||
|
// .on(event, func, tag)
|
||||||
|
// -> this
|
||||||
|
//
|
||||||
|
// tag can be used to unregister several handlers in a single operation,
|
||||||
|
// see .off(..) for more info...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// NOTE: .one(..) has the same signature as .on(..) but will unregister
|
||||||
|
// the handler as soon as it is done...
|
||||||
|
//
|
||||||
|
// XXX need to design a means for this system to interact both
|
||||||
// ways with DOM events...
|
// ways with DOM events...
|
||||||
// XXX need to bubble the event up through the nested browsers...
|
// XXX need to bubble the event up through the nested browsers...
|
||||||
|
// XXX should we be able to trigger events from the item directly???
|
||||||
|
// i.e. .get(42).on('open', ...) instead of .get(42).open = ...
|
||||||
on: function(evt, handler, tag){
|
on: function(evt, handler, tag){
|
||||||
var handlers = this.__event_handlers = this.__event_handlers || {}
|
var handlers = this.__event_handlers = this.__event_handlers || {}
|
||||||
handlers = handlers[evt] = handlers[evt] || []
|
handlers = handlers[evt] = handlers[evt] || []
|
||||||
@ -1830,12 +1849,12 @@ var BaseBrowserPrototype = {
|
|||||||
&& (handler.tag = tag)
|
&& (handler.tag = tag)
|
||||||
return this
|
return this
|
||||||
},
|
},
|
||||||
one: function(evt, handler){
|
one: function(evt, handler, tag){
|
||||||
var func = function(...args){
|
var func = function(...args){
|
||||||
handler.call(this, ...args)
|
handler.call(this, ...args)
|
||||||
this.off(evt, func)
|
this.off(evt, func)
|
||||||
}
|
}
|
||||||
this.on(evt, func)
|
this.on(evt, func, tag)
|
||||||
return this
|
return this
|
||||||
},
|
},
|
||||||
//
|
//
|
||||||
@ -1931,7 +1950,6 @@ var BaseBrowserPrototype = {
|
|||||||
//
|
//
|
||||||
// for docs on <event-object> see BrowserEvent(..)
|
// for docs on <event-object> see BrowserEvent(..)
|
||||||
//
|
//
|
||||||
// XXX need to make this workable with DOM events... (???)
|
|
||||||
trigger: function(evt, ...args){
|
trigger: function(evt, ...args){
|
||||||
var that = this
|
var that = this
|
||||||
|
|
||||||
@ -1974,8 +1992,9 @@ var BaseBrowserPrototype = {
|
|||||||
return this
|
return this
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
// List events...
|
// List events...
|
||||||
// XXX avoid expensive props...
|
// XXX avoid going through expensive props...
|
||||||
get events(){
|
get events(){
|
||||||
var that = this
|
var that = this
|
||||||
return Object.deepKeys(this)
|
return Object.deepKeys(this)
|
||||||
@ -1988,10 +2007,15 @@ var BaseBrowserPrototype = {
|
|||||||
.flat() },
|
.flat() },
|
||||||
|
|
||||||
// domain events/actions...
|
// domain events/actions...
|
||||||
// XXX need a way to extend these to:
|
//
|
||||||
// - be able to trigger an external (DOM) event...
|
// Bind a handler to an event...
|
||||||
// - be able to be triggered from an external (DOM) event...
|
// .focus(func)
|
||||||
// XXX should we trigger direct item's parent event???
|
// -> this
|
||||||
|
//
|
||||||
|
// Trigger an event...
|
||||||
|
// .focus(query[, ...])
|
||||||
|
// -> this
|
||||||
|
//
|
||||||
focus: makeItemEventMethod('focus', function(evt, items){
|
focus: makeItemEventMethod('focus', function(evt, items){
|
||||||
// blur .focused...
|
// blur .focused...
|
||||||
this.focused
|
this.focused
|
||||||
@ -2010,7 +2034,6 @@ var BaseBrowserPrototype = {
|
|||||||
deselect: makeItemEventMethod('deselect', function(evt, items){
|
deselect: makeItemEventMethod('deselect', function(evt, items){
|
||||||
items.forEach(function(item){
|
items.forEach(function(item){
|
||||||
delete item.selected }) }),
|
delete item.selected }) }),
|
||||||
|
|
||||||
open: makeItemEventMethod('open', function(evt, item){}),
|
open: makeItemEventMethod('open', function(evt, item){}),
|
||||||
enter: makeItemEventMethod('enter', function(evt, item){}),
|
enter: makeItemEventMethod('enter', function(evt, item){}),
|
||||||
// XXX can/should we unify these???
|
// XXX can/should we unify these???
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user