28 lines
874 B
JavaScript
28 lines
874 B
JavaScript
import Pattern from './pattern'
|
|
|
|
export default function Design(config, plugins = false, conditionalPlugins = false) {
|
|
const pattern = function (settings) {
|
|
Pattern.call(this, config)
|
|
// Load plugins
|
|
if (Array.isArray(plugins)) for (let plugin of plugins) this.use(plugin)
|
|
else if (plugins) this.use(plugins)
|
|
// Load conditional plugins
|
|
if (Array.isArray(conditionalPlugins))
|
|
for (let plugin of conditionalPlugins) this.useIf(plugin, settings)
|
|
else if (conditionalPlugins.plugin && conditionalPlugins.condition)
|
|
this.useIf(conditionalPlugins, settings)
|
|
|
|
this.apply(settings)
|
|
|
|
return this
|
|
}
|
|
|
|
// Set up inheritance
|
|
pattern.prototype = Object.create(Pattern.prototype)
|
|
pattern.prototype.constructor = pattern
|
|
|
|
// Make config available without need to instantiate pattern
|
|
pattern.config = config
|
|
|
|
return pattern
|
|
}
|