@makedopamine/element-plus-utils 0.0.20260220215154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/LICENSE +21 -0
  2. package/dist/es/arrays.mjs +14 -0
  3. package/dist/es/arrays.mjs.map +1 -0
  4. package/dist/es/browser.mjs +8 -0
  5. package/dist/es/browser.mjs.map +1 -0
  6. package/dist/es/dom/aria.mjs +85 -0
  7. package/dist/es/dom/aria.mjs.map +1 -0
  8. package/dist/es/dom/element.mjs +17 -0
  9. package/dist/es/dom/element.mjs.map +1 -0
  10. package/dist/es/dom/event.mjs +40 -0
  11. package/dist/es/dom/event.mjs.map +1 -0
  12. package/dist/es/dom/index.mjs +7 -0
  13. package/dist/es/dom/index.mjs.map +1 -0
  14. package/dist/es/dom/position.mjs +51 -0
  15. package/dist/es/dom/position.mjs.map +1 -0
  16. package/dist/es/dom/scroll.mjs +120 -0
  17. package/dist/es/dom/scroll.mjs.map +1 -0
  18. package/dist/es/dom/style.mjs +67 -0
  19. package/dist/es/dom/style.mjs.map +1 -0
  20. package/dist/es/easings.mjs +11 -0
  21. package/dist/es/easings.mjs.map +1 -0
  22. package/dist/es/error.mjs +20 -0
  23. package/dist/es/error.mjs.map +1 -0
  24. package/dist/es/functions.mjs +2 -0
  25. package/dist/es/functions.mjs.map +1 -0
  26. package/dist/es/i18n.mjs +4 -0
  27. package/dist/es/i18n.mjs.map +1 -0
  28. package/dist/es/index.mjs +30 -0
  29. package/dist/es/index.mjs.map +1 -0
  30. package/dist/es/objects.mjs +18 -0
  31. package/dist/es/objects.mjs.map +1 -0
  32. package/dist/es/raf.mjs +7 -0
  33. package/dist/es/raf.mjs.map +1 -0
  34. package/dist/es/rand.mjs +5 -0
  35. package/dist/es/rand.mjs.map +1 -0
  36. package/dist/es/strings.mjs +9 -0
  37. package/dist/es/strings.mjs.map +1 -0
  38. package/dist/es/throttleByRaf.mjs +22 -0
  39. package/dist/es/throttleByRaf.mjs.map +1 -0
  40. package/dist/es/types.mjs +23 -0
  41. package/dist/es/types.mjs.map +1 -0
  42. package/dist/es/typescript.mjs +4 -0
  43. package/dist/es/typescript.mjs.map +1 -0
  44. package/dist/es/vue/global-node.mjs +31 -0
  45. package/dist/es/vue/global-node.mjs.map +1 -0
  46. package/dist/es/vue/icon.mjs +33 -0
  47. package/dist/es/vue/icon.mjs.map +1 -0
  48. package/dist/es/vue/index.mjs +9 -0
  49. package/dist/es/vue/index.mjs.map +1 -0
  50. package/dist/es/vue/install.mjs +65 -0
  51. package/dist/es/vue/install.mjs.map +1 -0
  52. package/dist/es/vue/props/index.mjs +2 -0
  53. package/dist/es/vue/props/index.mjs.map +1 -0
  54. package/dist/es/vue/props/runtime.mjs +49 -0
  55. package/dist/es/vue/props/runtime.mjs.map +1 -0
  56. package/dist/es/vue/props/types.mjs +2 -0
  57. package/dist/es/vue/props/types.mjs.map +1 -0
  58. package/dist/es/vue/props/util.mjs +2 -0
  59. package/dist/es/vue/props/util.mjs.map +1 -0
  60. package/dist/es/vue/refs.mjs +10 -0
  61. package/dist/es/vue/refs.mjs.map +1 -0
  62. package/dist/es/vue/size.mjs +8 -0
  63. package/dist/es/vue/size.mjs.map +1 -0
  64. package/dist/es/vue/typescript.mjs +2 -0
  65. package/dist/es/vue/typescript.mjs.map +1 -0
  66. package/dist/es/vue/validator.mjs +7 -0
  67. package/dist/es/vue/validator.mjs.map +1 -0
  68. package/dist/es/vue/vnode.mjs +97 -0
  69. package/dist/es/vue/vnode.mjs.map +1 -0
  70. package/dist/lib/arrays.js +22 -0
  71. package/dist/lib/arrays.js.map +1 -0
  72. package/dist/lib/browser.js +18 -0
  73. package/dist/lib/browser.js.map +1 -0
  74. package/dist/lib/dom/aria.js +95 -0
  75. package/dist/lib/dom/aria.js.map +1 -0
  76. package/dist/lib/dom/element.js +19 -0
  77. package/dist/lib/dom/element.js.map +1 -0
  78. package/dist/lib/dom/event.js +45 -0
  79. package/dist/lib/dom/event.js.map +1 -0
  80. package/dist/lib/dom/index.js +45 -0
  81. package/dist/lib/dom/index.js.map +1 -0
  82. package/dist/lib/dom/position.js +56 -0
  83. package/dist/lib/dom/position.js.map +1 -0
  84. package/dist/lib/dom/scroll.js +128 -0
  85. package/dist/lib/dom/scroll.js.map +1 -0
  86. package/dist/lib/dom/style.js +76 -0
  87. package/dist/lib/dom/style.js.map +1 -0
  88. package/dist/lib/easings.js +13 -0
  89. package/dist/lib/easings.js.map +1 -0
  90. package/dist/lib/error.js +23 -0
  91. package/dist/lib/error.js.map +1 -0
  92. package/dist/lib/functions.js +15 -0
  93. package/dist/lib/functions.js.map +1 -0
  94. package/dist/lib/i18n.js +6 -0
  95. package/dist/lib/i18n.js.map +1 -0
  96. package/dist/lib/index.js +194 -0
  97. package/dist/lib/index.js.map +1 -0
  98. package/dist/lib/objects.js +26 -0
  99. package/dist/lib/objects.js.map +1 -0
  100. package/dist/lib/raf.js +10 -0
  101. package/dist/lib/raf.js.map +1 -0
  102. package/dist/lib/rand.js +8 -0
  103. package/dist/lib/rand.js.map +1 -0
  104. package/dist/lib/strings.js +20 -0
  105. package/dist/lib/strings.js.map +1 -0
  106. package/dist/lib/throttleByRaf.js +24 -0
  107. package/dist/lib/throttleByRaf.js.map +1 -0
  108. package/dist/lib/types.js +63 -0
  109. package/dist/lib/types.js.map +1 -0
  110. package/dist/lib/typescript.js +6 -0
  111. package/dist/lib/typescript.js.map +1 -0
  112. package/dist/lib/vue/global-node.js +35 -0
  113. package/dist/lib/vue/global-node.js.map +1 -0
  114. package/dist/lib/vue/icon.js +39 -0
  115. package/dist/lib/vue/icon.js.map +1 -0
  116. package/dist/lib/vue/index.js +47 -0
  117. package/dist/lib/vue/index.js.map +1 -0
  118. package/dist/lib/vue/install.js +71 -0
  119. package/dist/lib/vue/install.js.map +1 -0
  120. package/dist/lib/vue/props/index.js +12 -0
  121. package/dist/lib/vue/props/index.js.map +1 -0
  122. package/dist/lib/vue/props/runtime.js +55 -0
  123. package/dist/lib/vue/props/runtime.js.map +1 -0
  124. package/dist/lib/vue/props/types.js +3 -0
  125. package/dist/lib/vue/props/types.js.map +1 -0
  126. package/dist/lib/vue/props/util.js +3 -0
  127. package/dist/lib/vue/props/util.js.map +1 -0
  128. package/dist/lib/vue/refs.js +12 -0
  129. package/dist/lib/vue/refs.js.map +1 -0
  130. package/dist/lib/vue/size.js +10 -0
  131. package/dist/lib/vue/size.js.map +1 -0
  132. package/dist/lib/vue/typescript.js +3 -0
  133. package/dist/lib/vue/typescript.js.map +1 -0
  134. package/dist/lib/vue/validator.js +10 -0
  135. package/dist/lib/vue/validator.js.map +1 -0
  136. package/dist/lib/vue/vnode.js +109 -0
  137. package/dist/lib/vue/vnode.js.map +1 -0
  138. package/package.json +24 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020-PRESENT Element Plus
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,14 @@
1
+ export { castArray as ensureArray } from 'lodash-unified';
2
+ import { isArray } from '@vue/shared';
3
+
4
+ const unique = (arr) => [...new Set(arr)];
5
+ const extractFirst = (arr) => {
6
+ return isArray(arr) ? arr[0] : arr;
7
+ };
8
+ const castArray = (arr) => {
9
+ if (!arr && arr !== 0) return [];
10
+ return isArray(arr) ? arr : [arr];
11
+ };
12
+
13
+ export { castArray, extractFirst, unique };
14
+ //# sourceMappingURL=arrays.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.mjs","sources":["../../arrays.ts"],"sourcesContent":["import { isArray } from './types'\n\nexport const unique = <T>(arr: T[]) => [...new Set(arr)]\n\nexport const extractFirst = <T>(arr: T | T[]): T => {\n return isArray(arr) ? arr[0] : arr\n}\n\ntype Many<T> = T | ReadonlyArray<T>\n// TODO: rename to `ensureArray`\n/** like `_.castArray`, except falsy value returns empty array. */\nexport const castArray = <T>(arr: Many<T>): T[] => {\n if (!arr && (arr as any) !== 0) return []\n return isArray(arr) ? arr : [arr as T]\n}\n\n// TODO: remove import alias\n// avoid naming conflicts\nexport { castArray as ensureArray } from 'lodash-unified'\n"],"names":[],"mappings":";;;AAEO,MAAM,MAAA,GAAS,CAAI,GAAA,KAAa,CAAC,GAAG,IAAI,GAAA,CAAI,GAAG,CAAC;AAEhD,MAAM,YAAA,GAAe,CAAI,GAAA,KAAoB;AAClD,EAAA,OAAO,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,GAAI,GAAA;AACjC;AAKO,MAAM,SAAA,GAAY,CAAI,GAAA,KAAsB;AACjD,EAAA,IAAI,CAAC,GAAA,IAAQ,GAAA,KAAgB,CAAA,SAAU,EAAC;AACxC,EAAA,OAAO,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAQ,CAAA;AACvC;;;;"}
@@ -0,0 +1,8 @@
1
+ import { isClient } from '@vueuse/core';
2
+ export { isClient, isIOS } from '@vueuse/core';
3
+
4
+ const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent);
5
+ const isAndroid = () => isClient && /android/i.test(window.navigator.userAgent);
6
+
7
+ export { isAndroid, isFirefox };
8
+ //# sourceMappingURL=browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.mjs","sources":["../../browser.ts"],"sourcesContent":["import { isClient, isIOS } from '@vueuse/core'\n\nexport const isFirefox = (): boolean =>\n isClient && /firefox/i.test(window.navigator.userAgent)\n\nexport const isAndroid = (): boolean =>\n isClient && /android/i.test(window.navigator.userAgent)\n\nexport { isClient, isIOS }\n"],"names":[],"mappings":";;;AAEO,MAAM,YAAY,MACvB,QAAA,IAAY,WAAW,IAAA,CAAK,MAAA,CAAO,UAAU,SAAS;AAEjD,MAAM,YAAY,MACvB,QAAA,IAAY,WAAW,IAAA,CAAK,MAAA,CAAO,UAAU,SAAS;;;;"}
@@ -0,0 +1,85 @@
1
+ const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`;
2
+ const isShadowRoot = (e) => {
3
+ if (typeof ShadowRoot === "undefined") return false;
4
+ return e instanceof ShadowRoot;
5
+ };
6
+ const isHTMLElement = (e) => {
7
+ if (typeof Element === "undefined") return false;
8
+ return e instanceof Element;
9
+ };
10
+ const isVisible = (element) => {
11
+ if (process.env.NODE_ENV === "test") return true;
12
+ const computed = getComputedStyle(element);
13
+ return computed.position === "fixed" ? false : element.offsetParent !== null;
14
+ };
15
+ const obtainAllFocusableElements = (element) => {
16
+ return Array.from(
17
+ element.querySelectorAll(FOCUSABLE_ELEMENT_SELECTORS)
18
+ ).filter((item) => isFocusable(item) && isVisible(item));
19
+ };
20
+ const isFocusable = (element) => {
21
+ if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute("tabIndex") !== null) {
22
+ return true;
23
+ }
24
+ if (element.tabIndex < 0 || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true") {
25
+ return false;
26
+ }
27
+ switch (element.nodeName) {
28
+ case "A": {
29
+ return !!element.href && element.rel !== "ignore";
30
+ }
31
+ case "INPUT": {
32
+ return !(element.type === "hidden" || element.type === "file");
33
+ }
34
+ case "BUTTON":
35
+ case "SELECT":
36
+ case "TEXTAREA": {
37
+ return true;
38
+ }
39
+ default: {
40
+ return false;
41
+ }
42
+ }
43
+ };
44
+ const triggerEvent = function(elm, name, ...opts) {
45
+ let eventName;
46
+ if (name.includes("mouse") || name.includes("click")) {
47
+ eventName = "MouseEvents";
48
+ } else if (name.includes("key")) {
49
+ eventName = "KeyboardEvent";
50
+ } else {
51
+ eventName = "HTMLEvents";
52
+ }
53
+ const evt = document.createEvent(eventName);
54
+ evt.initEvent(name, ...opts);
55
+ elm.dispatchEvent(evt);
56
+ return elm;
57
+ };
58
+ const isLeaf = (el) => !el.getAttribute("aria-owns");
59
+ const getSibling = (el, distance, elClass) => {
60
+ const { parentNode } = el;
61
+ if (!parentNode) return null;
62
+ const siblings = parentNode.querySelectorAll(elClass);
63
+ const index = Array.prototype.indexOf.call(siblings, el);
64
+ return siblings[index + distance] || null;
65
+ };
66
+ const focusElement = (el, options) => {
67
+ if (!el || !el.focus) return;
68
+ let cleanup = false;
69
+ if (isHTMLElement(el) && !isFocusable(el) && !el.getAttribute("tabindex")) {
70
+ el.setAttribute("tabindex", "-1");
71
+ cleanup = true;
72
+ }
73
+ el.focus(options);
74
+ if (isHTMLElement(el) && cleanup) {
75
+ el.removeAttribute("tabindex");
76
+ }
77
+ };
78
+ const focusNode = (el) => {
79
+ if (!el) return;
80
+ focusElement(el);
81
+ !isLeaf(el) && el.click();
82
+ };
83
+
84
+ export { focusElement, focusNode, getSibling, isFocusable, isLeaf, isShadowRoot, isVisible, obtainAllFocusableElements, triggerEvent };
85
+ //# sourceMappingURL=aria.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria.mjs","sources":["../../../dom/aria.ts"],"sourcesContent":["const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex=\"-1\"]),input:not([disabled]),input:not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled])`\n\nexport const isShadowRoot = (e: unknown): e is ShadowRoot => {\n if (typeof ShadowRoot === 'undefined') return false\n return e instanceof ShadowRoot\n}\n\nconst isHTMLElement = (e: unknown): e is Element => {\n if (typeof Element === 'undefined') return false\n return e instanceof Element\n}\n\n/**\n * Determine if the testing element is visible on screen no matter if its on the viewport or not\n */\nexport const isVisible = (element: HTMLElement) => {\n if (process.env.NODE_ENV === 'test') return true\n const computed = getComputedStyle(element)\n // element.offsetParent won't work on fix positioned\n // WARNING: potential issue here, going to need some expert advices on this issue\n return computed.position === 'fixed' ? false : element.offsetParent !== null\n}\n\nexport const obtainAllFocusableElements = (\n element: HTMLElement\n): HTMLElement[] => {\n return Array.from(\n element.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENT_SELECTORS)\n ).filter((item: HTMLElement) => isFocusable(item) && isVisible(item))\n}\n\n/**\n * @desc Determine if target element is focusable\n * @param element {HTMLElement}\n * @returns {Boolean} true if it is focusable\n */\nexport const isFocusable = (element: HTMLElement): boolean => {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n if (\n element.tabIndex < 0 ||\n element.hasAttribute('disabled') ||\n element.getAttribute('aria-disabled') === 'true'\n ) {\n return false\n }\n\n switch (element.nodeName) {\n case 'A': {\n // casting current element to Specific HTMLElement in order to be more type precise\n return (\n !!(element as HTMLAnchorElement).href &&\n (element as HTMLAnchorElement).rel !== 'ignore'\n )\n }\n case 'INPUT': {\n return !(\n (element as HTMLInputElement).type === 'hidden' ||\n (element as HTMLInputElement).type === 'file'\n )\n }\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA': {\n return true\n }\n default: {\n return false\n }\n }\n}\n\n/**\n * Trigger an event\n * mouseenter, mouseleave, mouseover, keyup, change, click, etc.\n * @param {HTMLElement} elm\n * @param {String} name\n * @param {*} opts\n */\nexport const triggerEvent = function (\n elm: HTMLElement,\n name: string,\n ...opts: Array<boolean>\n): HTMLElement {\n let eventName: string\n\n if (name.includes('mouse') || name.includes('click')) {\n eventName = 'MouseEvents'\n } else if (name.includes('key')) {\n eventName = 'KeyboardEvent'\n } else {\n eventName = 'HTMLEvents'\n }\n const evt = document.createEvent(eventName)\n\n evt.initEvent(name, ...opts)\n elm.dispatchEvent(evt)\n return elm\n}\n\nexport const isLeaf = (el: HTMLElement) => !el.getAttribute('aria-owns')\n\nexport const getSibling = (\n el: HTMLElement,\n distance: number,\n elClass: string\n) => {\n const { parentNode } = el\n if (!parentNode) return null\n const siblings = parentNode.querySelectorAll(elClass)\n const index = Array.prototype.indexOf.call(siblings, el)\n return siblings[index + distance] || null\n}\n\nexport const focusElement = (\n el?: HTMLElement | { focus: () => void } | null,\n options?: FocusOptions\n) => {\n if (!el || !el.focus) return\n let cleanup: boolean = false\n\n if (isHTMLElement(el) && !isFocusable(el) && !el.getAttribute('tabindex')) {\n el.setAttribute('tabindex', '-1')\n cleanup = true\n }\n\n el.focus(options)\n\n if (isHTMLElement(el) && cleanup) {\n el.removeAttribute('tabindex')\n }\n}\n\nexport const focusNode = (el: HTMLElement) => {\n if (!el) return\n focusElement(el)\n !isLeaf(el) && el.click()\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { isClient } from '@vueuse/core';
2
+ import { isString } from '@vue/shared';
3
+
4
+ const getElement = ((target) => {
5
+ if (!isClient || target === "") return null;
6
+ if (isString(target)) {
7
+ try {
8
+ return document.querySelector(target);
9
+ } catch (e) {
10
+ return null;
11
+ }
12
+ }
13
+ return target;
14
+ });
15
+
16
+ export { getElement };
17
+ //# sourceMappingURL=element.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.mjs","sources":["../../../dom/element.ts"],"sourcesContent":["import { isString } from '../types'\nimport { isClient } from '../browser'\n\ntype GetElement = <T extends string | HTMLElement | Window | null | undefined>(\n target: T\n) => T extends string ? HTMLElement | null : T\n\nexport const getElement = ((\n target: string | HTMLElement | Window | null | undefined\n) => {\n if (!isClient || target === '') return null\n if (isString(target)) {\n try {\n return document.querySelector<HTMLElement>(target)\n } catch {\n return null\n }\n }\n return target\n}) as GetElement\n"],"names":[],"mappings":";;;AAOO,MAAM,UAAA,IAAc,CACzB,MAAA,KACG;AACH,EAAA,IAAI,CAAC,QAAA,IAAY,MAAA,KAAW,EAAA,EAAI,OAAO,IAAA;AACvC,EAAA,IAAI,QAAA,CAAS,MAAM,CAAA,EAAG;AACpB,IAAA,IAAI;AACF,MAAA,OAAO,QAAA,CAAS,cAA2B,MAAM,CAAA;AAAA,IACnD,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT,CAAA;;;;"}
@@ -0,0 +1,40 @@
1
+ import { EVENT_CODE } from '@element-plus/constants';
2
+ import { isAndroid } from '../browser.mjs';
3
+
4
+ const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => {
5
+ const handleEvent = (event) => {
6
+ const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event);
7
+ if (checkForDefaultPrevented === false || !shouldPrevent) {
8
+ return oursHandler == null ? void 0 : oursHandler(event);
9
+ }
10
+ };
11
+ return handleEvent;
12
+ };
13
+ const whenMouse = (handler) => {
14
+ return (e) => e.pointerType === "mouse" ? handler(e) : void 0;
15
+ };
16
+ const getEventCode = (event) => {
17
+ if (event.code && event.code !== "Unidentified") return event.code;
18
+ const key = getEventKey(event);
19
+ if (key) {
20
+ if (Object.values(EVENT_CODE).includes(key)) return key;
21
+ switch (key) {
22
+ case " ":
23
+ return EVENT_CODE.space;
24
+ default:
25
+ return "";
26
+ }
27
+ }
28
+ return "";
29
+ };
30
+ const getEventKey = (event) => {
31
+ let key = event.key && event.key !== "Unidentified" ? event.key : "";
32
+ if (!key && event.type === "keyup" && isAndroid()) {
33
+ const target = event.target;
34
+ key = target.value.charAt(target.selectionStart - 1);
35
+ }
36
+ return key;
37
+ };
38
+
39
+ export { composeEventHandlers, getEventCode, getEventKey, whenMouse };
40
+ //# sourceMappingURL=event.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.mjs","sources":["../../../dom/event.ts"],"sourcesContent":["import { EVENT_CODE } from '@element-plus/constants'\nimport { isAndroid } from '../browser'\n\nexport const composeEventHandlers = <E>(\n theirsHandler?: (event: E) => boolean | void,\n oursHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) => {\n const handleEvent = (event: E) => {\n const shouldPrevent = theirsHandler?.(event)\n\n if (checkForDefaultPrevented === false || !shouldPrevent) {\n return oursHandler?.(event)\n }\n }\n return handleEvent\n}\n\ntype WhenMouseHandler = (e: PointerEvent) => any\nexport const whenMouse = (handler: WhenMouseHandler): WhenMouseHandler => {\n return (e: PointerEvent) =>\n e.pointerType === 'mouse' ? handler(e) : undefined\n}\n\nexport const getEventCode = (event: KeyboardEvent): string => {\n if (event.code && event.code !== 'Unidentified') return event.code\n // On android, event.code is always '' (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code#browser_compatibility)\n const key = getEventKey(event)\n\n if (key) {\n if (Object.values(EVENT_CODE).includes(key)) return key\n\n switch (key) {\n case ' ':\n return EVENT_CODE.space\n default:\n return ''\n }\n }\n\n return ''\n}\n\nexport const getEventKey = (event: KeyboardEvent): string => {\n let key = event.key && event.key !== 'Unidentified' ? event.key : ''\n\n // On Android, event.key and event.code may not be useful when entering characters or space\n // So here we directly get the last character of the input\n // **only takes effect in the keyup event**\n if (!key && event.type === 'keyup' && isAndroid()) {\n const target = event.target as HTMLInputElement\n key = target.value.charAt(target.selectionStart! - 1)\n }\n\n return key\n}\n"],"names":[],"mappings":";;;AAGO,MAAM,oBAAA,GAAuB,CAClC,aAAA,EACA,WAAA,EACA,EAAE,wBAAA,GAA2B,IAAA,EAAK,GAAI,EAAC,KACpC;AACH,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAa;AAChC,IAAA,MAAM,gBAAgB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAgB,KAAA,CAAA;AAEtC,IAAA,IAAI,wBAAA,KAA6B,KAAA,IAAS,CAAC,aAAA,EAAe;AACxD,MAAA,OAAO,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,KAAA,CAAA;AAAA,IACvB;AAAA,EACF,CAAA;AACA,EAAA,OAAO,WAAA;AACT;AAGO,MAAM,SAAA,GAAY,CAAC,OAAA,KAAgD;AACxE,EAAA,OAAO,CAAC,CAAA,KACN,CAAA,CAAE,gBAAgB,OAAA,GAAU,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA;AAC7C;AAEO,MAAM,YAAA,GAAe,CAAC,KAAA,KAAiC;AAC5D,EAAA,IAAI,MAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,KAAS,cAAA,SAAuB,KAAA,CAAM,IAAA;AAE9D,EAAA,MAAM,GAAA,GAAM,YAAY,KAAK,CAAA;AAE7B,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,IAAI,OAAO,MAAA,CAAO,UAAU,EAAE,QAAA,CAAS,GAAG,GAAG,OAAO,GAAA;AAEpD,IAAA,QAAQ,GAAA;AAAK,MACX,KAAK,GAAA;AACH,QAAA,OAAO,UAAA,CAAW,KAAA;AAAA,MACpB;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF;AAEA,EAAA,OAAO,EAAA;AACT;AAEO,MAAM,WAAA,GAAc,CAAC,KAAA,KAAiC;AAC3D,EAAA,IAAI,MAAM,KAAA,CAAM,GAAA,IAAO,MAAM,GAAA,KAAQ,cAAA,GAAiB,MAAM,GAAA,GAAM,EAAA;AAKlE,EAAA,IAAI,CAAC,GAAA,IAAO,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,WAAU,EAAG;AACjD,IAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,IAAA,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,MAAA,CAAO,iBAAkB,CAAC,CAAA;AAAA,EACtD;AAEA,EAAA,OAAO,GAAA;AACT;;;;"}
@@ -0,0 +1,7 @@
1
+ export { focusElement, focusNode, getSibling, isFocusable, isLeaf, isShadowRoot, isVisible, obtainAllFocusableElements, triggerEvent } from './aria.mjs';
2
+ export { composeEventHandlers, getEventCode, getEventKey, whenMouse } from './event.mjs';
3
+ export { getClientXY, getOffsetTop, getOffsetTopDistance, isInContainer } from './position.mjs';
4
+ export { animateScrollTo, getScrollBarWidth, getScrollContainer, getScrollElement, getScrollTop, isScroll, scrollIntoView } from './scroll.mjs';
5
+ export { addClass, addUnit, classNameToArray, getStyle, hasClass, removeClass, removeStyle, setStyle } from './style.mjs';
6
+ export { getElement } from './element.mjs';
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,51 @@
1
+ import { isClient } from '@vueuse/core';
2
+
3
+ const isInContainer = (el, container) => {
4
+ if (!isClient || !el || !container) return false;
5
+ const elRect = el.getBoundingClientRect();
6
+ let containerRect;
7
+ if (container instanceof Element) {
8
+ containerRect = container.getBoundingClientRect();
9
+ } else {
10
+ containerRect = {
11
+ top: 0,
12
+ right: window.innerWidth,
13
+ bottom: window.innerHeight,
14
+ left: 0
15
+ };
16
+ }
17
+ return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
18
+ };
19
+ const getOffsetTop = (el) => {
20
+ let offset = 0;
21
+ let parent = el;
22
+ while (parent) {
23
+ offset += parent.offsetTop;
24
+ parent = parent.offsetParent;
25
+ }
26
+ return offset;
27
+ };
28
+ const getOffsetTopDistance = (el, containerEl) => {
29
+ return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl));
30
+ };
31
+ const getClientXY = (event) => {
32
+ let clientX;
33
+ let clientY;
34
+ if (event.type === "touchend") {
35
+ clientY = event.changedTouches[0].clientY;
36
+ clientX = event.changedTouches[0].clientX;
37
+ } else if (event.type.startsWith("touch")) {
38
+ clientY = event.touches[0].clientY;
39
+ clientX = event.touches[0].clientX;
40
+ } else {
41
+ clientY = event.clientY;
42
+ clientX = event.clientX;
43
+ }
44
+ return {
45
+ clientX,
46
+ clientY
47
+ };
48
+ };
49
+
50
+ export { getClientXY, getOffsetTop, getOffsetTopDistance, isInContainer };
51
+ //# sourceMappingURL=position.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.mjs","sources":["../../../dom/position.ts"],"sourcesContent":["import { isClient } from '../browser'\n\nexport const isInContainer = (\n el?: Element,\n container?: Element | Window\n): boolean => {\n if (!isClient || !el || !container) return false\n\n const elRect = el.getBoundingClientRect()\n\n let containerRect: Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>\n if (container instanceof Element) {\n containerRect = container.getBoundingClientRect()\n } else {\n containerRect = {\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n left: 0,\n }\n }\n return (\n elRect.top < containerRect.bottom &&\n elRect.bottom > containerRect.top &&\n elRect.right > containerRect.left &&\n elRect.left < containerRect.right\n )\n}\n\nexport const getOffsetTop = (el: HTMLElement) => {\n let offset = 0\n let parent = el\n\n while (parent) {\n offset += parent.offsetTop\n parent = parent.offsetParent as HTMLElement\n }\n\n return offset\n}\n\nexport const getOffsetTopDistance = (\n el: HTMLElement,\n containerEl: HTMLElement\n) => {\n return Math.abs(getOffsetTop(el) - getOffsetTop(containerEl))\n}\n\nexport const getClientXY = (event: MouseEvent | TouchEvent) => {\n let clientX: number\n let clientY: number\n if (event.type === 'touchend') {\n clientY = (event as TouchEvent).changedTouches[0].clientY\n clientX = (event as TouchEvent).changedTouches[0].clientX\n } else if (event.type.startsWith('touch')) {\n clientY = (event as TouchEvent).touches[0].clientY\n clientX = (event as TouchEvent).touches[0].clientX\n } else {\n clientY = (event as MouseEvent).clientY\n clientX = (event as MouseEvent).clientX\n }\n return {\n clientX,\n clientY,\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,aAAA,GAAgB,CAC3B,EAAA,EACA,SAAA,KACY;AACZ,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,EAAA,IAAM,CAAC,WAAW,OAAO,KAAA;AAE3C,EAAA,MAAM,MAAA,GAAS,GAAG,qBAAA,EAAsB;AAExC,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,qBAAqB,OAAA,EAAS;AAChC,IAAA,aAAA,GAAgB,UAAU,qBAAA,EAAsB;AAAA,EAClD,CAAA,MAAO;AACL,IAAA,aAAA,GAAgB;AAAA,MACd,GAAA,EAAK,CAAA;AAAA,MACL,OAAO,MAAA,CAAO,UAAA;AAAA,MACd,QAAQ,MAAA,CAAO,WAAA;AAAA,MACf,IAAA,EAAM;AAAA,KACR;AAAA,EACF;AACA,EAAA,OACE,MAAA,CAAO,GAAA,GAAM,aAAA,CAAc,MAAA,IAC3B,OAAO,MAAA,GAAS,aAAA,CAAc,GAAA,IAC9B,MAAA,CAAO,KAAA,GAAQ,aAAA,CAAc,IAAA,IAC7B,MAAA,CAAO,OAAO,aAAA,CAAc,KAAA;AAEhC;AAEO,MAAM,YAAA,GAAe,CAAC,EAAA,KAAoB;AAC/C,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,MAAA,GAAS,EAAA;AAEb,EAAA,OAAO,MAAA,EAAQ;AACb,IAAA,MAAA,IAAU,MAAA,CAAO,SAAA;AACjB,IAAA,MAAA,GAAS,MAAA,CAAO,YAAA;AAAA,EAClB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,oBAAA,GAAuB,CAClC,EAAA,EACA,WAAA,KACG;AACH,EAAA,OAAO,KAAK,GAAA,CAAI,YAAA,CAAa,EAAE,CAAA,GAAI,YAAA,CAAa,WAAW,CAAC,CAAA;AAC9D;AAEO,MAAM,WAAA,GAAc,CAAC,KAAA,KAAmC;AAC7D,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,IAAA,OAAA,GAAW,KAAA,CAAqB,cAAA,CAAe,CAAC,CAAA,CAAE,OAAA;AAClD,IAAA,OAAA,GAAW,KAAA,CAAqB,cAAA,CAAe,CAAC,CAAA,CAAE,OAAA;AAAA,EACpD,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,EAAG;AACzC,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAA;AAC3C,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA,CAAQ,CAAC,CAAA,CAAE,OAAA;AAAA,EAC7C,CAAA,MAAO;AACL,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA;AAChC,IAAA,OAAA,GAAW,KAAA,CAAqB,OAAA;AAAA,EAClC;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,120 @@
1
+ import { isClient } from '@vueuse/core';
2
+ import { easeInOutCubic } from '../easings.mjs';
3
+ import { isWindow } from '../types.mjs';
4
+ import { rAF, cAF } from '../raf.mjs';
5
+ import { getStyle } from './style.mjs';
6
+ import { isShadowRoot } from './aria.mjs';
7
+ import { isFunction } from '@vue/shared';
8
+
9
+ const isScroll = (el, isVertical) => {
10
+ if (!isClient) return false;
11
+ const key = {
12
+ undefined: "overflow",
13
+ true: "overflow-y",
14
+ false: "overflow-x"
15
+ }[String(isVertical)];
16
+ const overflow = getStyle(el, key);
17
+ return ["scroll", "auto", "overlay"].some((s) => overflow.includes(s));
18
+ };
19
+ const getScrollContainer = (el, isVertical) => {
20
+ if (!isClient) return;
21
+ let parent = el;
22
+ while (parent) {
23
+ if ([window, document, document.documentElement].includes(parent))
24
+ return window;
25
+ if (isScroll(parent, isVertical)) return parent;
26
+ if (isShadowRoot(parent)) {
27
+ parent = parent.host;
28
+ } else {
29
+ parent = parent.parentNode;
30
+ }
31
+ }
32
+ return parent;
33
+ };
34
+ let scrollBarWidth;
35
+ const getScrollBarWidth = (namespace) => {
36
+ var _a;
37
+ if (!isClient) return 0;
38
+ if (scrollBarWidth !== void 0) return scrollBarWidth;
39
+ const outer = document.createElement("div");
40
+ outer.className = `${namespace}-scrollbar__wrap`;
41
+ outer.style.visibility = "hidden";
42
+ outer.style.width = "100px";
43
+ outer.style.position = "absolute";
44
+ outer.style.top = "-9999px";
45
+ document.body.appendChild(outer);
46
+ const widthNoScroll = outer.offsetWidth;
47
+ outer.style.overflow = "scroll";
48
+ const inner = document.createElement("div");
49
+ inner.style.width = "100%";
50
+ outer.appendChild(inner);
51
+ const widthWithScroll = inner.offsetWidth;
52
+ (_a = outer.parentNode) == null ? void 0 : _a.removeChild(outer);
53
+ scrollBarWidth = widthNoScroll - widthWithScroll;
54
+ return scrollBarWidth;
55
+ };
56
+ function scrollIntoView(container, selected) {
57
+ if (!isClient) return;
58
+ if (!selected) {
59
+ container.scrollTop = 0;
60
+ return;
61
+ }
62
+ const offsetParents = [];
63
+ let pointer = selected.offsetParent;
64
+ while (pointer !== null && container !== pointer && container.contains(pointer)) {
65
+ offsetParents.push(pointer);
66
+ pointer = pointer.offsetParent;
67
+ }
68
+ const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
69
+ const bottom = top + selected.offsetHeight;
70
+ const viewRectTop = container.scrollTop;
71
+ const viewRectBottom = viewRectTop + container.clientHeight;
72
+ if (top < viewRectTop) {
73
+ container.scrollTop = top;
74
+ } else if (bottom > viewRectBottom) {
75
+ container.scrollTop = bottom - container.clientHeight;
76
+ }
77
+ }
78
+ function animateScrollTo(container, from, to, duration, callback) {
79
+ const startTime = Date.now();
80
+ let handle;
81
+ const scroll = () => {
82
+ const timestamp = Date.now();
83
+ const time = timestamp - startTime;
84
+ const nextScrollTop = easeInOutCubic(
85
+ time > duration ? duration : time,
86
+ from,
87
+ to,
88
+ duration
89
+ );
90
+ if (isWindow(container)) {
91
+ container.scrollTo(window.pageXOffset, nextScrollTop);
92
+ } else {
93
+ container.scrollTop = nextScrollTop;
94
+ }
95
+ if (time < duration) {
96
+ handle = rAF(scroll);
97
+ } else if (isFunction(callback)) {
98
+ callback();
99
+ }
100
+ };
101
+ scroll();
102
+ return () => {
103
+ handle && cAF(handle);
104
+ };
105
+ }
106
+ const getScrollElement = (target, container) => {
107
+ if (isWindow(container)) {
108
+ return target.ownerDocument.documentElement;
109
+ }
110
+ return container;
111
+ };
112
+ const getScrollTop = (container) => {
113
+ if (isWindow(container)) {
114
+ return window.scrollY;
115
+ }
116
+ return container.scrollTop;
117
+ };
118
+
119
+ export { animateScrollTo, getScrollBarWidth, getScrollContainer, getScrollElement, getScrollTop, isScroll, scrollIntoView };
120
+ //# sourceMappingURL=scroll.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.mjs","sources":["../../../dom/scroll.ts"],"sourcesContent":["import { isClient } from '../browser'\nimport { easeInOutCubic } from '../easings'\nimport { isFunction, isWindow } from '../types'\nimport { cAF, rAF } from '../raf'\nimport { getStyle } from './style'\nimport { isShadowRoot } from './aria'\n\nexport const isScroll = (el: HTMLElement, isVertical?: boolean): boolean => {\n if (!isClient) return false\n\n const key = (\n {\n undefined: 'overflow',\n true: 'overflow-y',\n false: 'overflow-x',\n } as const\n )[String(isVertical)]!\n const overflow = getStyle(el, key)\n return ['scroll', 'auto', 'overlay'].some((s) => overflow.includes(s))\n}\n\nexport const getScrollContainer = (\n el: HTMLElement,\n isVertical?: boolean\n): Window | HTMLElement | undefined => {\n if (!isClient) return\n\n let parent: HTMLElement = el\n while (parent) {\n if ([window, document, document.documentElement].includes(parent))\n return window\n\n if (isScroll(parent, isVertical)) return parent\n\n if (isShadowRoot(parent)) {\n parent = parent.host as HTMLElement\n } else {\n parent = parent.parentNode as HTMLElement\n }\n }\n\n return parent\n}\n\nlet scrollBarWidth: number\nexport const getScrollBarWidth = (namespace: string): number => {\n if (!isClient) return 0\n if (scrollBarWidth !== undefined) return scrollBarWidth\n\n const outer = document.createElement('div')\n outer.className = `${namespace}-scrollbar__wrap`\n outer.style.visibility = 'hidden'\n outer.style.width = '100px'\n outer.style.position = 'absolute'\n outer.style.top = '-9999px'\n document.body.appendChild(outer)\n\n const widthNoScroll = outer.offsetWidth\n outer.style.overflow = 'scroll'\n\n const inner = document.createElement('div')\n inner.style.width = '100%'\n outer.appendChild(inner)\n\n const widthWithScroll = inner.offsetWidth\n outer.parentNode?.removeChild(outer)\n scrollBarWidth = widthNoScroll - widthWithScroll\n\n return scrollBarWidth\n}\n\n/**\n * Scroll with in the container element, positioning the **selected** element at the top\n * of the container\n */\nexport function scrollIntoView(\n container: HTMLElement,\n selected: HTMLElement\n): void {\n if (!isClient) return\n\n if (!selected) {\n container.scrollTop = 0\n return\n }\n\n const offsetParents: HTMLElement[] = []\n let pointer = selected.offsetParent\n while (\n pointer !== null &&\n container !== pointer &&\n container.contains(pointer)\n ) {\n offsetParents.push(pointer as HTMLElement)\n pointer = (pointer as HTMLElement).offsetParent\n }\n const top =\n selected.offsetTop +\n offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0)\n const bottom = top + selected.offsetHeight\n const viewRectTop = container.scrollTop\n const viewRectBottom = viewRectTop + container.clientHeight\n\n if (top < viewRectTop) {\n container.scrollTop = top\n } else if (bottom > viewRectBottom) {\n container.scrollTop = bottom - container.clientHeight\n }\n}\n\nexport function animateScrollTo(\n container: HTMLElement | Window,\n from: number,\n to: number,\n duration: number,\n callback?: unknown\n) {\n const startTime = Date.now()\n\n let handle: number | undefined\n const scroll = () => {\n const timestamp = Date.now()\n const time = timestamp - startTime\n const nextScrollTop = easeInOutCubic(\n time > duration ? duration : time,\n from,\n to,\n duration\n )\n\n if (isWindow(container)) {\n container.scrollTo(window.pageXOffset, nextScrollTop)\n } else {\n container.scrollTop = nextScrollTop\n }\n if (time < duration) {\n handle = rAF(scroll)\n } else if (isFunction(callback)) {\n callback()\n }\n }\n\n scroll()\n\n return () => {\n handle && cAF(handle)\n }\n}\n\nexport const getScrollElement = (\n target: HTMLElement,\n container: HTMLElement | Window\n) => {\n if (isWindow(container)) {\n return target.ownerDocument.documentElement\n }\n return container\n}\n\nexport const getScrollTop = (container: HTMLElement | Window) => {\n if (isWindow(container)) {\n return window.scrollY\n }\n return container.scrollTop\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { isNumber, isStringNumber } from '../types.mjs';
2
+ import { isClient } from '@vueuse/core';
3
+ import { camelize, isObject, isString } from '@vue/shared';
4
+ import { entriesOf, keysOf } from '../objects.mjs';
5
+ import { debugWarn } from '../error.mjs';
6
+ import { isShadowRoot } from './aria.mjs';
7
+
8
+ const SCOPE = "utils/dom/style";
9
+ const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim());
10
+ const hasClass = (el, cls) => {
11
+ if (!el || !cls) return false;
12
+ if (cls.includes(" ")) throw new Error("className should not contain space.");
13
+ return el.classList.contains(cls);
14
+ };
15
+ const addClass = (el, cls) => {
16
+ if (!el || !cls.trim()) return;
17
+ el.classList.add(...classNameToArray(cls));
18
+ };
19
+ const removeClass = (el, cls) => {
20
+ if (!el || !cls.trim()) return;
21
+ el.classList.remove(...classNameToArray(cls));
22
+ };
23
+ const getStyle = (element, styleName) => {
24
+ var _a;
25
+ if (!isClient || !element || !styleName || isShadowRoot(element)) return "";
26
+ let key = camelize(styleName);
27
+ if (key === "float") key = "cssFloat";
28
+ try {
29
+ const style = element.style[key];
30
+ if (style) return style;
31
+ const computed = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, "");
32
+ return computed ? computed[key] : "";
33
+ } catch (e) {
34
+ return element.style[key];
35
+ }
36
+ };
37
+ const setStyle = (element, styleName, value) => {
38
+ if (!element || !styleName) return;
39
+ if (isObject(styleName)) {
40
+ entriesOf(styleName).forEach(
41
+ ([prop, value2]) => setStyle(element, prop, value2)
42
+ );
43
+ } else {
44
+ const key = camelize(styleName);
45
+ element.style[key] = value;
46
+ }
47
+ };
48
+ const removeStyle = (element, style) => {
49
+ if (!element || !style) return;
50
+ if (isObject(style)) {
51
+ keysOf(style).forEach((prop) => removeStyle(element, prop));
52
+ } else {
53
+ setStyle(element, style, "");
54
+ }
55
+ };
56
+ function addUnit(value, defaultUnit = "px") {
57
+ if (!value && value !== 0) return "";
58
+ if (isNumber(value) || isStringNumber(value)) {
59
+ return `${value}${defaultUnit}`;
60
+ } else if (isString(value)) {
61
+ return value;
62
+ }
63
+ debugWarn(SCOPE, "binding value must be a string or number");
64
+ }
65
+
66
+ export { addClass, addUnit, classNameToArray, getStyle, hasClass, removeClass, removeStyle, setStyle };
67
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","sources":["../../../dom/style.ts"],"sourcesContent":["import { isNumber, isObject, isString, isStringNumber } from '../types'\nimport { isClient } from '../browser'\nimport { camelize } from '../strings'\nimport { entriesOf, keysOf } from '../objects'\nimport { debugWarn } from '../error'\nimport { isShadowRoot } from './aria'\n\nimport type { CSSProperties } from 'vue'\n\nconst SCOPE = 'utils/dom/style'\n\nexport const classNameToArray = (cls = '') =>\n cls.split(' ').filter((item) => !!item.trim())\n\nexport const hasClass = (el: Element, cls: string): boolean => {\n if (!el || !cls) return false\n if (cls.includes(' ')) throw new Error('className should not contain space.')\n return el.classList.contains(cls)\n}\n\nexport const addClass = (el: Element, cls: string) => {\n if (!el || !cls.trim()) return\n el.classList.add(...classNameToArray(cls))\n}\n\nexport const removeClass = (el: Element, cls: string) => {\n if (!el || !cls.trim()) return\n el.classList.remove(...classNameToArray(cls))\n}\n\nexport const getStyle = (\n element: HTMLElement,\n styleName: keyof CSSProperties\n): string => {\n if (!isClient || !element || !styleName || isShadowRoot(element)) return ''\n\n let key = camelize(styleName)\n if (key === 'float') key = 'cssFloat'\n try {\n const style = (element.style as any)[key]\n if (style) return style\n const computed: any = document.defaultView?.getComputedStyle(element, '')\n return computed ? computed[key] : ''\n } catch {\n return (element.style as any)[key]\n }\n}\n\nexport const setStyle = (\n element: HTMLElement,\n styleName: CSSProperties | keyof CSSProperties,\n value?: string | number\n) => {\n if (!element || !styleName) return\n\n if (isObject(styleName)) {\n entriesOf(styleName).forEach(([prop, value]) =>\n setStyle(element, prop, value)\n )\n } else {\n const key: any = camelize(styleName)\n element.style[key] = value as any\n }\n}\n\nexport const removeStyle = (\n element: HTMLElement,\n style: CSSProperties | keyof CSSProperties\n) => {\n if (!element || !style) return\n\n if (isObject(style)) {\n keysOf(style).forEach((prop) => removeStyle(element, prop))\n } else {\n setStyle(element, style, '')\n }\n}\n\nexport function addUnit(value?: string | number, defaultUnit = 'px') {\n if (!value && value !== 0) return ''\n if (isNumber(value) || isStringNumber(value)) {\n return `${value}${defaultUnit}`\n } else if (isString(value)) {\n return value\n }\n debugWarn(SCOPE, 'binding value must be a string or number')\n}\n"],"names":["value"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ function easeInOutCubic(t, b, c, d) {
2
+ const cc = c - b;
3
+ t /= d / 2;
4
+ if (t < 1) {
5
+ return cc / 2 * t * t * t + b;
6
+ }
7
+ return cc / 2 * ((t -= 2) * t * t + 2) + b;
8
+ }
9
+
10
+ export { easeInOutCubic };
11
+ //# sourceMappingURL=easings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easings.mjs","sources":["../../easings.ts"],"sourcesContent":["export function easeInOutCubic(t: number, b: number, c: number, d: number) {\n const cc = c - b\n t /= d / 2\n if (t < 1) {\n return (cc / 2) * t * t * t + b\n }\n return (cc / 2) * ((t -= 2) * t * t + 2) + b\n}\n"],"names":[],"mappings":"AAAO,SAAS,cAAA,CAAe,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW,CAAA,EAAW;AACzE,EAAA,MAAM,KAAK,CAAA,GAAI,CAAA;AACf,EAAA,CAAA,IAAK,CAAA,GAAI,CAAA;AACT,EAAA,IAAI,IAAI,CAAA,EAAG;AACT,IAAA,OAAQ,EAAA,GAAK,CAAA,GAAK,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,EAChC;AACA,EAAA,OAAQ,KAAK,CAAA,IAAA,CAAO,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,IAAI,CAAA,CAAA,GAAK,CAAA;AAC7C;;;;"}
@@ -0,0 +1,20 @@
1
+ import { isString } from '@vue/shared';
2
+
3
+ class ElementPlusError extends Error {
4
+ constructor(m) {
5
+ super(m);
6
+ this.name = "ElementPlusError";
7
+ }
8
+ }
9
+ function throwError(scope, m) {
10
+ throw new ElementPlusError(`[${scope}] ${m}`);
11
+ }
12
+ function debugWarn(scope, message) {
13
+ if (process.env.NODE_ENV !== "production") {
14
+ const error = isString(scope) ? new ElementPlusError(`[${scope}] ${message}`) : scope;
15
+ console.warn(error);
16
+ }
17
+ }
18
+
19
+ export { debugWarn, throwError };
20
+ //# sourceMappingURL=error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.mjs","sources":["../../error.ts"],"sourcesContent":["import { isString } from './types'\n\nclass ElementPlusError extends Error {\n constructor(m: string) {\n super(m)\n this.name = 'ElementPlusError'\n }\n}\n\nexport function throwError(scope: string, m: string): never {\n throw new ElementPlusError(`[${scope}] ${m}`)\n}\n\nexport function debugWarn(err: Error): void\nexport function debugWarn(scope: string, message: string): void\nexport function debugWarn(scope: string | Error, message?: string): void {\n if (process.env.NODE_ENV !== 'production') {\n const error: Error = isString(scope)\n ? new ElementPlusError(`[${scope}] ${message}`)\n : scope\n // eslint-disable-next-line no-console\n console.warn(error)\n }\n}\n"],"names":[],"mappings":";;AAEA,MAAM,yBAAyB,KAAA,CAAM;AAAA,EACnC,YAAY,CAAA,EAAW;AACrB,IAAA,KAAA,CAAM,CAAC,CAAA;AACP,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA,EACd;AACF;AAEO,SAAS,UAAA,CAAW,OAAe,CAAA,EAAkB;AAC1D,EAAA,MAAM,IAAI,gBAAA,CAAiB,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CAAA;AAC9C;AAIO,SAAS,SAAA,CAAU,OAAuB,OAAA,EAAwB;AACvE,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,IAAA,MAAM,KAAA,GAAe,QAAA,CAAS,KAAK,CAAA,GAC/B,IAAI,gBAAA,CAAiB,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA,GAC5C,KAAA;AAEJ,IAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,EACpB;AACF;;;;"}
@@ -0,0 +1,2 @@
1
+ export { NOOP, toRawType } from '@vue/shared';
2
+ //# sourceMappingURL=functions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ const isKorean = (text) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(text);
2
+
3
+ export { isKorean };
4
+ //# sourceMappingURL=i18n.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.mjs","sources":["../../i18n.ts"],"sourcesContent":["export const isKorean = (text: string) =>\n /([\\uAC00-\\uD7AF\\u3130-\\u318F])+/gi.test(text)\n"],"names":[],"mappings":"AAAO,MAAM,QAAA,GAAW,CAAC,IAAA,KACvB,mCAAA,CAAoC,KAAK,IAAI;;;;"}
@@ -0,0 +1,30 @@
1
+ export { castArray, extractFirst, unique } from './arrays.mjs';
2
+ export { isAndroid, isFirefox } from './browser.mjs';
3
+ export { debugWarn, throwError } from './error.mjs';
4
+ export { isKorean } from './i18n.mjs';
5
+ export { entriesOf, getProp, keysOf } from './objects.mjs';
6
+ export { cAF, rAF } from './raf.mjs';
7
+ export { generateId, getRandomInt } from './rand.mjs';
8
+ export { capitalize, escapeStringRegexp, kebabCase } from './strings.mjs';
9
+ export { isBoolean, isElement, isEmpty, isNumber, isPropAbsent, isStringNumber, isUndefined, isWindow } from './types.mjs';
10
+ export { mutable } from './typescript.mjs';
11
+ export { throttleByRaf } from './throttleByRaf.mjs';
12
+ export { easeInOutCubic } from './easings.mjs';
13
+ export { focusElement, focusNode, getSibling, isFocusable, isLeaf, isShadowRoot, isVisible, obtainAllFocusableElements, triggerEvent } from './dom/aria.mjs';
14
+ export { composeEventHandlers, getEventCode, getEventKey, whenMouse } from './dom/event.mjs';
15
+ export { getClientXY, getOffsetTop, getOffsetTopDistance, isInContainer } from './dom/position.mjs';
16
+ export { animateScrollTo, getScrollBarWidth, getScrollContainer, getScrollElement, getScrollTop, isScroll, scrollIntoView } from './dom/scroll.mjs';
17
+ export { addClass, addUnit, classNameToArray, getStyle, hasClass, removeClass, removeStyle, setStyle } from './dom/style.mjs';
18
+ export { getElement } from './dom/element.mjs';
19
+ export { changeGlobalNodesTarget, createGlobalNode, removeGlobalNode } from './vue/global-node.mjs';
20
+ export { CloseComponents, TypeComponents, TypeComponentsMap, ValidateComponentsMap, iconPropType } from './vue/icon.mjs';
21
+ export { withInstall, withInstallDirective, withInstallFunction, withNoopInstall, withPropsDefaultsSetter } from './vue/install.mjs';
22
+ export { buildProp, buildProps, definePropType, epPropKey, isEpProp } from './vue/props/runtime.mjs';
23
+ export { composeRefs } from './vue/refs.mjs';
24
+ export { getComponentSize } from './vue/size.mjs';
25
+ export { isValidComponentSize, isValidDatePickType } from './vue/validator.mjs';
26
+ export { PatchFlags, flattedChildren, getFirstValidNode, getNormalizedProps, isComment, isFragment, isTemplate, isText, isValidElementNode, renderBlock, renderIf } from './vue/vnode.mjs';
27
+ export { castArray as ensureArray } from 'lodash-unified';
28
+ export { isClient, isIOS } from '@vueuse/core';
29
+ export { NOOP, camelize, hasOwn, hyphenate, isArray, isDate, isFunction, isObject, isPlainObject, isPromise, isString, isSymbol, toRawType } from '@vue/shared';
30
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}