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

38 lines
1.1 KiB
JavaScript
Raw Normal View History

import { Pattern } from './pattern/index.mjs'
2022-09-18 15:11:10 +02:00
import { __loadDesignDefaults } from './config.mjs'
2022-09-18 15:11:10 +02:00
//////////////////////////////////////////////
// CONSTRUCTOR //
//////////////////////////////////////////////
/**
* Return a Pattern constructor (it's a super-constructor)
*
* @constructor
2022-09-24 12:44:41 +02:00
* @param {object} designConfig - The design configuration
2022-09-18 15:11:10 +02:00
* @return {function} pattern - The pattern constructor
*/
2022-09-24 12:44:41 +02:00
export function Design(designConfig) {
// Initialize designConfig with defaults
designConfig = { ...__loadDesignDefaults(), ...designConfig }
// Create the pattern constructor
const pattern = function (...sets) {
2022-09-24 12:44:41 +02:00
// Pass the designConfig
Pattern.call(this, designConfig)
// Pass the pattern settings
return this.__applySettings(sets)
2019-08-03 15:03:33 +02:00
}
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 design & pattern config available without instantiating a pattern
2022-09-24 12:44:41 +02:00
pattern.designConfig = designConfig
pattern.patternConfig = new pattern().getConfig()
2019-08-03 15:03:33 +02:00
return pattern
2019-02-16 07:28:56 +01:00
}