mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-10 22:24:19 +01:00
81 lines
2.8 KiB
JavaScript
81 lines
2.8 KiB
JavaScript
/*!
|
|
* Bootstrap config.js v5.2.0-beta1 (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.0-beta1): 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
|