diff options
Diffstat (limited to 'vendor/oojs/oojs-ui/src/ToolFactory.js')
-rw-r--r-- | vendor/oojs/oojs-ui/src/ToolFactory.js | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/vendor/oojs/oojs-ui/src/ToolFactory.js b/vendor/oojs/oojs-ui/src/ToolFactory.js deleted file mode 100644 index aada2e9b..00000000 --- a/vendor/oojs/oojs-ui/src/ToolFactory.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Factory for tools. - * - * @class - * @extends OO.Factory - * @constructor - */ -OO.ui.ToolFactory = function OoUiToolFactory() { - // Parent constructor - OO.ui.ToolFactory.super.call( this ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.ToolFactory, OO.Factory ); - -/* Methods */ - -/** - * Get tools from the factory - * - * @param {Array} include Included tools - * @param {Array} exclude Excluded tools - * @param {Array} promote Promoted tools - * @param {Array} demote Demoted tools - * @return {string[]} List of tools - */ -OO.ui.ToolFactory.prototype.getTools = function ( include, exclude, promote, demote ) { - var i, len, included, promoted, demoted, - auto = [], - used = {}; - - // Collect included and not excluded tools - included = OO.simpleArrayDifference( this.extract( include ), this.extract( exclude ) ); - - // Promotion - promoted = this.extract( promote, used ); - demoted = this.extract( demote, used ); - - // Auto - for ( i = 0, len = included.length; i < len; i++ ) { - if ( !used[ included[ i ] ] ) { - auto.push( included[ i ] ); - } - } - - return promoted.concat( auto ).concat( demoted ); -}; - -/** - * Get a flat list of names from a list of names or groups. - * - * Tools can be specified in the following ways: - * - * - A specific tool: `{ name: 'tool-name' }` or `'tool-name'` - * - All tools in a group: `{ group: 'group-name' }` - * - All tools: `'*'` - * - * @private - * @param {Array|string} collection List of tools - * @param {Object} [used] Object with names that should be skipped as properties; extracted - * names will be added as properties - * @return {string[]} List of extracted names - */ -OO.ui.ToolFactory.prototype.extract = function ( collection, used ) { - var i, len, item, name, tool, - names = []; - - if ( collection === '*' ) { - for ( name in this.registry ) { - tool = this.registry[ name ]; - if ( - // Only add tools by group name when auto-add is enabled - tool.static.autoAddToCatchall && - // Exclude already used tools - ( !used || !used[ name ] ) - ) { - names.push( name ); - if ( used ) { - used[ name ] = true; - } - } - } - } else if ( Array.isArray( collection ) ) { - for ( i = 0, len = collection.length; i < len; i++ ) { - item = collection[ i ]; - // Allow plain strings as shorthand for named tools - if ( typeof item === 'string' ) { - item = { name: item }; - } - if ( OO.isPlainObject( item ) ) { - if ( item.group ) { - for ( name in this.registry ) { - tool = this.registry[ name ]; - if ( - // Include tools with matching group - tool.static.group === item.group && - // Only add tools by group name when auto-add is enabled - tool.static.autoAddToGroup && - // Exclude already used tools - ( !used || !used[ name ] ) - ) { - names.push( name ); - if ( used ) { - used[ name ] = true; - } - } - } - // Include tools with matching name and exclude already used tools - } else if ( item.name && ( !used || !used[ item.name ] ) ) { - names.push( item.name ); - if ( used ) { - used[ item.name ] = true; - } - } - } - } - } - return names; -}; |