2019-08-03 15:03:33 +02:00
|
|
|
import Pattern from './pattern'
|
2019-02-16 07:28:56 +01:00
|
|
|
|
2022-02-05 07:11:09 +01:00
|
|
|
// Default hide method for options
|
|
|
|
const hide = () => false
|
|
|
|
|
2020-09-12 19:01:12 +02:00
|
|
|
export default function Design(config, plugins = false, conditionalPlugins = false) {
|
2022-02-05 07:11:09 +01:00
|
|
|
// Add default hide() method to config.options
|
|
|
|
for (const option in config.options) {
|
|
|
|
if (typeof config.options[option] === 'object') {
|
|
|
|
config.options[option] = {
|
|
|
|
hide,
|
2022-03-28 19:38:18 +02:00
|
|
|
...config.options[option],
|
2022-02-05 07:11:09 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-12 19:01:12 +02:00
|
|
|
const pattern = function (settings) {
|
2019-08-03 15:03:33 +02:00
|
|
|
Pattern.call(this, config)
|
2020-09-12 19:01:12 +02:00
|
|
|
// Load plugins
|
2019-08-03 15:03:33 +02:00
|
|
|
if (Array.isArray(plugins)) for (let plugin of plugins) this.use(plugin)
|
|
|
|
else if (plugins) this.use(plugins)
|
2020-09-12 19:01:12 +02:00
|
|
|
// 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)
|
|
|
|
|
2019-08-03 15:03:33 +02:00
|
|
|
this.apply(settings)
|
2019-02-16 07:28:56 +01:00
|
|
|
|
2019-08-03 15:03:33 +02:00
|
|
|
return this
|
|
|
|
}
|
2019-02-16 07:28:56 +01:00
|
|
|
|
|
|
|
// Set up inheritance
|
2019-08-03 15:03:33 +02:00
|
|
|
pattern.prototype = Object.create(Pattern.prototype)
|
|
|
|
pattern.prototype.constructor = pattern
|
2019-02-16 07:28:56 +01:00
|
|
|
|
2019-09-21 19:42:53 +02:00
|
|
|
// Make config available without need to instantiate pattern
|
|
|
|
pattern.config = config
|
|
|
|
|
2019-08-03 15:03:33 +02:00
|
|
|
return pattern
|
2019-02-16 07:28:56 +01:00
|
|
|
}
|