2017-08-21 09:11:37 +02:00
|
|
|
/**
|
|
|
|
* --------------------------------------------------------------------------
|
2021-08-04 18:41:51 +03:00
|
|
|
* Bootstrap (v5.1.0): dom/data.js
|
2020-06-16 21:41:47 +03:00
|
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
2017-08-21 09:11:37 +02:00
|
|
|
* --------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
2018-09-14 14:27:30 +02:00
|
|
|
/**
|
|
|
|
* ------------------------------------------------------------------------
|
|
|
|
* Constants
|
|
|
|
* ------------------------------------------------------------------------
|
|
|
|
*/
|
2017-08-21 09:11:37 +02:00
|
|
|
|
2021-03-02 15:55:44 +01:00
|
|
|
const elementMap = new Map()
|
2017-09-20 14:19:10 +02:00
|
|
|
|
2021-03-02 15:55:44 +01:00
|
|
|
export default {
|
|
|
|
set(element, key, instance) {
|
|
|
|
if (!elementMap.has(element)) {
|
|
|
|
elementMap.set(element, new Map())
|
|
|
|
}
|
2019-02-26 13:20:34 +02:00
|
|
|
|
2021-03-02 15:55:44 +01:00
|
|
|
const instanceMap = elementMap.get(element)
|
2018-09-14 14:27:30 +02:00
|
|
|
|
2021-03-02 15:55:44 +01:00
|
|
|
// 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
|
2017-08-21 09:11:37 +02:00
|
|
|
}
|
|
|
|
|
2021-03-02 15:55:44 +01:00
|
|
|
instanceMap.set(key, instance)
|
2018-09-14 14:27:30 +02:00
|
|
|
},
|
2021-03-02 15:55:44 +01:00
|
|
|
|
|
|
|
get(element, key) {
|
|
|
|
if (elementMap.has(element)) {
|
|
|
|
return elementMap.get(element).get(key) || null
|
|
|
|
}
|
|
|
|
|
|
|
|
return null
|
2018-09-14 14:27:30 +02:00
|
|
|
},
|
2021-03-02 15:55:44 +01:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
2018-09-14 14:27:30 +02:00
|
|
|
}
|
|
|
|
}
|