UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

1 lines 44.8 kB
{"version":3,"file":"css-alter.cjs","names":["MC","_interopRequireWildcard","require","MH","_domOptimize","_domQuery","_math","_tasks","_text","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","transitionElementNow","element","fromCls","toCls","cancelCSSTransitions","didChange","hasClass","removeClassesNow","addClassesNow","exports","transitionElement","delay","thisTransition","scheduleCSSTransition","waitForDelay","waitForMutateTime","_isCancelled","_finish","transitionDuration","getMaxTransitionDuration","displayElementNow","PREFIX_UNDISPLAY","PREFIX_DISPLAY","displayElement","undisplayElementNow","undisplayElement","showElementNow","PREFIX_HIDE","PREFIX_SHOW","showElement","hideElementNow","hideElement","toggleDisplayElementNow","isElementUndisplayed","toggleDisplayElement","toggleShowElementNow","isElementHidden","toggleShowElement","className","classList","contains","hasAllClasses","classNames","lengthOf","some","hasAnyClass","add","addClasses","asyncMutatorFor","remove","removeClasses","toggleClassNow","force","toggle","toggleClass","toggleClassesNow","cls","toggleClasses","replaceClassNow","oldClassName","newClassName","replace","replaceClass","getData","name","getAttr","prefixData","getBooleanData","value","getBoolData","setDataNow","setAttr","setData","setBooleanDataNow","setBoolDataNow","setBooleanData","setBoolData","unsetBooleanDataNow","unsetAttr","unsetBoolDataNow","unsetBooleanData","unsetBoolData","delDataNow","delAttr","delData","getComputedStylePropNow","prop","getComputedStyle","getPropertyValue","getComputedStyleProp","asyncMeasurerFor","getStylePropNow","_style","style","getStyleProp","setStylePropNow","_style2","setProperty","setStyleProp","delStylePropNow","_style3","removeProperty","delStyleProp","getFlexDirection","displayStyle","includes","getParentFlexDirection","parent","parentOf","isFlex","direction","flexDirection","isFlexChild","propVal","max","splitOn","map","strValue","duration","parseFloat","disableInitialTransition","PREFIX_TRANSITION_DISABLE","waitForSubsequentMutateTime","setHasModal","getBody","PREFIX_HAS_MODAL","delHasModal","copyStyle","fromElement","toElement","includeComputedProps","isDOMElement","waitForMeasureTime","props","setNumericStyleJsVarsNow","options","_options$_prefix","varPrefix","prefixCssJsVar","_prefix","cssPropSuffix","camelToKebabCase","varName","isValidNum","_options$_numDecimal","thisNumDecimal","_numDecimal","roundNumTo","_options$_units","_units","setNumericStyleJsVars","prefixName","scheduledCSSTransitions","newWeakMap","toClasses","scheduledTransitions","scheduledTransition","_cancel","isCancelled","deleteObjKey"],"sources":["../../../src/ts/utils/css-alter.ts"],"sourcesContent":["/**\n * @module Utils\n *\n * @categoryDescription DOM: Querying\n * These functions query the style, attributes or other aspects of elements, but\n * could lead to forced layout if not scheduled using {@link waitForMeasureTime}.\n *\n * @categoryDescription DOM: Querying (optimized)\n * These functions query the style, attributes or other aspects of elements in\n * an optimized way. Functions that could cause a forced layout use\n * {@link waitForMeasureTime} and so are asynchronous. Functions that can\n * perform the check without forcing a re-layout are synchronous.\n *\n * @categoryDescription Style: Altering\n * These functions transition an element from one CSS class to another, but\n * could lead to forced layout if not scheduled using {@link waitForMutateTime}.\n * If a delay is supplied, then the transition is \"scheduled\" and if the\n * opposite transition is executed before the scheduled one, the original one\n * is cancelled. See {@link transitionElement} for an example.\n *\n * @categoryDescription Style: Altering (optimized)\n * These functions transition an element from one CSS class to another in an\n * optimized way using {@link waitForMutateTime} and so are asynchronous.\n * If a delay is supplied, then the transition is \"scheduled\" and if the\n * opposite transition is executed before the scheduled one, the original one\n * is cancelled. See {@link transitionElement} for an example.\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { DOMElement, FlexDirection } from \"@lisn/globals/types\";\n\nimport {\n waitForMeasureTime,\n waitForMutateTime,\n asyncMeasurerFor,\n asyncMutatorFor,\n waitForSubsequentMutateTime,\n} from \"@lisn/utils/dom-optimize\";\nimport { isDOMElement } from \"@lisn/utils/dom-query\";\nimport { isValidNum, roundNumTo } from \"@lisn/utils/math\";\nimport { waitForDelay } from \"@lisn/utils/tasks\";\nimport { camelToKebabCase, splitOn } from \"@lisn/utils/text\";\n\n/**\n * Removes the given `fromCls` class and adds the given `toCls` class to the\n * element.\n *\n * Unlike {@link https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/replace | DOMTokenList:replace},\n * this will always add `toCls` even if `fromCls` isn't in the element's class list.\n *\n * @returns True if there was a change made (class removed or added), false\n * otherwise.\n *\n * @category Style: Altering\n */\nexport const transitionElementNow = (\n element: Element,\n fromCls: string,\n toCls: string,\n) => {\n cancelCSSTransitions(element, fromCls, toCls);\n\n // Avoid triggering MutationObserver unnecessarily.\n let didChange = false;\n if (hasClass(element, fromCls)) {\n didChange = true;\n removeClassesNow(element, fromCls);\n }\n\n if (!hasClass(element, toCls)) {\n addClassesNow(element, toCls);\n didChange = true;\n }\n\n return didChange;\n};\n\n/**\n * Like {@link transitionElementNow} except it will {@link waitForMutateTime},\n * and optionally a delay, and it finally awaits for the effective style's\n * transition-duration.\n *\n * If a delay is supplied, then the transition is \"scheduled\" and if the\n * opposite transition is executed before the scheduled one, this one is\n * cancelled.\n *\n * @example\n *\n * - {@link showElement} with delay of 100 schedules `lisn-hide` -> `lisn-show`\n * in 100ms\n * - then if {@link hideElementNow} is called, or a scheduled\n * {@link hideElement} completes before that timer runs out, this call to\n * {@link showElement} aborts\n *\n * ```javascript\n * hideElement(someElement, 10);\n * // this will be aborted in 10ms when the scheduled hideElement above\n * // completes\n * showElement(someElement, 100);\n * ```\n *\n * ```javascript\n * // this will be aborted in 10ms when the hideElement that will be scheduled\n * // below completes\n * showElement(someElement, 100);\n * hideElement(someElement, 10);\n * ```\n *\n * ```javascript\n * // this will be aborted immediately by hideElementNow that runs straight\n * // afterwards\n * showElement(someElement, 100);\n * hideElementNow(someElement);\n * ```\n *\n * ```javascript\n * hideElementNow(someElement);\n * // this will NOT be aborted because hideElementNow has completed already\n * showElement(someElement, 100);\n * ```\n *\n * @category Style: Altering (optimized)\n */\nexport const transitionElement = async (\n element: Element,\n fromCls: string,\n toCls: string,\n delay = 0,\n) => {\n const thisTransition = scheduleCSSTransition(element, toCls);\n\n if (delay) {\n await waitForDelay(delay);\n }\n\n await waitForMutateTime();\n if (thisTransition._isCancelled()) {\n // it has been overridden by a later transition\n return false;\n }\n\n const didChange = transitionElementNow(element, fromCls, toCls);\n thisTransition._finish();\n\n if (!didChange) {\n return false;\n }\n\n // Await for the transition duration so that caller awaiting on us knows when\n // it's complete.\n const transitionDuration = await getMaxTransitionDuration(element);\n if (transitionDuration) {\n await waitForDelay(transitionDuration);\n }\n\n return true;\n};\n\n/**\n * Transitions an element from class `lisn-undisplay` (which applies `display:\n * none`) to `lisn-display` (no style associated with this).\n *\n * The difference between this and simply removing the `lisn-undisplay` class\n * is that previously scheduled transitions to `lisn-undisplay` will be\n * cancelled.\n *\n * @see {@link transitionElementNow}\n *\n * @category Style: Altering\n */\nexport const displayElementNow = (element: Element) =>\n transitionElementNow(element, MC.PREFIX_UNDISPLAY, MC.PREFIX_DISPLAY);\n\n/**\n * Like {@link displayElementNow} except it will {@link waitForMutateTime}, and\n * optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const displayElement = (element: Element, delay = 0) =>\n transitionElement(element, MC.PREFIX_UNDISPLAY, MC.PREFIX_DISPLAY, delay);\n\n/**\n * The opposite of {@link displayElementNow}.\n *\n * @see {@link transitionElementNow}\n *\n * @category Style: Altering\n */\nexport const undisplayElementNow = (element: Element) =>\n transitionElementNow(element, MC.PREFIX_DISPLAY, MC.PREFIX_UNDISPLAY);\n\n/**\n * Like {@link undisplayElementNow} except it will {@link waitForMutateTime},\n * and optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const undisplayElement = (element: Element, delay = 0) =>\n transitionElement(element, MC.PREFIX_DISPLAY, MC.PREFIX_UNDISPLAY, delay);\n\n/**\n * Transitions an element from class `lisn-hide` (which makes the element\n * hidden) to `lisn-show` (which shows it). These classes have CSS\n * transitions applied so the element is faded into and out of view.\n *\n * @see {@link transitionElementNow}.\n *\n * @category Style: Altering\n */\nexport const showElementNow = (element: Element) =>\n transitionElementNow(element, MC.PREFIX_HIDE, MC.PREFIX_SHOW);\n\n/**\n * Like {@link showElementNow} except it will {@link waitForMutateTime}, and\n * optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const showElement = (element: Element, delay = 0) =>\n transitionElement(element, MC.PREFIX_HIDE, MC.PREFIX_SHOW, delay);\n\n/**\n * The opposite of {@link showElementNow}.\n *\n * @see {@link transitionElementNow}\n *\n * @category Style: Altering\n */\nexport const hideElementNow = (element: Element) =>\n transitionElementNow(element, MC.PREFIX_SHOW, MC.PREFIX_HIDE);\n\n/**\n * Like {@link hideElementNow} except it will {@link waitForMutateTime}, and\n * optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const hideElement = (element: Element, delay = 0) =>\n transitionElement(element, MC.PREFIX_SHOW, MC.PREFIX_HIDE, delay);\n\n/**\n * If {@link isElementUndisplayed}, it will {@link displayElementNow},\n * otherwise it will {@link undisplayElementNow}.\n *\n * @see {@link transitionElementNow}\n *\n * @category Style: Altering\n */\nexport const toggleDisplayElementNow = (element: Element) =>\n isElementUndisplayed(element)\n ? displayElementNow(element)\n : undisplayElementNow(element);\n\n/**\n * Like {@link toggleDisplayElementNow} except it will {@link waitForMutateTime},\n * and optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const toggleDisplayElement = (element: Element, delay = 0) =>\n isElementUndisplayed(element)\n ? displayElement(element, delay)\n : undisplayElement(element, delay);\n\n/**\n * If {@link isElementHidden}, it will {@link showElementNow}, otherwise\n * {@link hideElementNow}.\n *\n * @see {@link transitionElementNow}\n *\n * @category Style: Altering\n */\nexport const toggleShowElementNow = (element: Element) =>\n isElementHidden(element) ? showElementNow(element) : hideElementNow(element);\n\n/**\n * Like {@link toggleShowElementNow} except it will {@link waitForMutateTime}, and\n * optionally a delay.\n *\n * @see {@link transitionElement}\n *\n * @category Style: Altering (optimized)\n */\nexport const toggleShowElement = (element: Element, delay = 0) =>\n isElementHidden(element)\n ? showElement(element, delay)\n : hideElement(element, delay);\n\n/**\n * Returns true if the element's class list contains `lisn-hide`.\n *\n * @category DOM: Querying (optimized)\n */\nexport const isElementHidden = (element: Element) =>\n hasClass(element, MC.PREFIX_HIDE);\n\n/**\n * Returns true if the element's class list contains `lisn-undisplay`.\n *\n * @category DOM: Querying (optimized)\n */\nexport const isElementUndisplayed = (element: Element) =>\n hasClass(element, MC.PREFIX_UNDISPLAY);\n\n/**\n * Returns true if the element's class list contains the given class.\n *\n * @category DOM: Querying (optimized)\n */\nexport const hasClass = (element: Element, className: string) =>\n MH.classList(element).contains(className);\n\n/**\n * Returns true if the element's class list contains all of the given classes.\n *\n * @since v1.2.0\n *\n * @category DOM: Querying (optimized)\n */\nexport const hasAllClasses = (element: Element, ...classNames: string[]) =>\n MH.lengthOf(classNames) > 0 &&\n !MH.some(classNames, (className) => !hasClass(element, className));\n\n/**\n * Returns true if the element's class list contains any of the given classes.\n *\n * @since v1.2.0\n *\n * @category DOM: Querying (optimized)\n */\nexport const hasAnyClass = (element: Element, ...classNames: string[]) =>\n MH.some(classNames, (className) => hasClass(element, className));\n\n/**\n * Adds the given classes to the element.\n *\n * @category Style: Altering\n */\nexport const addClassesNow = (element: Element, ...classNames: string[]) =>\n MH.classList(element).add(...classNames);\n\n/**\n * Like {@link addClassesNow} except it will {@link waitForMutateTime}.\n *\n * @category Style: Altering (optimized)\n */\nexport const addClasses = asyncMutatorFor(addClassesNow);\n\n/**\n * Removes the given classes to the element.\n *\n * @category Style: Altering\n */\nexport const removeClassesNow = (element: Element, ...classNames: string[]) =>\n MH.classList(element).remove(...classNames);\n\n/**\n * Like {@link removeClassesNow} except it will {@link waitForMutateTime}.\n *\n * @category Style: Altering (optimized)\n */\nexport const removeClasses = asyncMutatorFor(removeClassesNow);\n\n/**\n * Toggles the given class on the element.\n *\n * @param force See {@link https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/toggle | DOMTokenList:toggle}\n *\n * @category Style: Altering\n */\nexport const toggleClassNow = (\n element: Element,\n className: string,\n force?: boolean,\n) => MH.classList(element).toggle(className, force);\n\n/**\n * Like {@link toggleClassNow} except it will {@link waitForMutateTime}.\n *\n * @category Style: Altering (optimized)\n */\nexport const toggleClass = asyncMutatorFor(toggleClassNow);\n\n/**\n * Toggles the given classes on the element. This function does not accept the\n * `force` parameter.\n *\n * @since v1.2.0\n *\n * @category Style: Altering\n */\nexport const toggleClassesNow = (element: Element, ...classNames: string[]) => {\n for (const cls of classNames) {\n toggleClassNow(element, cls);\n }\n};\n\n/**\n * Like {@link toggleClassesNow} except it will {@link waitForMutateTime}.\n *\n * @since v1.2.0\n *\n * @category Style: Altering (optimized)\n */\nexport const toggleClasses = asyncMutatorFor(toggleClassesNow);\n\n/**\n * Replaces the given class on the element with a new one.\n *\n * @since v1.2.0\n *\n * @category Style: Altering\n */\nexport const replaceClassNow = (\n element: Element,\n oldClassName: string,\n newClassName: string,\n) => MH.classList(element).replace(oldClassName, newClassName);\n\n/**\n * Like {@link replaceClassNow} except it will {@link waitForMutateTime}.\n *\n * @since v1.2.0\n *\n * @category Style: Altering (optimized)\n */\nexport const replaceClass = asyncMutatorFor(replaceClassNow);\n\n// For *Data: to avoid unnecessary type checking that ensures element is\n// HTMLElement or SVGElement, use getAttribute instead of dataset.\n\n/**\n * Returns the value of the given data attribute. The name of the attribute\n * must _not_ start with `data`. It can be in either camelCase or kebab-case,\n * it is converted as needed.\n *\n * @category DOM: Querying (optimized)\n */\nexport const getData = (element: Element, name: string) =>\n MH.getAttr(element, MH.prefixData(name));\n\n/**\n * Returns the value of the given data attribute as a boolean. Its value is\n * expected to be either blank or \"true\" (which result in `true`), or \"false\"\n * (which results in `false`).\n *\n * The name of the attribute must _not_ start with `data`. It can be in either\n * camelCase or kebab-case, it is converted as needed.\n *\n * @since v1.2.0\n *\n * @category DOM: Querying (optimized)\n */\nexport const getBooleanData = (element: Element, name: string) => {\n const value = getData(element, name);\n return value !== null && value !== \"false\";\n};\n\n/**\n * @ignore\n * @deprecated\n */\nexport const getBoolData = getBooleanData;\n\n/**\n * Sets the given data attribute.\n *\n * The name of the attribute must _not_ start with `data`. It can be in either\n * camelCase or kebab-case, it is converted as needed.\n *\n * @category Style: Altering\n */\nexport const setDataNow = (element: Element, name: string, value: string) =>\n MH.setAttr(element, MH.prefixData(name), value);\n\n/**\n * Like {@link setDataNow} except it will {@link waitForMutateTime}.\n *\n * @category Style: Altering (optimized)\n */\nexport const setData = asyncMutatorFor(setDataNow);\n\n/**\n * Sets the given data attribute with value \"true\" (default) or \"false\".\n *\n * The name of the attribute must _not_ start with `data`. It can be in either\n * camelCase or kebab-case, it is converted as needed.\n *\n * @since v1.2.0\n *\n * @category Style: Altering\n */\nexport const setBooleanDataNow = (\n element: Element,\n name: string,\n value = true,\n) => MH.setAttr(element, MH.prefixData(name), value + \"\");\n\n/**\n * @ignore\n * @deprecated\n */\nexport const setBoolDataNow = setBooleanDataNow;\n\n/**\n * Like {@link setBooleanDataNow} except it will {@link waitForMutateTime}.\n *\n * @since v1.2.0\n *\n * @category Style: Altering (optimized)\n */\nexport const setBooleanData = asyncMutatorFor(setBooleanDataNow);\n\n/**\n * @ignore\n * @deprecated\n */\nexport const setBoolData = setBooleanData;\n\n/**\n * Sets the given data attribute with value \"false\".\n *\n * The name of the attribute must _not_ start with `data`. It can be in either\n * camelCase or kebab-case, it is converted as needed.\n *\n * @since v1.2.0\n *\n * @category Style: Altering\n */\nexport const unsetBooleanDataNow = (element: Element, name: string) =>\n MH.unsetAttr(element, MH.prefixData(name));\n\n/**\n * @ignore\n * @deprecated\n */\nexport const unsetBoolDataNow = unsetBooleanDataNow;\n\n/**\n * Like {@link unsetBooleanDataNow} except it will {@link waitForMutateTime}.\n *\n * @since v1.2.0\n *\n * @category Style: Altering (optimized)\n */\nexport const unsetBooleanData = asyncMutatorFor(unsetBooleanDataNow);\n\n/**\n * @ignore\n * @deprecated\n */\nexport const unsetBoolData = unsetBooleanData;\n\n/**\n * Deletes the given data attribute.\n *\n * The name of the attribute must _not_ start with `data`. It can be in either\n * camelCase or kebab-case, it is converted as needed.\n *\n * @category Style: Altering\n */\nexport const delDataNow = (element: Element, name: string) =>\n MH.delAttr(element, MH.prefixData(name));\n\n/**\n * Like {@link delDataNow} except it will {@link waitForMutateTime}.\n *\n * @category Style: Altering (optimized)\n */\nexport const delData = asyncMutatorFor(delDataNow);\n\n/**\n * Returns the value of the given property from the computed style of the\n * element.\n *\n * @category DOM: Querying\n */\nexport const getComputedStylePropNow = (element: Element, prop: string) =>\n getComputedStyle(element).getPropertyValue(prop);\n\n/**\n * Like {@link getComputedStylePropNow} except it will {@link waitForMeasureTime}.\n *\n * @category DOM: Querying (optimized)\n */\nexport const getComputedStyleProp = asyncMeasurerFor(getComputedStylePropNow);\n\n/**\n * Returns the value of the given property from the inline style of the\n * element.\n *\n * @category DOM: Querying\n */\nexport const getStylePropNow = (element: Element, prop: string) =>\n (element as DOMElement).style?.getPropertyValue(prop);\n\n/**\n * Like {@link getStylePropNow} except it will {@link waitForMeasureTime}.\n *\n * @category DOM: Querying (optimized)\n */\nexport const getStyleProp = asyncMeasurerFor(getStylePropNow);\n\n/**\n * Sets the given property on the inline style of the element.\n *\n * @category DOM: Altering\n */\nexport const setStylePropNow = (\n element: Element,\n prop: string,\n value: string,\n) => (element as DOMElement).style?.setProperty(prop, value);\n\n/**\n * Like {@link setStylePropNow} except it will {@link waitForMutateTime}.\n *\n * @category DOM: Altering (optimized)\n */\nexport const setStyleProp = asyncMutatorFor(setStylePropNow);\n\n/**\n * Deletes the given property on the inline style of the element.\n *\n * @category DOM: Altering\n */\nexport const delStylePropNow = (element: Element, prop: string) =>\n (element as DOMElement).style?.removeProperty(prop);\n\n/**\n * Like {@link delStylePropNow} except it will {@link waitForMutateTime}.\n *\n * @category DOM: Altering (optimized)\n */\nexport const delStyleProp = asyncMutatorFor(delStylePropNow);\n\n/**\n * Returns the flex direction of the given element **if it has a flex layout**.\n *\n * @returns `null` if the element does not have a flex layout.\n *\n * @category DOM: Querying (optimized)\n *\n * @since v1.2.0\n */\nexport const getFlexDirection = async (\n element: Element,\n): Promise<FlexDirection | null> => {\n const displayStyle = await getComputedStyleProp(element, \"display\");\n if (!displayStyle.includes(\"flex\")) {\n return null;\n }\n\n return (await getComputedStyleProp(\n element,\n \"flex-direction\",\n )) as FlexDirection;\n};\n\n/**\n * Returns the flex direction of the given element's parent **if it has a flex\n * layout**.\n *\n * @returns `null` if the element's parent does not have a flex layout.\n *\n * @category DOM: Querying (optimized)\n *\n * @since v1.2.0\n */\nexport const getParentFlexDirection = async (\n element: Element,\n): Promise<FlexDirection | null> => {\n const parent = MH.parentOf(element);\n return parent ? getFlexDirection(parent) : null;\n};\n\n/**\n * Returns true if the given element has a flex layout. If direction is given,\n * then it also needs to match.\n *\n * @category DOM: Querying (optimized)\n *\n * @since v1.2.0\n */\nexport const isFlex = async (element: Element, direction?: FlexDirection) => {\n const flexDirection = await getFlexDirection(element);\n\n if (direction) {\n return direction === flexDirection;\n }\n\n return flexDirection !== null;\n};\n\n/**\n * Returns true if the given element's parent has a flex layout. If direction is\n * given, then it also needs to match.\n *\n * @category DOM: Querying (optimized)\n *\n * @since v1.2.0\n */\nexport const isFlexChild = async (\n element: Element,\n direction?: FlexDirection,\n) => {\n const parent = MH.parentOf(element);\n return parent ? isFlex(parent, direction) : false;\n};\n\n/**\n * In milliseconds.\n *\n * @ignore\n * @internal\n */\nexport const getMaxTransitionDuration = async (element: Element) => {\n const propVal = await getComputedStyleProp(element, \"transition-duration\");\n\n return MH.max(\n ...splitOn(propVal, \",\", true).map((strValue) => {\n let duration = MH.parseFloat(strValue) || 0;\n\n if (strValue === duration + \"s\") {\n duration *= 1000;\n }\n\n return duration;\n }),\n );\n};\n\n/**\n * @ignore\n * @internal\n */\nexport const disableInitialTransition = async (element: Element, delay = 0) => {\n await addClasses(element, MC.PREFIX_TRANSITION_DISABLE);\n if (delay) {\n await waitForDelay(delay);\n }\n\n await waitForSubsequentMutateTime();\n removeClassesNow(element, MC.PREFIX_TRANSITION_DISABLE);\n};\n\n/**\n * @ignore\n * @internal\n */\nexport const setHasModal = () => setBooleanData(MH.getBody(), PREFIX_HAS_MODAL);\n\n/**\n * @ignore\n * @internal\n */\nexport const delHasModal = () => delData(MH.getBody(), PREFIX_HAS_MODAL);\n\n/**\n * @ignore\n * @internal\n */\nexport const copyStyle = async (\n fromElement: Element,\n toElement: Element,\n includeComputedProps?: string[],\n) => {\n if (!isDOMElement(fromElement) || !isDOMElement(toElement)) {\n return;\n }\n\n await waitForMeasureTime();\n const props: Record<string, string> = {};\n\n if (includeComputedProps) {\n for (const prop of includeComputedProps) {\n props[prop] = getComputedStylePropNow(fromElement, prop);\n }\n }\n\n const style = fromElement.style; // only inline styles\n for (const prop in style) {\n const value = style.getPropertyValue(prop);\n if (value) {\n props[prop] = value;\n }\n }\n\n for (const prop in props) {\n setStyleProp(toElement, prop, props[prop]);\n }\n\n addClasses(toElement, ...MH.classList(fromElement));\n};\n\n/**\n * If the props keys are in camelCase they are converted to kebab-case\n *\n * If a value is null or undefined, the property is deleted.\n *\n * @ignore\n * @internal\n */\nexport const setNumericStyleJsVarsNow = (\n element: Element,\n props: CssNumericProps,\n options: {\n _prefix?: string;\n _units?: string;\n _numDecimal?: number;\n } = {},\n) => {\n if (!isDOMElement(element)) {\n return;\n }\n\n const varPrefix = MH.prefixCssJsVar(options?._prefix ?? \"\");\n for (const prop in props) {\n const cssPropSuffix = camelToKebabCase(prop);\n const varName = `${varPrefix}${cssPropSuffix}`;\n\n let value: number | null;\n\n if (!isValidNum(props[prop])) {\n value = null;\n } else {\n value = props[prop];\n const thisNumDecimal =\n options?._numDecimal ?? (value > 0 && value < 1 ? 2 : 0);\n value = roundNumTo(value, thisNumDecimal);\n }\n\n if (value === null) {\n delStylePropNow(element, varName);\n } else {\n setStylePropNow(element, varName, value + (options?._units ?? \"\"));\n }\n }\n};\n\n/**\n * @ignore\n * @internal\n */\nexport const setNumericStyleJsVars = asyncMutatorFor(setNumericStyleJsVarsNow);\n\n// ----------------------------------------\n\ntype CssNumericProps = Record<string, number | undefined | null>;\n\ntype CSSTransition = {\n _cancel: () => undefined;\n _finish: () => undefined;\n _isCancelled: () => boolean;\n};\n\nconst PREFIX_HAS_MODAL = MH.prefixName(\"has-modal\");\n\nconst scheduledCSSTransitions = MH.newWeakMap<\n Element,\n Record<string, CSSTransition>\n>();\n\nconst cancelCSSTransitions = (element: Element, ...toClasses: string[]) => {\n const scheduledTransitions = scheduledCSSTransitions.get(element);\n if (!scheduledTransitions) {\n return;\n }\n\n for (const toCls of toClasses) {\n const scheduledTransition = scheduledTransitions[toCls];\n if (scheduledTransition) {\n scheduledTransition._cancel();\n }\n }\n};\n\nconst scheduleCSSTransition = (element: Element, toCls: string) => {\n let scheduledTransitions = scheduledCSSTransitions.get(element);\n if (!scheduledTransitions) {\n scheduledTransitions = {};\n scheduledCSSTransitions.set(element, scheduledTransitions);\n }\n\n let isCancelled = false;\n scheduledTransitions[toCls] = {\n _cancel: () => {\n isCancelled = true;\n MH.deleteObjKey(scheduledTransitions, toCls);\n },\n _finish: () => {\n MH.deleteObjKey(scheduledTransitions, toCls);\n },\n _isCancelled: () => {\n return isCancelled;\n },\n };\n\n return scheduledTransitions[toCls];\n};\n"],"mappings":"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","ignoreList":[]}