83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
/**
 | 
						|
 * --------------------------------------------------------------------------
 | 
						|
 * Bootstrap (v5.1.3): dom/manipulator.js
 | 
						|
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 | 
						|
 * --------------------------------------------------------------------------
 | 
						|
 */
 | 
						|
 | 
						|
define([], function() {
 | 
						|
    'use strict';
 | 
						|
 | 
						|
    function normalizeData(val) {
 | 
						|
        if (val === 'true') {
 | 
						|
            return true
 | 
						|
        }
 | 
						|
 | 
						|
        if (val === 'false') {
 | 
						|
            return false
 | 
						|
        }
 | 
						|
 | 
						|
        if (val === Number(val).toString()) {
 | 
						|
            return Number(val)
 | 
						|
        }
 | 
						|
 | 
						|
        if (val === '' || val === 'null') {
 | 
						|
            return null
 | 
						|
        }
 | 
						|
 | 
						|
        return val
 | 
						|
    }
 | 
						|
 | 
						|
    function normalizeDataKey(key) {
 | 
						|
        return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)
 | 
						|
    }
 | 
						|
 | 
						|
    return {
 | 
						|
        setDataAttribute: function(element, key, value) {
 | 
						|
            element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)
 | 
						|
        },
 | 
						|
 | 
						|
        removeDataAttribute: function(element, key) {
 | 
						|
            element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)
 | 
						|
        },
 | 
						|
 | 
						|
        getDataAttributes: function(element) {
 | 
						|
            if (!element) {
 | 
						|
                return {}
 | 
						|
            }
 | 
						|
 | 
						|
            const attributes = {};
 | 
						|
 | 
						|
            Object.keys(element.dataset)
 | 
						|
                .filter(key => key.startsWith('bs'))
 | 
						|
                .forEach(key => {
 | 
						|
                    let pureKey = key.replace(/^bs/, '');
 | 
						|
                    pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)
 | 
						|
                    attributes[pureKey] = normalizeData(element.dataset[key])
 | 
						|
                })
 | 
						|
 | 
						|
            return attributes
 | 
						|
        },
 | 
						|
 | 
						|
        getDataAttribute: function(element, key) {
 | 
						|
            return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))
 | 
						|
        },
 | 
						|
 | 
						|
        offset: function(element) {
 | 
						|
            const rect = element.getBoundingClientRect();
 | 
						|
 | 
						|
            return {
 | 
						|
                top: rect.top + window.pageYOffset,
 | 
						|
                left: rect.left + window.pageXOffset
 | 
						|
            }
 | 
						|
        },
 | 
						|
 | 
						|
        position: function(element) {
 | 
						|
            return {
 | 
						|
                top: element.offsetTop,
 | 
						|
                left: element.offsetLeft
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
});
 |