1
0
Fork 0
freesewing/packages/core/src/design.js

42 lines
1.2 KiB
JavaScript
Raw Normal View History

2019-08-03 15:03:33 +02:00
import Pattern from './pattern'
2019-02-16 07:28:56 +01:00
// Default hide method for options
const hide = () => false
export default function Design(config, plugins = false, conditionalPlugins = false) {
// 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],
}
}
}
const pattern = function (settings) {
2019-08-03 15:03:33 +02:00
Pattern.call(this, config)
// 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)
// 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
// 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
}