Spaces:
Running
Running
| /** | |
| * -------------------------------------------------------------------------- | |
| * Bootstrap (v5.1.3): dom/data.js | |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | |
| * -------------------------------------------------------------------------- | |
| */ | |
| /** | |
| * ------------------------------------------------------------------------ | |
| * Constants | |
| * ------------------------------------------------------------------------ | |
| */ | |
| const elementMap = new Map() | |
| export default { | |
| set(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(element, key) { | |
| if (elementMap.has(element)) { | |
| return elementMap.get(element).get(key) || null | |
| } | |
| return null | |
| }, | |
| remove(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) | |
| } | |
| } | |
| } |