@eonova/v3-directives 1.0.7 → 1.0.8
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.
- package/README.md +2 -2
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -23
package/README.md
CHANGED
|
@@ -28,8 +28,8 @@ app.use(VueDirectives)
|
|
|
28
28
|
|
|
29
29
|
## 🧩Directives
|
|
30
30
|
|
|
31
|
-
| Directive
|
|
32
|
-
|
|
|
31
|
+
| Directive | Description |
|
|
32
|
+
| ----------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
33
33
|
| [v-backtop](https://v3-directives.eonova.me/zh/directives/v-backtop.html) | Add a return to top function for an element |
|
|
34
34
|
| [v-clickOutside](https://v3-directives.eonova.me/zh/directives/v-clickOutside.html) | Event when clicking outside the element triggers |
|
|
35
35
|
| [v-copy](https://v3-directives.eonova.me/zh/directives/v-copy.html) | Copy the passed value to the clipboard |
|
package/dist/index.js
CHANGED
|
@@ -481,9 +481,11 @@ var vInput = {
|
|
|
481
481
|
return console.log(`\u4F7F\u7528v-input\u6307\u4EE4\u9700\u8981\u9009\u62E9\u7279\u5B9A\u529F\u80FD\uFF1Av-input:type="restrictValue"; type = ${types.join("/")}.`);
|
|
482
482
|
el.$handler = (el2) => {
|
|
483
483
|
switch (_type) {
|
|
484
|
+
// 数字
|
|
484
485
|
case "number":
|
|
485
|
-
el2.value = el2.value.replace(
|
|
486
|
+
el2.value = el2.value.replace(/\D/, "");
|
|
486
487
|
break;
|
|
488
|
+
// 数字+小数
|
|
487
489
|
case "decimal":
|
|
488
490
|
el2.value = el2.value.replace(/[^\d.]/g, "");
|
|
489
491
|
el2.value = el2.value.replace(/\.{2,}/g, ".");
|
|
@@ -493,8 +495,9 @@ var vInput = {
|
|
|
493
495
|
!el2.value.includes(".") && el2.value !== "" && (el2.value = Number.parseFloat(el2.value));
|
|
494
496
|
el2.value.includes(".") && el2.value.length === 1 && (el2.value = "");
|
|
495
497
|
break;
|
|
498
|
+
// 自定义, 由data-rule提供规则
|
|
496
499
|
case "customize":
|
|
497
|
-
const rule =
|
|
500
|
+
const rule = new RegExp(restrict);
|
|
498
501
|
el2.value = el2.value.replace(rule, "");
|
|
499
502
|
break;
|
|
500
503
|
}
|
|
@@ -1118,7 +1121,7 @@ var directives = {
|
|
|
1118
1121
|
throttle: v_throttle_default,
|
|
1119
1122
|
waterMarker: v_waterMarker_default
|
|
1120
1123
|
};
|
|
1121
|
-
var
|
|
1124
|
+
var index_default = {
|
|
1122
1125
|
install(app) {
|
|
1123
1126
|
Object.keys(directives).forEach((key) => {
|
|
1124
1127
|
app.directive(key, directives[key]);
|
|
@@ -1126,7 +1129,7 @@ var src_default = {
|
|
|
1126
1129
|
}
|
|
1127
1130
|
};
|
|
1128
1131
|
|
|
1129
|
-
exports.default =
|
|
1132
|
+
exports.default = index_default;
|
|
1130
1133
|
exports.vBacktop = v_backtop_default;
|
|
1131
1134
|
exports.vClickOutside = v_clickOutside_default;
|
|
1132
1135
|
exports.vCopy = v_copy_default;
|
|
@@ -1152,5 +1155,5 @@ exports.vRipple = v_ripple_default;
|
|
|
1152
1155
|
exports.vSlideIn = v_slideIn_default;
|
|
1153
1156
|
exports.vThrottle = v_throttle_default;
|
|
1154
1157
|
exports.vWaterMarker = v_waterMarker_default;
|
|
1155
|
-
//# sourceMappingURL=
|
|
1158
|
+
//# sourceMappingURL=index.js.map
|
|
1156
1159
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/directive/v-backtop/index.ts","../src/directive/v-clickOutside/index.ts","../src/directive/v-copy/index.ts","../src/utils/isBoolean.ts","../src/utils/isFunction.ts","../src/utils/loadingSvg.ts","../src/directive/v-debounce/index.ts","../src/directive/v-doubleClick/index.ts","../src/directive/v-draggable/index.ts","../src/directive/v-ellipsis/index.ts","../src/directive/v-emoji/index.ts","../src/directive/v-empty/index.ts","../src/directive/v-flicker/index.ts","../src/directive/v-focus/index.ts","../src/directive/v-highlight/index.ts","../src/directive/v-hover/index.ts","../src/directive/v-input/index.ts","../src/directive/v-lazyImg/index.ts","../src/directive/v-loading/index.ts","../src/directive/v-longpress/index.ts","../src/directive/v-money/index.ts","../src/directive/v-onOnce/index.ts","../src/directive/v-permission/index.ts","../src/directive/v-resize/index.ts","../src/directive/v-ripple/index.ts","../src/directive/v-slideIn/index.ts","../src/directive/v-throttle/index.ts","../src/directive/v-waterMarker/index.ts","../src/index.ts"],"names":["handleScroll","handler","addEventListener","elMapToHandlers","el","elMapToEventName","style","e"],"mappings":"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","sourcesContent":["/**\n * @description: v-backtop指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/13 14:05:16\n * @description: 为元素添加返回顶部功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\ninterface BackTopElement extends HTMLElement {\n style: CSSStyleDeclaration\n}\n\n// 定义通用的滚动元素接口\ninterface ScrollableElement extends HTMLElement {\n scrollTop: number\n}\n\nconst vBackTop: Directive = {\n mounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n el.addEventListener('click', () => {\n target.scrollTo({\n behavior: 'smooth',\n top: 0,\n })\n })\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n if ((target as ScrollableElement).scrollTop < (binding.value as number))\n el.style.visibility = 'hidden';\n\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n },\n unmounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n };\n\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n el.removeEventListener('click', handleScroll)\n },\n updated(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n\n if (binding.value !== undefined)\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n else\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vBackTop\n","/**\n * @description: v-clickOutside指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 点击元素外部触发时事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst elMapToHandlers: WeakMap<Element, (e: MouseEvent) => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n const { value } = binding\n value()\n }\n window.addEventListener('click', handler)\n elMapToHandlers.set(el, handler)\n}\n\nconst vClickOut: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\n\nexport default vClickOut\n","/**\n * @description: v-copy指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 实现文本复制到剪贴板功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { value } = binding\n\n el.setAttribute('copyValue', String(value))\n\n const copyHandler = (): void => {\n navigator.clipboard\n .writeText(el.getAttribute('copyValue') || '')\n .then(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制成功!')\n })\n .catch(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制失败!')\n })\n }\n\n el.addEventListener('click', copyHandler)\n}\n\nconst vCopy: Directive = {\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n el.setAttribute('copyValue', String(value))\n },\n}\n\nexport default vCopy\n","export default function isBoolean(x: any): boolean {\n return typeof x === 'boolean'\n}\n","export default function (value: any): boolean {\n return typeof value === 'function'\n}\n","export default `\n<svg width=\"57\" height=\"57\" viewBox=\"0 0 57 57\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\">\n <circle cx=\"5\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;5;50;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"5;27;49;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"27\" cy=\"5\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"5\" to=\"5\"\n values=\"5;50;50;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"27\" to=\"27\"\n values=\"27;49;5;27\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"49\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;50;5;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n from=\"49\" to=\"49\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"49;5;27;49\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n </g>\n </g>\n</svg>\n`\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let timer: undefined | number\n\n const handler = (): void => {\n if (timer === undefined) {\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n else {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vDebounce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDebounce\n","/**\n * @description: v-doubleClick指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 双击触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let clickCount = 0\n let time = 0\n\n const handler = () => {\n clickCount++\n const now = new Date().getTime()\n\n if (clickCount === 1) {\n time = now\n setTimeout(\n () => {\n clickCount = 0\n time = 0\n },\n arg ? Number(arg) : 300,\n )\n }\n\n if (clickCount === 2) {\n if (now - time < (arg ? Number(arg) : 300))\n value()\n\n clickCount = 0\n time = 0\n }\n }\n elMapToHandlers.set(el, handler)\n el.addEventListener('click', handler)\n}\n\nconst vDoubleClick: Directive = {\n beforeUnmount(el) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDoubleClick\n","/**\n * @description: v-draggable指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 使元素可拖拽\n */\nimport type { Directive } from 'vue'\n\nconst vDraggable: Directive = {\n mounted(el: HTMLElement) {\n let startX = 0\n let startY = 0\n\n let offsetXX = 0\n let offsetYY = 0\n\n let endX = 0\n let endY = 0\n\n el.style.cursor = 'move'\n\n const transformValue = window\n .getComputedStyle(el)\n .transform.split(',')\n .map(item => Number.parseInt(item))\n .slice(4, 6)\n\n if (transformValue.length > 1) {\n endX = transformValue[0]\n endY = transformValue[1]\n }\n\n const handler = (e: MouseEvent) => {\n const { clientX, clientY } = e\n const offsetX = clientX - startX + endX\n const offsetY = clientY - startY + endY\n offsetXX = offsetX\n offsetYY = offsetY\n el.style.transform = `translate(${offsetX}px, ${offsetY}px)`\n }\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n const { clientX, clientY } = e\n startX = clientX\n startY = clientY\n\n window.addEventListener('mousemove', handler)\n })\n el.addEventListener('mouseup', () => {\n endX = offsetXX\n endY = offsetYY\n window.removeEventListener('mousemove', handler)\n })\n },\n}\nexport default vDraggable\n","/**\n * @description: v-ellipsis指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 省略超出文本\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction handler(el: HTMLElement, binding: DirectiveBinding) {\n el.style.overflow = 'hidden'\n el.style.textOverflow = 'ellipsis'\n const { arg } = binding\n if (arg) {\n el.style.display = '-webkit-box'\n el.style.webkitLineClamp = String(Number(arg))\n el.style.webkitBoxOrient = 'vertical'\n }\n else {\n el.style.whiteSpace = 'nowrap'\n }\n el.setAttribute('title', el.textContent as string)\n}\n\nconst vEllipsis: Directive = {\n mounted(el: HTMLElement, binding) {\n handler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n handler(el, binding)\n },\n}\nexport default vEllipsis\n","/**\n * @description: v-emoji指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 禁止输入emoji\n */\nimport type { Directive } from 'vue'\n\nconst vEmoji: Directive = {\n mounted(el, _binding, _vnode) {\n const handleInput = (event: Event) => {\n const inputElement = event.target as HTMLInputElement\n const value = inputElement.value\n const newValue = value.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFF]|[\\u2600-\\u27FF]/g, '')\n if (newValue !== value) {\n inputElement.value = newValue\n inputElement.dispatchEvent(new Event('input', { bubbles: true }))\n }\n }\n\n el.addEventListener('input', handleInput)\n\n el.$destroy = () => {\n el.removeEventListener('input', handleInput)\n delete el.$destroy\n }\n },\n unmounted(el) {\n if (el.$destroy)\n el.$destroy()\n },\n}\n\nexport default vEmoji\n","/**\n * @description: v-empty指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 设置空状态\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isRef, watch } from 'vue'\n\nlet originalContent = ''\nlet emptyState = ''\nfunction insertEmptyState(el: HTMLElement, content: string, img: string) {\n const image = img ? `<img src=\"${img}\" style=\"width: 90%; border-radius: 5px;\" />` : ''\n emptyState = `\n <div style=\"position: absolute; top: 0; left: 0; z-index: 9999; background: #fff; display: flex; justify-content: center; align-items: center; height: ${el.offsetHeight}px; width: ${el.offsetWidth}px; border-radius: 5px;\">\n <div style=\"display: flex; justify-content: center; align-items: center; flex-direction: column;\">\n ${image}\n <div style=\"color: #000\">${content}</div>\n </div>\n </div>\n `\n el.innerHTML = emptyState\n}\n\nconst vEmpty: Directive = {\n beforeMount(el: HTMLElement, _binding: DirectiveBinding) {\n originalContent = el.innerHTML\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n el.style.position = el.style.position || 'relative'\n\n const { content = '暂无数据', img, visible } = binding.value\n\n const insertContent = () => {\n el.innerHTML = originalContent\n }\n\n const handleVisibilityChange = () => {\n const isVisible = isRef(visible) ? visible.value : visible\n if (isVisible)\n insertEmptyState(el, content, img)\n else\n insertContent()\n }\n\n if (isRef(visible))\n watch(visible, handleVisibilityChange)\n\n handleVisibilityChange()\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n const { visible } = binding.value\n const isVisible = isRef(visible) ? visible.value : visible\n if (!isVisible)\n el.innerHTML = originalContent.trim()\n else\n el.innerHTML = emptyState\n },\n}\n\nexport default vEmpty\n","/**\n * @description: v-flicker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nlet style: HTMLStyleElement | null = null\n\nconst animationStr = `\n@keyframes v-flicker {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n`\n\nconst vFlicker: Directive = {\n mounted(el: HTMLElement) {\n if (style === null) {\n style = document.createElement('style')\n style.innerHTML = animationStr\n document.head.appendChild(style)\n }\n\n el.style.animation = 'v-flicker 1s infinite'\n },\n}\n\nexport default vFlicker\n","/**\n * @description: v-focus指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 自动聚焦\n */\nimport type { Directive } from 'vue'\n\nconst vFocus: Directive = {\n mounted(el: HTMLElement) {\n el.focus && el.focus()\n },\n updated(el: HTMLElement) {\n el.focus && el.focus()\n },\n}\nexport default vFocus\n","/**\n * @description: v-highlight指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nconst vHighlight: Directive = {\n mounted(el: HTMLElement, binding) {\n const { arg } = binding\n el.style.backgroundColor = arg || 'rgba(255, 255, 0, .8)'\n },\n}\n\nexport default vHighlight\n","/**\n * @description: v-hover指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 鼠标经过触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { value } = binding\n if (isFunction(value)) {\n el.addEventListener('mouseenter', value)\n elMapToHandlers.set(el, value)\n }\n}\n\nconst vHover: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('mouseenter', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vHover\n","/**\n * @description: v-input指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 限制输入类型\n */\nimport type { Directive } from 'vue'\n\n// 派发自定义事件\nfunction trigger(el: any, type: string) {\n const e = document.createEvent('HTMLEvents')\n e.initEvent(type, true, true)\n el.dispatchEvent(e)\n}\n\nconst vInput: Directive = {\n mounted(el, binding) {\n const _type = binding.arg\n const restrict = binding.value || 10\n const types = ['number', 'decimal', 'customize']\n if (!_type || !types.includes(_type))\n // eslint-disable-next-line no-console\n return console.log(`使用v-input指令需要选择特定功能:v-input:type=\"restrictValue\"; type = ${types.join('/')}.`)\n el.$handler = (el: any) => {\n switch (_type) {\n // 数字\n case 'number':\n el.value = el.value.replace(/[^\\d]/, '')\n break\n // 数字+小数\n case 'decimal':\n el.value = el.value.replace(/[^\\d.]/g, '') // 清除数字和'.'以外的字符\n el.value = el.value.replace(/\\.{2,}/g, '.') // 连续两个'.', 只保留第一个'.'\n el.value = el.value.replace('.', '$#$').replace(/\\./g, '').replace('$#$', '.') // 隔着字符, 也保证只有一个'.'\n // eslint-disable-next-line no-case-declarations\n const regexPattern = new RegExp(`^(-)*(\\\\d+)\\\\.(\\\\d{0,${restrict}}).*$`)\n el.value = el.value.replace(regexPattern, '$1$2.$3') // 只能输入两位小数\n !el.value.includes('.') && el.value !== '' && (el.value = Number.parseFloat(el.value)) // 保证不会出现重复的: 00, 01, 02 ...\n el.value.includes('.') && el.value.length === 1 && (el.value = '') // 第一位不能以'.'开头\n break\n // 自定义, 由data-rule提供规则\n case 'customize':\n // eslint-disable-next-line no-case-declarations\n const rule = restrict && new RegExp(restrict) // 字符串正则转正则表达式\n el.value = el.value.replace(rule, '')\n break\n }\n trigger(el, 'input')\n }\n el.$handler(el)\n },\n updated(el) {\n el.$handler && el.$handler(el)\n },\n}\n\nexport default vInput\n","import type { Directive, DirectiveBinding } from 'vue'\n\nlet options: {\n root: HTMLElement | null\n threshold: number\n} | null\n\nconst callback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement\n if (img.src !== img.dataset.src)\n img.src = img.dataset.src || ''\n }\n })\n}\n\nlet observer: IntersectionObserver | null = null\n\nconst observerHandler: (el: Element, binding: DirectiveBinding) => void = (\n el,\n binding,\n) => {\n if (el.tagName !== 'IMG')\n return\n const { value } = binding\n el.setAttribute('data-src', String(value))\n observer?.observe(el)\n}\n\nconst vImgLazyLoad: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (observer)\n observer.unobserve(el)\n },\n mounted(el: HTMLElement, binding) {\n if (options === null) {\n options = {\n root: document.querySelector('html'),\n threshold: 0.1,\n }\n }\n\n if (observer === null)\n observer = new IntersectionObserver(callback, options)\n\n observerHandler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n observerHandler(el, binding)\n },\n}\nexport default vImgLazyLoad\n","import type { Directive } from 'vue'\nimport { isBoolean, loadingSvg } from '../../utils'\n\nconst elMapToMaskElement: WeakMap<Element, HTMLDivElement> = new WeakMap()\n\nconst elMapToHasChangedPosition: WeakMap<Element, boolean> = new WeakMap()\n\nfunction appendChild(el: HTMLElement): void {\n const loadingWrapper = document.createElement('div')\n const maskElement = document.createElement('div')\n maskElement.style.position = 'absolute'\n maskElement.style.top = '0'\n maskElement.style.left = '0'\n maskElement.style.right = '0'\n maskElement.style.bottom = '0'\n maskElement.style.zIndex = '9999'\n maskElement.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\n maskElement.style.pointerEvents = 'none'\n\n loadingWrapper.style.position = 'absolute'\n loadingWrapper.style.top = '50%'\n loadingWrapper.style.left = '50%'\n loadingWrapper.style.transform = 'translate(-50%, -50%)'\n loadingWrapper.style.pointerEvents = 'none'\n loadingWrapper.innerHTML = loadingSvg\n if (el.style.position === 'static' || el.style.position === '') {\n elMapToHasChangedPosition.set(el, true)\n el.style.position = 'relative'\n }\n maskElement.appendChild(loadingWrapper)\n elMapToMaskElement.set(el, maskElement)\n el.appendChild(maskElement)\n}\n\nconst vLoading: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMaskElement.delete(el)\n elMapToHasChangedPosition.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n const { value } = binding\n if (!isBoolean(value))\n return\n if (!value)\n return\n appendChild(el)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n const hasMaskElement = elMapToMaskElement.has(el)\n const hasChangedPosition = elMapToHasChangedPosition.has(el)\n if (value && hasMaskElement)\n return\n if (value && !hasMaskElement)\n appendChild(el)\n\n if ((!value || !isBoolean(value)) && !hasMaskElement)\n return\n if ((!value || !isBoolean(value)) && hasMaskElement) {\n if (hasChangedPosition) {\n el.style.position = 'static'\n elMapToHasChangedPosition.delete(el)\n }\n const maskElement = elMapToMaskElement.get(el)\n maskElement && el.removeChild(maskElement)\n elMapToMaskElement.delete(el)\n }\n },\n}\nexport default vLoading\n","/**\n * @description: v-longpress指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 长按触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToMouseDownHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToMouseUpHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let timer: number | undefined\n const pressHandler = () => {\n timer = window.setTimeout(value, arg ? Number(arg) : 300)\n }\n const clearTimeoutHandler = () => {\n clearTimeout(timer)\n }\n el.addEventListener('mousedown', pressHandler)\n el.addEventListener('mouseup', clearTimeoutHandler)\n elMapToMouseDownHandlers.set(el, pressHandler)\n elMapToMouseUpHandlers.set(el, clearTimeoutHandler)\n}\n\nconst vLongPress: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMouseDownHandlers.delete(el)\n elMapToMouseUpHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToMouseDownHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mousedown', pressHandler)\n elMapToMouseDownHandlers.delete(el)\n }\n if (elMapToMouseUpHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mouseup', pressHandler)\n elMapToMouseUpHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vLongPress\n","/**\n * @description: v-money指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 格式化数字为金额\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction setInnerHTML(el: HTMLElement, binding: DirectiveBinding) {\n const { value } = binding\n\n const parts = String(value).split('.')\n\n const moneyReverse = Array.from(parts[0]).reverse()\n\n const moneyArray = []\n\n for (let i = 0; i < moneyReverse.length; i++) {\n if (i % 3 === 0 && i !== 0)\n moneyArray.push(',')\n\n moneyArray.push(moneyReverse[i])\n }\n\n const moneyString = moneyArray.reverse().join('')\n\n if (parts.length > 1)\n el.innerHTML = `${moneyString}.${parts[1]}`\n else\n el.innerHTML = moneyString\n}\n\nconst vMoney: Directive = {\n mounted(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n updated(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n}\nexport default vMoney\n","/**\n * @description: v-onOnce指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 只触发一次回调\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: HTMLElement, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const eventName = arg || 'click'\n const handler = (): void => {\n value()\n el.removeEventListener(eventName, handler)\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vOnOnce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vOnOnce\n","/**\n * @description: v-permission指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 快速实现鉴权\n */\nimport type { Directive } from 'vue'\n\nconst vPermission: Directive = {\n mounted(el, binding) {\n // 从服务获取用户的权限列表,一般获取后存放于vuex中,本案例为了方便演示将直接以字符串的形式展示\n // 权限之间以分号分隔\n // 管理员权限:\"add;del;update;query\"\n // 普通用户权限:\"add;del;update;query\"\n let permission = 'add;del' // 权限字符串\n let permissionList = []// 权限列表\n if (!permission)\n permission = ''\n permissionList = permission.split(';')\n\n // 获取需要的权限标识,即元素给指令传进来的参数值\n let inValue\n if (typeof binding.value === 'string') {\n inValue = binding.value\n }\n else if (Array.isArray(binding.value)) {\n inValue = binding.value.join(';')\n }\n else {\n // eslint-disable-next-line no-console\n console.log('数据格式不正确,请输入字符串(以分号分隔)或数组')\n }\n\n let passText = inValue // 可以是多个值,中间以分号分隔\n let passTextArr = []// 将权限解析到数组中\n if (!passText)\n passText = ''\n passTextArr = passText.split(';')\n\n // 定义一个权限标识变量,用于标识是否有权限\n let flag = false\n // 循环遍历权限列表,检测用户是否有相应的操作权限\n for (let i = 0; i < passTextArr.length; i++) {\n if (permissionList.includes(passTextArr[i])) {\n // 如果从服务器中获取的权限列表中有组件所需的权限,则将flag置为true,同时跳出循环\n flag = true\n break\n }\n }\n // 如果flag为false,也就是没权限则直接将元素移除或者隐藏\n if (!flag)\n el.parentNode && el.parentNode.removeChild(el)\n },\n}\n\nexport default vPermission\n","/**\n * @description: v-resize指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 响应缩放\n */\n\nimport type { Directive } from 'vue'\n\nfunction createYElement(type: 'top' | 'bottom'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n if (type === 'top')\n Element.style.top = '0'\n else\n Element.style.bottom = '0'\n\n Element.style.left = '0'\n Element.style.right = '0'\n Element.style.height = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ns-resize'\n Element.style.display = 'none'\n\n return Element\n}\n\nfunction createXElement(type: 'left' | 'right'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n Element.style.top = '5px'\n if (type === 'left')\n Element.style.left = '0'\n else\n Element.style.right = '0'\n\n Element.style.bottom = '5px'\n Element.style.width = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ew-resize'\n Element.style.display = 'none'\n Element.style.transition = 'all 0.3s'\n\n return Element\n}\n\nconst vResize: Directive = {\n mounted(el: HTMLElement) {\n const position = el.style.position\n if (position === 'static' || position === '')\n el.style.position = 'relative'\n\n const topElement = createYElement('top')\n const bottomElement = createYElement('bottom')\n const leftElement = createXElement('left')\n const rightElement = createXElement('right')\n\n const Y = [topElement, bottomElement]\n const X = [leftElement, rightElement]\n\n const all = [...Y, ...X]\n\n Y.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n const startY = e.clientY\n\n const style = window.getComputedStyle(el)\n const height = style.height\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetY = e.clientY - startY\n el.style.height = `${Number.parseInt(height, 10) + offsetY}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n X.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n\n const startX = e.clientX\n\n const style = window.getComputedStyle(el)\n const width = style.width\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetX = e.clientX - startX\n el.style.width = `${Number.parseInt(width, 10) + offsetX}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n el.addEventListener('click', () => {\n all.forEach((element) => {\n element.style.display = 'block'\n })\n })\n\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n all.forEach((element) => {\n element.style.display = 'none'\n })\n }\n window.addEventListener('click', handler)\n\n el.appendChild(topElement)\n el.appendChild(bottomElement)\n el.appendChild(leftElement)\n el.appendChild(rightElement)\n },\n}\nexport default vResize\n","/**\n * @description: v-ripple指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 给元素添加波纹动效\n */\n\n/* eslint-disable ts/ban-ts-comment */\n// @ts-nocheck\nimport type { Directive } from 'vue'\n\nconst Ripple: Directive = {\n mounted(el, binding) {\n // Default values.\n const props = {\n event: 'mousedown',\n transition: 600,\n }\n\n setProps(Object.keys(binding.modifiers), props)\n\n el.addEventListener(props.event, (event) => {\n rippler(event, el, binding.value)\n })\n\n const bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)'\n const zIndex = Ripple.zIndex || '9999'\n\n function rippler(event, el) {\n const target = el\n // Get border to avoid offsetting on ripple container position\n const targetBorder = Number.parseInt((getComputedStyle(target).borderWidth).replace('px', ''))\n\n // Get necessary variables\n const rect = target.getBoundingClientRect()\n const left = rect.left\n const top = rect.top\n const width = target.offsetWidth\n const height = target.offsetHeight\n const dx = event.clientX - left\n const dy = event.clientY - top\n const maxX = Math.max(dx, width - dx)\n const maxY = Math.max(dy, height - dy)\n const style = window.getComputedStyle(target)\n const radius = Math.sqrt((maxX * maxX) + (maxY * maxY))\n const border = (targetBorder > 0) ? targetBorder : 0\n\n // Create the ripple and its container\n const ripple = document.createElement('div')\n const rippleContainer = document.createElement('div')\n rippleContainer.className = 'ripple-container'\n ripple.className = 'ripple'\n\n // Styles for ripple\n ripple.style.marginTop = '0px'\n ripple.style.marginLeft = '0px'\n ripple.style.width = '1px'\n ripple.style.height = '1px'\n ripple.style.transition = `all ${props.transition}ms cubic-bezier(0.4, 0, 0.2, 1)`\n ripple.style.borderRadius = '50%'\n ripple.style.pointerEvents = 'none'\n ripple.style.position = 'relative'\n ripple.style.zIndex = zIndex\n ripple.style.backgroundColor = bg\n\n // Styles for rippleContainer\n rippleContainer.style.position = 'absolute'\n rippleContainer.style.left = `${0 - border}px`\n rippleContainer.style.top = `${0 - border}px`\n rippleContainer.style.height = '0'\n rippleContainer.style.width = '0'\n rippleContainer.style.pointerEvents = 'none'\n rippleContainer.style.overflow = 'hidden'\n\n // Store target position to change it after\n const storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative')\n target.style.position = 'relative'\n\n rippleContainer.appendChild(ripple)\n target.appendChild(rippleContainer)\n\n ripple.style.marginLeft = `${dx}px`\n ripple.style.marginTop = `${dy}px`\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = `${width}px`\n rippleContainer.style.height = `${height}px`\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius\n\n rippleContainer.style.direction = 'ltr'\n\n setTimeout(() => {\n ripple.style.width = `${radius * 2}px`\n ripple.style.height = `${radius * 2}px`\n ripple.style.marginLeft = `${dx - radius}px`\n ripple.style.marginTop = `${dy - radius}px`\n }, 0)\n\n function clearRipple() {\n setTimeout(() => {\n ripple.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n }, 250)\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(() => {\n rippleContainer.parentNode.removeChild(rippleContainer)\n }, 850)\n\n el.removeEventListener('mouseup', clearRipple, false)\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(() => {\n let clearPosition = true\n for (let i = 0; i < target.childNodes.length; i++) {\n if (target.childNodes[i].className === 'ripple-container')\n clearPosition = false\n }\n\n if (clearPosition) {\n if (storedTargetPosition !== 'static')\n target.style.position = storedTargetPosition\n else\n target.style.position = ''\n }\n }, props.transition + 250)\n }\n\n if (event.type === 'mousedown')\n el.addEventListener('mouseup', clearRipple, false)\n else\n clearRipple()\n }\n },\n}\n\nfunction setProps(modifiers, props) {\n modifiers.forEach((item) => {\n if (Number.isNaN(Number(item)))\n props.event = item\n else\n props.transition = item\n })\n}\n\nexport default Ripple\n","import type { Directive } from 'vue'\n\nconst DISTANCE = 100 // 距离\nconst ANIMATIONTIME = 500 // 500毫秒\nlet distance: number | null = null\nlet animationtime: number | null = null\nconst map = new WeakMap()\n\nfunction isBelowViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect()\n return rect.top - (distance || DISTANCE) > window.innerHeight\n}\n\nfunction handleScroll() {\n const elements = document.querySelectorAll('[v-slideIn]')\n elements.forEach((el: any) => {\n if (isBelowViewport(el))\n return\n\n const animation = map.get(el)\n if (animation && !el.hasAttribute('v-slideIn-played')) {\n animation.play()\n el.removeAttribute('v-slideIn')\n el.setAttribute('v-slideIn-played', '') // Add a flag to mark the animation as played\n }\n })\n}\n\nconst vSlideIn: Directive = {\n mounted(el: HTMLElement, binding: any) {\n if (binding.value) {\n distance = binding.value.px // 接收指定距离\n animationtime = binding.value.time // 接收指定时间\n }\n if (!isBelowViewport(el))\n return\n\n const animation = el.animate(\n [\n {\n opacity: 0,\n transform: `translateY(${distance || DISTANCE}px)`,\n },\n {\n opacity: 1,\n transform: `translateY(0px)`,\n },\n ],\n {\n duration: animationtime || ANIMATIONTIME,\n easing: 'ease-in-out',\n fill: 'forwards',\n },\n )\n animation.pause()\n map.set(el, animation)\n el.setAttribute('v-slideIn', '') // 添加标记,表示需要进行动画\n\n window.addEventListener('scroll', handleScroll)\n },\n\n unmounted(el: HTMLElement) {\n map.delete(el)\n window.removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vSlideIn\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let lastExecTime = 0\n\n const handler = (): void => {\n const currentTime = Date.now()\n if (currentTime - lastExecTime < delay)\n return\n lastExecTime = currentTime\n value()\n }\n\n const existingHandler = elMapToHandlers.get(el)\n if (existingHandler)\n el.removeEventListener(eventName, existingHandler)\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vThrottle: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\n\nexport default vThrottle\n","/**\n * @description: v-waterMarker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 添加水印\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst addWaterMarker: Directive = (str: string, parentNode: any, font: any, textColor: string) => {\n // 水印文字,父元素,字体,文字颜色\n const can: HTMLCanvasElement = document.createElement('canvas')\n parentNode.appendChild(can)\n can.width = 200\n can.height = 150\n can.style.display = 'none'\n const cans = can.getContext('2d') as CanvasRenderingContext2D\n cans.rotate((-20 * Math.PI) / 180)\n cans.font = font || '16px Microsoft JhengHei'\n cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'\n cans.textAlign = 'left'\n cans.textBaseline = 'Middle' as CanvasTextBaseline\n cans.fillText(str, can.width / 10, can.height / 2)\n parentNode.style.backgroundImage = `url(${can.toDataURL('image/png')})`\n}\n\nconst waterMarker = {\n mounted(el: DirectiveBinding, binding: DirectiveBinding) {\n addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)\n },\n}\n\nexport default waterMarker\n","import type { App, Directive } from 'vue'\nimport backtop from './directive/v-backtop'\nimport clickOutside from './directive/v-clickOutside'\nimport copy from './directive/v-copy'\nimport debounce from './directive/v-debounce'\nimport doubleClick from './directive/v-doubleClick'\nimport draggable from './directive/v-draggable'\nimport ellipsis from './directive/v-ellipsis'\nimport emoji from './directive/v-emoji'\nimport empty from './directive/v-empty'\nimport flicker from './directive/v-flicker'\nimport focus from './directive/v-focus'\nimport highlight from './directive/v-highlight'\nimport hover from './directive/v-hover'\nimport input from './directive/v-input'\nimport lazyImg from './directive/v-lazyImg'\nimport loading from './directive/v-loading'\nimport longpress from './directive/v-longpress'\nimport money from './directive/v-money'\nimport onOnce from './directive/v-onOnce'\nimport permission from './directive/v-permission'\nimport resize from './directive/v-resize'\nimport ripple from './directive/v-ripple'\nimport slideIn from './directive/v-slideIn'\nimport throttle from './directive/v-throttle'\nimport waterMarker from './directive/v-waterMarker'\n\nexport {\n backtop as vBacktop,\n clickOutside as vClickOutside,\n copy as vCopy,\n debounce as vDebounce,\n doubleClick as vDoubleClick,\n draggable as vDraggable,\n ellipsis as vEllipsis,\n emoji as vEmoji,\n empty as vEmpty,\n flicker as vFlicker,\n focus as vFocus,\n highlight as vHighlight,\n hover as vHover,\n input as vInput,\n lazyImg as vLazyImg,\n loading as vLoading,\n longpress as vLongpress,\n money as vMoney,\n onOnce as vOnOnce,\n permission as vPermission,\n resize as vResize,\n ripple as vRipple,\n slideIn as vSlideIn,\n throttle as vThrottle,\n waterMarker as vWaterMarker,\n}\n\ninterface DirectiveCollection {\n [key: string]: Directive\n}\n\nconst directives: DirectiveCollection = {\n backtop,\n clickOutside,\n copy,\n debounce,\n doubleClick,\n draggable,\n ellipsis,\n emoji,\n empty,\n flicker,\n focus,\n highlight,\n hover,\n input,\n lazyImg,\n loading,\n longpress,\n money,\n onOnce,\n permission,\n resize,\n ripple,\n slideIn,\n throttle,\n waterMarker,\n}\n\nexport default {\n install(app: App) {\n Object.keys(directives).forEach((key) => {\n app.directive(key, directives[key])\n })\n },\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/directive/v-backtop/index.ts","../src/directive/v-clickOutside/index.ts","../src/directive/v-copy/index.ts","../src/utils/isBoolean.ts","../src/utils/isFunction.ts","../src/utils/loadingSvg.ts","../src/directive/v-debounce/index.ts","../src/directive/v-doubleClick/index.ts","../src/directive/v-draggable/index.ts","../src/directive/v-ellipsis/index.ts","../src/directive/v-emoji/index.ts","../src/directive/v-empty/index.ts","../src/directive/v-flicker/index.ts","../src/directive/v-focus/index.ts","../src/directive/v-highlight/index.ts","../src/directive/v-hover/index.ts","../src/directive/v-input/index.ts","../src/directive/v-lazyImg/index.ts","../src/directive/v-loading/index.ts","../src/directive/v-longpress/index.ts","../src/directive/v-money/index.ts","../src/directive/v-onOnce/index.ts","../src/directive/v-permission/index.ts","../src/directive/v-resize/index.ts","../src/directive/v-ripple/index.ts","../src/directive/v-slideIn/index.ts","../src/directive/v-throttle/index.ts","../src/directive/v-waterMarker/index.ts","../src/index.ts"],"names":["handleScroll","handler","addEventListener","elMapToHandlers","isRef","watch","el","elMapToEventName","style","e"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @description: v-backtop指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/13 14:05:16\n * @description: 为元素添加返回顶部功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\ninterface BackTopElement extends HTMLElement {\n style: CSSStyleDeclaration\n}\n\n// 定义通用的滚动元素接口\ninterface ScrollableElement extends HTMLElement {\n scrollTop: number\n}\n\nconst vBackTop: Directive = {\n mounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n el.addEventListener('click', () => {\n target.scrollTo({\n behavior: 'smooth',\n top: 0,\n })\n })\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n if ((target as ScrollableElement).scrollTop < (binding.value as number))\n el.style.visibility = 'hidden';\n\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n },\n unmounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n };\n\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n el.removeEventListener('click', handleScroll)\n },\n updated(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n\n if (binding.value !== undefined)\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n else\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vBackTop\n","/**\n * @description: v-clickOutside指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 点击元素外部触发时事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst elMapToHandlers: WeakMap<Element, (e: MouseEvent) => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n const { value } = binding\n value()\n }\n window.addEventListener('click', handler)\n elMapToHandlers.set(el, handler)\n}\n\nconst vClickOut: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\n\nexport default vClickOut\n","/**\n * @description: v-copy指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 实现文本复制到剪贴板功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { value } = binding\n\n el.setAttribute('copyValue', String(value))\n\n const copyHandler = (): void => {\n navigator.clipboard\n .writeText(el.getAttribute('copyValue') || '')\n .then(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制成功!')\n })\n .catch(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制失败!')\n })\n }\n\n el.addEventListener('click', copyHandler)\n}\n\nconst vCopy: Directive = {\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n el.setAttribute('copyValue', String(value))\n },\n}\n\nexport default vCopy\n","export default function isBoolean(x: any): boolean {\n return typeof x === 'boolean'\n}\n","export default function (value: any): boolean {\n return typeof value === 'function'\n}\n","export default `\n<svg width=\"57\" height=\"57\" viewBox=\"0 0 57 57\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\">\n <circle cx=\"5\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;5;50;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"5;27;49;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"27\" cy=\"5\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"5\" to=\"5\"\n values=\"5;50;50;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"27\" to=\"27\"\n values=\"27;49;5;27\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"49\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;50;5;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n from=\"49\" to=\"49\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"49;5;27;49\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n </g>\n </g>\n</svg>\n`\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let timer: undefined | number\n\n const handler = (): void => {\n if (timer === undefined) {\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n else {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vDebounce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDebounce\n","/**\n * @description: v-doubleClick指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 双击触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let clickCount = 0\n let time = 0\n\n const handler = () => {\n clickCount++\n const now = new Date().getTime()\n\n if (clickCount === 1) {\n time = now\n setTimeout(\n () => {\n clickCount = 0\n time = 0\n },\n arg ? Number(arg) : 300,\n )\n }\n\n if (clickCount === 2) {\n if (now - time < (arg ? Number(arg) : 300))\n value()\n\n clickCount = 0\n time = 0\n }\n }\n elMapToHandlers.set(el, handler)\n el.addEventListener('click', handler)\n}\n\nconst vDoubleClick: Directive = {\n beforeUnmount(el) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDoubleClick\n","/**\n * @description: v-draggable指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 使元素可拖拽\n */\nimport type { Directive } from 'vue'\n\nconst vDraggable: Directive = {\n mounted(el: HTMLElement) {\n let startX = 0\n let startY = 0\n\n let offsetXX = 0\n let offsetYY = 0\n\n let endX = 0\n let endY = 0\n\n el.style.cursor = 'move'\n\n const transformValue = window\n .getComputedStyle(el)\n .transform.split(',')\n .map(item => Number.parseInt(item))\n .slice(4, 6)\n\n if (transformValue.length > 1) {\n endX = transformValue[0]\n endY = transformValue[1]\n }\n\n const handler = (e: MouseEvent) => {\n const { clientX, clientY } = e\n const offsetX = clientX - startX + endX\n const offsetY = clientY - startY + endY\n offsetXX = offsetX\n offsetYY = offsetY\n el.style.transform = `translate(${offsetX}px, ${offsetY}px)`\n }\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n const { clientX, clientY } = e\n startX = clientX\n startY = clientY\n\n window.addEventListener('mousemove', handler)\n })\n el.addEventListener('mouseup', () => {\n endX = offsetXX\n endY = offsetYY\n window.removeEventListener('mousemove', handler)\n })\n },\n}\nexport default vDraggable\n","/**\n * @description: v-ellipsis指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 省略超出文本\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction handler(el: HTMLElement, binding: DirectiveBinding) {\n el.style.overflow = 'hidden'\n el.style.textOverflow = 'ellipsis'\n const { arg } = binding\n if (arg) {\n el.style.display = '-webkit-box'\n el.style.webkitLineClamp = String(Number(arg))\n el.style.webkitBoxOrient = 'vertical'\n }\n else {\n el.style.whiteSpace = 'nowrap'\n }\n el.setAttribute('title', el.textContent as string)\n}\n\nconst vEllipsis: Directive = {\n mounted(el: HTMLElement, binding) {\n handler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n handler(el, binding)\n },\n}\nexport default vEllipsis\n","/**\n * @description: v-emoji指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 禁止输入emoji\n */\nimport type { Directive } from 'vue'\n\nconst vEmoji: Directive = {\n mounted(el, _binding, _vnode) {\n const handleInput = (event: Event) => {\n const inputElement = event.target as HTMLInputElement\n const value = inputElement.value\n const newValue = value.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFF]|[\\u2600-\\u27FF]/g, '')\n if (newValue !== value) {\n inputElement.value = newValue\n inputElement.dispatchEvent(new Event('input', { bubbles: true }))\n }\n }\n\n el.addEventListener('input', handleInput)\n\n el.$destroy = () => {\n el.removeEventListener('input', handleInput)\n delete el.$destroy\n }\n },\n unmounted(el) {\n if (el.$destroy)\n el.$destroy()\n },\n}\n\nexport default vEmoji\n","/**\n * @description: v-empty指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 设置空状态\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isRef, watch } from 'vue'\n\nlet originalContent = ''\nlet emptyState = ''\nfunction insertEmptyState(el: HTMLElement, content: string, img: string) {\n const image = img ? `<img src=\"${img}\" style=\"width: 90%; border-radius: 5px;\" />` : ''\n emptyState = `\n <div style=\"position: absolute; top: 0; left: 0; z-index: 9999; background: #fff; display: flex; justify-content: center; align-items: center; height: ${el.offsetHeight}px; width: ${el.offsetWidth}px; border-radius: 5px;\">\n <div style=\"display: flex; justify-content: center; align-items: center; flex-direction: column;\">\n ${image}\n <div style=\"color: #000\">${content}</div>\n </div>\n </div>\n `\n el.innerHTML = emptyState\n}\n\nconst vEmpty: Directive = {\n beforeMount(el: HTMLElement, _binding: DirectiveBinding) {\n originalContent = el.innerHTML\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n el.style.position = el.style.position || 'relative'\n\n const { content = '暂无数据', img, visible } = binding.value\n\n const insertContent = () => {\n el.innerHTML = originalContent\n }\n\n const handleVisibilityChange = () => {\n const isVisible = isRef(visible) ? visible.value : visible\n if (isVisible)\n insertEmptyState(el, content, img)\n else\n insertContent()\n }\n\n if (isRef(visible))\n watch(visible, handleVisibilityChange)\n\n handleVisibilityChange()\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n const { visible } = binding.value\n const isVisible = isRef(visible) ? visible.value : visible\n if (!isVisible)\n el.innerHTML = originalContent.trim()\n else\n el.innerHTML = emptyState\n },\n}\n\nexport default vEmpty\n","/**\n * @description: v-flicker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nlet style: HTMLStyleElement | null = null\n\nconst animationStr = `\n@keyframes v-flicker {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n`\n\nconst vFlicker: Directive = {\n mounted(el: HTMLElement) {\n if (style === null) {\n style = document.createElement('style')\n style.innerHTML = animationStr\n document.head.appendChild(style)\n }\n\n el.style.animation = 'v-flicker 1s infinite'\n },\n}\n\nexport default vFlicker\n","/**\n * @description: v-focus指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 自动聚焦\n */\nimport type { Directive } from 'vue'\n\nconst vFocus: Directive = {\n mounted(el: HTMLElement) {\n el.focus && el.focus()\n },\n updated(el: HTMLElement) {\n el.focus && el.focus()\n },\n}\nexport default vFocus\n","/**\n * @description: v-highlight指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nconst vHighlight: Directive = {\n mounted(el: HTMLElement, binding) {\n const { arg } = binding\n el.style.backgroundColor = arg || 'rgba(255, 255, 0, .8)'\n },\n}\n\nexport default vHighlight\n","/**\n * @description: v-hover指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 鼠标经过触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { value } = binding\n if (isFunction(value)) {\n el.addEventListener('mouseenter', value)\n elMapToHandlers.set(el, value)\n }\n}\n\nconst vHover: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('mouseenter', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vHover\n","/**\n * @description: v-input指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 限制输入类型\n */\nimport type { Directive } from 'vue'\n\n// 派发自定义事件\nfunction trigger(el: any, type: string) {\n const e = document.createEvent('HTMLEvents')\n e.initEvent(type, true, true)\n el.dispatchEvent(e)\n}\n\nconst vInput: Directive = {\n mounted(el, binding) {\n const _type = binding.arg\n const restrict = binding.value || 10\n const types = ['number', 'decimal', 'customize']\n if (!_type || !types.includes(_type))\n // eslint-disable-next-line no-console\n return console.log(`使用v-input指令需要选择特定功能:v-input:type=\"restrictValue\"; type = ${types.join('/')}.`)\n el.$handler = (el: any) => {\n switch (_type) {\n // 数字\n case 'number':\n el.value = el.value.replace(/\\D/, '')\n break\n // 数字+小数\n case 'decimal':\n el.value = el.value.replace(/[^\\d.]/g, '') // 清除数字和'.'以外的字符\n el.value = el.value.replace(/\\.{2,}/g, '.') // 连续两个'.', 只保留第一个'.'\n el.value = el.value.replace('.', '$#$').replace(/\\./g, '').replace('$#$', '.') // 隔着字符, 也保证只有一个'.'\n // eslint-disable-next-line no-case-declarations\n const regexPattern = new RegExp(`^(-)*(\\\\d+)\\\\.(\\\\d{0,${restrict}}).*$`)\n el.value = el.value.replace(regexPattern, '$1$2.$3') // 只能输入两位小数\n !el.value.includes('.') && el.value !== '' && (el.value = Number.parseFloat(el.value)) // 保证不会出现重复的: 00, 01, 02 ...\n el.value.includes('.') && el.value.length === 1 && (el.value = '') // 第一位不能以'.'开头\n break\n // 自定义, 由data-rule提供规则\n case 'customize':\n // eslint-disable-next-line no-case-declarations\n const rule = restrict && new RegExp(restrict) // 字符串正则转正则表达式\n el.value = el.value.replace(rule, '')\n break\n }\n trigger(el, 'input')\n }\n el.$handler(el)\n },\n updated(el) {\n el.$handler && el.$handler(el)\n },\n}\n\nexport default vInput\n","import type { Directive, DirectiveBinding } from 'vue'\n\nlet options: {\n root: HTMLElement | null\n threshold: number\n} | null\n\nconst callback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement\n if (img.src !== img.dataset.src)\n img.src = img.dataset.src || ''\n }\n })\n}\n\nlet observer: IntersectionObserver | null = null\n\nconst observerHandler: (el: Element, binding: DirectiveBinding) => void = (\n el,\n binding,\n) => {\n if (el.tagName !== 'IMG')\n return\n const { value } = binding\n el.setAttribute('data-src', String(value))\n observer?.observe(el)\n}\n\nconst vImgLazyLoad: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (observer)\n observer.unobserve(el)\n },\n mounted(el: HTMLElement, binding) {\n if (options === null) {\n options = {\n root: document.querySelector('html'),\n threshold: 0.1,\n }\n }\n\n if (observer === null)\n observer = new IntersectionObserver(callback, options)\n\n observerHandler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n observerHandler(el, binding)\n },\n}\nexport default vImgLazyLoad\n","import type { Directive } from 'vue'\nimport { isBoolean, loadingSvg } from '../../utils'\n\nconst elMapToMaskElement: WeakMap<Element, HTMLDivElement> = new WeakMap()\n\nconst elMapToHasChangedPosition: WeakMap<Element, boolean> = new WeakMap()\n\nfunction appendChild(el: HTMLElement): void {\n const loadingWrapper = document.createElement('div')\n const maskElement = document.createElement('div')\n maskElement.style.position = 'absolute'\n maskElement.style.top = '0'\n maskElement.style.left = '0'\n maskElement.style.right = '0'\n maskElement.style.bottom = '0'\n maskElement.style.zIndex = '9999'\n maskElement.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\n maskElement.style.pointerEvents = 'none'\n\n loadingWrapper.style.position = 'absolute'\n loadingWrapper.style.top = '50%'\n loadingWrapper.style.left = '50%'\n loadingWrapper.style.transform = 'translate(-50%, -50%)'\n loadingWrapper.style.pointerEvents = 'none'\n loadingWrapper.innerHTML = loadingSvg\n if (el.style.position === 'static' || el.style.position === '') {\n elMapToHasChangedPosition.set(el, true)\n el.style.position = 'relative'\n }\n maskElement.appendChild(loadingWrapper)\n elMapToMaskElement.set(el, maskElement)\n el.appendChild(maskElement)\n}\n\nconst vLoading: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMaskElement.delete(el)\n elMapToHasChangedPosition.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n const { value } = binding\n if (!isBoolean(value))\n return\n if (!value)\n return\n appendChild(el)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n const hasMaskElement = elMapToMaskElement.has(el)\n const hasChangedPosition = elMapToHasChangedPosition.has(el)\n if (value && hasMaskElement)\n return\n if (value && !hasMaskElement)\n appendChild(el)\n\n if ((!value || !isBoolean(value)) && !hasMaskElement)\n return\n if ((!value || !isBoolean(value)) && hasMaskElement) {\n if (hasChangedPosition) {\n el.style.position = 'static'\n elMapToHasChangedPosition.delete(el)\n }\n const maskElement = elMapToMaskElement.get(el)\n maskElement && el.removeChild(maskElement)\n elMapToMaskElement.delete(el)\n }\n },\n}\nexport default vLoading\n","/**\n * @description: v-longpress指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 长按触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToMouseDownHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToMouseUpHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let timer: number | undefined\n const pressHandler = () => {\n timer = window.setTimeout(value, arg ? Number(arg) : 300)\n }\n const clearTimeoutHandler = () => {\n clearTimeout(timer)\n }\n el.addEventListener('mousedown', pressHandler)\n el.addEventListener('mouseup', clearTimeoutHandler)\n elMapToMouseDownHandlers.set(el, pressHandler)\n elMapToMouseUpHandlers.set(el, clearTimeoutHandler)\n}\n\nconst vLongPress: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMouseDownHandlers.delete(el)\n elMapToMouseUpHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToMouseDownHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mousedown', pressHandler)\n elMapToMouseDownHandlers.delete(el)\n }\n if (elMapToMouseUpHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mouseup', pressHandler)\n elMapToMouseUpHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vLongPress\n","/**\n * @description: v-money指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 格式化数字为金额\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction setInnerHTML(el: HTMLElement, binding: DirectiveBinding) {\n const { value } = binding\n\n const parts = String(value).split('.')\n\n const moneyReverse = Array.from(parts[0]).reverse()\n\n const moneyArray = []\n\n for (let i = 0; i < moneyReverse.length; i++) {\n if (i % 3 === 0 && i !== 0)\n moneyArray.push(',')\n\n moneyArray.push(moneyReverse[i])\n }\n\n const moneyString = moneyArray.reverse().join('')\n\n if (parts.length > 1)\n el.innerHTML = `${moneyString}.${parts[1]}`\n else\n el.innerHTML = moneyString\n}\n\nconst vMoney: Directive = {\n mounted(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n updated(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n}\nexport default vMoney\n","/**\n * @description: v-onOnce指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 只触发一次回调\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: HTMLElement, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const eventName = arg || 'click'\n const handler = (): void => {\n value()\n el.removeEventListener(eventName, handler)\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vOnOnce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vOnOnce\n","/**\n * @description: v-permission指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 快速实现鉴权\n */\nimport type { Directive } from 'vue'\n\nconst vPermission: Directive = {\n mounted(el, binding) {\n // 从服务获取用户的权限列表,一般获取后存放于vuex中,本案例为了方便演示将直接以字符串的形式展示\n // 权限之间以分号分隔\n // 管理员权限:\"add;del;update;query\"\n // 普通用户权限:\"add;del;update;query\"\n let permission = 'add;del' // 权限字符串\n let permissionList = []// 权限列表\n if (!permission)\n permission = ''\n permissionList = permission.split(';')\n\n // 获取需要的权限标识,即元素给指令传进来的参数值\n let inValue\n if (typeof binding.value === 'string') {\n inValue = binding.value\n }\n else if (Array.isArray(binding.value)) {\n inValue = binding.value.join(';')\n }\n else {\n // eslint-disable-next-line no-console\n console.log('数据格式不正确,请输入字符串(以分号分隔)或数组')\n }\n\n let passText = inValue // 可以是多个值,中间以分号分隔\n let passTextArr = []// 将权限解析到数组中\n if (!passText)\n passText = ''\n passTextArr = passText.split(';')\n\n // 定义一个权限标识变量,用于标识是否有权限\n let flag = false\n // 循环遍历权限列表,检测用户是否有相应的操作权限\n for (let i = 0; i < passTextArr.length; i++) {\n if (permissionList.includes(passTextArr[i])) {\n // 如果从服务器中获取的权限列表中有组件所需的权限,则将flag置为true,同时跳出循环\n flag = true\n break\n }\n }\n // 如果flag为false,也就是没权限则直接将元素移除或者隐藏\n if (!flag)\n el.parentNode && el.parentNode.removeChild(el)\n },\n}\n\nexport default vPermission\n","/**\n * @description: v-resize指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 响应缩放\n */\n\nimport type { Directive } from 'vue'\n\nfunction createYElement(type: 'top' | 'bottom'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n if (type === 'top')\n Element.style.top = '0'\n else\n Element.style.bottom = '0'\n\n Element.style.left = '0'\n Element.style.right = '0'\n Element.style.height = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ns-resize'\n Element.style.display = 'none'\n\n return Element\n}\n\nfunction createXElement(type: 'left' | 'right'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n Element.style.top = '5px'\n if (type === 'left')\n Element.style.left = '0'\n else\n Element.style.right = '0'\n\n Element.style.bottom = '5px'\n Element.style.width = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ew-resize'\n Element.style.display = 'none'\n Element.style.transition = 'all 0.3s'\n\n return Element\n}\n\nconst vResize: Directive = {\n mounted(el: HTMLElement) {\n const position = el.style.position\n if (position === 'static' || position === '')\n el.style.position = 'relative'\n\n const topElement = createYElement('top')\n const bottomElement = createYElement('bottom')\n const leftElement = createXElement('left')\n const rightElement = createXElement('right')\n\n const Y = [topElement, bottomElement]\n const X = [leftElement, rightElement]\n\n const all = [...Y, ...X]\n\n Y.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n const startY = e.clientY\n\n const style = window.getComputedStyle(el)\n const height = style.height\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetY = e.clientY - startY\n el.style.height = `${Number.parseInt(height, 10) + offsetY}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n X.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n\n const startX = e.clientX\n\n const style = window.getComputedStyle(el)\n const width = style.width\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetX = e.clientX - startX\n el.style.width = `${Number.parseInt(width, 10) + offsetX}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n el.addEventListener('click', () => {\n all.forEach((element) => {\n element.style.display = 'block'\n })\n })\n\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n all.forEach((element) => {\n element.style.display = 'none'\n })\n }\n window.addEventListener('click', handler)\n\n el.appendChild(topElement)\n el.appendChild(bottomElement)\n el.appendChild(leftElement)\n el.appendChild(rightElement)\n },\n}\nexport default vResize\n","/**\n * @description: v-ripple指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 给元素添加波纹动效\n */\n\n/* eslint-disable ts/ban-ts-comment */\n// @ts-nocheck\nimport type { Directive } from 'vue'\n\nconst Ripple: Directive = {\n mounted(el, binding) {\n // Default values.\n const props = {\n event: 'mousedown',\n transition: 600,\n }\n\n setProps(Object.keys(binding.modifiers), props)\n\n el.addEventListener(props.event, (event) => {\n rippler(event, el, binding.value)\n })\n\n const bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)'\n const zIndex = Ripple.zIndex || '9999'\n\n function rippler(event, el) {\n const target = el\n // Get border to avoid offsetting on ripple container position\n const targetBorder = Number.parseInt((getComputedStyle(target).borderWidth).replace('px', ''))\n\n // Get necessary variables\n const rect = target.getBoundingClientRect()\n const left = rect.left\n const top = rect.top\n const width = target.offsetWidth\n const height = target.offsetHeight\n const dx = event.clientX - left\n const dy = event.clientY - top\n const maxX = Math.max(dx, width - dx)\n const maxY = Math.max(dy, height - dy)\n const style = window.getComputedStyle(target)\n const radius = Math.sqrt((maxX * maxX) + (maxY * maxY))\n const border = (targetBorder > 0) ? targetBorder : 0\n\n // Create the ripple and its container\n const ripple = document.createElement('div')\n const rippleContainer = document.createElement('div')\n rippleContainer.className = 'ripple-container'\n ripple.className = 'ripple'\n\n // Styles for ripple\n ripple.style.marginTop = '0px'\n ripple.style.marginLeft = '0px'\n ripple.style.width = '1px'\n ripple.style.height = '1px'\n ripple.style.transition = `all ${props.transition}ms cubic-bezier(0.4, 0, 0.2, 1)`\n ripple.style.borderRadius = '50%'\n ripple.style.pointerEvents = 'none'\n ripple.style.position = 'relative'\n ripple.style.zIndex = zIndex\n ripple.style.backgroundColor = bg\n\n // Styles for rippleContainer\n rippleContainer.style.position = 'absolute'\n rippleContainer.style.left = `${0 - border}px`\n rippleContainer.style.top = `${0 - border}px`\n rippleContainer.style.height = '0'\n rippleContainer.style.width = '0'\n rippleContainer.style.pointerEvents = 'none'\n rippleContainer.style.overflow = 'hidden'\n\n // Store target position to change it after\n const storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative')\n target.style.position = 'relative'\n\n rippleContainer.appendChild(ripple)\n target.appendChild(rippleContainer)\n\n ripple.style.marginLeft = `${dx}px`\n ripple.style.marginTop = `${dy}px`\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = `${width}px`\n rippleContainer.style.height = `${height}px`\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius\n\n rippleContainer.style.direction = 'ltr'\n\n setTimeout(() => {\n ripple.style.width = `${radius * 2}px`\n ripple.style.height = `${radius * 2}px`\n ripple.style.marginLeft = `${dx - radius}px`\n ripple.style.marginTop = `${dy - radius}px`\n }, 0)\n\n function clearRipple() {\n setTimeout(() => {\n ripple.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n }, 250)\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(() => {\n rippleContainer.parentNode.removeChild(rippleContainer)\n }, 850)\n\n el.removeEventListener('mouseup', clearRipple, false)\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(() => {\n let clearPosition = true\n for (let i = 0; i < target.childNodes.length; i++) {\n if (target.childNodes[i].className === 'ripple-container')\n clearPosition = false\n }\n\n if (clearPosition) {\n if (storedTargetPosition !== 'static')\n target.style.position = storedTargetPosition\n else\n target.style.position = ''\n }\n }, props.transition + 250)\n }\n\n if (event.type === 'mousedown')\n el.addEventListener('mouseup', clearRipple, false)\n else\n clearRipple()\n }\n },\n}\n\nfunction setProps(modifiers, props) {\n modifiers.forEach((item) => {\n if (Number.isNaN(Number(item)))\n props.event = item\n else\n props.transition = item\n })\n}\n\nexport default Ripple\n","import type { Directive } from 'vue'\n\nconst DISTANCE = 100 // 距离\nconst ANIMATIONTIME = 500 // 500毫秒\nlet distance: number | null = null\nlet animationtime: number | null = null\nconst map = new WeakMap()\n\nfunction isBelowViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect()\n return rect.top - (distance || DISTANCE) > window.innerHeight\n}\n\nfunction handleScroll() {\n const elements = document.querySelectorAll('[v-slideIn]')\n elements.forEach((el: any) => {\n if (isBelowViewport(el))\n return\n\n const animation = map.get(el)\n if (animation && !el.hasAttribute('v-slideIn-played')) {\n animation.play()\n el.removeAttribute('v-slideIn')\n el.setAttribute('v-slideIn-played', '') // Add a flag to mark the animation as played\n }\n })\n}\n\nconst vSlideIn: Directive = {\n mounted(el: HTMLElement, binding: any) {\n if (binding.value) {\n distance = binding.value.px // 接收指定距离\n animationtime = binding.value.time // 接收指定时间\n }\n if (!isBelowViewport(el))\n return\n\n const animation = el.animate(\n [\n {\n opacity: 0,\n transform: `translateY(${distance || DISTANCE}px)`,\n },\n {\n opacity: 1,\n transform: `translateY(0px)`,\n },\n ],\n {\n duration: animationtime || ANIMATIONTIME,\n easing: 'ease-in-out',\n fill: 'forwards',\n },\n )\n animation.pause()\n map.set(el, animation)\n el.setAttribute('v-slideIn', '') // 添加标记,表示需要进行动画\n\n window.addEventListener('scroll', handleScroll)\n },\n\n unmounted(el: HTMLElement) {\n map.delete(el)\n window.removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vSlideIn\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let lastExecTime = 0\n\n const handler = (): void => {\n const currentTime = Date.now()\n if (currentTime - lastExecTime < delay)\n return\n lastExecTime = currentTime\n value()\n }\n\n const existingHandler = elMapToHandlers.get(el)\n if (existingHandler)\n el.removeEventListener(eventName, existingHandler)\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vThrottle: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\n\nexport default vThrottle\n","/**\n * @description: v-waterMarker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 添加水印\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst addWaterMarker: Directive = (str: string, parentNode: any, font: any, textColor: string) => {\n // 水印文字,父元素,字体,文字颜色\n const can: HTMLCanvasElement = document.createElement('canvas')\n parentNode.appendChild(can)\n can.width = 200\n can.height = 150\n can.style.display = 'none'\n const cans = can.getContext('2d') as CanvasRenderingContext2D\n cans.rotate((-20 * Math.PI) / 180)\n cans.font = font || '16px Microsoft JhengHei'\n cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'\n cans.textAlign = 'left'\n cans.textBaseline = 'Middle' as CanvasTextBaseline\n cans.fillText(str, can.width / 10, can.height / 2)\n parentNode.style.backgroundImage = `url(${can.toDataURL('image/png')})`\n}\n\nconst waterMarker = {\n mounted(el: DirectiveBinding, binding: DirectiveBinding) {\n addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)\n },\n}\n\nexport default waterMarker\n","import type { App, Directive } from 'vue'\nimport backtop from './directive/v-backtop'\nimport clickOutside from './directive/v-clickOutside'\nimport copy from './directive/v-copy'\nimport debounce from './directive/v-debounce'\nimport doubleClick from './directive/v-doubleClick'\nimport draggable from './directive/v-draggable'\nimport ellipsis from './directive/v-ellipsis'\nimport emoji from './directive/v-emoji'\nimport empty from './directive/v-empty'\nimport flicker from './directive/v-flicker'\nimport focus from './directive/v-focus'\nimport highlight from './directive/v-highlight'\nimport hover from './directive/v-hover'\nimport input from './directive/v-input'\nimport lazyImg from './directive/v-lazyImg'\nimport loading from './directive/v-loading'\nimport longpress from './directive/v-longpress'\nimport money from './directive/v-money'\nimport onOnce from './directive/v-onOnce'\nimport permission from './directive/v-permission'\nimport resize from './directive/v-resize'\nimport ripple from './directive/v-ripple'\nimport slideIn from './directive/v-slideIn'\nimport throttle from './directive/v-throttle'\nimport waterMarker from './directive/v-waterMarker'\n\nexport {\n backtop as vBacktop,\n clickOutside as vClickOutside,\n copy as vCopy,\n debounce as vDebounce,\n doubleClick as vDoubleClick,\n draggable as vDraggable,\n ellipsis as vEllipsis,\n emoji as vEmoji,\n empty as vEmpty,\n flicker as vFlicker,\n focus as vFocus,\n highlight as vHighlight,\n hover as vHover,\n input as vInput,\n lazyImg as vLazyImg,\n loading as vLoading,\n longpress as vLongpress,\n money as vMoney,\n onOnce as vOnOnce,\n permission as vPermission,\n resize as vResize,\n ripple as vRipple,\n slideIn as vSlideIn,\n throttle as vThrottle,\n waterMarker as vWaterMarker,\n}\n\ninterface DirectiveCollection {\n [key: string]: Directive\n}\n\nconst directives: DirectiveCollection = {\n backtop,\n clickOutside,\n copy,\n debounce,\n doubleClick,\n draggable,\n ellipsis,\n emoji,\n empty,\n flicker,\n focus,\n highlight,\n hover,\n input,\n lazyImg,\n loading,\n longpress,\n money,\n onOnce,\n permission,\n resize,\n ripple,\n slideIn,\n throttle,\n waterMarker,\n}\n\nexport default {\n install(app: App) {\n Object.keys(directives).forEach((key) => {\n app.directive(key, directives[key])\n })\n },\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -477,9 +477,11 @@ var vInput = {
|
|
|
477
477
|
return console.log(`\u4F7F\u7528v-input\u6307\u4EE4\u9700\u8981\u9009\u62E9\u7279\u5B9A\u529F\u80FD\uFF1Av-input:type="restrictValue"; type = ${types.join("/")}.`);
|
|
478
478
|
el.$handler = (el2) => {
|
|
479
479
|
switch (_type) {
|
|
480
|
+
// 数字
|
|
480
481
|
case "number":
|
|
481
|
-
el2.value = el2.value.replace(
|
|
482
|
+
el2.value = el2.value.replace(/\D/, "");
|
|
482
483
|
break;
|
|
484
|
+
// 数字+小数
|
|
483
485
|
case "decimal":
|
|
484
486
|
el2.value = el2.value.replace(/[^\d.]/g, "");
|
|
485
487
|
el2.value = el2.value.replace(/\.{2,}/g, ".");
|
|
@@ -489,8 +491,9 @@ var vInput = {
|
|
|
489
491
|
!el2.value.includes(".") && el2.value !== "" && (el2.value = Number.parseFloat(el2.value));
|
|
490
492
|
el2.value.includes(".") && el2.value.length === 1 && (el2.value = "");
|
|
491
493
|
break;
|
|
494
|
+
// 自定义, 由data-rule提供规则
|
|
492
495
|
case "customize":
|
|
493
|
-
const rule =
|
|
496
|
+
const rule = new RegExp(restrict);
|
|
494
497
|
el2.value = el2.value.replace(rule, "");
|
|
495
498
|
break;
|
|
496
499
|
}
|
|
@@ -1114,7 +1117,7 @@ var directives = {
|
|
|
1114
1117
|
throttle: v_throttle_default,
|
|
1115
1118
|
waterMarker: v_waterMarker_default
|
|
1116
1119
|
};
|
|
1117
|
-
var
|
|
1120
|
+
var index_default = {
|
|
1118
1121
|
install(app) {
|
|
1119
1122
|
Object.keys(directives).forEach((key) => {
|
|
1120
1123
|
app.directive(key, directives[key]);
|
|
@@ -1122,6 +1125,6 @@ var src_default = {
|
|
|
1122
1125
|
}
|
|
1123
1126
|
};
|
|
1124
1127
|
|
|
1125
|
-
export {
|
|
1126
|
-
//# sourceMappingURL=
|
|
1128
|
+
export { index_default as default, v_backtop_default as vBacktop, v_clickOutside_default as vClickOutside, v_copy_default as vCopy, v_debounce_default as vDebounce, v_doubleClick_default as vDoubleClick, v_draggable_default as vDraggable, v_ellipsis_default as vEllipsis, v_emoji_default as vEmoji, v_empty_default as vEmpty, v_flicker_default as vFlicker, v_focus_default as vFocus, v_highlight_default as vHighlight, v_hover_default as vHover, v_input_default as vInput, v_lazyImg_default as vLazyImg, v_loading_default as vLoading, v_longpress_default as vLongpress, v_money_default as vMoney, v_onOnce_default as vOnOnce, v_permission_default as vPermission, v_resize_default as vResize, v_ripple_default as vRipple, v_slideIn_default as vSlideIn, v_throttle_default as vThrottle, v_waterMarker_default as vWaterMarker };
|
|
1129
|
+
//# sourceMappingURL=index.mjs.map
|
|
1127
1130
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/directive/v-backtop/index.ts","../src/directive/v-clickOutside/index.ts","../src/directive/v-copy/index.ts","../src/utils/isBoolean.ts","../src/utils/isFunction.ts","../src/utils/loadingSvg.ts","../src/directive/v-debounce/index.ts","../src/directive/v-doubleClick/index.ts","../src/directive/v-draggable/index.ts","../src/directive/v-ellipsis/index.ts","../src/directive/v-emoji/index.ts","../src/directive/v-empty/index.ts","../src/directive/v-flicker/index.ts","../src/directive/v-focus/index.ts","../src/directive/v-highlight/index.ts","../src/directive/v-hover/index.ts","../src/directive/v-input/index.ts","../src/directive/v-lazyImg/index.ts","../src/directive/v-loading/index.ts","../src/directive/v-longpress/index.ts","../src/directive/v-money/index.ts","../src/directive/v-onOnce/index.ts","../src/directive/v-permission/index.ts","../src/directive/v-resize/index.ts","../src/directive/v-ripple/index.ts","../src/directive/v-slideIn/index.ts","../src/directive/v-throttle/index.ts","../src/directive/v-waterMarker/index.ts","../src/index.ts"],"names":["handleScroll","handler","addEventListener","elMapToHandlers","el","elMapToEventName","style","e"],"mappings":"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","sourcesContent":["/**\n * @description: v-backtop指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/13 14:05:16\n * @description: 为元素添加返回顶部功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\ninterface BackTopElement extends HTMLElement {\n style: CSSStyleDeclaration\n}\n\n// 定义通用的滚动元素接口\ninterface ScrollableElement extends HTMLElement {\n scrollTop: number\n}\n\nconst vBackTop: Directive = {\n mounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n el.addEventListener('click', () => {\n target.scrollTo({\n behavior: 'smooth',\n top: 0,\n })\n })\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n if ((target as ScrollableElement).scrollTop < (binding.value as number))\n el.style.visibility = 'hidden';\n\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n },\n unmounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n };\n\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n el.removeEventListener('click', handleScroll)\n },\n updated(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n\n if (binding.value !== undefined)\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n else\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vBackTop\n","/**\n * @description: v-clickOutside指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 点击元素外部触发时事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst elMapToHandlers: WeakMap<Element, (e: MouseEvent) => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n const { value } = binding\n value()\n }\n window.addEventListener('click', handler)\n elMapToHandlers.set(el, handler)\n}\n\nconst vClickOut: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\n\nexport default vClickOut\n","/**\n * @description: v-copy指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 实现文本复制到剪贴板功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { value } = binding\n\n el.setAttribute('copyValue', String(value))\n\n const copyHandler = (): void => {\n navigator.clipboard\n .writeText(el.getAttribute('copyValue') || '')\n .then(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制成功!')\n })\n .catch(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制失败!')\n })\n }\n\n el.addEventListener('click', copyHandler)\n}\n\nconst vCopy: Directive = {\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n el.setAttribute('copyValue', String(value))\n },\n}\n\nexport default vCopy\n","export default function isBoolean(x: any): boolean {\n return typeof x === 'boolean'\n}\n","export default function (value: any): boolean {\n return typeof value === 'function'\n}\n","export default `\n<svg width=\"57\" height=\"57\" viewBox=\"0 0 57 57\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\">\n <circle cx=\"5\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;5;50;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"5;27;49;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"27\" cy=\"5\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"5\" to=\"5\"\n values=\"5;50;50;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"27\" to=\"27\"\n values=\"27;49;5;27\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"49\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;50;5;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n from=\"49\" to=\"49\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"49;5;27;49\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n </g>\n </g>\n</svg>\n`\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let timer: undefined | number\n\n const handler = (): void => {\n if (timer === undefined) {\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n else {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vDebounce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDebounce\n","/**\n * @description: v-doubleClick指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 双击触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let clickCount = 0\n let time = 0\n\n const handler = () => {\n clickCount++\n const now = new Date().getTime()\n\n if (clickCount === 1) {\n time = now\n setTimeout(\n () => {\n clickCount = 0\n time = 0\n },\n arg ? Number(arg) : 300,\n )\n }\n\n if (clickCount === 2) {\n if (now - time < (arg ? Number(arg) : 300))\n value()\n\n clickCount = 0\n time = 0\n }\n }\n elMapToHandlers.set(el, handler)\n el.addEventListener('click', handler)\n}\n\nconst vDoubleClick: Directive = {\n beforeUnmount(el) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDoubleClick\n","/**\n * @description: v-draggable指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 使元素可拖拽\n */\nimport type { Directive } from 'vue'\n\nconst vDraggable: Directive = {\n mounted(el: HTMLElement) {\n let startX = 0\n let startY = 0\n\n let offsetXX = 0\n let offsetYY = 0\n\n let endX = 0\n let endY = 0\n\n el.style.cursor = 'move'\n\n const transformValue = window\n .getComputedStyle(el)\n .transform.split(',')\n .map(item => Number.parseInt(item))\n .slice(4, 6)\n\n if (transformValue.length > 1) {\n endX = transformValue[0]\n endY = transformValue[1]\n }\n\n const handler = (e: MouseEvent) => {\n const { clientX, clientY } = e\n const offsetX = clientX - startX + endX\n const offsetY = clientY - startY + endY\n offsetXX = offsetX\n offsetYY = offsetY\n el.style.transform = `translate(${offsetX}px, ${offsetY}px)`\n }\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n const { clientX, clientY } = e\n startX = clientX\n startY = clientY\n\n window.addEventListener('mousemove', handler)\n })\n el.addEventListener('mouseup', () => {\n endX = offsetXX\n endY = offsetYY\n window.removeEventListener('mousemove', handler)\n })\n },\n}\nexport default vDraggable\n","/**\n * @description: v-ellipsis指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 省略超出文本\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction handler(el: HTMLElement, binding: DirectiveBinding) {\n el.style.overflow = 'hidden'\n el.style.textOverflow = 'ellipsis'\n const { arg } = binding\n if (arg) {\n el.style.display = '-webkit-box'\n el.style.webkitLineClamp = String(Number(arg))\n el.style.webkitBoxOrient = 'vertical'\n }\n else {\n el.style.whiteSpace = 'nowrap'\n }\n el.setAttribute('title', el.textContent as string)\n}\n\nconst vEllipsis: Directive = {\n mounted(el: HTMLElement, binding) {\n handler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n handler(el, binding)\n },\n}\nexport default vEllipsis\n","/**\n * @description: v-emoji指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 禁止输入emoji\n */\nimport type { Directive } from 'vue'\n\nconst vEmoji: Directive = {\n mounted(el, _binding, _vnode) {\n const handleInput = (event: Event) => {\n const inputElement = event.target as HTMLInputElement\n const value = inputElement.value\n const newValue = value.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFF]|[\\u2600-\\u27FF]/g, '')\n if (newValue !== value) {\n inputElement.value = newValue\n inputElement.dispatchEvent(new Event('input', { bubbles: true }))\n }\n }\n\n el.addEventListener('input', handleInput)\n\n el.$destroy = () => {\n el.removeEventListener('input', handleInput)\n delete el.$destroy\n }\n },\n unmounted(el) {\n if (el.$destroy)\n el.$destroy()\n },\n}\n\nexport default vEmoji\n","/**\n * @description: v-empty指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 设置空状态\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isRef, watch } from 'vue'\n\nlet originalContent = ''\nlet emptyState = ''\nfunction insertEmptyState(el: HTMLElement, content: string, img: string) {\n const image = img ? `<img src=\"${img}\" style=\"width: 90%; border-radius: 5px;\" />` : ''\n emptyState = `\n <div style=\"position: absolute; top: 0; left: 0; z-index: 9999; background: #fff; display: flex; justify-content: center; align-items: center; height: ${el.offsetHeight}px; width: ${el.offsetWidth}px; border-radius: 5px;\">\n <div style=\"display: flex; justify-content: center; align-items: center; flex-direction: column;\">\n ${image}\n <div style=\"color: #000\">${content}</div>\n </div>\n </div>\n `\n el.innerHTML = emptyState\n}\n\nconst vEmpty: Directive = {\n beforeMount(el: HTMLElement, _binding: DirectiveBinding) {\n originalContent = el.innerHTML\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n el.style.position = el.style.position || 'relative'\n\n const { content = '暂无数据', img, visible } = binding.value\n\n const insertContent = () => {\n el.innerHTML = originalContent\n }\n\n const handleVisibilityChange = () => {\n const isVisible = isRef(visible) ? visible.value : visible\n if (isVisible)\n insertEmptyState(el, content, img)\n else\n insertContent()\n }\n\n if (isRef(visible))\n watch(visible, handleVisibilityChange)\n\n handleVisibilityChange()\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n const { visible } = binding.value\n const isVisible = isRef(visible) ? visible.value : visible\n if (!isVisible)\n el.innerHTML = originalContent.trim()\n else\n el.innerHTML = emptyState\n },\n}\n\nexport default vEmpty\n","/**\n * @description: v-flicker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nlet style: HTMLStyleElement | null = null\n\nconst animationStr = `\n@keyframes v-flicker {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n`\n\nconst vFlicker: Directive = {\n mounted(el: HTMLElement) {\n if (style === null) {\n style = document.createElement('style')\n style.innerHTML = animationStr\n document.head.appendChild(style)\n }\n\n el.style.animation = 'v-flicker 1s infinite'\n },\n}\n\nexport default vFlicker\n","/**\n * @description: v-focus指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 自动聚焦\n */\nimport type { Directive } from 'vue'\n\nconst vFocus: Directive = {\n mounted(el: HTMLElement) {\n el.focus && el.focus()\n },\n updated(el: HTMLElement) {\n el.focus && el.focus()\n },\n}\nexport default vFocus\n","/**\n * @description: v-highlight指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nconst vHighlight: Directive = {\n mounted(el: HTMLElement, binding) {\n const { arg } = binding\n el.style.backgroundColor = arg || 'rgba(255, 255, 0, .8)'\n },\n}\n\nexport default vHighlight\n","/**\n * @description: v-hover指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 鼠标经过触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { value } = binding\n if (isFunction(value)) {\n el.addEventListener('mouseenter', value)\n elMapToHandlers.set(el, value)\n }\n}\n\nconst vHover: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('mouseenter', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vHover\n","/**\n * @description: v-input指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 限制输入类型\n */\nimport type { Directive } from 'vue'\n\n// 派发自定义事件\nfunction trigger(el: any, type: string) {\n const e = document.createEvent('HTMLEvents')\n e.initEvent(type, true, true)\n el.dispatchEvent(e)\n}\n\nconst vInput: Directive = {\n mounted(el, binding) {\n const _type = binding.arg\n const restrict = binding.value || 10\n const types = ['number', 'decimal', 'customize']\n if (!_type || !types.includes(_type))\n // eslint-disable-next-line no-console\n return console.log(`使用v-input指令需要选择特定功能:v-input:type=\"restrictValue\"; type = ${types.join('/')}.`)\n el.$handler = (el: any) => {\n switch (_type) {\n // 数字\n case 'number':\n el.value = el.value.replace(/[^\\d]/, '')\n break\n // 数字+小数\n case 'decimal':\n el.value = el.value.replace(/[^\\d.]/g, '') // 清除数字和'.'以外的字符\n el.value = el.value.replace(/\\.{2,}/g, '.') // 连续两个'.', 只保留第一个'.'\n el.value = el.value.replace('.', '$#$').replace(/\\./g, '').replace('$#$', '.') // 隔着字符, 也保证只有一个'.'\n // eslint-disable-next-line no-case-declarations\n const regexPattern = new RegExp(`^(-)*(\\\\d+)\\\\.(\\\\d{0,${restrict}}).*$`)\n el.value = el.value.replace(regexPattern, '$1$2.$3') // 只能输入两位小数\n !el.value.includes('.') && el.value !== '' && (el.value = Number.parseFloat(el.value)) // 保证不会出现重复的: 00, 01, 02 ...\n el.value.includes('.') && el.value.length === 1 && (el.value = '') // 第一位不能以'.'开头\n break\n // 自定义, 由data-rule提供规则\n case 'customize':\n // eslint-disable-next-line no-case-declarations\n const rule = restrict && new RegExp(restrict) // 字符串正则转正则表达式\n el.value = el.value.replace(rule, '')\n break\n }\n trigger(el, 'input')\n }\n el.$handler(el)\n },\n updated(el) {\n el.$handler && el.$handler(el)\n },\n}\n\nexport default vInput\n","import type { Directive, DirectiveBinding } from 'vue'\n\nlet options: {\n root: HTMLElement | null\n threshold: number\n} | null\n\nconst callback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement\n if (img.src !== img.dataset.src)\n img.src = img.dataset.src || ''\n }\n })\n}\n\nlet observer: IntersectionObserver | null = null\n\nconst observerHandler: (el: Element, binding: DirectiveBinding) => void = (\n el,\n binding,\n) => {\n if (el.tagName !== 'IMG')\n return\n const { value } = binding\n el.setAttribute('data-src', String(value))\n observer?.observe(el)\n}\n\nconst vImgLazyLoad: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (observer)\n observer.unobserve(el)\n },\n mounted(el: HTMLElement, binding) {\n if (options === null) {\n options = {\n root: document.querySelector('html'),\n threshold: 0.1,\n }\n }\n\n if (observer === null)\n observer = new IntersectionObserver(callback, options)\n\n observerHandler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n observerHandler(el, binding)\n },\n}\nexport default vImgLazyLoad\n","import type { Directive } from 'vue'\nimport { isBoolean, loadingSvg } from '../../utils'\n\nconst elMapToMaskElement: WeakMap<Element, HTMLDivElement> = new WeakMap()\n\nconst elMapToHasChangedPosition: WeakMap<Element, boolean> = new WeakMap()\n\nfunction appendChild(el: HTMLElement): void {\n const loadingWrapper = document.createElement('div')\n const maskElement = document.createElement('div')\n maskElement.style.position = 'absolute'\n maskElement.style.top = '0'\n maskElement.style.left = '0'\n maskElement.style.right = '0'\n maskElement.style.bottom = '0'\n maskElement.style.zIndex = '9999'\n maskElement.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\n maskElement.style.pointerEvents = 'none'\n\n loadingWrapper.style.position = 'absolute'\n loadingWrapper.style.top = '50%'\n loadingWrapper.style.left = '50%'\n loadingWrapper.style.transform = 'translate(-50%, -50%)'\n loadingWrapper.style.pointerEvents = 'none'\n loadingWrapper.innerHTML = loadingSvg\n if (el.style.position === 'static' || el.style.position === '') {\n elMapToHasChangedPosition.set(el, true)\n el.style.position = 'relative'\n }\n maskElement.appendChild(loadingWrapper)\n elMapToMaskElement.set(el, maskElement)\n el.appendChild(maskElement)\n}\n\nconst vLoading: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMaskElement.delete(el)\n elMapToHasChangedPosition.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n const { value } = binding\n if (!isBoolean(value))\n return\n if (!value)\n return\n appendChild(el)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n const hasMaskElement = elMapToMaskElement.has(el)\n const hasChangedPosition = elMapToHasChangedPosition.has(el)\n if (value && hasMaskElement)\n return\n if (value && !hasMaskElement)\n appendChild(el)\n\n if ((!value || !isBoolean(value)) && !hasMaskElement)\n return\n if ((!value || !isBoolean(value)) && hasMaskElement) {\n if (hasChangedPosition) {\n el.style.position = 'static'\n elMapToHasChangedPosition.delete(el)\n }\n const maskElement = elMapToMaskElement.get(el)\n maskElement && el.removeChild(maskElement)\n elMapToMaskElement.delete(el)\n }\n },\n}\nexport default vLoading\n","/**\n * @description: v-longpress指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 长按触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToMouseDownHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToMouseUpHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let timer: number | undefined\n const pressHandler = () => {\n timer = window.setTimeout(value, arg ? Number(arg) : 300)\n }\n const clearTimeoutHandler = () => {\n clearTimeout(timer)\n }\n el.addEventListener('mousedown', pressHandler)\n el.addEventListener('mouseup', clearTimeoutHandler)\n elMapToMouseDownHandlers.set(el, pressHandler)\n elMapToMouseUpHandlers.set(el, clearTimeoutHandler)\n}\n\nconst vLongPress: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMouseDownHandlers.delete(el)\n elMapToMouseUpHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToMouseDownHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mousedown', pressHandler)\n elMapToMouseDownHandlers.delete(el)\n }\n if (elMapToMouseUpHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mouseup', pressHandler)\n elMapToMouseUpHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vLongPress\n","/**\n * @description: v-money指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 格式化数字为金额\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction setInnerHTML(el: HTMLElement, binding: DirectiveBinding) {\n const { value } = binding\n\n const parts = String(value).split('.')\n\n const moneyReverse = Array.from(parts[0]).reverse()\n\n const moneyArray = []\n\n for (let i = 0; i < moneyReverse.length; i++) {\n if (i % 3 === 0 && i !== 0)\n moneyArray.push(',')\n\n moneyArray.push(moneyReverse[i])\n }\n\n const moneyString = moneyArray.reverse().join('')\n\n if (parts.length > 1)\n el.innerHTML = `${moneyString}.${parts[1]}`\n else\n el.innerHTML = moneyString\n}\n\nconst vMoney: Directive = {\n mounted(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n updated(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n}\nexport default vMoney\n","/**\n * @description: v-onOnce指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 只触发一次回调\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: HTMLElement, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const eventName = arg || 'click'\n const handler = (): void => {\n value()\n el.removeEventListener(eventName, handler)\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vOnOnce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vOnOnce\n","/**\n * @description: v-permission指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 快速实现鉴权\n */\nimport type { Directive } from 'vue'\n\nconst vPermission: Directive = {\n mounted(el, binding) {\n // 从服务获取用户的权限列表,一般获取后存放于vuex中,本案例为了方便演示将直接以字符串的形式展示\n // 权限之间以分号分隔\n // 管理员权限:\"add;del;update;query\"\n // 普通用户权限:\"add;del;update;query\"\n let permission = 'add;del' // 权限字符串\n let permissionList = []// 权限列表\n if (!permission)\n permission = ''\n permissionList = permission.split(';')\n\n // 获取需要的权限标识,即元素给指令传进来的参数值\n let inValue\n if (typeof binding.value === 'string') {\n inValue = binding.value\n }\n else if (Array.isArray(binding.value)) {\n inValue = binding.value.join(';')\n }\n else {\n // eslint-disable-next-line no-console\n console.log('数据格式不正确,请输入字符串(以分号分隔)或数组')\n }\n\n let passText = inValue // 可以是多个值,中间以分号分隔\n let passTextArr = []// 将权限解析到数组中\n if (!passText)\n passText = ''\n passTextArr = passText.split(';')\n\n // 定义一个权限标识变量,用于标识是否有权限\n let flag = false\n // 循环遍历权限列表,检测用户是否有相应的操作权限\n for (let i = 0; i < passTextArr.length; i++) {\n if (permissionList.includes(passTextArr[i])) {\n // 如果从服务器中获取的权限列表中有组件所需的权限,则将flag置为true,同时跳出循环\n flag = true\n break\n }\n }\n // 如果flag为false,也就是没权限则直接将元素移除或者隐藏\n if (!flag)\n el.parentNode && el.parentNode.removeChild(el)\n },\n}\n\nexport default vPermission\n","/**\n * @description: v-resize指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 响应缩放\n */\n\nimport type { Directive } from 'vue'\n\nfunction createYElement(type: 'top' | 'bottom'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n if (type === 'top')\n Element.style.top = '0'\n else\n Element.style.bottom = '0'\n\n Element.style.left = '0'\n Element.style.right = '0'\n Element.style.height = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ns-resize'\n Element.style.display = 'none'\n\n return Element\n}\n\nfunction createXElement(type: 'left' | 'right'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n Element.style.top = '5px'\n if (type === 'left')\n Element.style.left = '0'\n else\n Element.style.right = '0'\n\n Element.style.bottom = '5px'\n Element.style.width = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ew-resize'\n Element.style.display = 'none'\n Element.style.transition = 'all 0.3s'\n\n return Element\n}\n\nconst vResize: Directive = {\n mounted(el: HTMLElement) {\n const position = el.style.position\n if (position === 'static' || position === '')\n el.style.position = 'relative'\n\n const topElement = createYElement('top')\n const bottomElement = createYElement('bottom')\n const leftElement = createXElement('left')\n const rightElement = createXElement('right')\n\n const Y = [topElement, bottomElement]\n const X = [leftElement, rightElement]\n\n const all = [...Y, ...X]\n\n Y.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n const startY = e.clientY\n\n const style = window.getComputedStyle(el)\n const height = style.height\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetY = e.clientY - startY\n el.style.height = `${Number.parseInt(height, 10) + offsetY}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n X.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n\n const startX = e.clientX\n\n const style = window.getComputedStyle(el)\n const width = style.width\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetX = e.clientX - startX\n el.style.width = `${Number.parseInt(width, 10) + offsetX}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n el.addEventListener('click', () => {\n all.forEach((element) => {\n element.style.display = 'block'\n })\n })\n\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n all.forEach((element) => {\n element.style.display = 'none'\n })\n }\n window.addEventListener('click', handler)\n\n el.appendChild(topElement)\n el.appendChild(bottomElement)\n el.appendChild(leftElement)\n el.appendChild(rightElement)\n },\n}\nexport default vResize\n","/**\n * @description: v-ripple指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 给元素添加波纹动效\n */\n\n/* eslint-disable ts/ban-ts-comment */\n// @ts-nocheck\nimport type { Directive } from 'vue'\n\nconst Ripple: Directive = {\n mounted(el, binding) {\n // Default values.\n const props = {\n event: 'mousedown',\n transition: 600,\n }\n\n setProps(Object.keys(binding.modifiers), props)\n\n el.addEventListener(props.event, (event) => {\n rippler(event, el, binding.value)\n })\n\n const bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)'\n const zIndex = Ripple.zIndex || '9999'\n\n function rippler(event, el) {\n const target = el\n // Get border to avoid offsetting on ripple container position\n const targetBorder = Number.parseInt((getComputedStyle(target).borderWidth).replace('px', ''))\n\n // Get necessary variables\n const rect = target.getBoundingClientRect()\n const left = rect.left\n const top = rect.top\n const width = target.offsetWidth\n const height = target.offsetHeight\n const dx = event.clientX - left\n const dy = event.clientY - top\n const maxX = Math.max(dx, width - dx)\n const maxY = Math.max(dy, height - dy)\n const style = window.getComputedStyle(target)\n const radius = Math.sqrt((maxX * maxX) + (maxY * maxY))\n const border = (targetBorder > 0) ? targetBorder : 0\n\n // Create the ripple and its container\n const ripple = document.createElement('div')\n const rippleContainer = document.createElement('div')\n rippleContainer.className = 'ripple-container'\n ripple.className = 'ripple'\n\n // Styles for ripple\n ripple.style.marginTop = '0px'\n ripple.style.marginLeft = '0px'\n ripple.style.width = '1px'\n ripple.style.height = '1px'\n ripple.style.transition = `all ${props.transition}ms cubic-bezier(0.4, 0, 0.2, 1)`\n ripple.style.borderRadius = '50%'\n ripple.style.pointerEvents = 'none'\n ripple.style.position = 'relative'\n ripple.style.zIndex = zIndex\n ripple.style.backgroundColor = bg\n\n // Styles for rippleContainer\n rippleContainer.style.position = 'absolute'\n rippleContainer.style.left = `${0 - border}px`\n rippleContainer.style.top = `${0 - border}px`\n rippleContainer.style.height = '0'\n rippleContainer.style.width = '0'\n rippleContainer.style.pointerEvents = 'none'\n rippleContainer.style.overflow = 'hidden'\n\n // Store target position to change it after\n const storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative')\n target.style.position = 'relative'\n\n rippleContainer.appendChild(ripple)\n target.appendChild(rippleContainer)\n\n ripple.style.marginLeft = `${dx}px`\n ripple.style.marginTop = `${dy}px`\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = `${width}px`\n rippleContainer.style.height = `${height}px`\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius\n\n rippleContainer.style.direction = 'ltr'\n\n setTimeout(() => {\n ripple.style.width = `${radius * 2}px`\n ripple.style.height = `${radius * 2}px`\n ripple.style.marginLeft = `${dx - radius}px`\n ripple.style.marginTop = `${dy - radius}px`\n }, 0)\n\n function clearRipple() {\n setTimeout(() => {\n ripple.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n }, 250)\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(() => {\n rippleContainer.parentNode.removeChild(rippleContainer)\n }, 850)\n\n el.removeEventListener('mouseup', clearRipple, false)\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(() => {\n let clearPosition = true\n for (let i = 0; i < target.childNodes.length; i++) {\n if (target.childNodes[i].className === 'ripple-container')\n clearPosition = false\n }\n\n if (clearPosition) {\n if (storedTargetPosition !== 'static')\n target.style.position = storedTargetPosition\n else\n target.style.position = ''\n }\n }, props.transition + 250)\n }\n\n if (event.type === 'mousedown')\n el.addEventListener('mouseup', clearRipple, false)\n else\n clearRipple()\n }\n },\n}\n\nfunction setProps(modifiers, props) {\n modifiers.forEach((item) => {\n if (Number.isNaN(Number(item)))\n props.event = item\n else\n props.transition = item\n })\n}\n\nexport default Ripple\n","import type { Directive } from 'vue'\n\nconst DISTANCE = 100 // 距离\nconst ANIMATIONTIME = 500 // 500毫秒\nlet distance: number | null = null\nlet animationtime: number | null = null\nconst map = new WeakMap()\n\nfunction isBelowViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect()\n return rect.top - (distance || DISTANCE) > window.innerHeight\n}\n\nfunction handleScroll() {\n const elements = document.querySelectorAll('[v-slideIn]')\n elements.forEach((el: any) => {\n if (isBelowViewport(el))\n return\n\n const animation = map.get(el)\n if (animation && !el.hasAttribute('v-slideIn-played')) {\n animation.play()\n el.removeAttribute('v-slideIn')\n el.setAttribute('v-slideIn-played', '') // Add a flag to mark the animation as played\n }\n })\n}\n\nconst vSlideIn: Directive = {\n mounted(el: HTMLElement, binding: any) {\n if (binding.value) {\n distance = binding.value.px // 接收指定距离\n animationtime = binding.value.time // 接收指定时间\n }\n if (!isBelowViewport(el))\n return\n\n const animation = el.animate(\n [\n {\n opacity: 0,\n transform: `translateY(${distance || DISTANCE}px)`,\n },\n {\n opacity: 1,\n transform: `translateY(0px)`,\n },\n ],\n {\n duration: animationtime || ANIMATIONTIME,\n easing: 'ease-in-out',\n fill: 'forwards',\n },\n )\n animation.pause()\n map.set(el, animation)\n el.setAttribute('v-slideIn', '') // 添加标记,表示需要进行动画\n\n window.addEventListener('scroll', handleScroll)\n },\n\n unmounted(el: HTMLElement) {\n map.delete(el)\n window.removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vSlideIn\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let lastExecTime = 0\n\n const handler = (): void => {\n const currentTime = Date.now()\n if (currentTime - lastExecTime < delay)\n return\n lastExecTime = currentTime\n value()\n }\n\n const existingHandler = elMapToHandlers.get(el)\n if (existingHandler)\n el.removeEventListener(eventName, existingHandler)\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vThrottle: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\n\nexport default vThrottle\n","/**\n * @description: v-waterMarker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 添加水印\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst addWaterMarker: Directive = (str: string, parentNode: any, font: any, textColor: string) => {\n // 水印文字,父元素,字体,文字颜色\n const can: HTMLCanvasElement = document.createElement('canvas')\n parentNode.appendChild(can)\n can.width = 200\n can.height = 150\n can.style.display = 'none'\n const cans = can.getContext('2d') as CanvasRenderingContext2D\n cans.rotate((-20 * Math.PI) / 180)\n cans.font = font || '16px Microsoft JhengHei'\n cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'\n cans.textAlign = 'left'\n cans.textBaseline = 'Middle' as CanvasTextBaseline\n cans.fillText(str, can.width / 10, can.height / 2)\n parentNode.style.backgroundImage = `url(${can.toDataURL('image/png')})`\n}\n\nconst waterMarker = {\n mounted(el: DirectiveBinding, binding: DirectiveBinding) {\n addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)\n },\n}\n\nexport default waterMarker\n","import type { App, Directive } from 'vue'\nimport backtop from './directive/v-backtop'\nimport clickOutside from './directive/v-clickOutside'\nimport copy from './directive/v-copy'\nimport debounce from './directive/v-debounce'\nimport doubleClick from './directive/v-doubleClick'\nimport draggable from './directive/v-draggable'\nimport ellipsis from './directive/v-ellipsis'\nimport emoji from './directive/v-emoji'\nimport empty from './directive/v-empty'\nimport flicker from './directive/v-flicker'\nimport focus from './directive/v-focus'\nimport highlight from './directive/v-highlight'\nimport hover from './directive/v-hover'\nimport input from './directive/v-input'\nimport lazyImg from './directive/v-lazyImg'\nimport loading from './directive/v-loading'\nimport longpress from './directive/v-longpress'\nimport money from './directive/v-money'\nimport onOnce from './directive/v-onOnce'\nimport permission from './directive/v-permission'\nimport resize from './directive/v-resize'\nimport ripple from './directive/v-ripple'\nimport slideIn from './directive/v-slideIn'\nimport throttle from './directive/v-throttle'\nimport waterMarker from './directive/v-waterMarker'\n\nexport {\n backtop as vBacktop,\n clickOutside as vClickOutside,\n copy as vCopy,\n debounce as vDebounce,\n doubleClick as vDoubleClick,\n draggable as vDraggable,\n ellipsis as vEllipsis,\n emoji as vEmoji,\n empty as vEmpty,\n flicker as vFlicker,\n focus as vFocus,\n highlight as vHighlight,\n hover as vHover,\n input as vInput,\n lazyImg as vLazyImg,\n loading as vLoading,\n longpress as vLongpress,\n money as vMoney,\n onOnce as vOnOnce,\n permission as vPermission,\n resize as vResize,\n ripple as vRipple,\n slideIn as vSlideIn,\n throttle as vThrottle,\n waterMarker as vWaterMarker,\n}\n\ninterface DirectiveCollection {\n [key: string]: Directive\n}\n\nconst directives: DirectiveCollection = {\n backtop,\n clickOutside,\n copy,\n debounce,\n doubleClick,\n draggable,\n ellipsis,\n emoji,\n empty,\n flicker,\n focus,\n highlight,\n hover,\n input,\n lazyImg,\n loading,\n longpress,\n money,\n onOnce,\n permission,\n resize,\n ripple,\n slideIn,\n throttle,\n waterMarker,\n}\n\nexport default {\n install(app: App) {\n Object.keys(directives).forEach((key) => {\n app.directive(key, directives[key])\n })\n },\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/directive/v-backtop/index.ts","../src/directive/v-clickOutside/index.ts","../src/directive/v-copy/index.ts","../src/utils/isBoolean.ts","../src/utils/isFunction.ts","../src/utils/loadingSvg.ts","../src/directive/v-debounce/index.ts","../src/directive/v-doubleClick/index.ts","../src/directive/v-draggable/index.ts","../src/directive/v-ellipsis/index.ts","../src/directive/v-emoji/index.ts","../src/directive/v-empty/index.ts","../src/directive/v-flicker/index.ts","../src/directive/v-focus/index.ts","../src/directive/v-highlight/index.ts","../src/directive/v-hover/index.ts","../src/directive/v-input/index.ts","../src/directive/v-lazyImg/index.ts","../src/directive/v-loading/index.ts","../src/directive/v-longpress/index.ts","../src/directive/v-money/index.ts","../src/directive/v-onOnce/index.ts","../src/directive/v-permission/index.ts","../src/directive/v-resize/index.ts","../src/directive/v-ripple/index.ts","../src/directive/v-slideIn/index.ts","../src/directive/v-throttle/index.ts","../src/directive/v-waterMarker/index.ts","../src/index.ts"],"names":["handleScroll","handler","addEventListener","elMapToHandlers","el","elMapToEventName","style","e"],"mappings":";;;AAiBA,IAAM,QAAsB,GAAA;AAAA,EAC1B,OAAA,CAAQ,IAAoB,OAA+C,EAAA;AACzE,IAAA,MAAM,SAAS,OAAQ,CAAA,GAAA,GAAM,SAAS,cAAe,CAAA,OAAA,CAAQ,GAAG,CAA8B,GAAA,MAAA;AAC9F,IAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACjC,MAAA,MAAA,CAAO,QAAS,CAAA;AAAA,QACd,QAAU,EAAA,QAAA;AAAA,QACV,GAAK,EAAA;AAAA,OACN,CAAA;AAAA,KACF,CAAA;AACD,IAAA,MAAMA,gBAAe,MAAM;AACzB,MAAM,MAAA,YAAA,GAAgB,MAA6B,CAAA,SAAA,GAAa,OAAQ,CAAA,KAAA;AACxE,MAAG,EAAA,CAAA,KAAA,CAAM,UAAa,GAAA,YAAA,GAAe,QAAW,GAAA,OAAA;AAAA,KAClD;AACA,IAAK,IAAA,MAAA,CAA6B,YAAa,OAAQ,CAAA,KAAA;AACrD,MAAA,EAAA,CAAG,MAAM,UAAa,GAAA,QAAA;AAExB,IAAC,MAAA,CAA6B,gBAAiB,CAAA,QAAA,EAAUA,aAAY,CAAA;AAAA,GACvE;AAAA,EACA,SAAA,CAAU,IAAoB,OAA+C,EAAA;AAC3E,IAAA,MAAM,SAAS,OAAQ,CAAA,GAAA,GAAM,SAAS,cAAe,CAAA,OAAA,CAAQ,GAAG,CAA8B,GAAA,MAAA;AAC9F,IAAA,MAAMA,gBAAe,MAAM;AACzB,MAAM,MAAA,YAAA,GAAgB,MAA6B,CAAA,SAAA,GAAa,OAAQ,CAAA,KAAA;AACxE,MAAG,EAAA,CAAA,KAAA,CAAM,UAAa,GAAA,YAAA,GAAe,QAAW,GAAA,OAAA;AAAA,KAClD;AAEA,IAAC,MAAA,CAA6B,mBAAoB,CAAA,QAAA,EAAUA,aAAY,CAAA;AACxE,IAAG,EAAA,CAAA,mBAAA,CAAoB,SAASA,aAAY,CAAA;AAAA,GAC9C;AAAA,EACA,OAAA,CAAQ,IAAoB,OAA+C,EAAA;AACzE,IAAA,MAAM,SAAS,OAAQ,CAAA,GAAA,GAAM,SAAS,cAAe,CAAA,OAAA,CAAQ,GAAG,CAA8B,GAAA,MAAA;AAC9F,IAAA,MAAMA,gBAAe,MAAM;AACzB,MAAM,MAAA,YAAA,GAAgB,MAA6B,CAAA,SAAA,GAAa,OAAQ,CAAA,KAAA;AACxE,MAAG,EAAA,CAAA,KAAA,CAAM,UAAa,GAAA,YAAA,GAAe,QAAW,GAAA,OAAA;AAAA,KAClD;AAEA,IAAA,IAAI,QAAQ,KAAU,KAAA,MAAA;AACpB,MAAC,MAAA,CAA6B,gBAAiB,CAAA,QAAA,EAAUA,aAAY,CAAA;AAAA;AAErE,MAAC,MAAA,CAA6B,mBAAoB,CAAA,QAAA,EAAUA,aAAY,CAAA;AAAA;AAE9E,CAAA;AAEA,IAAO,iBAAQ,GAAA;;;ACnDf,IAAM,eAAA,uBAAiE,OAAQ,EAAA;AAE/E,SAAS,gBAAA,CAAiB,IAAa,OAA2B,EAAA;AAChE,EAAMC,MAAAA,QAAAA,GAAU,CAAC,CAAkB,KAAA;AACjC,IAAI,IAAA,EAAA,CAAG,QAAS,CAAA,CAAA,CAAE,MAAc,CAAA;AAC9B,MAAA;AAEF,IAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,IAAM,KAAA,EAAA;AAAA,GACR;AACA,EAAO,MAAA,CAAA,gBAAA,CAAiB,SAASA,QAAO,CAAA;AACxC,EAAgB,eAAA,CAAA,GAAA,CAAI,IAAIA,QAAO,CAAA;AACjC;AAEA,IAAM,SAAuB,GAAA;AAAA,EAC3B,cAAc,EAAiB,EAAA;AAC7B,IAAI,IAAA,eAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAMA,MAAAA,QAAAA,GAAU,eAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AAEtC,MAAAA,QAAW,IAAA,MAAA,CAAO,mBAAoB,CAAA,OAAA,EAASA,QAAO,CAAA;AACtD,MAAA,eAAA,CAAgB,OAAO,EAAE,CAAA;AAAA;AAC3B,GACF;AAAA,EACA,OAAA,CAAQ,IAAiB,OAA2B,EAAA;AAClD,IAAA,gBAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAA2B,EAAA;AAClD,IAAI,IAAA,eAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAMA,MAAAA,QAAAA,GAAU,eAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAA,QAAW,IAAA,MAAA,CAAO,mBAAoB,CAAA,OAAA,EAASA,QAAO,CAAA;AACtD,MAAA,eAAA,CAAgB,OAAO,EAAE,CAAA;AAAA;AAE3B,IAAA,gBAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AAEA,IAAO,sBAAQ,GAAA;;;ACpCf,SAASC,iBAAAA,CAAiB,IAAa,OAA2B,EAAA;AAChE,EAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAElB,EAAA,EAAA,CAAG,YAAa,CAAA,WAAA,EAAa,MAAO,CAAA,KAAK,CAAC,CAAA;AAE1C,EAAA,MAAM,cAAc,MAAY;AAC9B,IAAU,SAAA,CAAA,SAAA,CACP,UAAU,EAAG,CAAA,YAAA,CAAa,WAAW,CAAK,IAAA,EAAE,CAC5C,CAAA,IAAA,CAAK,MAAM;AAEV,MAAA,MAAA,CAAO,MAAM,gCAAO,CAAA;AAAA,KACrB,CACA,CAAA,KAAA,CAAM,MAAM;AAEX,MAAA,MAAA,CAAO,MAAM,gCAAO,CAAA;AAAA,KACrB,CAAA;AAAA,GACL;AAEA,EAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,WAAW,CAAA;AAC1C;AAEA,IAAM,KAAmB,GAAA;AAAA,EACvB,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAA,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,IAAA,EAAA,CAAG,YAAa,CAAA,WAAA,EAAa,MAAO,CAAA,KAAK,CAAC,CAAA;AAAA;AAE9C,CAAA;AAEA,IAAO,cAAQ,GAAA;;;ACvCA,SAAR,UAA2B,CAAiB,EAAA;AACjD,EAAA,OAAO,OAAO,CAAM,KAAA,SAAA;AACtB;;;ACFe,SAAR,mBAAkB,KAAqB,EAAA;AAC5C,EAAA,OAAO,OAAO,KAAU,KAAA,UAAA;AAC1B;;;ACFA,IAAO,kBAAQ,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACGf,IAAMC,gBAAAA,uBAAoD,OAAQ,EAAA;AAElE,IAAM,gBAAA,uBAAiD,OAAQ,EAAA;AAE/D,SAASD,iBAAAA,CAAiB,IAAa,OAAiC,EAAA;AACtE,EAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,OAAA;AACvB,EAAI,IAAA,CAAC,mBAAW,KAAK,CAAA;AACnB,IAAA;AAEF,EAAM,MAAA,KAAA,GAAQ,MAAM,MAAO,CAAA,GAAA,CAAI,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAI,GAAA,GAAA;AAEhD,EAAA,MAAM,YAAY,GAAM,GAAA,GAAA,CAAI,MAAM,GAAG,CAAA,CAAE,CAAC,CAAI,GAAA,OAAA;AAE5C,EAAI,IAAA,KAAA;AAEJ,EAAA,MAAMD,WAAU,MAAY;AAC1B,IAAA,IAAI,UAAU,MAAW,EAAA;AACvB,MAAQ,KAAA,GAAA,MAAA,CAAO,WAAW,MAAM;AAC9B,QAAM,KAAA,EAAA;AACN,QAAQ,KAAA,GAAA,MAAA;AAAA,SACP,KAAK,CAAA;AAAA,KAEL,MAAA;AACH,MAAA,MAAA,CAAO,aAAa,KAAK,CAAA;AACzB,MAAQ,KAAA,GAAA,MAAA,CAAO,WAAW,MAAM;AAC9B,QAAM,KAAA,EAAA;AACN,QAAQ,KAAA,GAAA,MAAA;AAAA,SACP,KAAK,CAAA;AAAA;AACV,GACF;AAEA,EAAAE,gBAAAA,CAAgB,GAAI,CAAA,EAAA,EAAIF,QAAO,CAAA;AAC/B,EAAiB,gBAAA,CAAA,GAAA,CAAI,IAAI,SAAS,CAAA;AAClC,EAAG,EAAA,CAAA,gBAAA,CAAiB,WAAWA,QAAO,CAAA;AACxC;AAEA,IAAM,SAAuB,GAAA;AAAA,EAC3B,cAAc,EAAiB,EAAA;AAC7B,IAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,IAAA,gBAAA,CAAiB,OAAO,EAAE,CAAA;AAAA,GAC5B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAIC,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAM,MAAA,SAAA,GAAY,gBAAiB,CAAA,GAAA,CAAI,EAAE,CAAA;AACzC,MAAMF,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QACG,IAAA,SAAA,IACA,EAAG,CAAA,mBAAA,CAAoB,WAAwCA,QAAO,CAAA;AACzE,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,MAAA,gBAAA,CAAiB,OAAO,EAAE,CAAA;AAAA;AAG5B,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AACA,IAAO,kBAAQ,GAAA;;;ACpDf,IAAMC,gBAAAA,uBAAoD,OAAQ,EAAA;AAElE,SAASD,iBAAAA,CAAiB,IAAa,OAAiC,EAAA;AACtE,EAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,OAAA;AACvB,EAAI,IAAA,CAAC,mBAAW,KAAK,CAAA;AACnB,IAAA;AACF,EAAA,IAAI,UAAa,GAAA,CAAA;AACjB,EAAA,IAAI,IAAO,GAAA,CAAA;AAEX,EAAA,MAAMD,WAAU,MAAM;AACpB,IAAA,UAAA,EAAA;AACA,IAAA,MAAM,GAAM,GAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,OAAQ,EAAA;AAE/B,IAAA,IAAI,eAAe,CAAG,EAAA;AACpB,MAAO,IAAA,GAAA,GAAA;AACP,MAAA,UAAA;AAAA,QACE,MAAM;AACJ,UAAa,UAAA,GAAA,CAAA;AACb,UAAO,IAAA,GAAA,CAAA;AAAA,SACT;AAAA,QACA,GAAA,GAAM,MAAO,CAAA,GAAG,CAAI,GAAA;AAAA,OACtB;AAAA;AAGF,IAAA,IAAI,eAAe,CAAG,EAAA;AACpB,MAAA,IAAI,GAAM,GAAA,IAAA,IAAQ,GAAM,GAAA,MAAA,CAAO,GAAG,CAAI,GAAA,GAAA,CAAA;AACpC,QAAM,KAAA,EAAA;AAER,MAAa,UAAA,GAAA,CAAA;AACb,MAAO,IAAA,GAAA,CAAA;AAAA;AACT,GACF;AACA,EAAAE,gBAAAA,CAAgB,GAAI,CAAA,EAAA,EAAIF,QAAO,CAAA;AAC/B,EAAG,EAAA,CAAA,gBAAA,CAAiB,SAASA,QAAO,CAAA;AACtC;AAEA,IAAM,YAA0B,GAAA;AAAA,EAC9B,cAAc,EAAI,EAAA;AAChB,IAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AAAA,GAC3B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAIC,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAMF,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QAAW,IAAA,EAAA,CAAG,mBAAoB,CAAA,OAAA,EAASA,QAAO,CAAA;AAClD,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AAAA;AAG3B,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AACA,IAAO,qBAAQ,GAAA;;;ACtDf,IAAM,UAAwB,GAAA;AAAA,EAC5B,QAAQ,EAAiB,EAAA;AACvB,IAAA,IAAI,MAAS,GAAA,CAAA;AACb,IAAA,IAAI,MAAS,GAAA,CAAA;AAEb,IAAA,IAAI,QAAW,GAAA,CAAA;AACf,IAAA,IAAI,QAAW,GAAA,CAAA;AAEf,IAAA,IAAI,IAAO,GAAA,CAAA;AACX,IAAA,IAAI,IAAO,GAAA,CAAA;AAEX,IAAA,EAAA,CAAG,MAAM,MAAS,GAAA,MAAA;AAElB,IAAA,MAAM,iBAAiB,MACpB,CAAA,gBAAA,CAAiB,EAAE,CACnB,CAAA,SAAA,CAAU,MAAM,GAAG,CAAA,CACnB,GAAI,CAAA,CAAA,IAAA,KAAQ,OAAO,QAAS,CAAA,IAAI,CAAC,CACjC,CAAA,KAAA,CAAM,GAAG,CAAC,CAAA;AAEb,IAAI,IAAA,cAAA,CAAe,SAAS,CAAG,EAAA;AAC7B,MAAA,IAAA,GAAO,eAAe,CAAC,CAAA;AACvB,MAAA,IAAA,GAAO,eAAe,CAAC,CAAA;AAAA;AAGzB,IAAMD,MAAAA,QAAAA,GAAU,CAAC,CAAkB,KAAA;AACjC,MAAM,MAAA,EAAE,OAAS,EAAA,OAAA,EAAY,GAAA,CAAA;AAC7B,MAAM,MAAA,OAAA,GAAU,UAAU,MAAS,GAAA,IAAA;AACnC,MAAM,MAAA,OAAA,GAAU,UAAU,MAAS,GAAA,IAAA;AACnC,MAAW,QAAA,GAAA,OAAA;AACX,MAAW,QAAA,GAAA,OAAA;AACX,MAAA,EAAA,CAAG,KAAM,CAAA,SAAA,GAAY,CAAa,UAAA,EAAA,OAAO,OAAO,OAAO,CAAA,GAAA,CAAA;AAAA,KACzD;AAEA,IAAG,EAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,CAAC,CAAkB,KAAA;AAClD,MAAM,MAAA,EAAE,OAAS,EAAA,OAAA,EAAY,GAAA,CAAA;AAC7B,MAAS,MAAA,GAAA,OAAA;AACT,MAAS,MAAA,GAAA,OAAA;AAET,MAAO,MAAA,CAAA,gBAAA,CAAiB,aAAaA,QAAO,CAAA;AAAA,KAC7C,CAAA;AACD,IAAG,EAAA,CAAA,gBAAA,CAAiB,WAAW,MAAM;AACnC,MAAO,IAAA,GAAA,QAAA;AACP,MAAO,IAAA,GAAA,QAAA;AACP,MAAO,MAAA,CAAA,mBAAA,CAAoB,aAAaA,QAAO,CAAA;AAAA,KAChD,CAAA;AAAA;AAEL,CAAA;AACA,IAAO,mBAAQ,GAAA;;;AC/Cf,SAAS,OAAA,CAAQ,IAAiB,OAA2B,EAAA;AAC3D,EAAA,EAAA,CAAG,MAAM,QAAW,GAAA,QAAA;AACpB,EAAA,EAAA,CAAG,MAAM,YAAe,GAAA,UAAA;AACxB,EAAM,MAAA,EAAE,KAAQ,GAAA,OAAA;AAChB,EAAA,IAAI,GAAK,EAAA;AACP,IAAA,EAAA,CAAG,MAAM,OAAU,GAAA,aAAA;AACnB,IAAA,EAAA,CAAG,KAAM,CAAA,eAAA,GAAkB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAC7C,IAAA,EAAA,CAAG,MAAM,eAAkB,GAAA,UAAA;AAAA,GAExB,MAAA;AACH,IAAA,EAAA,CAAG,MAAM,UAAa,GAAA,QAAA;AAAA;AAExB,EAAG,EAAA,CAAA,YAAA,CAAa,OAAS,EAAA,EAAA,CAAG,WAAqB,CAAA;AACnD;AAEA,IAAM,SAAuB,GAAA;AAAA,EAC3B,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAAA,GACrB;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAAA;AAEvB,CAAA;AACA,IAAO,kBAAQ,GAAA;;;ACvBf,IAAM,MAAoB,GAAA;AAAA,EACxB,OAAA,CAAQ,EAAI,EAAA,QAAA,EAAU,MAAQ,EAAA;AAC5B,IAAM,MAAA,WAAA,GAAc,CAAC,KAAiB,KAAA;AACpC,MAAA,MAAM,eAAe,KAAM,CAAA,MAAA;AAC3B,MAAA,MAAM,QAAQ,YAAa,CAAA,KAAA;AAC3B,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,OAAQ,CAAA,0GAAA,EAA4G,EAAE,CAAA;AAC7I,MAAA,IAAI,aAAa,KAAO,EAAA;AACtB,QAAA,YAAA,CAAa,KAAQ,GAAA,QAAA;AACrB,QAAa,YAAA,CAAA,aAAA,CAAc,IAAI,KAAM,CAAA,OAAA,EAAS,EAAE,OAAS,EAAA,IAAA,EAAM,CAAC,CAAA;AAAA;AAClE,KACF;AAEA,IAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,WAAW,CAAA;AAExC,IAAA,EAAA,CAAG,WAAW,MAAM;AAClB,MAAG,EAAA,CAAA,mBAAA,CAAoB,SAAS,WAAW,CAAA;AAC3C,MAAA,OAAO,EAAG,CAAA,QAAA;AAAA,KACZ;AAAA,GACF;AAAA,EACA,UAAU,EAAI,EAAA;AACZ,IAAA,IAAI,EAAG,CAAA,QAAA;AACL,MAAA,EAAA,CAAG,QAAS,EAAA;AAAA;AAElB,CAAA;AAEA,IAAO,eAAQ,GAAA;ACxBf,IAAI,eAAkB,GAAA,EAAA;AACtB,IAAI,UAAa,GAAA,EAAA;AACjB,SAAS,gBAAA,CAAiB,EAAiB,EAAA,OAAA,EAAiB,GAAa,EAAA;AACvE,EAAA,MAAM,KAAQ,GAAA,GAAA,GAAM,CAAa,UAAA,EAAA,GAAG,CAAiD,4CAAA,CAAA,GAAA,EAAA;AACrF,EAAa,UAAA,GAAA;AAAA,2JAAA,EAC8I,EAAG,CAAA,YAAY,CAAc,WAAA,EAAA,EAAA,CAAG,WAAW,CAAA;AAAA;AAAA,QAAA,EAE9L,KAAK;AAAA,iCAAA,EACoB,OAAO,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAIxC,EAAA,EAAA,CAAG,SAAY,GAAA,UAAA;AACjB;AAEA,IAAM,MAAoB,GAAA;AAAA,EACxB,WAAA,CAAY,IAAiB,QAA4B,EAAA;AACvD,IAAA,eAAA,GAAkB,EAAG,CAAA,SAAA;AAAA,GACvB;AAAA,EACA,OAAA,CAAQ,IAAiB,OAA2B,EAAA;AAClD,IAAA,EAAA,CAAG,KAAM,CAAA,QAAA,GAAW,EAAG,CAAA,KAAA,CAAM,QAAY,IAAA,UAAA;AAEzC,IAAA,MAAM,EAAE,OAAU,GAAA,0BAAA,EAAQ,GAAK,EAAA,OAAA,KAAY,OAAQ,CAAA,KAAA;AAEnD,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,EAAA,CAAG,SAAY,GAAA,eAAA;AAAA,KACjB;AAEA,IAAA,MAAM,yBAAyB,MAAM;AACnC,MAAA,MAAM,SAAY,GAAA,KAAA,CAAM,OAAO,CAAA,GAAI,QAAQ,KAAQ,GAAA,OAAA;AACnD,MAAI,IAAA,SAAA;AACF,QAAiB,gBAAA,CAAA,EAAA,EAAI,SAAS,GAAG,CAAA;AAAA;AAEjC,QAAc,aAAA,EAAA;AAAA,KAClB;AAEA,IAAA,IAAI,MAAM,OAAO,CAAA;AACf,MAAA,KAAA,CAAM,SAAS,sBAAsB,CAAA;AAEvC,IAAuB,sBAAA,EAAA;AAAA,GACzB;AAAA,EACA,OAAA,CAAQ,IAAiB,OAA2B,EAAA;AAClD,IAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,OAAQ,CAAA,KAAA;AAC5B,IAAA,MAAM,SAAY,GAAA,KAAA,CAAM,OAAO,CAAA,GAAI,QAAQ,KAAQ,GAAA,OAAA;AACnD,IAAA,IAAI,CAAC,SAAA;AACH,MAAG,EAAA,CAAA,SAAA,GAAY,gBAAgB,IAAK,EAAA;AAAA;AAEpC,MAAA,EAAA,CAAG,SAAY,GAAA,UAAA;AAAA;AAErB,CAAA;AAEA,IAAO,eAAQ,GAAA;;;ACpDf,IAAI,KAAiC,GAAA,IAAA;AAErC,IAAM,YAAe,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAcrB,IAAM,QAAsB,GAAA;AAAA,EAC1B,QAAQ,EAAiB,EAAA;AACvB,IAAA,IAAI,UAAU,IAAM,EAAA;AAClB,MAAQ,KAAA,GAAA,QAAA,CAAS,cAAc,OAAO,CAAA;AACtC,MAAA,KAAA,CAAM,SAAY,GAAA,YAAA;AAClB,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA;AAGjC,IAAA,EAAA,CAAG,MAAM,SAAY,GAAA,uBAAA;AAAA;AAEzB,CAAA;AAEA,IAAO,iBAAQ,GAAA;;;AC5Bf,IAAM,MAAoB,GAAA;AAAA,EACxB,QAAQ,EAAiB,EAAA;AACvB,IAAG,EAAA,CAAA,KAAA,IAAS,GAAG,KAAM,EAAA;AAAA,GACvB;AAAA,EACA,QAAQ,EAAiB,EAAA;AACvB,IAAG,EAAA,CAAA,KAAA,IAAS,GAAG,KAAM,EAAA;AAAA;AAEzB,CAAA;AACA,IAAO,eAAQ,GAAA;;;ACRf,IAAM,UAAwB,GAAA;AAAA,EAC5B,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAM,MAAA,EAAE,KAAQ,GAAA,OAAA;AAChB,IAAG,EAAA,CAAA,KAAA,CAAM,kBAAkB,GAAO,IAAA,uBAAA;AAAA;AAEtC,CAAA;AAEA,IAAO,mBAAQ,GAAA;;;ACNf,IAAME,gBAAAA,uBAAoD,OAAQ,EAAA;AAElE,SAASD,iBAAAA,CAAiB,IAAa,OAAiC,EAAA;AACtE,EAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,EAAI,IAAA,kBAAA,CAAW,KAAK,CAAG,EAAA;AACrB,IAAG,EAAA,CAAA,gBAAA,CAAiB,cAAc,KAAK,CAAA;AACvC,IAAAC,gBAAAA,CAAgB,GAAI,CAAA,EAAA,EAAI,KAAK,CAAA;AAAA;AAEjC;AAEA,IAAM,MAAoB,GAAA;AAAA,EACxB,cAAc,EAAiB,EAAA;AAC7B,IAAAA,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AAAA,GAC3B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAIC,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAMF,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QAAW,IAAA,EAAA,CAAG,mBAAoB,CAAA,YAAA,EAAcA,QAAO,CAAA;AACvD,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AAAA;AAE3B,IAAAD,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AACA,IAAO,eAAQ,GAAA;;;AC1Bf,SAAS,OAAA,CAAQ,IAAS,IAAc,EAAA;AACtC,EAAM,MAAA,CAAA,GAAI,QAAS,CAAA,WAAA,CAAY,YAAY,CAAA;AAC3C,EAAE,CAAA,CAAA,SAAA,CAAU,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAC5B,EAAA,EAAA,CAAG,cAAc,CAAC,CAAA;AACpB;AAEA,IAAM,MAAoB,GAAA;AAAA,EACxB,OAAA,CAAQ,IAAI,OAAS,EAAA;AACnB,IAAA,MAAM,QAAQ,OAAQ,CAAA,GAAA;AACtB,IAAM,MAAA,QAAA,GAAW,QAAQ,KAAS,IAAA,EAAA;AAClC,IAAA,MAAM,KAAQ,GAAA,CAAC,QAAU,EAAA,SAAA,EAAW,WAAW,CAAA;AAC/C,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,KAAA,CAAM,SAAS,KAAK,CAAA;AAEjC,MAAA,OAAO,QAAQ,GAAI,CAAA,CAAA,2HAAA,EAA6D,MAAM,IAAK,CAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAA;AACpG,IAAG,EAAA,CAAA,QAAA,GAAW,CAACE,GAAY,KAAA;AACzB,MAAA,QAAQ,KAAO;AAAA;AAAA,QAEb,KAAK,QAAA;AACH,UAAAA,IAAG,KAAQA,GAAAA,GAAAA,CAAG,KAAM,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA;AACpC,UAAA;AAAA;AAAA,QAEF,KAAK,SAAA;AACH,UAAAA,IAAG,KAAQA,GAAAA,GAAAA,CAAG,KAAM,CAAA,OAAA,CAAQ,WAAW,EAAE,CAAA;AACzC,UAAAA,IAAG,KAAQA,GAAAA,GAAAA,CAAG,KAAM,CAAA,OAAA,CAAQ,WAAW,GAAG,CAAA;AAC1C,UAAAA,GAAG,CAAA,KAAA,GAAQA,GAAG,CAAA,KAAA,CAAM,QAAQ,GAAK,EAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,KAAO,EAAA,EAAE,CAAE,CAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAE7E,UAAA,MAAM,YAAe,GAAA,IAAI,MAAO,CAAA,CAAA,qBAAA,EAAwB,QAAQ,CAAO,KAAA,CAAA,CAAA;AACvE,UAAAA,IAAG,KAAQA,GAAAA,GAAAA,CAAG,KAAM,CAAA,OAAA,CAAQ,cAAc,SAAS,CAAA;AACnD,UAAA,CAACA,GAAG,CAAA,KAAA,CAAM,QAAS,CAAA,GAAG,CAAKA,IAAAA,GAAAA,CAAG,KAAU,KAAA,EAAA,KAAOA,GAAG,CAAA,KAAA,GAAQ,MAAO,CAAA,UAAA,CAAWA,IAAG,KAAK,CAAA,CAAA;AACpF,UAAAA,GAAAA,CAAG,KAAM,CAAA,QAAA,CAAS,GAAG,CAAA,IAAKA,IAAG,KAAM,CAAA,MAAA,KAAW,CAAMA,KAAAA,GAAAA,CAAG,KAAQ,GAAA,EAAA,CAAA;AAC/D,UAAA;AAAA;AAAA,QAEF,KAAK,WAAA;AAEH,UAAA,MAAM,IAAO,GAAY,IAAI,MAAA,CAAO,QAAQ,CAAA;AAC5C,UAAAA,IAAG,KAAQA,GAAAA,GAAAA,CAAG,KAAM,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA;AACpC,UAAA;AAAA;AAEJ,MAAA,OAAA,CAAQA,KAAI,OAAO,CAAA;AAAA,KACrB;AACA,IAAA,EAAA,CAAG,SAAS,EAAE,CAAA;AAAA,GAChB;AAAA,EACA,QAAQ,EAAI,EAAA;AACV,IAAG,EAAA,CAAA,QAAA,IAAY,EAAG,CAAA,QAAA,CAAS,EAAE,CAAA;AAAA;AAEjC,CAAA;AAEA,IAAO,eAAQ,GAAA;;;ACtDf,IAAI,OAAA;AAKJ,IAAM,QAAA,GAAyC,CAAC,OAAY,KAAA;AAC1D,EAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AACzB,IAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,MAAA,MAAM,MAAM,KAAM,CAAA,MAAA;AAClB,MAAI,IAAA,GAAA,CAAI,GAAQ,KAAA,GAAA,CAAI,OAAQ,CAAA,GAAA;AAC1B,QAAI,GAAA,CAAA,GAAA,GAAM,GAAI,CAAA,OAAA,CAAQ,GAAO,IAAA,EAAA;AAAA;AACjC,GACD,CAAA;AACH,CAAA;AAEA,IAAI,QAAwC,GAAA,IAAA;AAE5C,IAAM,eAAA,GAAoE,CACxE,EAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,GAAG,OAAY,KAAA,KAAA;AACjB,IAAA;AACF,EAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,EAAA,EAAA,CAAG,YAAa,CAAA,UAAA,EAAY,MAAO,CAAA,KAAK,CAAC,CAAA;AACzC,EAAA,QAAA,EAAU,QAAQ,EAAE,CAAA;AACtB,CAAA;AAEA,IAAM,YAA0B,GAAA;AAAA,EAC9B,cAAc,EAAiB,EAAA;AAC7B,IAAI,IAAA,QAAA;AACF,MAAA,QAAA,CAAS,UAAU,EAAE,CAAA;AAAA,GACzB;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAQhC,IAAA,IAAI,QAAa,KAAA,IAAA;AACf,MAAW,QAAA,GAAA,IAAI,oBAAqB,CAAA,QAAA,EAAU,OAAO,CAAA;AAEvD,IAAA,eAAA,CAAgB,IAAI,OAAO,CAAA;AAAA,GAC7B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAA,eAAA,CAAgB,IAAI,OAAO,CAAA;AAAA;AAE/B,CAAA;AACA,IAAO,iBAAQ,GAAA;;;ACjDf,IAAM,kBAAA,uBAA2D,OAAQ,EAAA;AAEzE,IAAM,yBAAA,uBAA2D,OAAQ,EAAA;AAEzE,SAAS,YAAY,EAAuB,EAAA;AAC1C,EAAM,MAAA,cAAA,GAAiB,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AACnD,EAAM,MAAA,WAAA,GAAc,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAChD,EAAA,WAAA,CAAY,MAAM,QAAW,GAAA,UAAA;AAC7B,EAAA,WAAA,CAAY,MAAM,GAAM,GAAA,GAAA;AACxB,EAAA,WAAA,CAAY,MAAM,IAAO,GAAA,GAAA;AACzB,EAAA,WAAA,CAAY,MAAM,KAAQ,GAAA,GAAA;AAC1B,EAAA,WAAA,CAAY,MAAM,MAAS,GAAA,GAAA;AAC3B,EAAA,WAAA,CAAY,MAAM,MAAS,GAAA,MAAA;AAC3B,EAAA,WAAA,CAAY,MAAM,eAAkB,GAAA,oBAAA;AACpC,EAAA,WAAA,CAAY,MAAM,aAAgB,GAAA,MAAA;AAElC,EAAA,cAAA,CAAe,MAAM,QAAW,GAAA,UAAA;AAChC,EAAA,cAAA,CAAe,MAAM,GAAM,GAAA,KAAA;AAC3B,EAAA,cAAA,CAAe,MAAM,IAAO,GAAA,KAAA;AAC5B,EAAA,cAAA,CAAe,MAAM,SAAY,GAAA,uBAAA;AACjC,EAAA,cAAA,CAAe,MAAM,aAAgB,GAAA,MAAA;AACrC,EAAA,cAAA,CAAe,SAAY,GAAA,kBAAA;AAC3B,EAAA,IAAI,GAAG,KAAM,CAAA,QAAA,KAAa,YAAY,EAAG,CAAA,KAAA,CAAM,aAAa,EAAI,EAAA;AAC9D,IAA0B,yBAAA,CAAA,GAAA,CAAI,IAAI,IAAI,CAAA;AACtC,IAAA,EAAA,CAAG,MAAM,QAAW,GAAA,UAAA;AAAA;AAEtB,EAAA,WAAA,CAAY,YAAY,cAAc,CAAA;AACtC,EAAmB,kBAAA,CAAA,GAAA,CAAI,IAAI,WAAW,CAAA;AACtC,EAAA,EAAA,CAAG,YAAY,WAAW,CAAA;AAC5B;AAEA,IAAM,QAAsB,GAAA;AAAA,EAC1B,cAAc,EAAiB,EAAA;AAC7B,IAAA,kBAAA,CAAmB,OAAO,EAAE,CAAA;AAC5B,IAAA,yBAAA,CAA0B,OAAO,EAAE,CAAA;AAAA,GACrC;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,IAAI,IAAA,CAAC,UAAU,KAAK,CAAA;AAClB,MAAA;AACF,IAAA,IAAI,CAAC,KAAA;AACH,MAAA;AACF,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,GAChB;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAClB,IAAM,MAAA,cAAA,GAAiB,kBAAmB,CAAA,GAAA,CAAI,EAAE,CAAA;AAChD,IAAM,MAAA,kBAAA,GAAqB,yBAA0B,CAAA,GAAA,CAAI,EAAE,CAAA;AAC3D,IAAA,IAAI,KAAS,IAAA,cAAA;AACX,MAAA;AACF,IAAA,IAAI,SAAS,CAAC,cAAA;AACZ,MAAA,WAAA,CAAY,EAAE,CAAA;AAEhB,IAAA,IAAA,CAAK,CAAC,KAAS,IAAA,CAAC,SAAU,CAAA,KAAK,MAAM,CAAC,cAAA;AACpC,MAAA;AACF,IAAA,IAAA,CAAK,CAAC,KAAS,IAAA,CAAC,SAAU,CAAA,KAAK,MAAM,cAAgB,EAAA;AACnD,MAAA,IAAI,kBAAoB,EAAA;AACtB,QAAA,EAAA,CAAG,MAAM,QAAW,GAAA,QAAA;AACpB,QAAA,yBAAA,CAA0B,OAAO,EAAE,CAAA;AAAA;AAErC,MAAM,MAAA,WAAA,GAAc,kBAAmB,CAAA,GAAA,CAAI,EAAE,CAAA;AAC7C,MAAe,WAAA,IAAA,EAAA,CAAG,YAAY,WAAW,CAAA;AACzC,MAAA,kBAAA,CAAmB,OAAO,EAAE,CAAA;AAAA;AAC9B;AAEJ,CAAA;AACA,IAAO,iBAAQ,GAAA;;;AC5Df,IAAM,wBAAA,uBAA6D,OAAQ,EAAA;AAE3E,IAAM,sBAAA,uBAA2D,OAAQ,EAAA;AAEzE,SAASF,iBAAAA,CAAiB,IAAa,OAA2B,EAAA;AAChE,EAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,OAAA;AACvB,EAAI,IAAA,CAAC,mBAAW,KAAK,CAAA;AACnB,IAAA;AACF,EAAI,IAAA,KAAA;AACJ,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,KAAA,GAAQ,OAAO,UAAW,CAAA,KAAA,EAAO,MAAM,MAAO,CAAA,GAAG,IAAI,GAAG,CAAA;AAAA,GAC1D;AACA,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,GACpB;AACA,EAAG,EAAA,CAAA,gBAAA,CAAiB,aAAa,YAAY,CAAA;AAC7C,EAAG,EAAA,CAAA,gBAAA,CAAiB,WAAW,mBAAmB,CAAA;AAClD,EAAyB,wBAAA,CAAA,GAAA,CAAI,IAAI,YAAY,CAAA;AAC7C,EAAuB,sBAAA,CAAA,GAAA,CAAI,IAAI,mBAAmB,CAAA;AACpD;AAEA,IAAM,UAAwB,GAAA;AAAA,EAC5B,cAAc,EAAiB,EAAA;AAC7B,IAAA,wBAAA,CAAyB,OAAO,EAAE,CAAA;AAClC,IAAA,sBAAA,CAAuB,OAAO,EAAE,CAAA;AAAA,GAClC;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAA,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAI,IAAA,wBAAA,CAAyB,GAAI,CAAA,EAAE,CAAG,EAAA;AACpC,MAAM,MAAA,YAAA,GAAe,wBAAyB,CAAA,GAAA,CAAI,EAAE,CAAA;AACpD,MAAgB,YAAA,IAAA,EAAA,CAAG,mBAAoB,CAAA,WAAA,EAAa,YAAY,CAAA;AAChE,MAAA,wBAAA,CAAyB,OAAO,EAAE,CAAA;AAAA;AAEpC,IAAI,IAAA,sBAAA,CAAuB,GAAI,CAAA,EAAE,CAAG,EAAA;AAClC,MAAM,MAAA,YAAA,GAAe,wBAAyB,CAAA,GAAA,CAAI,EAAE,CAAA;AACpD,MAAgB,YAAA,IAAA,EAAA,CAAG,mBAAoB,CAAA,SAAA,EAAW,YAAY,CAAA;AAC9D,MAAA,sBAAA,CAAuB,OAAO,EAAE,CAAA;AAAA;AAElC,IAAAA,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AACA,IAAO,mBAAQ,GAAA;;;AC5Cf,SAAS,YAAA,CAAa,IAAiB,OAA2B,EAAA;AAChE,EAAM,MAAA,EAAE,OAAU,GAAA,OAAA;AAElB,EAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,KAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAErC,EAAA,MAAM,eAAe,KAAM,CAAA,IAAA,CAAK,MAAM,CAAC,CAAC,EAAE,OAAQ,EAAA;AAElD,EAAA,MAAM,aAAa,EAAC;AAEpB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,YAAA,CAAa,QAAQ,CAAK,EAAA,EAAA;AAC5C,IAAI,IAAA,CAAA,GAAI,CAAM,KAAA,CAAA,IAAK,CAAM,KAAA,CAAA;AACvB,MAAA,UAAA,CAAW,KAAK,GAAG,CAAA;AAErB,IAAW,UAAA,CAAA,IAAA,CAAK,YAAa,CAAA,CAAC,CAAC,CAAA;AAAA;AAGjC,EAAA,MAAM,WAAc,GAAA,UAAA,CAAW,OAAQ,EAAA,CAAE,KAAK,EAAE,CAAA;AAEhD,EAAA,IAAI,MAAM,MAAS,GAAA,CAAA;AACjB,IAAA,EAAA,CAAG,YAAY,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA;AAEzC,IAAA,EAAA,CAAG,SAAY,GAAA,WAAA;AACnB;AAEA,IAAM,MAAoB,GAAA;AAAA,EACxB,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAA,YAAA,CAAa,IAAI,OAAO,CAAA;AAAA,GAC1B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAA,YAAA,CAAa,IAAI,OAAO,CAAA;AAAA;AAE5B,CAAA;AACA,IAAO,eAAQ,GAAA;;;AC/Bf,IAAMC,gBAAAA,uBAAoD,OAAQ,EAAA;AAElE,IAAME,iBAAAA,uBAAiD,OAAQ,EAAA;AAE/D,SAASH,iBAAAA,CAAiB,IAAiB,OAA2B,EAAA;AACpE,EAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,OAAA;AACvB,EAAI,IAAA,CAAC,mBAAW,KAAK,CAAA;AACnB,IAAA;AAEF,EAAA,MAAM,YAAY,GAAO,IAAA,OAAA;AACzB,EAAA,MAAMD,WAAU,MAAY;AAC1B,IAAM,KAAA,EAAA;AACN,IAAG,EAAA,CAAA,mBAAA,CAAoB,WAAWA,QAAO,CAAA;AAAA,GAC3C;AAEA,EAAAE,gBAAAA,CAAgB,GAAI,CAAA,EAAA,EAAIF,QAAO,CAAA;AAC/B,EAAAI,iBAAAA,CAAiB,GAAI,CAAA,EAAA,EAAI,SAAS,CAAA;AAClC,EAAG,EAAA,CAAA,gBAAA,CAAiB,WAAWJ,QAAO,CAAA;AACxC;AAEA,IAAM,OAAqB,GAAA;AAAA,EACzB,cAAc,EAAiB,EAAA;AAC7B,IAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,IAAAE,iBAAAA,CAAiB,OAAO,EAAE,CAAA;AAAA,GAC5B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAH,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAIC,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAM,MAAA,SAAA,GAAYE,iBAAiB,CAAA,GAAA,CAAI,EAAE,CAAA;AACzC,MAAMJ,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QACG,IAAA,SAAA,IACA,EAAG,CAAA,mBAAA,CAAoB,WAAwCA,QAAO,CAAA;AACzE,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,MAAAE,iBAAAA,CAAiB,OAAO,EAAE,CAAA;AAAA;AAG5B,IAAAH,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AACA,IAAO,gBAAQ,GAAA;;;AC3Cf,IAAM,WAAyB,GAAA;AAAA,EAC7B,OAAA,CAAQ,IAAI,OAAS,EAAA;AAKnB,IAAA,IAAI,UAAa,GAAA,SAAA;AACjB,IAAA,IAAI,iBAAiB,EAAC;AAGtB,IAAiB,cAAA,GAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAGrC,IAAI,IAAA,OAAA;AACJ,IAAI,IAAA,OAAO,OAAQ,CAAA,KAAA,KAAU,QAAU,EAAA;AACrC,MAAA,OAAA,GAAU,OAAQ,CAAA,KAAA;AAAA,KAEX,MAAA,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AACrC,MAAU,OAAA,GAAA,OAAA,CAAQ,KAAM,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA,KAE7B,MAAA;AAEH,MAAA,OAAA,CAAQ,IAAI,kJAA0B,CAAA;AAAA;AAGxC,IAAA,IAAI,QAAW,GAAA,OAAA;AACf,IAAA,IAAI,cAAc,EAAC;AACnB,IAAA,IAAI,CAAC,QAAA;AACH,MAAW,QAAA,GAAA,EAAA;AACb,IAAc,WAAA,GAAA,QAAA,CAAS,MAAM,GAAG,CAAA;AAGhC,IAAA,IAAI,IAAO,GAAA,KAAA;AAEX,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,WAAA,CAAY,QAAQ,CAAK,EAAA,EAAA;AAC3C,MAAA,IAAI,cAAe,CAAA,QAAA,CAAS,WAAY,CAAA,CAAC,CAAC,CAAG,EAAA;AAE3C,QAAO,IAAA,GAAA,IAAA;AACP,QAAA;AAAA;AACF;AAGF,IAAA,IAAI,CAAC,IAAA;AACH,MAAA,EAAA,CAAG,UAAc,IAAA,EAAA,CAAG,UAAW,CAAA,WAAA,CAAY,EAAE,CAAA;AAAA;AAEnD,CAAA;AAEA,IAAO,oBAAQ,GAAA;;;AC9Cf,SAAS,eAAe,IAAwC,EAAA;AAC9D,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAC5C,EAAA,OAAA,CAAQ,MAAM,QAAW,GAAA,UAAA;AACzB,EAAA,IAAI,IAAS,KAAA,KAAA;AACX,IAAA,OAAA,CAAQ,MAAM,GAAM,GAAA,GAAA;AAAA;AAEpB,IAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,GAAA;AAEzB,EAAA,OAAA,CAAQ,MAAM,IAAO,GAAA,GAAA;AACrB,EAAA,OAAA,CAAQ,MAAM,KAAQ,GAAA,GAAA;AACtB,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,KAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,eAAkB,GAAA,SAAA;AAChC,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,GAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,WAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,MAAA;AAExB,EAAO,OAAA,OAAA;AACT;AAEA,SAAS,eAAe,IAAwC,EAAA;AAC9D,EAAM,MAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAC5C,EAAA,OAAA,CAAQ,MAAM,QAAW,GAAA,UAAA;AACzB,EAAA,OAAA,CAAQ,MAAM,GAAM,GAAA,KAAA;AACpB,EAAA,IAAI,IAAS,KAAA,MAAA;AACX,IAAA,OAAA,CAAQ,MAAM,IAAO,GAAA,GAAA;AAAA;AAErB,IAAA,OAAA,CAAQ,MAAM,KAAQ,GAAA,GAAA;AAExB,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,KAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,KAAQ,GAAA,KAAA;AACtB,EAAA,OAAA,CAAQ,MAAM,eAAkB,GAAA,SAAA;AAChC,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,GAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,WAAA;AACvB,EAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,MAAA;AACxB,EAAA,OAAA,CAAQ,MAAM,UAAa,GAAA,UAAA;AAE3B,EAAO,OAAA,OAAA;AACT;AAEA,IAAM,OAAqB,GAAA;AAAA,EACzB,QAAQ,EAAiB,EAAA;AACvB,IAAM,MAAA,QAAA,GAAW,GAAG,KAAM,CAAA,QAAA;AAC1B,IAAI,IAAA,QAAA,KAAa,YAAY,QAAa,KAAA,EAAA;AACxC,MAAA,EAAA,CAAG,MAAM,QAAW,GAAA,UAAA;AAEtB,IAAM,MAAA,UAAA,GAAa,eAAe,KAAK,CAAA;AACvC,IAAM,MAAA,aAAA,GAAgB,eAAe,QAAQ,CAAA;AAC7C,IAAM,MAAA,WAAA,GAAc,eAAe,MAAM,CAAA;AACzC,IAAM,MAAA,YAAA,GAAe,eAAe,OAAO,CAAA;AAE3C,IAAM,MAAA,CAAA,GAAI,CAAC,UAAA,EAAY,aAAa,CAAA;AACpC,IAAM,MAAA,CAAA,GAAI,CAAC,WAAA,EAAa,YAAY,CAAA;AAEpC,IAAA,MAAM,GAAM,GAAA,CAAC,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAEvB,IAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACrB,MAAQ,OAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,CAAC,CAAkB,KAAA;AACvD,QAAA,CAAA,CAAE,eAAgB,EAAA;AAClB,QAAA,MAAM,SAAS,CAAE,CAAA,OAAA;AAEjB,QAAMI,MAAAA,MAAAA,GAAQ,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA;AACxC,QAAA,MAAM,SAASA,MAAM,CAAA,MAAA;AAErB,QAAM,MAAA,sBAAA,GAAyB,CAACC,EAAkB,KAAA;AAChD,UAAM,MAAA,OAAA,GAAUA,GAAE,OAAU,GAAA,MAAA;AAC5B,UAAG,EAAA,CAAA,KAAA,CAAM,SAAS,CAAG,EAAA,MAAA,CAAO,SAAS,MAAQ,EAAA,EAAE,IAAI,OAAO,CAAA,EAAA,CAAA;AAAA,SAC5D;AAEA,QAAA,MAAM,uBAAuB,MAAM;AACjC,UAAO,MAAA,CAAA,mBAAA,CAAoB,aAAa,sBAAsB,CAAA;AAC9D,UAAO,MAAA,CAAA,mBAAA,CAAoB,WAAW,oBAAoB,CAAA;AAAA,SAC5D;AAEA,QAAO,MAAA,CAAA,gBAAA,CAAiB,aAAa,sBAAsB,CAAA;AAE3D,QAAO,MAAA,CAAA,gBAAA,CAAiB,WAAW,oBAAoB,CAAA;AAAA,OACxD,CAAA;AAAA,KACF,CAAA;AAED,IAAE,CAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACrB,MAAQ,OAAA,CAAA,gBAAA,CAAiB,WAAa,EAAA,CAAC,CAAkB,KAAA;AACvD,QAAA,CAAA,CAAE,eAAgB,EAAA;AAElB,QAAA,MAAM,SAAS,CAAE,CAAA,OAAA;AAEjB,QAAMD,MAAAA,MAAAA,GAAQ,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA;AACxC,QAAA,MAAM,QAAQA,MAAM,CAAA,KAAA;AAEpB,QAAM,MAAA,sBAAA,GAAyB,CAACC,EAAkB,KAAA;AAChD,UAAM,MAAA,OAAA,GAAUA,GAAE,OAAU,GAAA,MAAA;AAC5B,UAAG,EAAA,CAAA,KAAA,CAAM,QAAQ,CAAG,EAAA,MAAA,CAAO,SAAS,KAAO,EAAA,EAAE,IAAI,OAAO,CAAA,EAAA,CAAA;AAAA,SAC1D;AAEA,QAAA,MAAM,uBAAuB,MAAM;AACjC,UAAO,MAAA,CAAA,mBAAA,CAAoB,aAAa,sBAAsB,CAAA;AAC9D,UAAO,MAAA,CAAA,mBAAA,CAAoB,WAAW,oBAAoB,CAAA;AAAA,SAC5D;AAEA,QAAO,MAAA,CAAA,gBAAA,CAAiB,aAAa,sBAAsB,CAAA;AAE3D,QAAO,MAAA,CAAA,gBAAA,CAAiB,WAAW,oBAAoB,CAAA;AAAA,OACxD,CAAA;AAAA,KACF,CAAA;AAED,IAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACjC,MAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACvB,QAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,OAAA;AAAA,OACzB,CAAA;AAAA,KACF,CAAA;AAED,IAAMN,MAAAA,QAAAA,GAAU,CAAC,CAAkB,KAAA;AACjC,MAAI,IAAA,EAAA,CAAG,QAAS,CAAA,CAAA,CAAE,MAAc,CAAA;AAC9B,QAAA;AAEF,MAAI,GAAA,CAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACvB,QAAA,OAAA,CAAQ,MAAM,OAAU,GAAA,MAAA;AAAA,OACzB,CAAA;AAAA,KACH;AACA,IAAO,MAAA,CAAA,gBAAA,CAAiB,SAASA,QAAO,CAAA;AAExC,IAAA,EAAA,CAAG,YAAY,UAAU,CAAA;AACzB,IAAA,EAAA,CAAG,YAAY,aAAa,CAAA;AAC5B,IAAA,EAAA,CAAG,YAAY,WAAW,CAAA;AAC1B,IAAA,EAAA,CAAG,YAAY,YAAY,CAAA;AAAA;AAE/B,CAAA;AACA,IAAO,gBAAQ,GAAA;;;AC5Hf,IAAM,MAAoB,GAAA;AAAA,EACxB,OAAA,CAAQ,IAAI,OAAS,EAAA;AAEnB,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,KAAO,EAAA,WAAA;AAAA,MACP,UAAY,EAAA;AAAA,KACd;AAEA,IAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,OAAQ,CAAA,SAAS,GAAG,KAAK,CAAA;AAE9C,IAAA,EAAA,CAAG,gBAAiB,CAAA,KAAA,CAAM,KAAO,EAAA,CAAC,KAAU,KAAA;AAC1C,MAAQ,OAAA,CAAA,KAAA,EAAO,EAAI,EAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,KACjC,CAAA;AAED,IAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,KAAS,IAAA,MAAA,CAAO,KAAS,IAAA,qBAAA;AAC5C,IAAM,MAAA,MAAA,GAAS,OAAO,MAAU,IAAA,MAAA;AAEhC,IAAS,SAAA,OAAA,CAAQ,OAAOG,GAAI,EAAA;AAC1B,MAAA,MAAM,MAASA,GAAAA,GAAAA;AAEf,MAAM,MAAA,YAAA,GAAe,MAAO,CAAA,QAAA,CAAU,gBAAiB,CAAA,MAAM,EAAE,WAAa,CAAA,OAAA,CAAQ,IAAM,EAAA,EAAE,CAAC,CAAA;AAG7F,MAAM,MAAA,IAAA,GAAO,OAAO,qBAAsB,EAAA;AAC1C,MAAA,MAAM,OAAO,IAAK,CAAA,IAAA;AAClB,MAAA,MAAM,MAAM,IAAK,CAAA,GAAA;AACjB,MAAA,MAAM,QAAQ,MAAO,CAAA,WAAA;AACrB,MAAA,MAAM,SAAS,MAAO,CAAA,YAAA;AACtB,MAAM,MAAA,EAAA,GAAK,MAAM,OAAU,GAAA,IAAA;AAC3B,MAAM,MAAA,EAAA,GAAK,MAAM,OAAU,GAAA,GAAA;AAC3B,MAAA,MAAM,IAAO,GAAA,IAAA,CAAK,GAAI,CAAA,EAAA,EAAI,QAAQ,EAAE,CAAA;AACpC,MAAA,MAAM,IAAO,GAAA,IAAA,CAAK,GAAI,CAAA,EAAA,EAAI,SAAS,EAAE,CAAA;AACrC,MAAME,MAAAA,MAAAA,GAAQ,MAAO,CAAA,gBAAA,CAAiB,MAAM,CAAA;AAC5C,MAAA,MAAM,SAAS,IAAK,CAAA,IAAA,CAAM,IAAO,GAAA,IAAA,GAAS,OAAO,IAAK,CAAA;AACtD,MAAM,MAAA,MAAA,GAAU,YAAe,GAAA,CAAA,GAAK,YAAe,GAAA,CAAA;AAGnD,MAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AAC3C,MAAM,MAAA,eAAA,GAAkB,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA;AACpD,MAAA,eAAA,CAAgB,SAAY,GAAA,kBAAA;AAC5B,MAAA,MAAA,CAAO,SAAY,GAAA,QAAA;AAGnB,MAAA,MAAA,CAAO,MAAM,SAAY,GAAA,KAAA;AACzB,MAAA,MAAA,CAAO,MAAM,UAAa,GAAA,KAAA;AAC1B,MAAA,MAAA,CAAO,MAAM,KAAQ,GAAA,KAAA;AACrB,MAAA,MAAA,CAAO,MAAM,MAAS,GAAA,KAAA;AACtB,MAAA,MAAA,CAAO,KAAM,CAAA,UAAA,GAAa,CAAO,IAAA,EAAA,KAAA,CAAM,UAAU,CAAA,+BAAA,CAAA;AACjD,MAAA,MAAA,CAAO,MAAM,YAAe,GAAA,KAAA;AAC5B,MAAA,MAAA,CAAO,MAAM,aAAgB,GAAA,MAAA;AAC7B,MAAA,MAAA,CAAO,MAAM,QAAW,GAAA,UAAA;AACxB,MAAA,MAAA,CAAO,MAAM,MAAS,GAAA,MAAA;AACtB,MAAA,MAAA,CAAO,MAAM,eAAkB,GAAA,EAAA;AAG/B,MAAA,eAAA,CAAgB,MAAM,QAAW,GAAA,UAAA;AACjC,MAAA,eAAA,CAAgB,KAAM,CAAA,IAAA,GAAO,CAAG,EAAA,CAAA,GAAI,MAAM,CAAA,EAAA,CAAA;AAC1C,MAAA,eAAA,CAAgB,KAAM,CAAA,GAAA,GAAM,CAAG,EAAA,CAAA,GAAI,MAAM,CAAA,EAAA,CAAA;AACzC,MAAA,eAAA,CAAgB,MAAM,MAAS,GAAA,GAAA;AAC/B,MAAA,eAAA,CAAgB,MAAM,KAAQ,GAAA,GAAA;AAC9B,MAAA,eAAA,CAAgB,MAAM,aAAgB,GAAA,MAAA;AACtC,MAAA,eAAA,CAAgB,MAAM,QAAW,GAAA,QAAA;AAGjC,MAAM,MAAA,oBAAA,GAAyB,MAAO,CAAA,KAAA,CAAM,QAAU,CAAA,MAAA,GAAS,CAAK,GAAA,MAAA,CAAO,KAAM,CAAA,QAAA,GAAW,gBAAiB,CAAA,MAAM,CAAE,CAAA,QAAA;AAErH,MAAA,IAAI,oBAAyB,KAAA,UAAA;AAC3B,QAAA,MAAA,CAAO,MAAM,QAAW,GAAA,UAAA;AAE1B,MAAA,eAAA,CAAgB,YAAY,MAAM,CAAA;AAClC,MAAA,MAAA,CAAO,YAAY,eAAe,CAAA;AAElC,MAAO,MAAA,CAAA,KAAA,CAAM,UAAa,GAAA,CAAA,EAAG,EAAE,CAAA,EAAA,CAAA;AAC/B,MAAO,MAAA,CAAA,KAAA,CAAM,SAAY,GAAA,CAAA,EAAG,EAAE,CAAA,EAAA,CAAA;AAK9B,MAAgB,eAAA,CAAA,KAAA,CAAM,KAAQ,GAAA,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA;AACtC,MAAgB,eAAA,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA;AACxC,MAAgB,eAAA,CAAA,KAAA,CAAM,sBAAsBA,MAAM,CAAA,mBAAA;AAClD,MAAgB,eAAA,CAAA,KAAA,CAAM,uBAAuBA,MAAM,CAAA,oBAAA;AACnD,MAAgB,eAAA,CAAA,KAAA,CAAM,yBAAyBA,MAAM,CAAA,sBAAA;AACrD,MAAgB,eAAA,CAAA,KAAA,CAAM,0BAA0BA,MAAM,CAAA,uBAAA;AAEtD,MAAA,eAAA,CAAgB,MAAM,SAAY,GAAA,KAAA;AAElC,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,MAAA,CAAO,KAAM,CAAA,KAAA,GAAQ,CAAG,EAAA,MAAA,GAAS,CAAC,CAAA,EAAA,CAAA;AAClC,QAAA,MAAA,CAAO,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,MAAA,GAAS,CAAC,CAAA,EAAA,CAAA;AACnC,QAAA,MAAA,CAAO,KAAM,CAAA,UAAA,GAAa,CAAG,EAAA,EAAA,GAAK,MAAM,CAAA,EAAA,CAAA;AACxC,QAAA,MAAA,CAAO,KAAM,CAAA,SAAA,GAAY,CAAG,EAAA,EAAA,GAAK,MAAM,CAAA,EAAA,CAAA;AAAA,SACtC,CAAC,CAAA;AAEJ,MAAA,SAAS,WAAc,GAAA;AACrB,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,MAAA,CAAO,MAAM,eAAkB,GAAA,kBAAA;AAAA,WAC9B,GAAG,CAAA;AAGN,QAAA,UAAA,CAAW,MAAM;AACf,UAAgB,eAAA,CAAA,UAAA,CAAW,YAAY,eAAe,CAAA;AAAA,WACrD,GAAG,CAAA;AAEN,QAAAF,GAAG,CAAA,mBAAA,CAAoB,SAAW,EAAA,WAAA,EAAa,KAAK,CAAA;AAIpD,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,IAAI,aAAgB,GAAA,IAAA;AACpB,UAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,MAAO,CAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AACjD,YAAA,IAAI,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,SAAc,KAAA,kBAAA;AACrC,cAAgB,aAAA,GAAA,KAAA;AAAA;AAGpB,UAAA,IAAI,aAAe,EAAA;AACjB,YAAA,IAAI,oBAAyB,KAAA,QAAA;AAC3B,cAAA,MAAA,CAAO,MAAM,QAAW,GAAA,oBAAA;AAAA;AAExB,cAAA,MAAA,CAAO,MAAM,QAAW,GAAA,EAAA;AAAA;AAC5B,SACF,EAAG,KAAM,CAAA,UAAA,GAAa,GAAG,CAAA;AAAA;AAG3B,MAAA,IAAI,MAAM,IAAS,KAAA,WAAA;AACjB,QAAAA,GAAG,CAAA,gBAAA,CAAiB,SAAW,EAAA,WAAA,EAAa,KAAK,CAAA;AAAA;AAEjD,QAAY,WAAA,EAAA;AAAA;AAChB;AAEJ,CAAA;AAEA,SAAS,QAAA,CAAS,WAAW,KAAO,EAAA;AAClC,EAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC1B,IAAA,IAAI,MAAO,CAAA,KAAA,CAAM,MAAO,CAAA,IAAI,CAAC,CAAA;AAC3B,MAAA,KAAA,CAAM,KAAQ,GAAA,IAAA;AAAA;AAEd,MAAA,KAAA,CAAM,UAAa,GAAA,IAAA;AAAA,GACtB,CAAA;AACH;AAEA,IAAO,gBAAQ,GAAA;;;ACtJf,IAAM,QAAW,GAAA,GAAA;AACjB,IAAM,aAAgB,GAAA,GAAA;AACtB,IAAI,QAA0B,GAAA,IAAA;AAC9B,IAAI,aAA+B,GAAA,IAAA;AACnC,IAAM,GAAA,uBAAU,OAAQ,EAAA;AAExB,SAAS,gBAAgB,EAAiB,EAAA;AACxC,EAAM,MAAA,IAAA,GAAO,GAAG,qBAAsB,EAAA;AACtC,EAAA,OAAO,IAAK,CAAA,GAAA,IAAO,QAAY,IAAA,QAAA,CAAA,GAAY,MAAO,CAAA,WAAA;AACpD;AAEA,SAAS,YAAe,GAAA;AACtB,EAAM,MAAA,QAAA,GAAW,QAAS,CAAA,gBAAA,CAAiB,aAAa,CAAA;AACxD,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,EAAY,KAAA;AAC5B,IAAA,IAAI,gBAAgB,EAAE,CAAA;AACpB,MAAA;AAEF,IAAM,MAAA,SAAA,GAAY,GAAI,CAAA,GAAA,CAAI,EAAE,CAAA;AAC5B,IAAA,IAAI,SAAa,IAAA,CAAC,EAAG,CAAA,YAAA,CAAa,kBAAkB,CAAG,EAAA;AACrD,MAAA,SAAA,CAAU,IAAK,EAAA;AACf,MAAA,EAAA,CAAG,gBAAgB,WAAW,CAAA;AAC9B,MAAG,EAAA,CAAA,YAAA,CAAa,oBAAoB,EAAE,CAAA;AAAA;AACxC,GACD,CAAA;AACH;AAEA,IAAM,QAAsB,GAAA;AAAA,EAC1B,OAAA,CAAQ,IAAiB,OAAc,EAAA;AACrC,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAA,QAAA,GAAW,QAAQ,KAAM,CAAA,EAAA;AACzB,MAAA,aAAA,GAAgB,QAAQ,KAAM,CAAA,IAAA;AAAA;AAEhC,IAAI,IAAA,CAAC,gBAAgB,EAAE,CAAA;AACrB,MAAA;AAEF,IAAA,MAAM,YAAY,EAAG,CAAA,OAAA;AAAA,MACnB;AAAA,QACE;AAAA,UACE,OAAS,EAAA,CAAA;AAAA,UACT,SAAA,EAAW,CAAc,WAAA,EAAA,QAAA,IAAY,QAAQ,CAAA,GAAA;AAAA,SAC/C;AAAA,QACA;AAAA,UACE,OAAS,EAAA,CAAA;AAAA,UACT,SAAW,EAAA,CAAA,eAAA;AAAA;AACb,OACF;AAAA,MACA;AAAA,QACE,UAAU,aAAiB,IAAA,aAAA;AAAA,QAC3B,MAAQ,EAAA,aAAA;AAAA,QACR,IAAM,EAAA;AAAA;AACR,KACF;AACA,IAAA,SAAA,CAAU,KAAM,EAAA;AAChB,IAAI,GAAA,CAAA,GAAA,CAAI,IAAI,SAAS,CAAA;AACrB,IAAG,EAAA,CAAA,YAAA,CAAa,aAAa,EAAE,CAAA;AAE/B,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAAA,GAChD;AAAA,EAEA,UAAU,EAAiB,EAAA;AACzB,IAAA,GAAA,CAAI,OAAO,EAAE,CAAA;AACb,IAAO,MAAA,CAAA,mBAAA,CAAoB,UAAU,YAAY,CAAA;AAAA;AAErD,CAAA;AAEA,IAAO,iBAAQ,GAAA;;;AChEf,IAAMD,gBAAAA,uBAAoD,OAAQ,EAAA;AAElE,IAAME,iBAAAA,uBAAiD,OAAQ,EAAA;AAE/D,SAASH,iBAAAA,CAAiB,IAAa,OAAiC,EAAA;AACtE,EAAM,MAAA,EAAE,GAAK,EAAA,KAAA,EAAU,GAAA,OAAA;AACvB,EAAI,IAAA,CAAC,mBAAW,KAAK,CAAA;AACnB,IAAA;AAEF,EAAM,MAAA,KAAA,GAAQ,MAAM,MAAO,CAAA,GAAA,CAAI,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAI,GAAA,GAAA;AAChD,EAAA,MAAM,YAAY,GAAM,GAAA,GAAA,CAAI,MAAM,GAAG,CAAA,CAAE,CAAC,CAAI,GAAA,OAAA;AAE5C,EAAA,IAAI,YAAe,GAAA,CAAA;AAEnB,EAAA,MAAMD,WAAU,MAAY;AAC1B,IAAM,MAAA,WAAA,GAAc,KAAK,GAAI,EAAA;AAC7B,IAAA,IAAI,cAAc,YAAe,GAAA,KAAA;AAC/B,MAAA;AACF,IAAe,YAAA,GAAA,WAAA;AACf,IAAM,KAAA,EAAA;AAAA,GACR;AAEA,EAAM,MAAA,eAAA,GAAkBE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AAC9C,EAAI,IAAA,eAAA;AACF,IAAG,EAAA,CAAA,mBAAA,CAAoB,WAAW,eAAe,CAAA;AAEnD,EAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAA,EAAIF,QAAO,CAAA;AAC/B,EAAAI,iBAAAA,CAAiB,GAAI,CAAA,EAAA,EAAI,SAAS,CAAA;AAClC,EAAG,EAAA,CAAA,gBAAA,CAAiB,WAAWJ,QAAO,CAAA;AACxC;AAEA,IAAM,SAAuB,GAAA;AAAA,EAC3B,cAAc,EAAiB,EAAA;AAC7B,IAAIE,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAM,MAAA,SAAA,GAAYE,iBAAiB,CAAA,GAAA,CAAI,EAAE,CAAA;AACzC,MAAMJ,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QACG,IAAA,SAAA,IACA,EAAG,CAAA,mBAAA,CAAoB,WAAwCA,QAAO,CAAA;AACzE,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,MAAAE,iBAAAA,CAAiB,OAAO,EAAE,CAAA;AAAA;AAC5B,GACF;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAAH,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA,GAC9B;AAAA,EACA,OAAA,CAAQ,IAAiB,OAAS,EAAA;AAChC,IAAIC,IAAAA,gBAAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC3B,MAAM,MAAA,SAAA,GAAYE,iBAAiB,CAAA,GAAA,CAAI,EAAE,CAAA;AACzC,MAAMJ,MAAAA,QAAAA,GAAUE,gBAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AACtC,MAAAF,QACG,IAAA,SAAA,IACA,EAAG,CAAA,mBAAA,CAAoB,WAAwCA,QAAO,CAAA;AACzE,MAAAE,gBAAAA,CAAgB,OAAO,EAAE,CAAA;AACzB,MAAAE,iBAAAA,CAAiB,OAAO,EAAE,CAAA;AAAA;AAG5B,IAAAH,iBAAAA,CAAiB,IAAI,OAAO,CAAA;AAAA;AAEhC,CAAA;AAEA,IAAO,kBAAQ,GAAA;;;ACxDf,IAAM,cAA4B,GAAA,CAAC,GAAa,EAAA,UAAA,EAAiB,MAAW,SAAsB,KAAA;AAEhG,EAAM,MAAA,GAAA,GAAyB,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA;AAC9D,EAAA,UAAA,CAAW,YAAY,GAAG,CAAA;AAC1B,EAAA,GAAA,CAAI,KAAQ,GAAA,GAAA;AACZ,EAAA,GAAA,CAAI,MAAS,GAAA,GAAA;AACb,EAAA,GAAA,CAAI,MAAM,OAAU,GAAA,MAAA;AACpB,EAAM,MAAA,IAAA,GAAO,GAAI,CAAA,UAAA,CAAW,IAAI,CAAA;AAChC,EAAA,IAAA,CAAK,MAAQ,CAAA,GAAA,GAAM,IAAK,CAAA,EAAA,GAAM,GAAG,CAAA;AACjC,EAAA,IAAA,CAAK,OAAO,IAAQ,IAAA,yBAAA;AACpB,EAAA,IAAA,CAAK,YAAY,SAAa,IAAA,0BAAA;AAC9B,EAAA,IAAA,CAAK,SAAY,GAAA,MAAA;AACjB,EAAA,IAAA,CAAK,YAAe,GAAA,QAAA;AACpB,EAAA,IAAA,CAAK,SAAS,GAAK,EAAA,GAAA,CAAI,QAAQ,EAAI,EAAA,GAAA,CAAI,SAAS,CAAC,CAAA;AACjD,EAAA,UAAA,CAAW,MAAM,eAAkB,GAAA,CAAA,IAAA,EAAO,GAAI,CAAA,SAAA,CAAU,WAAW,CAAC,CAAA,CAAA,CAAA;AACtE,CAAA;AAEA,IAAM,WAAc,GAAA;AAAA,EAClB,OAAA,CAAQ,IAAsB,OAA2B,EAAA;AACvD,IAAe,cAAA,CAAA,OAAA,CAAQ,MAAM,IAAM,EAAA,EAAA,EAAI,QAAQ,KAAM,CAAA,IAAA,EAAM,OAAQ,CAAA,KAAA,CAAM,SAAS,CAAA;AAAA;AAEtF,CAAA;AAEA,IAAO,qBAAQ,GAAA;;;AC4Bf,IAAM,UAAkC,GAAA;AAAA,EACtC,OAAA,EAAA,iBAAA;AAAA,EACA,YAAA,EAAA,sBAAA;AAAA,EACA,IAAA,EAAA,cAAA;AAAA,EACA,QAAA,EAAA,kBAAA;AAAA,EACA,WAAA,EAAA,qBAAA;AAAA,EACA,SAAA,EAAA,mBAAA;AAAA,EACA,QAAA,EAAA,kBAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,OAAA,EAAA,iBAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,SAAA,EAAA,mBAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,OAAA,EAAA,iBAAA;AAAA,EACA,OAAA,EAAA,iBAAA;AAAA,EACA,SAAA,EAAA,mBAAA;AAAA,EACA,KAAA,EAAA,eAAA;AAAA,EACA,MAAA,EAAA,gBAAA;AAAA,EACA,UAAA,EAAA,oBAAA;AAAA,EACA,MAAA,EAAA,gBAAA;AAAA,EACA,MAAA,EAAA,gBAAA;AAAA,EACA,OAAA,EAAA,iBAAA;AAAA,EACA,QAAA,EAAA,kBAAA;AAAA,EACA,WAAA,EAAA;AACF,CAAA;AAEA,IAAO,aAAQ,GAAA;AAAA,EACb,QAAQ,GAAU,EAAA;AAChB,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,GAAA,CAAI,SAAU,CAAA,GAAA,EAAK,UAAW,CAAA,GAAG,CAAC,CAAA;AAAA,KACnC,CAAA;AAAA;AAEL","file":"index.mjs","sourcesContent":["/**\n * @description: v-backtop指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/13 14:05:16\n * @description: 为元素添加返回顶部功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\ninterface BackTopElement extends HTMLElement {\n style: CSSStyleDeclaration\n}\n\n// 定义通用的滚动元素接口\ninterface ScrollableElement extends HTMLElement {\n scrollTop: number\n}\n\nconst vBackTop: Directive = {\n mounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n el.addEventListener('click', () => {\n target.scrollTo({\n behavior: 'smooth',\n top: 0,\n })\n })\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n if ((target as ScrollableElement).scrollTop < (binding.value as number))\n el.style.visibility = 'hidden';\n\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n },\n unmounted(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n };\n\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n el.removeEventListener('click', handleScroll)\n },\n updated(el: BackTopElement, binding: DirectiveBinding<number | undefined>) {\n const target = binding.arg ? document.getElementById(binding.arg) as (Window | HTMLElement) : window\n const handleScroll = () => {\n const isScrolledUp = (target as ScrollableElement).scrollTop < (binding.value as number)\n el.style.visibility = isScrolledUp ? 'hidden' : 'unset'\n }\n\n if (binding.value !== undefined)\n (target as ScrollableElement).addEventListener('scroll', handleScroll)\n else\n (target as ScrollableElement).removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vBackTop\n","/**\n * @description: v-clickOutside指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 点击元素外部触发时事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst elMapToHandlers: WeakMap<Element, (e: MouseEvent) => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n const { value } = binding\n value()\n }\n window.addEventListener('click', handler)\n elMapToHandlers.set(el, handler)\n}\n\nconst vClickOut: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && window.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\n\nexport default vClickOut\n","/**\n * @description: v-copy指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 实现文本复制到剪贴板功能\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { value } = binding\n\n el.setAttribute('copyValue', String(value))\n\n const copyHandler = (): void => {\n navigator.clipboard\n .writeText(el.getAttribute('copyValue') || '')\n .then(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制成功!')\n })\n .catch(() => {\n // eslint-disable-next-line no-alert\n window.alert('复制失败!')\n })\n }\n\n el.addEventListener('click', copyHandler)\n}\n\nconst vCopy: Directive = {\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n el.setAttribute('copyValue', String(value))\n },\n}\n\nexport default vCopy\n","export default function isBoolean(x: any): boolean {\n return typeof x === 'boolean'\n}\n","export default function (value: any): boolean {\n return typeof value === 'function'\n}\n","export default `\n<svg width=\"57\" height=\"57\" viewBox=\"0 0 57 57\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(1 1)\" stroke-width=\"2\">\n <circle cx=\"5\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;5;50;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"5;27;49;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"27\" cy=\"5\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"5\" to=\"5\"\n values=\"5;50;50;5\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n begin=\"0s\" dur=\"2.2s\"\n from=\"27\" to=\"27\"\n values=\"27;49;5;27\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"49\" cy=\"50\" r=\"5\">\n <animate attributeName=\"cy\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"50;50;5;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n <animate attributeName=\"cx\"\n from=\"49\" to=\"49\"\n begin=\"0s\" dur=\"2.2s\"\n values=\"49;5;27;49\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\" />\n </circle>\n </g>\n </g>\n</svg>\n`\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let timer: undefined | number\n\n const handler = (): void => {\n if (timer === undefined) {\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n else {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n value()\n timer = undefined\n }, delay)\n }\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vDebounce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDebounce\n","/**\n * @description: v-doubleClick指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 双击触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let clickCount = 0\n let time = 0\n\n const handler = () => {\n clickCount++\n const now = new Date().getTime()\n\n if (clickCount === 1) {\n time = now\n setTimeout(\n () => {\n clickCount = 0\n time = 0\n },\n arg ? Number(arg) : 300,\n )\n }\n\n if (clickCount === 2) {\n if (now - time < (arg ? Number(arg) : 300))\n value()\n\n clickCount = 0\n time = 0\n }\n }\n elMapToHandlers.set(el, handler)\n el.addEventListener('click', handler)\n}\n\nconst vDoubleClick: Directive = {\n beforeUnmount(el) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('click', handler)\n elMapToHandlers.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vDoubleClick\n","/**\n * @description: v-draggable指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 使元素可拖拽\n */\nimport type { Directive } from 'vue'\n\nconst vDraggable: Directive = {\n mounted(el: HTMLElement) {\n let startX = 0\n let startY = 0\n\n let offsetXX = 0\n let offsetYY = 0\n\n let endX = 0\n let endY = 0\n\n el.style.cursor = 'move'\n\n const transformValue = window\n .getComputedStyle(el)\n .transform.split(',')\n .map(item => Number.parseInt(item))\n .slice(4, 6)\n\n if (transformValue.length > 1) {\n endX = transformValue[0]\n endY = transformValue[1]\n }\n\n const handler = (e: MouseEvent) => {\n const { clientX, clientY } = e\n const offsetX = clientX - startX + endX\n const offsetY = clientY - startY + endY\n offsetXX = offsetX\n offsetYY = offsetY\n el.style.transform = `translate(${offsetX}px, ${offsetY}px)`\n }\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n const { clientX, clientY } = e\n startX = clientX\n startY = clientY\n\n window.addEventListener('mousemove', handler)\n })\n el.addEventListener('mouseup', () => {\n endX = offsetXX\n endY = offsetYY\n window.removeEventListener('mousemove', handler)\n })\n },\n}\nexport default vDraggable\n","/**\n * @description: v-ellipsis指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 省略超出文本\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction handler(el: HTMLElement, binding: DirectiveBinding) {\n el.style.overflow = 'hidden'\n el.style.textOverflow = 'ellipsis'\n const { arg } = binding\n if (arg) {\n el.style.display = '-webkit-box'\n el.style.webkitLineClamp = String(Number(arg))\n el.style.webkitBoxOrient = 'vertical'\n }\n else {\n el.style.whiteSpace = 'nowrap'\n }\n el.setAttribute('title', el.textContent as string)\n}\n\nconst vEllipsis: Directive = {\n mounted(el: HTMLElement, binding) {\n handler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n handler(el, binding)\n },\n}\nexport default vEllipsis\n","/**\n * @description: v-emoji指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 禁止输入emoji\n */\nimport type { Directive } from 'vue'\n\nconst vEmoji: Directive = {\n mounted(el, _binding, _vnode) {\n const handleInput = (event: Event) => {\n const inputElement = event.target as HTMLInputElement\n const value = inputElement.value\n const newValue = value.replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFF]|[\\u2600-\\u27FF]/g, '')\n if (newValue !== value) {\n inputElement.value = newValue\n inputElement.dispatchEvent(new Event('input', { bubbles: true }))\n }\n }\n\n el.addEventListener('input', handleInput)\n\n el.$destroy = () => {\n el.removeEventListener('input', handleInput)\n delete el.$destroy\n }\n },\n unmounted(el) {\n if (el.$destroy)\n el.$destroy()\n },\n}\n\nexport default vEmoji\n","/**\n * @description: v-empty指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 设置空状态\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isRef, watch } from 'vue'\n\nlet originalContent = ''\nlet emptyState = ''\nfunction insertEmptyState(el: HTMLElement, content: string, img: string) {\n const image = img ? `<img src=\"${img}\" style=\"width: 90%; border-radius: 5px;\" />` : ''\n emptyState = `\n <div style=\"position: absolute; top: 0; left: 0; z-index: 9999; background: #fff; display: flex; justify-content: center; align-items: center; height: ${el.offsetHeight}px; width: ${el.offsetWidth}px; border-radius: 5px;\">\n <div style=\"display: flex; justify-content: center; align-items: center; flex-direction: column;\">\n ${image}\n <div style=\"color: #000\">${content}</div>\n </div>\n </div>\n `\n el.innerHTML = emptyState\n}\n\nconst vEmpty: Directive = {\n beforeMount(el: HTMLElement, _binding: DirectiveBinding) {\n originalContent = el.innerHTML\n },\n mounted(el: HTMLElement, binding: DirectiveBinding) {\n el.style.position = el.style.position || 'relative'\n\n const { content = '暂无数据', img, visible } = binding.value\n\n const insertContent = () => {\n el.innerHTML = originalContent\n }\n\n const handleVisibilityChange = () => {\n const isVisible = isRef(visible) ? visible.value : visible\n if (isVisible)\n insertEmptyState(el, content, img)\n else\n insertContent()\n }\n\n if (isRef(visible))\n watch(visible, handleVisibilityChange)\n\n handleVisibilityChange()\n },\n updated(el: HTMLElement, binding: DirectiveBinding) {\n const { visible } = binding.value\n const isVisible = isRef(visible) ? visible.value : visible\n if (!isVisible)\n el.innerHTML = originalContent.trim()\n else\n el.innerHTML = emptyState\n },\n}\n\nexport default vEmpty\n","/**\n * @description: v-flicker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nlet style: HTMLStyleElement | null = null\n\nconst animationStr = `\n@keyframes v-flicker {\n 0% {\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n`\n\nconst vFlicker: Directive = {\n mounted(el: HTMLElement) {\n if (style === null) {\n style = document.createElement('style')\n style.innerHTML = animationStr\n document.head.appendChild(style)\n }\n\n el.style.animation = 'v-flicker 1s infinite'\n },\n}\n\nexport default vFlicker\n","/**\n * @description: v-focus指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 自动聚焦\n */\nimport type { Directive } from 'vue'\n\nconst vFocus: Directive = {\n mounted(el: HTMLElement) {\n el.focus && el.focus()\n },\n updated(el: HTMLElement) {\n el.focus && el.focus()\n },\n}\nexport default vFocus\n","/**\n * @description: v-highlight指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 元素闪烁\n */\nimport type { Directive } from 'vue'\n\nconst vHighlight: Directive = {\n mounted(el: HTMLElement, binding) {\n const { arg } = binding\n el.style.backgroundColor = arg || 'rgba(255, 255, 0, .8)'\n },\n}\n\nexport default vHighlight\n","/**\n * @description: v-hover指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 鼠标经过触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { value } = binding\n if (isFunction(value)) {\n el.addEventListener('mouseenter', value)\n elMapToHandlers.set(el, value)\n }\n}\n\nconst vHover: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const handler = elMapToHandlers.get(el)\n handler && el.removeEventListener('mouseenter', handler)\n elMapToHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vHover\n","/**\n * @description: v-input指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 限制输入类型\n */\nimport type { Directive } from 'vue'\n\n// 派发自定义事件\nfunction trigger(el: any, type: string) {\n const e = document.createEvent('HTMLEvents')\n e.initEvent(type, true, true)\n el.dispatchEvent(e)\n}\n\nconst vInput: Directive = {\n mounted(el, binding) {\n const _type = binding.arg\n const restrict = binding.value || 10\n const types = ['number', 'decimal', 'customize']\n if (!_type || !types.includes(_type))\n // eslint-disable-next-line no-console\n return console.log(`使用v-input指令需要选择特定功能:v-input:type=\"restrictValue\"; type = ${types.join('/')}.`)\n el.$handler = (el: any) => {\n switch (_type) {\n // 数字\n case 'number':\n el.value = el.value.replace(/\\D/, '')\n break\n // 数字+小数\n case 'decimal':\n el.value = el.value.replace(/[^\\d.]/g, '') // 清除数字和'.'以外的字符\n el.value = el.value.replace(/\\.{2,}/g, '.') // 连续两个'.', 只保留第一个'.'\n el.value = el.value.replace('.', '$#$').replace(/\\./g, '').replace('$#$', '.') // 隔着字符, 也保证只有一个'.'\n // eslint-disable-next-line no-case-declarations\n const regexPattern = new RegExp(`^(-)*(\\\\d+)\\\\.(\\\\d{0,${restrict}}).*$`)\n el.value = el.value.replace(regexPattern, '$1$2.$3') // 只能输入两位小数\n !el.value.includes('.') && el.value !== '' && (el.value = Number.parseFloat(el.value)) // 保证不会出现重复的: 00, 01, 02 ...\n el.value.includes('.') && el.value.length === 1 && (el.value = '') // 第一位不能以'.'开头\n break\n // 自定义, 由data-rule提供规则\n case 'customize':\n // eslint-disable-next-line no-case-declarations\n const rule = restrict && new RegExp(restrict) // 字符串正则转正则表达式\n el.value = el.value.replace(rule, '')\n break\n }\n trigger(el, 'input')\n }\n el.$handler(el)\n },\n updated(el) {\n el.$handler && el.$handler(el)\n },\n}\n\nexport default vInput\n","import type { Directive, DirectiveBinding } from 'vue'\n\nlet options: {\n root: HTMLElement | null\n threshold: number\n} | null\n\nconst callback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement\n if (img.src !== img.dataset.src)\n img.src = img.dataset.src || ''\n }\n })\n}\n\nlet observer: IntersectionObserver | null = null\n\nconst observerHandler: (el: Element, binding: DirectiveBinding) => void = (\n el,\n binding,\n) => {\n if (el.tagName !== 'IMG')\n return\n const { value } = binding\n el.setAttribute('data-src', String(value))\n observer?.observe(el)\n}\n\nconst vImgLazyLoad: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (observer)\n observer.unobserve(el)\n },\n mounted(el: HTMLElement, binding) {\n if (options === null) {\n options = {\n root: document.querySelector('html'),\n threshold: 0.1,\n }\n }\n\n if (observer === null)\n observer = new IntersectionObserver(callback, options)\n\n observerHandler(el, binding)\n },\n updated(el: HTMLElement, binding) {\n observerHandler(el, binding)\n },\n}\nexport default vImgLazyLoad\n","import type { Directive } from 'vue'\nimport { isBoolean, loadingSvg } from '../../utils'\n\nconst elMapToMaskElement: WeakMap<Element, HTMLDivElement> = new WeakMap()\n\nconst elMapToHasChangedPosition: WeakMap<Element, boolean> = new WeakMap()\n\nfunction appendChild(el: HTMLElement): void {\n const loadingWrapper = document.createElement('div')\n const maskElement = document.createElement('div')\n maskElement.style.position = 'absolute'\n maskElement.style.top = '0'\n maskElement.style.left = '0'\n maskElement.style.right = '0'\n maskElement.style.bottom = '0'\n maskElement.style.zIndex = '9999'\n maskElement.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\n maskElement.style.pointerEvents = 'none'\n\n loadingWrapper.style.position = 'absolute'\n loadingWrapper.style.top = '50%'\n loadingWrapper.style.left = '50%'\n loadingWrapper.style.transform = 'translate(-50%, -50%)'\n loadingWrapper.style.pointerEvents = 'none'\n loadingWrapper.innerHTML = loadingSvg\n if (el.style.position === 'static' || el.style.position === '') {\n elMapToHasChangedPosition.set(el, true)\n el.style.position = 'relative'\n }\n maskElement.appendChild(loadingWrapper)\n elMapToMaskElement.set(el, maskElement)\n el.appendChild(maskElement)\n}\n\nconst vLoading: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMaskElement.delete(el)\n elMapToHasChangedPosition.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n const { value } = binding\n if (!isBoolean(value))\n return\n if (!value)\n return\n appendChild(el)\n },\n updated(el: HTMLElement, binding) {\n const { value } = binding\n const hasMaskElement = elMapToMaskElement.has(el)\n const hasChangedPosition = elMapToHasChangedPosition.has(el)\n if (value && hasMaskElement)\n return\n if (value && !hasMaskElement)\n appendChild(el)\n\n if ((!value || !isBoolean(value)) && !hasMaskElement)\n return\n if ((!value || !isBoolean(value)) && hasMaskElement) {\n if (hasChangedPosition) {\n el.style.position = 'static'\n elMapToHasChangedPosition.delete(el)\n }\n const maskElement = elMapToMaskElement.get(el)\n maskElement && el.removeChild(maskElement)\n elMapToMaskElement.delete(el)\n }\n },\n}\nexport default vLoading\n","/**\n * @description: v-longpress指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 长按触发事件\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToMouseDownHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToMouseUpHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n let timer: number | undefined\n const pressHandler = () => {\n timer = window.setTimeout(value, arg ? Number(arg) : 300)\n }\n const clearTimeoutHandler = () => {\n clearTimeout(timer)\n }\n el.addEventListener('mousedown', pressHandler)\n el.addEventListener('mouseup', clearTimeoutHandler)\n elMapToMouseDownHandlers.set(el, pressHandler)\n elMapToMouseUpHandlers.set(el, clearTimeoutHandler)\n}\n\nconst vLongPress: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToMouseDownHandlers.delete(el)\n elMapToMouseUpHandlers.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToMouseDownHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mousedown', pressHandler)\n elMapToMouseDownHandlers.delete(el)\n }\n if (elMapToMouseUpHandlers.has(el)) {\n const pressHandler = elMapToMouseDownHandlers.get(el)\n pressHandler && el.removeEventListener('mouseup', pressHandler)\n elMapToMouseUpHandlers.delete(el)\n }\n addEventListener(el, binding)\n },\n}\nexport default vLongPress\n","/**\n * @description: v-money指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 格式化数字为金额\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nfunction setInnerHTML(el: HTMLElement, binding: DirectiveBinding) {\n const { value } = binding\n\n const parts = String(value).split('.')\n\n const moneyReverse = Array.from(parts[0]).reverse()\n\n const moneyArray = []\n\n for (let i = 0; i < moneyReverse.length; i++) {\n if (i % 3 === 0 && i !== 0)\n moneyArray.push(',')\n\n moneyArray.push(moneyReverse[i])\n }\n\n const moneyString = moneyArray.reverse().join('')\n\n if (parts.length > 1)\n el.innerHTML = `${moneyString}.${parts[1]}`\n else\n el.innerHTML = moneyString\n}\n\nconst vMoney: Directive = {\n mounted(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n updated(el: HTMLElement, binding) {\n setInnerHTML(el, binding)\n },\n}\nexport default vMoney\n","/**\n * @description: v-onOnce指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/21 18:12:16\n * @description: 只触发一次回调\n */\nimport type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils/index'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: HTMLElement, binding: DirectiveBinding) {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const eventName = arg || 'click'\n const handler = (): void => {\n value()\n el.removeEventListener(eventName, handler)\n }\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vOnOnce: Directive = {\n beforeUnmount(el: HTMLElement) {\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\nexport default vOnOnce\n","/**\n * @description: v-permission指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 快速实现鉴权\n */\nimport type { Directive } from 'vue'\n\nconst vPermission: Directive = {\n mounted(el, binding) {\n // 从服务获取用户的权限列表,一般获取后存放于vuex中,本案例为了方便演示将直接以字符串的形式展示\n // 权限之间以分号分隔\n // 管理员权限:\"add;del;update;query\"\n // 普通用户权限:\"add;del;update;query\"\n let permission = 'add;del' // 权限字符串\n let permissionList = []// 权限列表\n if (!permission)\n permission = ''\n permissionList = permission.split(';')\n\n // 获取需要的权限标识,即元素给指令传进来的参数值\n let inValue\n if (typeof binding.value === 'string') {\n inValue = binding.value\n }\n else if (Array.isArray(binding.value)) {\n inValue = binding.value.join(';')\n }\n else {\n // eslint-disable-next-line no-console\n console.log('数据格式不正确,请输入字符串(以分号分隔)或数组')\n }\n\n let passText = inValue // 可以是多个值,中间以分号分隔\n let passTextArr = []// 将权限解析到数组中\n if (!passText)\n passText = ''\n passTextArr = passText.split(';')\n\n // 定义一个权限标识变量,用于标识是否有权限\n let flag = false\n // 循环遍历权限列表,检测用户是否有相应的操作权限\n for (let i = 0; i < passTextArr.length; i++) {\n if (permissionList.includes(passTextArr[i])) {\n // 如果从服务器中获取的权限列表中有组件所需的权限,则将flag置为true,同时跳出循环\n flag = true\n break\n }\n }\n // 如果flag为false,也就是没权限则直接将元素移除或者隐藏\n if (!flag)\n el.parentNode && el.parentNode.removeChild(el)\n },\n}\n\nexport default vPermission\n","/**\n * @description: v-resize指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 响应缩放\n */\n\nimport type { Directive } from 'vue'\n\nfunction createYElement(type: 'top' | 'bottom'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n if (type === 'top')\n Element.style.top = '0'\n else\n Element.style.bottom = '0'\n\n Element.style.left = '0'\n Element.style.right = '0'\n Element.style.height = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ns-resize'\n Element.style.display = 'none'\n\n return Element\n}\n\nfunction createXElement(type: 'left' | 'right'): HTMLDivElement {\n const Element = document.createElement('div')\n Element.style.position = 'absolute'\n Element.style.top = '5px'\n if (type === 'left')\n Element.style.left = '0'\n else\n Element.style.right = '0'\n\n Element.style.bottom = '5px'\n Element.style.width = '5px'\n Element.style.backgroundColor = '#1890ff'\n Element.style.zIndex = '1'\n Element.style.cursor = 'ew-resize'\n Element.style.display = 'none'\n Element.style.transition = 'all 0.3s'\n\n return Element\n}\n\nconst vResize: Directive = {\n mounted(el: HTMLElement) {\n const position = el.style.position\n if (position === 'static' || position === '')\n el.style.position = 'relative'\n\n const topElement = createYElement('top')\n const bottomElement = createYElement('bottom')\n const leftElement = createXElement('left')\n const rightElement = createXElement('right')\n\n const Y = [topElement, bottomElement]\n const X = [leftElement, rightElement]\n\n const all = [...Y, ...X]\n\n Y.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n const startY = e.clientY\n\n const style = window.getComputedStyle(el)\n const height = style.height\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetY = e.clientY - startY\n el.style.height = `${Number.parseInt(height, 10) + offsetY}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n X.forEach((element) => {\n element.addEventListener('mousedown', (e: MouseEvent) => {\n e.stopPropagation()\n\n const startX = e.clientX\n\n const style = window.getComputedStyle(el)\n const width = style.width\n\n const windowMouseMoveHandler = (e: MouseEvent) => {\n const offsetX = e.clientX - startX\n el.style.width = `${Number.parseInt(width, 10) + offsetX}px`\n }\n\n const windowMouseUpHandler = () => {\n window.removeEventListener('mousemove', windowMouseMoveHandler)\n window.removeEventListener('mouseup', windowMouseUpHandler)\n }\n\n window.addEventListener('mousemove', windowMouseMoveHandler)\n\n window.addEventListener('mouseup', windowMouseUpHandler)\n })\n })\n\n el.addEventListener('click', () => {\n all.forEach((element) => {\n element.style.display = 'block'\n })\n })\n\n const handler = (e: MouseEvent) => {\n if (el.contains(e.target as Node))\n return\n\n all.forEach((element) => {\n element.style.display = 'none'\n })\n }\n window.addEventListener('click', handler)\n\n el.appendChild(topElement)\n el.appendChild(bottomElement)\n el.appendChild(leftElement)\n el.appendChild(rightElement)\n },\n}\nexport default vResize\n","/**\n * @description: v-ripple指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 给元素添加波纹动效\n */\n\n/* eslint-disable ts/ban-ts-comment */\n// @ts-nocheck\nimport type { Directive } from 'vue'\n\nconst Ripple: Directive = {\n mounted(el, binding) {\n // Default values.\n const props = {\n event: 'mousedown',\n transition: 600,\n }\n\n setProps(Object.keys(binding.modifiers), props)\n\n el.addEventListener(props.event, (event) => {\n rippler(event, el, binding.value)\n })\n\n const bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)'\n const zIndex = Ripple.zIndex || '9999'\n\n function rippler(event, el) {\n const target = el\n // Get border to avoid offsetting on ripple container position\n const targetBorder = Number.parseInt((getComputedStyle(target).borderWidth).replace('px', ''))\n\n // Get necessary variables\n const rect = target.getBoundingClientRect()\n const left = rect.left\n const top = rect.top\n const width = target.offsetWidth\n const height = target.offsetHeight\n const dx = event.clientX - left\n const dy = event.clientY - top\n const maxX = Math.max(dx, width - dx)\n const maxY = Math.max(dy, height - dy)\n const style = window.getComputedStyle(target)\n const radius = Math.sqrt((maxX * maxX) + (maxY * maxY))\n const border = (targetBorder > 0) ? targetBorder : 0\n\n // Create the ripple and its container\n const ripple = document.createElement('div')\n const rippleContainer = document.createElement('div')\n rippleContainer.className = 'ripple-container'\n ripple.className = 'ripple'\n\n // Styles for ripple\n ripple.style.marginTop = '0px'\n ripple.style.marginLeft = '0px'\n ripple.style.width = '1px'\n ripple.style.height = '1px'\n ripple.style.transition = `all ${props.transition}ms cubic-bezier(0.4, 0, 0.2, 1)`\n ripple.style.borderRadius = '50%'\n ripple.style.pointerEvents = 'none'\n ripple.style.position = 'relative'\n ripple.style.zIndex = zIndex\n ripple.style.backgroundColor = bg\n\n // Styles for rippleContainer\n rippleContainer.style.position = 'absolute'\n rippleContainer.style.left = `${0 - border}px`\n rippleContainer.style.top = `${0 - border}px`\n rippleContainer.style.height = '0'\n rippleContainer.style.width = '0'\n rippleContainer.style.pointerEvents = 'none'\n rippleContainer.style.overflow = 'hidden'\n\n // Store target position to change it after\n const storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative')\n target.style.position = 'relative'\n\n rippleContainer.appendChild(ripple)\n target.appendChild(rippleContainer)\n\n ripple.style.marginLeft = `${dx}px`\n ripple.style.marginTop = `${dy}px`\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = `${width}px`\n rippleContainer.style.height = `${height}px`\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius\n\n rippleContainer.style.direction = 'ltr'\n\n setTimeout(() => {\n ripple.style.width = `${radius * 2}px`\n ripple.style.height = `${radius * 2}px`\n ripple.style.marginLeft = `${dx - radius}px`\n ripple.style.marginTop = `${dy - radius}px`\n }, 0)\n\n function clearRipple() {\n setTimeout(() => {\n ripple.style.backgroundColor = 'rgba(0, 0, 0, 0)'\n }, 250)\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(() => {\n rippleContainer.parentNode.removeChild(rippleContainer)\n }, 850)\n\n el.removeEventListener('mouseup', clearRipple, false)\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(() => {\n let clearPosition = true\n for (let i = 0; i < target.childNodes.length; i++) {\n if (target.childNodes[i].className === 'ripple-container')\n clearPosition = false\n }\n\n if (clearPosition) {\n if (storedTargetPosition !== 'static')\n target.style.position = storedTargetPosition\n else\n target.style.position = ''\n }\n }, props.transition + 250)\n }\n\n if (event.type === 'mousedown')\n el.addEventListener('mouseup', clearRipple, false)\n else\n clearRipple()\n }\n },\n}\n\nfunction setProps(modifiers, props) {\n modifiers.forEach((item) => {\n if (Number.isNaN(Number(item)))\n props.event = item\n else\n props.transition = item\n })\n}\n\nexport default Ripple\n","import type { Directive } from 'vue'\n\nconst DISTANCE = 100 // 距离\nconst ANIMATIONTIME = 500 // 500毫秒\nlet distance: number | null = null\nlet animationtime: number | null = null\nconst map = new WeakMap()\n\nfunction isBelowViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect()\n return rect.top - (distance || DISTANCE) > window.innerHeight\n}\n\nfunction handleScroll() {\n const elements = document.querySelectorAll('[v-slideIn]')\n elements.forEach((el: any) => {\n if (isBelowViewport(el))\n return\n\n const animation = map.get(el)\n if (animation && !el.hasAttribute('v-slideIn-played')) {\n animation.play()\n el.removeAttribute('v-slideIn')\n el.setAttribute('v-slideIn-played', '') // Add a flag to mark the animation as played\n }\n })\n}\n\nconst vSlideIn: Directive = {\n mounted(el: HTMLElement, binding: any) {\n if (binding.value) {\n distance = binding.value.px // 接收指定距离\n animationtime = binding.value.time // 接收指定时间\n }\n if (!isBelowViewport(el))\n return\n\n const animation = el.animate(\n [\n {\n opacity: 0,\n transform: `translateY(${distance || DISTANCE}px)`,\n },\n {\n opacity: 1,\n transform: `translateY(0px)`,\n },\n ],\n {\n duration: animationtime || ANIMATIONTIME,\n easing: 'ease-in-out',\n fill: 'forwards',\n },\n )\n animation.pause()\n map.set(el, animation)\n el.setAttribute('v-slideIn', '') // 添加标记,表示需要进行动画\n\n window.addEventListener('scroll', handleScroll)\n },\n\n unmounted(el: HTMLElement) {\n map.delete(el)\n window.removeEventListener('scroll', handleScroll)\n },\n}\n\nexport default vSlideIn\n","import type { Directive, DirectiveBinding } from 'vue'\nimport { isFunction } from '../../utils'\n\nconst elMapToHandlers: WeakMap<Element, () => void> = new WeakMap()\n\nconst elMapToEventName: WeakMap<Element, string> = new WeakMap()\n\nfunction addEventListener(el: Element, binding: DirectiveBinding): void {\n const { arg, value } = binding\n if (!isFunction(value))\n return\n\n const delay = arg ? Number(arg.split('-')[1]) : 300\n const eventName = arg ? arg.split('-')[0] : 'click'\n\n let lastExecTime = 0\n\n const handler = (): void => {\n const currentTime = Date.now()\n if (currentTime - lastExecTime < delay)\n return\n lastExecTime = currentTime\n value()\n }\n\n const existingHandler = elMapToHandlers.get(el)\n if (existingHandler)\n el.removeEventListener(eventName, existingHandler)\n\n elMapToHandlers.set(el, handler)\n elMapToEventName.set(el, eventName)\n el.addEventListener(eventName, handler)\n}\n\nconst vThrottle: Directive = {\n beforeUnmount(el: HTMLElement) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n },\n mounted(el: HTMLElement, binding) {\n addEventListener(el, binding)\n },\n updated(el: HTMLElement, binding) {\n if (elMapToHandlers.has(el)) {\n const eventName = elMapToEventName.get(el)\n const handler = elMapToHandlers.get(el)\n handler\n && eventName\n && el.removeEventListener(eventName as keyof HTMLElementEventMap, handler)\n elMapToHandlers.delete(el)\n elMapToEventName.delete(el)\n }\n\n addEventListener(el, binding)\n },\n}\n\nexport default vThrottle\n","/**\n * @description: v-waterMarker指令\n * @LastEditors: eonova\n * @LastEditTime: 2024/02/07 11:12:16\n * @description: 添加水印\n */\nimport type { Directive, DirectiveBinding } from 'vue'\n\nconst addWaterMarker: Directive = (str: string, parentNode: any, font: any, textColor: string) => {\n // 水印文字,父元素,字体,文字颜色\n const can: HTMLCanvasElement = document.createElement('canvas')\n parentNode.appendChild(can)\n can.width = 200\n can.height = 150\n can.style.display = 'none'\n const cans = can.getContext('2d') as CanvasRenderingContext2D\n cans.rotate((-20 * Math.PI) / 180)\n cans.font = font || '16px Microsoft JhengHei'\n cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'\n cans.textAlign = 'left'\n cans.textBaseline = 'Middle' as CanvasTextBaseline\n cans.fillText(str, can.width / 10, can.height / 2)\n parentNode.style.backgroundImage = `url(${can.toDataURL('image/png')})`\n}\n\nconst waterMarker = {\n mounted(el: DirectiveBinding, binding: DirectiveBinding) {\n addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)\n },\n}\n\nexport default waterMarker\n","import type { App, Directive } from 'vue'\nimport backtop from './directive/v-backtop'\nimport clickOutside from './directive/v-clickOutside'\nimport copy from './directive/v-copy'\nimport debounce from './directive/v-debounce'\nimport doubleClick from './directive/v-doubleClick'\nimport draggable from './directive/v-draggable'\nimport ellipsis from './directive/v-ellipsis'\nimport emoji from './directive/v-emoji'\nimport empty from './directive/v-empty'\nimport flicker from './directive/v-flicker'\nimport focus from './directive/v-focus'\nimport highlight from './directive/v-highlight'\nimport hover from './directive/v-hover'\nimport input from './directive/v-input'\nimport lazyImg from './directive/v-lazyImg'\nimport loading from './directive/v-loading'\nimport longpress from './directive/v-longpress'\nimport money from './directive/v-money'\nimport onOnce from './directive/v-onOnce'\nimport permission from './directive/v-permission'\nimport resize from './directive/v-resize'\nimport ripple from './directive/v-ripple'\nimport slideIn from './directive/v-slideIn'\nimport throttle from './directive/v-throttle'\nimport waterMarker from './directive/v-waterMarker'\n\nexport {\n backtop as vBacktop,\n clickOutside as vClickOutside,\n copy as vCopy,\n debounce as vDebounce,\n doubleClick as vDoubleClick,\n draggable as vDraggable,\n ellipsis as vEllipsis,\n emoji as vEmoji,\n empty as vEmpty,\n flicker as vFlicker,\n focus as vFocus,\n highlight as vHighlight,\n hover as vHover,\n input as vInput,\n lazyImg as vLazyImg,\n loading as vLoading,\n longpress as vLongpress,\n money as vMoney,\n onOnce as vOnOnce,\n permission as vPermission,\n resize as vResize,\n ripple as vRipple,\n slideIn as vSlideIn,\n throttle as vThrottle,\n waterMarker as vWaterMarker,\n}\n\ninterface DirectiveCollection {\n [key: string]: Directive\n}\n\nconst directives: DirectiveCollection = {\n backtop,\n clickOutside,\n copy,\n debounce,\n doubleClick,\n draggable,\n ellipsis,\n emoji,\n empty,\n flicker,\n focus,\n highlight,\n hover,\n input,\n lazyImg,\n loading,\n longpress,\n money,\n onOnce,\n permission,\n resize,\n ripple,\n slideIn,\n throttle,\n waterMarker,\n}\n\nexport default {\n install(app: App) {\n Object.keys(directives).forEach((key) => {\n app.directive(key, directives[key])\n })\n },\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eonova/v3-directives",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"packageManager": "pnpm@
|
|
3
|
+
"version": "1.0.8",
|
|
4
|
+
"packageManager": "pnpm@10.26.2",
|
|
5
5
|
"description": "Custom Vue3 directives",
|
|
6
|
-
"author": "eonova <hi@eonova.
|
|
6
|
+
"author": "eonova <hi@eonova.me> (https://github.com/eonova)",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"homepage": "https://github.com/eonova/v3-directives",
|
|
9
9
|
"bugs": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"dev": "tsup --watch & eslint-flat-config-viewer",
|
|
30
30
|
"build": "tsup",
|
|
31
31
|
"start": "esno src/index.ts",
|
|
32
|
-
"lint": "
|
|
33
|
-
"lint:fix": "
|
|
32
|
+
"lint": "oxlint src/directive/**/*.ts",
|
|
33
|
+
"lint:fix": "oxlint src/**/*.* --fix",
|
|
34
34
|
"lint:ui": "eslint --inspect-config",
|
|
35
35
|
"typecheck": "tsc --noEmit",
|
|
36
36
|
"docs:dev": "vitepress dev docs",
|
|
@@ -43,31 +43,27 @@
|
|
|
43
43
|
"access": "public",
|
|
44
44
|
"registry": "https://registry.npmjs.org/"
|
|
45
45
|
},
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"vue": "^3.4.27",
|
|
49
|
-
"vue-resize": "^1.0.1",
|
|
50
|
-
"vue-router": "^4.3.2"
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"vue": "^3.0.0"
|
|
51
48
|
},
|
|
52
49
|
"devDependencies": {
|
|
53
|
-
"@
|
|
54
|
-
"@types/node": "^
|
|
55
|
-
"bumpp": "^
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"typescript": "^5.4.5",
|
|
50
|
+
"@floating-ui/dom": "^1.7.4",
|
|
51
|
+
"@types/node": "^25.0.3",
|
|
52
|
+
"bumpp": "^10.3.2",
|
|
53
|
+
"esno": "^4.8.0",
|
|
54
|
+
"lint-staged": "^16.2.7",
|
|
55
|
+
"oxlint": "^1.35.0",
|
|
56
|
+
"simple-git-hooks": "^2.13.1",
|
|
57
|
+
"taze": "^19.9.2",
|
|
58
|
+
"tsup": "^8.5.1",
|
|
59
|
+
"typescript": "^5.9.3",
|
|
60
|
+
"vue": "^3.5.26",
|
|
65
61
|
"vitepress": "1.3.4"
|
|
66
62
|
},
|
|
67
63
|
"simple-git-hooks": {
|
|
68
64
|
"pre-commit": "pnpm lint-staged"
|
|
69
65
|
},
|
|
70
66
|
"lint-staged": {
|
|
71
|
-
"*": "
|
|
67
|
+
"*": "oxlint --fix"
|
|
72
68
|
}
|
|
73
69
|
}
|