mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	some refactoring and rework of feature logic...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									50bd9d2b45
								
							
						
					
					
						commit
						c66eb2e354
					
				| @ -230,6 +230,8 @@ Feature.prototype.constructor = Feature | |||||||
| 
 | 
 | ||||||
| var FeatureSet = | var FeatureSet = | ||||||
| module.FeatureSet = { | module.FeatureSet = { | ||||||
|  | 	__feature__: Feature, | ||||||
|  | 
 | ||||||
| 	// Build feature list...
 | 	// Build feature list...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// 	Build a list of all registered features
 | 	// 	Build a list of all registered features
 | ||||||
| @ -283,6 +285,15 @@ module.FeatureSet = { | |||||||
| 	// 			X will be before one of its dependencies...
 | 	// 			X will be before one of its dependencies...
 | ||||||
| 	// 		- dependency / priority conflict
 | 	// 		- dependency / priority conflict
 | ||||||
| 	// 			X will have higher priority than one of its dependencies...
 | 	// 			X will have higher priority than one of its dependencies...
 | ||||||
|  | 	// NOTE: feature that depend in unapplicable features are considered
 | ||||||
|  | 	// 		unapplicable.
 | ||||||
|  | 	// 		XXX not sure if this is 100% correct...
 | ||||||
|  | 	// NOTE: child high priority features will push their dependencies up
 | ||||||
|  | 	// 		to precede them.
 | ||||||
|  | 	// 		...this will not resolve all the possible conflicts so be 
 | ||||||
|  | 	// 		careful.
 | ||||||
|  | 	//
 | ||||||
|  | 	// XXX make suggested feature expansion recursive...
 | ||||||
| 	buildFeatureList: function(obj, lst, auto_include, depth){ | 	buildFeatureList: function(obj, lst, auto_include, depth){ | ||||||
| 		lst = lst == null ? Object.keys(this) : lst | 		lst = lst == null ? Object.keys(this) : lst | ||||||
| 		lst = lst.constructor !== Array ? [lst] : lst | 		lst = lst.constructor !== Array ? [lst] : lst | ||||||
| @ -291,14 +302,14 @@ module.FeatureSet = { | |||||||
| 
 | 
 | ||||||
| 		var that = this | 		var that = this | ||||||
| 
 | 
 | ||||||
|  | 		var missing = {} | ||||||
|  | 
 | ||||||
| 		// helpers...
 | 		// helpers...
 | ||||||
| 		// NOTE: _skipMissing(..) will add missing dependencies to missing...
 | 		// NOTE: _skipMissing(..) will add missing dependencies to missing...
 | ||||||
| 		var _skipMissing = function(feature, deps, missing){ | 		var _skipMissing = function(feature, deps, missing){ | ||||||
| 			return deps.filter(function(d){  | 			return deps.filter(function(d){  | ||||||
| 				if(lst.indexOf(d) < 0){ | 				if(lst.indexOf(d) < 0){ | ||||||
| 					if(missing[d] == null){ | 					missing[d] = missing[d] != null ? missing[d] : [] | ||||||
| 						missing[d] = [] |  | ||||||
| 					} |  | ||||||
| 					if(missing[d].indexOf(feature) < 0){ | 					if(missing[d].indexOf(feature) < 0){ | ||||||
| 						missing[d].push(feature) | 						missing[d].push(feature) | ||||||
| 					} | 					} | ||||||
| @ -306,39 +317,82 @@ module.FeatureSet = { | |||||||
| 				return missing[d] == null | 				return missing[d] == null | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
| 		var _sortDep = function(lst, missing){ | 		var _sortDep = function(lst, missing, depth){ | ||||||
| 			var res = [] |  | ||||||
| 			lst.forEach(function(n){ |  | ||||||
| 				var e = that[n] |  | ||||||
| 				// no dependencies...
 |  | ||||||
| 				if(e.depends == null || e.depends.length == 0){ |  | ||||||
| 					res.push(n) |  | ||||||
| 
 | 
 | ||||||
| 				} else { | 			do { | ||||||
| 					// auto-include dependencies...
 | 				var res = [] | ||||||
| 					if(auto_include){ | 				var l = lst.length | ||||||
| 						var deps = e.depends | 
 | ||||||
|  | 				lst.forEach(function(n){ | ||||||
|  | 					var e = that[n] | ||||||
|  | 
 | ||||||
|  | 					// no dependencies...
 | ||||||
|  | 					if(e.depends == null || e.depends.length == 0){ | ||||||
|  | 						res.push(n) | ||||||
| 
 | 
 | ||||||
| 					// skip dependencies that are not in list...
 |  | ||||||
| 					} else { | 					} else { | ||||||
| 						var deps = _skipMissing(n, e.depends, missing) | 						// auto-include dependencies...
 | ||||||
|  | 						if(auto_include){ | ||||||
|  | 							var deps = e.depends | ||||||
|  | 
 | ||||||
|  | 						// skip dependencies that are not in list...
 | ||||||
|  | 						} else { | ||||||
|  | 							var deps = _skipMissing(n, e.depends, missing) | ||||||
|  | 						} | ||||||
|  | 
 | ||||||
|  | 						// place dependencies before the depended...
 | ||||||
|  | 						res = res.concat(deps) | ||||||
|  | 						res.push(n) | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					// place dependencies before the depended...
 | 				}) | ||||||
| 					res = res.concat(deps) | 				lst = res | ||||||
| 					res.push(n) | 				depth -= 1 | ||||||
| 				} | 			} while(lst.length != l && depth > 0) | ||||||
| 
 | 
 | ||||||
| 			}) | 			return lst | ||||||
| 			return res | 		} | ||||||
|  | 		var _getSuggested = function(featureset, feature, suggested, missing){ | ||||||
|  | 			suggested = suggested || [] | ||||||
|  | 			 | ||||||
|  | 			var s = (feature.suggested || []) | ||||||
|  | 
 | ||||||
|  | 			s | ||||||
|  | 				// remove the already visited suggenstions...
 | ||||||
|  | 				.filter(function(e){ return suggested.indexOf(e) < 0 })  | ||||||
|  | 				// add unloaded features to missing...
 | ||||||
|  | 				.filter(function(e){  | ||||||
|  | 					if(featureset[e] == null){ | ||||||
|  | 						missing[e] = missing[e] != null ? missing[e] : [] | ||||||
|  | 						if(missing[e].indexOf(feature.tag) < 0){ | ||||||
|  | 							missing[e].push(feature.tag) | ||||||
|  | 						} | ||||||
|  | 						return false | ||||||
|  | 					} | ||||||
|  | 					return true | ||||||
|  | 				})  | ||||||
|  | 				// load new suggenstions...
 | ||||||
|  | 				.forEach(function(n){ | ||||||
|  | 					var e = featureset[n] | ||||||
|  | 					if(e != null && e.suggested != null){ | ||||||
|  | 						suggested = suggested | ||||||
|  | 							.concat(_getSuggested(featureset, e, suggested, missing)) | ||||||
|  | 							.unique() | ||||||
|  | 					} | ||||||
|  | 					suggested.push(n) | ||||||
|  | 				}) | ||||||
|  | 
 | ||||||
|  | 			return suggested | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// expand optional "suggested" features...
 | 		// expand optional "suggested" features...
 | ||||||
|  | 		// XXX make this recursive...
 | ||||||
| 		var res = [] | 		var res = [] | ||||||
| 		lst.forEach(function(n){ | 		lst.forEach(function(n){ | ||||||
| 			var e = that[n] | 			var e = that[n] | ||||||
| 			if(e != null && e.suggested != null){ | 			if(e != null && e.suggested != null){ | ||||||
| 				res = res.concat(e.suggested) | 				//res = res.concat(e.suggested)
 | ||||||
|  | 				res = res.concat(_getSuggested(that, e, res, missing)) | ||||||
| 			} | 			} | ||||||
| 			res.push(n) | 			res.push(n) | ||||||
| 		}) | 		}) | ||||||
| @ -346,14 +400,7 @@ module.FeatureSet = { | |||||||
| 
 | 
 | ||||||
| 		// expand and sort dependencies...
 | 		// expand and sort dependencies...
 | ||||||
| 		// 	2+ times untill depth is 0 or length stabelizes...
 | 		// 	2+ times untill depth is 0 or length stabelizes...
 | ||||||
| 		var missing = {} | 		lst = _sortDep(lst, missing, depth).unique() | ||||||
| 		lst = _sortDep(lst, missing).unique() |  | ||||||
| 		var l |  | ||||||
| 		do { |  | ||||||
| 			l = lst.length |  | ||||||
| 			lst = _sortDep(lst, missing).unique() |  | ||||||
| 			depth -= 1 |  | ||||||
| 		} while(l != lst.length && depth > 0) |  | ||||||
| 
 | 
 | ||||||
| 		// sort features via priority keeping the order as close to 
 | 		// sort features via priority keeping the order as close to 
 | ||||||
| 		// manual as possible...
 | 		// manual as possible...
 | ||||||
| @ -369,9 +416,14 @@ module.FeatureSet = { | |||||||
| 			// NOTE: for some reason JS compares lists as strings so we
 | 			// NOTE: for some reason JS compares lists as strings so we
 | ||||||
| 			// 		have to comare the list manually...
 | 			// 		have to comare the list manually...
 | ||||||
| 			.sort(function(a, b){ return a[0] - b[0] || a[1] - b[1] }) | 			.sort(function(a, b){ return a[0] - b[0] || a[1] - b[1] }) | ||||||
| 			// cleanup -- drom the table...
 | 			// cleanup -- drop the table...
 | ||||||
| 			.map(function(e){ return e[2] }) | 			.map(function(e){ return e[2] }) | ||||||
| 
 | 
 | ||||||
|  | 		// sort dependencies again...
 | ||||||
|  | 		// NOTE: this bubles the "priority" up the dependency tree...
 | ||||||
|  | 		// NOTE: this will not resolve all the conflicts...
 | ||||||
|  | 		lst = _sortDep(lst, missing, depth).unique() | ||||||
|  | 
 | ||||||
| 		// clasify features...
 | 		// clasify features...
 | ||||||
| 		var unapplicable = [] | 		var unapplicable = [] | ||||||
| 		var conflicts = {} | 		var conflicts = {} | ||||||
| @ -392,6 +444,16 @@ module.FeatureSet = { | |||||||
| 				return true | 				return true | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			// mark feature unapplicable if it depends on an unapplicable...
 | ||||||
|  | 			// NOTE: we need to do this once as features at this point
 | ||||||
|  | 			// 		are sorted by dependencies...
 | ||||||
|  | 			if(e.depends.filter(function(dep){ | ||||||
|  | 						return unapplicable.indexOf(dep) > -1  | ||||||
|  | 					}).length > 0){ | ||||||
|  | 				unapplicable.push(n) | ||||||
|  | 				return false | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			// keep only conflicting...
 | 			// keep only conflicting...
 | ||||||
| 			var deps = e.depends.filter(function(dep){ | 			var deps = e.depends.filter(function(dep){ | ||||||
| 				dep = lst.indexOf(dep) | 				dep = lst.indexOf(dep) | ||||||
| @ -512,6 +574,12 @@ module.FeatureSet = { | |||||||
| 			} | 			} | ||||||
| 		}) | 		}) | ||||||
| 	}, | 	}, | ||||||
|  | 
 | ||||||
|  | 	// shorthand for: Feature(<feature-set>, ...)
 | ||||||
|  | 	// XXX should this return this?
 | ||||||
|  | 	Feature: function(){ | ||||||
|  | 		return this.__feature__.apply(null, [this].concat(args2array(arguments))) | ||||||
|  | 	}, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1293,13 +1293,11 @@ actions.Actions({ | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| var Viewer = | var Viewer = | ||||||
| module.Viewer = features.Feature(ImageGridFeatures, { | module.Viewer = ImageGridFeatures.Feature({ | ||||||
| 	title: 'Graphical User Interface', | 	title: 'Graphical User Interface', | ||||||
| 
 | 
 | ||||||
| 	tag: 'ui', | 	tag: 'ui', | ||||||
| 
 | 
 | ||||||
| 	priority: 'high', |  | ||||||
| 
 |  | ||||||
| 	config: { | 	config: { | ||||||
| 		// The maximum screen width allowed when zooming...
 | 		// The maximum screen width allowed when zooming...
 | ||||||
| 		'max-screen-images': 30, | 		'max-screen-images': 30, | ||||||
| @ -1316,6 +1314,13 @@ module.Viewer = features.Feature(ImageGridFeatures, { | |||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	actions: ViewerActions, | 	actions: ViewerActions, | ||||||
|  | 
 | ||||||
|  | 	// check if we are running in a UI context...
 | ||||||
|  | 	// NOTE: this will prevent loading of any features dependant on the 
 | ||||||
|  | 	// 		UI in a non UI context...
 | ||||||
|  | 	isApplicable: function(){  | ||||||
|  | 		return typeof(window) == typeof({})  | ||||||
|  | 	}, | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -1332,7 +1337,7 @@ module.Viewer = features.Feature(ImageGridFeatures, { | |||||||
| // 		- .load(..) clears journal
 | // 		- .load(..) clears journal
 | ||||||
| // XXX needs careful testing...
 | // XXX needs careful testing...
 | ||||||
| var Journal =  | var Journal =  | ||||||
| module.Journal = features.Feature(ImageGridFeatures, { | module.Journal = ImageGridFeatures.Feature({ | ||||||
| 	title: 'Action Journal', | 	title: 'Action Journal', | ||||||
| 
 | 
 | ||||||
| 	tag: 'system-journal', | 	tag: 'system-journal', | ||||||
| @ -1558,7 +1563,7 @@ var PartialRibbonsActions = actions.Actions({ | |||||||
| // 				- shift image up
 | // 				- shift image up
 | ||||||
| // 		XXX The two should be completely independent.... (???)
 | // 		XXX The two should be completely independent.... (???)
 | ||||||
| var PartialRibbons =  | var PartialRibbons =  | ||||||
| module.PartialRibbons = features.Feature(ImageGridFeatures, { | module.PartialRibbons = ImageGridFeatures.Feature({ | ||||||
| 	title: 'Partial Ribbons', | 	title: 'Partial Ribbons', | ||||||
| 	doc: 'Maintains partially loaded ribbons, this enables very lage ' | 	doc: 'Maintains partially loaded ribbons, this enables very lage ' | ||||||
| 		+'image sets to be hadled eficiently.', | 		+'image sets to be hadled eficiently.', | ||||||
| @ -1704,7 +1709,7 @@ function updateImageProportions(){ | |||||||
| //
 | //
 | ||||||
| //
 | //
 | ||||||
| var SingleImageView = | var SingleImageView = | ||||||
| module.SingleImageView = features.Feature(ImageGridFeatures, { | module.SingleImageView = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -1763,7 +1768,7 @@ module.SingleImageView = features.Feature(ImageGridFeatures, { | |||||||
| // XXX should .alignByOrder(..) be a feature-specific action or global 
 | // XXX should .alignByOrder(..) be a feature-specific action or global 
 | ||||||
| // 		as it is now???
 | // 		as it is now???
 | ||||||
| var AlignRibbonsToImageOrder =  | var AlignRibbonsToImageOrder =  | ||||||
| module.AlignRibbonsToImageOrder = features.Feature(ImageGridFeatures, { | module.AlignRibbonsToImageOrder = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -1778,7 +1783,7 @@ module.AlignRibbonsToImageOrder = features.Feature(ImageGridFeatures, { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| var AlignRibbonsToFirstImage =  | var AlignRibbonsToFirstImage =  | ||||||
| module.AlignRibbonsToFirstImage = features.Feature(ImageGridFeatures, { | module.AlignRibbonsToFirstImage = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -1797,7 +1802,7 @@ module.AlignRibbonsToFirstImage = features.Feature(ImageGridFeatures, { | |||||||
| 
 | 
 | ||||||
| // XXX at this point this does not support target lists...
 | // XXX at this point this does not support target lists...
 | ||||||
| var ShiftAnimation = | var ShiftAnimation = | ||||||
| module.ShiftAnimation = features.Feature(ImageGridFeatures, { | module.ShiftAnimation = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -1883,7 +1888,7 @@ function didAdvance(indicator){ | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var BoundsIndicators =  | var BoundsIndicators =  | ||||||
| module.BoundsIndicators = features.Feature(ImageGridFeatures, { | module.BoundsIndicators = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2042,7 +2047,7 @@ var CurrentImageIndicatorActions = actions.Actions({ | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| var CurrentImageIndicator =  | var CurrentImageIndicator =  | ||||||
| module.CurrentImageIndicator = features.Feature(ImageGridFeatures, { | module.CurrentImageIndicator = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2143,7 +2148,7 @@ module.CurrentImageIndicator = features.Feature(ImageGridFeatures, { | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| var CurrentImageIndicatorHideOnFastScreenNav =  | var CurrentImageIndicatorHideOnFastScreenNav =  | ||||||
| module.CurrentImageIndicatorHideOnFastScreenNav = features.Feature(ImageGridFeatures, { | module.CurrentImageIndicatorHideOnFastScreenNav = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2208,7 +2213,7 @@ module.CurrentImageIndicatorHideOnFastScreenNav = features.Feature(ImageGridFeat | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| var CurrentImageIndicatorHideOnScreenNav =  | var CurrentImageIndicatorHideOnScreenNav =  | ||||||
| module.CurrentImageIndicatorHideOnScreenNav = features.Feature(ImageGridFeatures, { | module.CurrentImageIndicatorHideOnScreenNav = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2249,7 +2254,7 @@ module.CurrentImageIndicatorHideOnScreenNav = features.Feature(ImageGridFeatures | |||||||
| 
 | 
 | ||||||
| // XXX
 | // XXX
 | ||||||
| var ImageStateIndicator =  | var ImageStateIndicator =  | ||||||
| module.ImageStateIndicator = features.Feature(ImageGridFeatures, { | module.ImageStateIndicator = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2263,7 +2268,7 @@ module.ImageStateIndicator = features.Feature(ImageGridFeatures, { | |||||||
| 
 | 
 | ||||||
| // XXX
 | // XXX
 | ||||||
| var GlobalStateIndicator =  | var GlobalStateIndicator =  | ||||||
| module.GlobalStateIndicator = features.Feature(ImageGridFeatures, { | module.GlobalStateIndicator = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2463,7 +2468,7 @@ var ActionTreeActions = actions.Actions({ | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| var ActionTree =  | var ActionTree =  | ||||||
| module.ActionTree = features.Feature(ImageGridFeatures, { | module.ActionTree = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2496,7 +2501,7 @@ module.ActionTree = features.Feature(ImageGridFeatures, { | |||||||
| // XXX need to get the minimal size and not the width as results will 
 | // XXX need to get the minimal size and not the width as results will 
 | ||||||
| // 		depend on viewer format...
 | // 		depend on viewer format...
 | ||||||
| var AutoSingleImage =  | var AutoSingleImage =  | ||||||
| module.AutoSingleImage = features.Feature(ImageGridFeatures, { | module.AutoSingleImage = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2655,7 +2660,7 @@ var ImageMarkActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| // NOTE: this is usable without ribbons...
 | // NOTE: this is usable without ribbons...
 | ||||||
| var ImageMarks =  | var ImageMarks =  | ||||||
| module.ImageMarks = features.Feature(ImageGridFeatures, { | module.ImageMarks = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2717,7 +2722,7 @@ var ImageBookmarkActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| // NOTE: this is usable without ribbons...
 | // NOTE: this is usable without ribbons...
 | ||||||
| var ImageBookmarks =  | var ImageBookmarks =  | ||||||
| module.ImageBookmarks = features.Feature(ImageGridFeatures, { | module.ImageBookmarks = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2767,7 +2772,7 @@ var AppControlActions = actions.Actions({ | |||||||
| 
 | 
 | ||||||
| // XXX this needs a better .isApplicable(..)
 | // XXX this needs a better .isApplicable(..)
 | ||||||
| var AppControl =  | var AppControl =  | ||||||
| module.AppControl = features.Feature(ImageGridFeatures, { | module.AppControl = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2789,7 +2794,7 @@ module.AppControl = features.Feature(ImageGridFeatures, { | |||||||
| //---------------------------------------------------------------------
 | //---------------------------------------------------------------------
 | ||||||
| // XXX at this point this is a stub...
 | // XXX at this point this is a stub...
 | ||||||
| var FileSystemLoader =  | var FileSystemLoader =  | ||||||
| module.FileSystemLoader = features.Feature(ImageGridFeatures, { | module.FileSystemLoader = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
| @ -2812,7 +2817,7 @@ module.FileSystemLoader = features.Feature(ImageGridFeatures, { | |||||||
| // 		- editor			- editing capability
 | // 		- editor			- editing capability
 | ||||||
| //
 | //
 | ||||||
| 
 | 
 | ||||||
| features.Feature(ImageGridFeatures, 'viewer-testing', [ | ImageGridFeatures.Feature('viewer-testing', [ | ||||||
| 	'ui', | 	'ui', | ||||||
| 
 | 
 | ||||||
| 	// features...
 | 	// features...
 | ||||||
| @ -2844,12 +2849,7 @@ features.Feature(ImageGridFeatures, 'viewer-testing', [ | |||||||
| 	'system-journal', | 	'system-journal', | ||||||
| ]) | ]) | ||||||
| 
 | 
 | ||||||
| features.Feature(ImageGridFeatures, 'commandline', [ | ImageGridFeatures.Feature('viewer-minimal', [ | ||||||
| 	'image-marks', |  | ||||||
| 	'image-bookmarks', |  | ||||||
| ]) |  | ||||||
| 
 |  | ||||||
| features.Feature(ImageGridFeatures, 'viewer-minimal', [ |  | ||||||
| 	'ui', | 	'ui', | ||||||
| 	'ui-ribbon-align-to-order', | 	'ui-ribbon-align-to-order', | ||||||
| 	'ui-animation', | 	'ui-animation', | ||||||
| @ -2860,11 +2860,11 @@ features.Feature(ImageGridFeatures, 'viewer-minimal', [ | |||||||
| 	'ui-action-tree', | 	'ui-action-tree', | ||||||
| ]) | ]) | ||||||
| 
 | 
 | ||||||
| features.Feature(ImageGridFeatures, 'viewer', [ | ImageGridFeatures.Feature('viewer', [ | ||||||
| 	'viewer-minimal', | 	'viewer-minimal', | ||||||
| ]) | ]) | ||||||
| 
 | 
 | ||||||
| features.Feature(ImageGridFeatures, 'viewer-partial', [ | ImageGridFeatures.Feature('viewer-partial', [ | ||||||
| 	'viewer', | 	'viewer', | ||||||
| 	'ui-partial-ribbons', | 	'ui-partial-ribbons', | ||||||
| ]) | ]) | ||||||
| @ -2883,7 +2883,7 @@ var ExperimentActions = actions.Actions({ | |||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| var ExperimentFeature =  | var ExperimentFeature =  | ||||||
| module.ExperimentFeature = features.Feature(ImageGridFeatures, { | module.ExperimentFeature = ImageGridFeatures.Feature({ | ||||||
| 	title: '', | 	title: '', | ||||||
| 	doc: '', | 	doc: '', | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user