Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'js/dist/util/config.js')
-rw-r--r--js/dist/util/config.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/js/dist/util/config.js b/js/dist/util/config.js
new file mode 100644
index 0000000000..c011c33324
--- /dev/null
+++ b/js/dist/util/config.js
@@ -0,0 +1,80 @@
+/*!
+ * 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