You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.7 KiB
80 lines
2.7 KiB
/*! |
|
* Bootstrap config.js v5.2.2 (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.2): 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
|
|
|