@eonova/v3-directives 1.0.6 → 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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # ☠v3-directives
2
2
 
3
- ![screenshot](https://cdn.jsdelivr.net/gh/eonova/picx-images/local/5465730512d71722380d1ecd6d7db6ae.png)
3
+ ![screenshot](https://cdn.jsdelivr.net/gh/eonova/picx-images-hosting@master/v3-directives.3k875lp1rv.webp)
4
4
 
5
- ☠Vue3 directives 自定义指令库: [📖 在线文档](https://v3-directives.leostar.top/)
5
+ ☠Vue3 directives 自定义指令库: [📖 在线文档](https://v3-directives.eonova.me/)
6
6
 
7
7
  ![Static Badge](https://img.shields.io/npm/v/@eonova/v3-directives?color=409eff)
8
8
  ![Static Badge](https://img.shields.io/github/stars/eonova/v3-directives?style=social)
@@ -28,34 +28,34 @@ app.use(VueDirectives)
28
28
 
29
29
  ## 🧩Directives
30
30
 
31
- | Directive | Description |
32
- | ------------------------------------------------------------------------------------- | ------------------------------------------------- |
33
- | [v-backtop](https://v3-directives.leostar.top/zh/directives/v-backtop.html) | Add a return to top function for an element |
34
- | [v-clickOutside](https://v3-directives.leostar.top/zh/directives/v-clickOutside.html) | Event when clicking outside the element triggers |
35
- | [v-copy](https://v3-directives.leostar.top/zh/directives/v-copy.html) | Copy the passed value to the clipboard |
36
- | [v-debounce](https://v3-directives.leostar.top/zh/directives/v-debounce.html) | Anti-shaking function |
37
- | [v-doubleClick](https://v3-directives.leostar.top/zh/directives/v-doubleClick.html) | Trigger an event on double-click |
38
- | [v-draggable](https://v3-directives.leostar.top/zh/directives/v-draggable.html) | Makes elements draggable |
39
- | [v-ellipsis](https://v3-directives.leostar.top/zh/directives/v-ellipsis.html) | Omit excess text |
40
- | [v-emoji](https://v3-directives.leostar.top/zh/directives/v-emoji.html) | Prohibit emoji input |
41
- | [v-empty](https://v3-directives.leostar.top/zh/directives/v-empty.html) | Used to display empty status |
42
- | [v-flicker](https://v3-directives.leostar.top/zh/directives/v-flicker.html) | Element flicker |
43
- | [v-focus](https://v3-directives.leostar.top/zh/directives/v-focus.html) | Input box autofocus |
44
- | [v-highlight](https://v3-directives.leostar.top/zh/directives/v-highlight.html) | Text highlighting |
45
- | [v-hover](https://v3-directives.leostar.top/zh/directives/v-hover.html) | Triggers a callback after the element |
46
- | [v-input](https://v3-directives.leostar.top/zh/directives/v-input.html) | Input formatting |
47
- | [v-lazyImg](https://v3-directives.leostar.top/zh/directives/v-lazyImg.html) | Lazy image loading |
48
- | [v-loading](https://v3-directives.leostar.top/zh/directives/v-loading.html) | Add loading animation |
49
- | [v-longpress](https://v3-directives.leostar.top/zh/directives/v-longpress.html) | Trigger event when long pressing an element |
50
- | [v-money](https://v3-directives.leostar.top/zh/directives/v-money.html) | Format numbers into money format |
51
- | [v-onOnce](https://v3-directives.leostar.top/zh/directives/v-onOnce.html) | Only one callback is triggered |
52
- | [v-permission](https://v3-directives.leostar.top/zh/directives/v-permission.html) | Rapid realization of authentication |
53
- | [v-resize](https://v3-directives.leostar.top/zh/directives/v-resize.html) | Response to resize the element |
54
- | [v-ripple](https://v3-directives.leostar.top/zh/directives/v-ripple.html) | Add ripple dynamic effects to the clicked element |
55
- | [v-slideIn](https://v3-directives.leostar.top/zh/directives/v-slideIn.html) | Add entry animation |
56
- | [v-throttle](https://v3-directives.leostar.top/zh/directives/v-throttle.html) | Throttling function |
57
- | [v-waterMarker](https://v3-directives.leostar.top/zh/directives/v-waterMarker.html) | Add custom watermark |
31
+ | Directive | Description |
32
+ | ----------------------------------------------------------------------------------- | ------------------------------------------------- |
33
+ | [v-backtop](https://v3-directives.eonova.me/zh/directives/v-backtop.html) | Add a return to top function for an element |
34
+ | [v-clickOutside](https://v3-directives.eonova.me/zh/directives/v-clickOutside.html) | Event when clicking outside the element triggers |
35
+ | [v-copy](https://v3-directives.eonova.me/zh/directives/v-copy.html) | Copy the passed value to the clipboard |
36
+ | [v-debounce](https://v3-directives.eonova.me/zh/directives/v-debounce.html) | Anti-shaking function |
37
+ | [v-doubleClick](https://v3-directives.eonova.me/zh/directives/v-doubleClick.html) | Trigger an event on double-click |
38
+ | [v-draggable](https://v3-directives.eonova.me/zh/directives/v-draggable.html) | Makes elements draggable |
39
+ | [v-ellipsis](https://v3-directives.eonova.me/zh/directives/v-ellipsis.html) | Omit excess text |
40
+ | [v-emoji](https://v3-directives.eonova.me/zh/directives/v-emoji.html) | Prohibit emoji input |
41
+ | [v-empty](https://v3-directives.eonova.me/zh/directives/v-empty.html) | Used to display empty status |
42
+ | [v-flicker](https://v3-directives.eonova.me/zh/directives/v-flicker.html) | Element flicker |
43
+ | [v-focus](https://v3-directives.eonova.me/zh/directives/v-focus.html) | Input box autofocus |
44
+ | [v-highlight](https://v3-directives.eonova.me/zh/directives/v-highlight.html) | Text highlighting |
45
+ | [v-hover](https://v3-directives.eonova.me/zh/directives/v-hover.html) | Triggers a callback after the element |
46
+ | [v-input](https://v3-directives.eonova.me/zh/directives/v-input.html) | Input formatting |
47
+ | [v-lazyImg](https://v3-directives.eonova.me/zh/directives/v-lazyImg.html) | Lazy image loading |
48
+ | [v-loading](https://v3-directives.eonova.me/zh/directives/v-loading.html) | Add loading animation |
49
+ | [v-longpress](https://v3-directives.eonova.me/zh/directives/v-longpress.html) | Trigger event when long pressing an element |
50
+ | [v-money](https://v3-directives.eonova.me/zh/directives/v-money.html) | Format numbers into money format |
51
+ | [v-onOnce](https://v3-directives.eonova.me/zh/directives/v-onOnce.html) | Only one callback is triggered |
52
+ | [v-permission](https://v3-directives.eonova.me/zh/directives/v-permission.html) | Rapid realization of authentication |
53
+ | [v-resize](https://v3-directives.eonova.me/zh/directives/v-resize.html) | Response to resize the element |
54
+ | [v-ripple](https://v3-directives.eonova.me/zh/directives/v-ripple.html) | Add ripple dynamic effects to the clicked element |
55
+ | [v-slideIn](https://v3-directives.eonova.me/zh/directives/v-slideIn.html) | Add entry animation |
56
+ | [v-throttle](https://v3-directives.eonova.me/zh/directives/v-throttle.html) | Throttling function |
57
+ | [v-waterMarker](https://v3-directives.eonova.me/zh/directives/v-waterMarker.html) | Add custom watermark |
58
58
 
59
59
  ## 💖Contributors
60
60
 
61
- Contributions are welcome, PR is welcome, More references [Participate in Open source](https://v3-directives.leostar.top/en/about/contribution.html)
61
+ Contributions are welcome, PR is welcome, More references [Participate in Open source](https://v3-directives.eonova.me/en/about/contribution.html)
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(/[^\d]/, "");
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 = restrict && new RegExp(restrict);
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 src_default = {
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 = src_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=out.js.map
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(/[^\d]/, "");
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 = restrict && new RegExp(restrict);
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 src_default = {
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 { src_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 };
1126
- //# sourceMappingURL=out.js.map
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
@@ -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":"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","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.6",
4
- "packageManager": "pnpm@9.1.4",
3
+ "version": "1.0.8",
4
+ "packageManager": "pnpm@10.26.2",
5
5
  "description": "Custom Vue3 directives",
6
- "author": "eonova <hi@eonova.top> (https://github.com/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": "eslint src/directive/**/*.ts",
33
- "lint:fix": "eslint src/**/*.* --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
- "dependencies": {
47
- "@floating-ui/dom": "^1.6.5",
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
- "@antfu/eslint-config": "^2.19.1",
54
- "@types/node": "^22.5.0",
55
- "bumpp": "^9.4.1",
56
- "eslint": "9.4.0",
57
- "eslint-plugin-format": "^0.1.1",
58
- "eslint-ts-patch": "8.56.0-0",
59
- "esno": "^4.7.0",
60
- "lint-staged": "^15.2.5",
61
- "simple-git-hooks": "^2.11.1",
62
- "taze": "^0.13.8",
63
- "tsup": "^8.0.2",
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
- "*": "eslint --fix"
67
+ "*": "oxlint --fix"
72
68
  }
73
69
  }