|
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v5.1.3): dom/data.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- define([], function() {
- 'use strict';
-
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
-
- const elementMap = new Map()
-
- return {
- set: function (element, key, instance) {
- if (!elementMap.has(element)) {
- elementMap.set(element, new Map())
- }
-
- const instanceMap = elementMap.get(element)
-
- // make it clear we only want one instance per element
- // can be removed later when multiple key/instances are fine to be used
- if (!instanceMap.has(key) && instanceMap.size !== 0) {
- // eslint-disable-next-line no-console
- console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)
- return
- }
-
- instanceMap.set(key, instance)
- },
-
- get: function (element, key) {
- if (elementMap.has(element)) {
- return elementMap.get(element).get(key) || null
- }
-
- return null
- },
-
- remove: function (element, key) {
- if (!elementMap.has(element)) {
- return
- }
-
- const instanceMap = elementMap.get(element)
-
- instanceMap.delete(key)
-
- // free up element references if there are no instances left for an element
- if (instanceMap.size === 0) {
- elementMap.delete(element)
- }
- }
- }
- });
|