| /*! |
| * Bootstrap config.js v5.2.1 (https://getbootstrap.com/) |
| * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| */ |
| (function (global, factory) { |
| typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./index'), require('../dom/manipulator')) : |
| typeof define === 'function' && define.amd ? define(['./index', '../dom/manipulator'], factory) : |
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Config = factory(global.Index, global.Manipulator)); |
| })(this, (function (index, Manipulator) { 'use strict'; |
| |
| const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; |
| |
| const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator); |
| |
| /** |
| * -------------------------------------------------------------------------- |
| * Bootstrap (v5.2.1): util/config.js |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| * -------------------------------------------------------------------------- |
| */ |
| /** |
| * Class definition |
| */ |
| |
| class Config { |
| // Getters |
| static get Default() { |
| return {}; |
| } |
| |
| static get DefaultType() { |
| return {}; |
| } |
| |
| static get NAME() { |
| throw new Error('You have to implement the static method "NAME", for each component!'); |
| } |
| |
| _getConfig(config) { |
| config = this._mergeConfigObj(config); |
| config = this._configAfterMerge(config); |
| |
| this._typeCheckConfig(config); |
| |
| return config; |
| } |
| |
| _configAfterMerge(config) { |
| return config; |
| } |
| |
| _mergeConfigObj(config, element) { |
| const jsonConfig = index.isElement(element) ? Manipulator__default.default.getDataAttribute(element, 'config') : {}; // try to parse |
| |
| return { ...this.constructor.Default, |
| ...(typeof jsonConfig === 'object' ? jsonConfig : {}), |
| ...(index.isElement(element) ? Manipulator__default.default.getDataAttributes(element) : {}), |
| ...(typeof config === 'object' ? config : {}) |
| }; |
| } |
| |
| _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { |
| for (const property of Object.keys(configTypes)) { |
| const expectedTypes = configTypes[property]; |
| const value = config[property]; |
| const valueType = index.isElement(value) ? 'element' : index.toType(value); |
| |
| if (!new RegExp(expectedTypes).test(valueType)) { |
| throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); |
| } |
| } |
| } |
| |
| } |
| |
| return Config; |
| |
| })); |
| //# sourceMappingURL=config.js.map |