{"version":3,"sources":["config.js"],"names":["Manipulator","isElement","toType","Config","_createClass","_classCallCheck","this","key","value","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","element","jsonConfig","getDataAttribute","_objectSpread","constructor","Default","_typeof","getDataAttributes","configTypes","arguments","length","undefined","DefaultType","_i","_Object$entries","Object","entries","_Object$entries$_i","_slicedToArray","property","expectedTypes","valueType","RegExp","test","TypeError","concat","NAME","toUpperCase","get","Error"],"mappings":"ugGAOAA,gBAAA,+BACAC,UAAAC,MAAA,KAAA,aAEA,IAIAC,OAAA,WAAA,OAAAC,aAAA,SAAAD,IAAAE,gBAAAC,KAAAH,CAAA,CAAA,EAAA,CAAA,CAAAI,IAAA,aAAAC,MAJA,SAAAC,GAsBA,OAHAA,EAAAH,KAAAI,gBAAAD,CAAA,EACAA,EAAAH,KAAAK,kBAAAF,CAAA,EACAH,KAAAM,iBAAAH,CAAA,EACAA,CACA,CAAA,EAAA,CAAAF,IAAA,oBAAAC,MAEA,SAAAC,GACA,OAAAA,CACA,CAAA,EAAA,CAAAF,IAAA,kBAAAC,MAEA,SAAAC,EAAAI,GACA,IAAAC,EAAAb,UAAAY,CAAA,EAAAb,YAAAe,iBAAAF,EAAA,QAAA,EAAA,GAEA,OAAAG,cAAAA,cAAAA,cAAAA,cAAA,GACAV,KAAAW,YAAAC,OAAA,EACA,WAAAC,QAAAL,CAAA,EAAAA,EAAA,EAAA,EACAb,UAAAY,CAAA,EAAAb,YAAAoB,kBAAAP,CAAA,EAAA,EAAA,EACA,WAAAM,QAAAV,CAAA,EAAAA,EAAA,EAAA,CAEA,CAAA,EAAA,CAAAF,IAAA,mBAAAC,MAEA,SAAAC,GACA,IADA,IAAAY,EAAA,EAAAC,UAAAC,QAAAC,KAAAA,IAAAF,UAAA,GAAAA,UAAA,GAAAhB,KAAAW,YAAAQ,YACAC,EAAA,EAAAC,EAAAC,OAAAC,QAAAR,CAAA,EAAAK,EAAAC,EAAAJ,OAAAG,CAAA,GAAA,CAAA,IAAAI,EAAAC,eAAAJ,EAAAD,GAAA,CAAA,EAAAM,EAAAF,EAAA,GAAAG,EAAAH,EAAA,GACAtB,EAAAC,EAAAuB,GACAE,EAAAjC,UAAAO,CAAA,EAAA,UAAAN,OAAAM,CAAA,EAEA,GAAA,CAAA,IAAA2B,OAAAF,CAAA,EAAAG,KAAAF,CAAA,EACA,MAAA,IAAAG,UAAA,GAAAC,OACAhC,KAAAW,YAAAsB,KAAAC,YAAA,EAAA,YAAA,EAAAF,OAAAN,EAAA,mBAAA,EAAAM,OAAAJ,EAAA,uBAAA,EAAAI,OAAAL,EAAA,IAAA,CACA,CAEA,CACA,CAAA,GAAA,CAAA,CAAA1B,IAAA,UAAAkC,IA5DA,WACA,MAAA,EACA,CAAA,EAAA,CAAAlC,IAAA,cAAAkC,IAEA,WAgBA,MAAA,EAdA,CAAA,EAAA,CAAAlC,IAAA,OAAAkC,IAiBA,WAdA,MAAA,IAAAC,MAAA,qEAAA,CACA,CAAA,EAAA,CAAA,EAAA,iBAqDAvC","file":"config.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n"]}