@pixelium/web-vue 0.0.2-fix → 0.0.3-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/README.md +42 -0
  2. package/README.zh.md +6 -3
  3. package/coverage/base.css +224 -0
  4. package/coverage/block-navigation.js +87 -0
  5. package/coverage/coverage-final.json +106 -0
  6. package/coverage/favicon.png +0 -0
  7. package/coverage/index.html +926 -0
  8. package/coverage/prettify.css +1 -0
  9. package/coverage/prettify.js +2 -0
  10. package/coverage/sort-arrow-sprite.png +0 -0
  11. package/coverage/sorter.js +210 -0
  12. package/dist/font.css +1 -1
  13. package/dist/index.d.ts +1593 -248
  14. package/dist/normalize.css +2 -0
  15. package/dist/pixelium-vue-icon-hn.cjs +1 -1
  16. package/dist/pixelium-vue-icon-hn.css +2 -1
  17. package/dist/pixelium-vue-icon-hn.js +8533 -8154
  18. package/dist/pixelium-vue-icon-hn.umd.cjs +1 -1
  19. package/dist/pixelium-vue-icon-pa.cjs +1 -1
  20. package/dist/pixelium-vue-icon-pa.css +2 -1
  21. package/dist/pixelium-vue-icon-pa.js +10625 -10143
  22. package/dist/pixelium-vue-icon-pa.umd.cjs +1 -1
  23. package/dist/pixelium-vue.cjs +2 -2
  24. package/dist/pixelium-vue.css +2 -1
  25. package/dist/pixelium-vue.js +7402 -5854
  26. package/dist/pixelium-vue.umd.cjs +2 -2
  27. package/es/aside/index.js +46 -151
  28. package/es/auto-complete/draw.d.ts +1 -1
  29. package/es/auto-complete/draw.js +26 -51
  30. package/es/auto-complete/index.css +92 -32
  31. package/es/auto-complete/index.d.ts +12 -15
  32. package/es/auto-complete/index.js +338 -400
  33. package/es/auto-complete/type.d.ts +25 -13
  34. package/es/avatar/css.js +2 -0
  35. package/es/avatar/draw.d.ts +2 -0
  36. package/es/avatar/draw.js +11 -0
  37. package/es/avatar/index.css +49 -0
  38. package/es/avatar/index.d.ts +15 -0
  39. package/es/avatar/index.js +110 -0
  40. package/es/avatar/type.d.ts +34 -0
  41. package/es/button/draw.d.ts +4 -4
  42. package/es/button/draw.js +213 -297
  43. package/es/button/index.css +40 -30
  44. package/es/button/index.d.ts +0 -4
  45. package/es/button/index.js +230 -256
  46. package/es/button/type.d.ts +3 -3
  47. package/es/button-group/index.css +0 -3
  48. package/es/button-group/index.d.ts +1 -2
  49. package/es/button-group/index.js +59 -31
  50. package/es/button-group/type.d.ts +21 -4
  51. package/es/checkbox/css.js +2 -0
  52. package/es/checkbox/draw.d.ts +4 -0
  53. package/es/checkbox/draw.js +46 -0
  54. package/es/checkbox/index.css +85 -0
  55. package/es/checkbox/index.d.ts +31 -0
  56. package/es/checkbox/index.js +206 -0
  57. package/es/checkbox/type.d.ts +88 -0
  58. package/es/checkbox-group/css.js +2 -0
  59. package/es/checkbox-group/index.css +20 -0
  60. package/es/checkbox-group/index.d.ts +23 -0
  61. package/es/checkbox-group/index.js +84 -0
  62. package/es/checkbox-group/type.d.ts +78 -0
  63. package/es/col/index.d.ts +2 -2
  64. package/es/col/index.js +43 -58
  65. package/es/container/index.js +18 -31
  66. package/es/divider/index.js +39 -53
  67. package/es/empty/index.css +4 -4
  68. package/es/empty/index.js +16 -71
  69. package/es/entry.js +102 -0
  70. package/es/footer/index.js +31 -40
  71. package/es/form/css.js +1 -0
  72. package/es/form/index.d.ts +27 -0
  73. package/es/form/index.js +125 -0
  74. package/es/form/type.d.ts +238 -0
  75. package/es/form/use-form.d.ts +4 -0
  76. package/es/form/use-form.js +48 -0
  77. package/es/form-item/css.js +2 -0
  78. package/es/form-item/index.css +77 -0
  79. package/es/form-item/index.d.ts +37 -0
  80. package/es/form-item/index.js +318 -0
  81. package/es/form-item/type.d.ts +96 -0
  82. package/es/grid/index.js +56 -75
  83. package/es/grid-item/css.js +0 -1
  84. package/es/grid-item/index.d.ts +1 -1
  85. package/es/grid-item/index.js +85 -121
  86. package/es/header/index.js +31 -40
  87. package/es/icon/index.js +44 -55
  88. package/es/icons/css-hn.js +0 -1
  89. package/es/icons/css-pa.js +0 -1
  90. package/es/icons/icon-hn.js +10337 -15986
  91. package/es/icons/icon-pa.js +12573 -17447
  92. package/es/image/css.js +2 -0
  93. package/es/image/index.css +69 -0
  94. package/es/image/index.d.ts +35 -0
  95. package/es/image/index.js +199 -0
  96. package/es/image/type.d.ts +126 -0
  97. package/es/index.css +1 -515
  98. package/es/index.d.ts +22 -2
  99. package/es/index.js +143 -123
  100. package/es/input/draw.d.ts +1 -1
  101. package/es/input/draw.js +26 -51
  102. package/es/input/index.css +85 -33
  103. package/es/input/index.d.ts +9 -16
  104. package/es/input/index.js +319 -423
  105. package/es/input/type.d.ts +3 -3
  106. package/es/input-group/index.css +0 -1
  107. package/es/input-group/index.d.ts +2 -2
  108. package/es/input-group/index.js +66 -37
  109. package/es/input-group/type.d.ts +16 -4
  110. package/es/input-group-label/draw.d.ts +1 -1
  111. package/es/input-group-label/draw.js +26 -51
  112. package/es/input-group-label/index.css +33 -22
  113. package/es/input-group-label/index.d.ts +1 -4
  114. package/es/input-group-label/index.js +104 -127
  115. package/es/input-group-label/type.d.ts +3 -3
  116. package/es/input-number/draw.d.ts +1 -1
  117. package/es/input-number/draw.js +26 -51
  118. package/es/input-number/index.css +90 -35
  119. package/es/input-number/index.d.ts +9 -16
  120. package/es/input-number/index.js +428 -536
  121. package/es/input-number/type.d.ts +3 -3
  122. package/es/input-tag/draw.d.ts +1 -1
  123. package/es/input-tag/draw.js +26 -48
  124. package/es/input-tag/index.css +100 -33
  125. package/es/input-tag/index.d.ts +7 -13
  126. package/es/input-tag/index.js +442 -467
  127. package/es/input-tag/type.d.ts +24 -13
  128. package/es/link/index.js +75 -106
  129. package/es/main/index.js +11 -15
  130. package/es/mask/index.js +94 -115
  131. package/es/message/index.css +1 -1
  132. package/es/message/index.js +168 -346
  133. package/es/message-box/css.js +1 -1
  134. package/es/message-box/index.js +98 -114
  135. package/es/message-box/message-box-wrapped.js +33 -46
  136. package/es/message-box/message-box.js +79 -111
  137. package/es/option-list/index.css +13 -13
  138. package/es/option-list/index.d.ts +4 -31
  139. package/es/option-list/index.js +99 -167
  140. package/es/option-list/type.d.ts +5 -1
  141. package/es/pixelate/pixel.d.ts +5 -0
  142. package/es/pixelate/pixel.js +70 -0
  143. package/es/pixelate/pixelate.worker.d.ts +1 -0
  144. package/es/popover/index.d.ts +13 -99
  145. package/es/popover/index.js +75 -238
  146. package/es/popover/type.d.ts +7 -2
  147. package/es/popup/css.js +1 -0
  148. package/es/popup/index.d.ts +210 -0
  149. package/es/popup/index.js +203 -0
  150. package/es/popup/type.d.ts +105 -0
  151. package/es/popup-content/draw.d.ts +2 -2
  152. package/es/popup-content/draw.js +98 -143
  153. package/es/popup-content/index.css +11 -11
  154. package/es/popup-content/index.d.ts +1 -0
  155. package/es/popup-content/index.js +253 -1576
  156. package/es/popup-content/type.d.ts +1 -0
  157. package/es/popup-trigger/index.d.ts +8 -2
  158. package/es/popup-trigger/index.js +122 -95
  159. package/es/popup-trigger/type.d.ts +4 -1
  160. package/es/popup-wrapper/css.js +2 -0
  161. package/es/popup-wrapper/index.css +14 -0
  162. package/es/popup-wrapper/index.d.ts +18 -0
  163. package/es/popup-wrapper/index.js +67 -0
  164. package/es/popup-wrapper/type.d.ts +9 -0
  165. package/es/radio/css.js +1 -0
  166. package/es/radio/draw.d.ts +4 -0
  167. package/es/radio/draw.js +47 -0
  168. package/es/radio/index.d.ts +30 -0
  169. package/es/radio/index.js +190 -0
  170. package/es/radio/style.css +73 -0
  171. package/es/radio/type.d.ts +76 -0
  172. package/es/radio-group/css.js +2 -0
  173. package/es/radio-group/index.css +20 -0
  174. package/es/radio-group/index.d.ts +23 -0
  175. package/es/radio-group/index.js +77 -0
  176. package/es/radio-group/type.d.ts +77 -0
  177. package/es/row/index.js +56 -70
  178. package/es/select/draw.d.ts +1 -1
  179. package/es/select/draw.js +26 -51
  180. package/es/select/index.css +118 -36
  181. package/es/select/index.d.ts +14 -16
  182. package/es/select/index.js +625 -675
  183. package/es/select/type.d.ts +60 -25
  184. package/es/share/const/event-bus-key.js +1 -6
  185. package/es/share/const/index.d.ts +4 -0
  186. package/es/share/const/index.js +22 -24
  187. package/es/share/const/provide-key.d.ts +5 -0
  188. package/es/share/const/provide-key.js +6 -5
  189. package/es/share/const/style.d.ts +6 -0
  190. package/es/share/const/style.js +7 -0
  191. package/es/share/hook/use-cancelable-delay.d.ts +1 -0
  192. package/es/share/hook/use-cancelable-delay.js +42 -0
  193. package/es/share/hook/use-click-outside-listener.d.ts +1 -1
  194. package/es/share/hook/use-click-outside-listener.js +28 -41
  195. package/es/share/hook/use-composition.js +17 -15
  196. package/es/share/hook/use-controlled-mode.d.ts +3 -3
  197. package/es/share/hook/use-controlled-mode.js +20 -23
  198. package/es/share/hook/use-dark-mode.js +51 -65
  199. package/es/share/hook/use-index-of-children.d.ts +2 -1
  200. package/es/share/hook/use-index-of-children.js +47 -45
  201. package/es/share/hook/use-lazy-load.d.ts +10 -0
  202. package/es/share/hook/use-lazy-load.js +133 -0
  203. package/es/share/hook/use-props-detect.d.ts +2 -0
  204. package/es/share/hook/use-resize-observer.d.ts +1 -2
  205. package/es/share/hook/use-resize-observer.js +28 -20
  206. package/es/share/hook/use-screen-width.js +27 -36
  207. package/es/share/hook/use-smooth-transition.d.ts +2 -0
  208. package/es/share/hook/use-smooth-transition.js +65 -0
  209. package/es/share/hook/use-textarea-height.js +86 -92
  210. package/es/share/hook/use-theme-mode.js +41 -42
  211. package/es/share/hook/use-transition-end.d.ts +2 -0
  212. package/es/share/hook/use-transition-end.js +12 -0
  213. package/es/share/hook/use-watch-global-css-var.js +12 -16
  214. package/es/share/hook/use-window-resize-listener.d.ts +1 -0
  215. package/es/share/hook/use-window-resize-listener.js +15 -0
  216. package/es/share/hook/use-z-index.js +30 -27
  217. package/es/share/type/index.d.ts +18 -3
  218. package/es/share/util/color.d.ts +5 -3
  219. package/es/share/util/color.js +156 -149
  220. package/es/share/util/common.d.ts +7 -2
  221. package/es/share/util/common.js +127 -65
  222. package/es/share/util/console.d.ts +3 -3
  223. package/es/share/util/console.js +10 -7
  224. package/es/share/util/dom.d.ts +19 -0
  225. package/es/share/util/dom.js +88 -0
  226. package/es/share/util/env.d.ts +1 -0
  227. package/es/share/util/env.js +5 -4
  228. package/es/share/util/event-bus.js +3 -20
  229. package/es/share/util/lru-cache.js +29 -33
  230. package/es/share/util/pixel.d.ts +4 -0
  231. package/es/share/util/plot.d.ts +8 -3
  232. package/es/share/util/plot.js +457 -229
  233. package/es/share/util/reactivity.d.ts +8 -0
  234. package/es/share/util/reactivity.js +23 -0
  235. package/es/share/util/render.js +31 -41
  236. package/es/share/util/theme.d.ts +3 -0
  237. package/es/share/util/theme.js +77 -57
  238. package/es/slider/css.js +2 -0
  239. package/es/slider/draw.d.ts +25 -0
  240. package/es/slider/draw.js +113 -0
  241. package/es/slider/index.css +119 -0
  242. package/es/slider/index.d.ts +66 -0
  243. package/es/slider/index.js +503 -0
  244. package/es/slider/type.d.ts +162 -0
  245. package/es/slider/util.d.ts +37 -0
  246. package/es/slider/util.js +130 -0
  247. package/es/space/index.css +24 -29
  248. package/es/space/index.js +73 -97
  249. package/es/spin/index.css +18 -17
  250. package/es/spin/index.js +72 -102
  251. package/es/spin/type.d.ts +11 -5
  252. package/es/switch/css.js +2 -0
  253. package/es/switch/draw.d.ts +2 -0
  254. package/es/switch/draw.js +18 -0
  255. package/es/switch/index.css +121 -0
  256. package/es/switch/index.d.ts +42 -0
  257. package/es/switch/index.js +259 -0
  258. package/es/switch/type.d.ts +133 -0
  259. package/es/tag/draw.d.ts +2 -2
  260. package/es/tag/draw.js +80 -127
  261. package/es/tag/index.css +38 -22
  262. package/es/tag/index.d.ts +2 -2
  263. package/es/tag/index.js +121 -190
  264. package/es/tag/type.d.ts +3 -3
  265. package/es/text-outline/css.js +2 -0
  266. package/es/text-outline/index.css +4 -0
  267. package/es/text-outline/index.d.ts +17 -0
  268. package/es/text-outline/index.js +33 -0
  269. package/es/text-outline/type.d.ts +23 -0
  270. package/es/textarea/draw.js +9 -11
  271. package/es/textarea/index.css +37 -23
  272. package/es/textarea/index.d.ts +8 -14
  273. package/es/textarea/index.js +274 -262
  274. package/es/tooltip/index.d.ts +100 -4
  275. package/es/tooltip/index.js +70 -226
  276. package/es/tooltip/type.d.ts +7 -2
  277. package/es/vendor.js +504 -0
  278. package/es/virtual-list/css.js +2 -0
  279. package/es/virtual-list/index.css +25 -0
  280. package/es/virtual-list/index.d.ts +11 -0
  281. package/es/virtual-list/index.js +313 -0
  282. package/es/virtual-list/type.d.ts +26 -0
  283. package/package.json +10 -16
  284. package/es/grid-item/index.css +0 -0
  285. /package/es/message-box/{message-box.css → index.css} +0 -0
@@ -1,71 +1,133 @@
1
- import { d } from "../../aside/index.js";
2
- import { G as GROUP_OPTION_TYPE } from "../const/index.js";
3
- const clamp = (x, min, max) => Math.max(min, Math.min(max, x));
1
+ import { A as d, P as ke } from "../../vendor.js";
2
+ import { i as GROUP_OPTION_TYPE } from "../const/index.js";
4
3
  const fillArr = (val, size) => Array(size).fill(val);
5
4
  const defaultFilter = (keyword, list = []) => {
6
- if (!keyword) {
7
- return [...list];
8
- }
9
- const keyword4Search = keyword.toLowerCase();
10
- const len = list.length;
11
- const ans = [];
12
- for (let i = 0; i < len; i++) {
13
- const currentElement = list[i];
14
- if (d(currentElement)) {
15
- if ("type" in currentElement && currentElement.type === GROUP_OPTION_TYPE) {
16
- const children = defaultFilter(keyword, currentElement.children);
17
- if (children.length) {
18
- ans.push({
19
- ...currentElement,
20
- children
21
- });
22
- }
23
- } else {
24
- if (currentElement.label.toLowerCase().includes(keyword4Search)) {
25
- ans.push(currentElement);
26
- }
27
- }
28
- } else {
29
- if (currentElement.toLowerCase().includes(keyword4Search)) {
30
- ans.push(currentElement);
31
- }
32
- }
33
- }
34
- return ans;
5
+ if (!keyword) return [...list];
6
+ const keyword4Search = keyword.toLowerCase();
7
+ const len = list.length;
8
+ const ans = [];
9
+ for (let i = 0; i < len; i++) {
10
+ const currentElement = list[i];
11
+ if (d(currentElement)) {
12
+ if ("type" in currentElement && currentElement.type === "group") {
13
+ const children = defaultFilter(keyword, currentElement.children);
14
+ if (children.length) ans.push({
15
+ ...currentElement,
16
+ children
17
+ });
18
+ } else if (currentElement.label.toLowerCase().includes(keyword4Search)) ans.push(currentElement);
19
+ } else if (currentElement.toLowerCase().includes(keyword4Search)) ans.push(currentElement);
20
+ }
21
+ return ans;
35
22
  };
36
23
  const findSameOption = (keyword, list, checkLabel = false) => {
37
- if (!keyword) {
38
- return [];
39
- }
40
- const len = list.length;
41
- const ans = [];
42
- for (let i = 0; i < len; i++) {
43
- const currentElement = list[i];
44
- if (d(currentElement)) {
45
- if ("type" in currentElement && currentElement.type === GROUP_OPTION_TYPE) {
46
- const options = findSameOption(keyword, currentElement.children, checkLabel);
47
- if (options.length) {
48
- ans.push(options[0], currentElement);
49
- break;
50
- }
51
- } else {
52
- if (checkLabel && currentElement.label === keyword || currentElement.value === keyword) {
53
- ans.push(currentElement);
54
- break;
55
- }
56
- }
57
- } else {
58
- if (currentElement === keyword) {
59
- ans.push(currentElement);
60
- break;
61
- }
62
- }
63
- }
64
- return ans;
24
+ if (!keyword) return [];
25
+ const len = list.length;
26
+ const ans = [];
27
+ for (let i = 0; i < len; i++) {
28
+ const currentElement = list[i];
29
+ if (d(currentElement)) {
30
+ if ("type" in currentElement && currentElement.type === "group") {
31
+ const options = findSameOption(keyword, currentElement.children, checkLabel);
32
+ if (options.length) {
33
+ ans.push(options[0], currentElement);
34
+ break;
35
+ }
36
+ } else if (checkLabel && currentElement.label === keyword || currentElement.value === keyword) {
37
+ ans.push(currentElement);
38
+ break;
39
+ }
40
+ } else if (currentElement === keyword) {
41
+ ans.push(currentElement);
42
+ break;
43
+ }
44
+ }
45
+ return ans;
65
46
  };
66
- export {
67
- findSameOption as a,
68
- clamp as c,
69
- defaultFilter as d,
70
- fillArr as f
47
+ function offsetOutward(center, points, offset) {
48
+ const [cx, cy] = center;
49
+ return points.map(([x, y]) => {
50
+ const dx = x - cx;
51
+ const dy = y - cy;
52
+ const xOffset = dx > 0 ? offset : dx < 0 ? -offset : 0;
53
+ const yOffset = dy > 0 ? offset : dy < 0 ? -offset : 0;
54
+ return [x + xOffset, y + yOffset];
55
+ });
56
+ }
57
+ function isUrl(url, options = {}) {
58
+ if (!url || typeof url !== "string") return false;
59
+ const { allowWithoutProtocol = true, allowIpv6 = true } = options;
60
+ if (url.includes(" ")) return false;
61
+ const [protocol, rest] = extractProtocol(url);
62
+ if (!protocol && !allowWithoutProtocol) return false;
63
+ const hostPortPart = rest.split(/[/?#]/)[0];
64
+ if (!hostPortPart) return false;
65
+ const { host, port } = parseHostAndPort(hostPortPart) || {};
66
+ if (!host) return false;
67
+ let isHostValid = false;
68
+ if (isIPv6Host(host)) {
69
+ if (!allowIpv6) return false;
70
+ isHostValid = isValidIPv6(host);
71
+ } else isHostValid = isValidIPv4(host) || isValidDomain(host);
72
+ if (!isHostValid) return false;
73
+ if (port && !isValidPort(port)) return false;
74
+ return true;
75
+ }
76
+ function extractProtocol(url) {
77
+ const protocolMatch = url.match(/^([a-zA-Z0-9+.-]+):\/\//);
78
+ if (protocolMatch) return [protocolMatch[1], url.slice(protocolMatch[0].length)];
79
+ return [null, url];
80
+ }
81
+ function parseHostAndPort(hostPortPart) {
82
+ if (hostPortPart.startsWith("[")) {
83
+ const ipv6Match = hostPortPart.match(/^\[(.*?)\](?::(\d+))?$/);
84
+ if (!ipv6Match) return null;
85
+ return {
86
+ host: ipv6Match[1],
87
+ port: ipv6Match[2] || void 0
88
+ };
89
+ }
90
+ const parts = hostPortPart.split(":");
91
+ if (parts.length > 2) return null;
92
+ return {
93
+ host: parts[0],
94
+ port: parts[1] || void 0
95
+ };
96
+ }
97
+ function isIPv6Host(host) {
98
+ return host.includes(":");
99
+ }
100
+ function isValidIPv4(ip) {
101
+ const parts = ip.split(".");
102
+ if (parts.length !== 4) return false;
103
+ return parts.every((part) => {
104
+ if (!/^\d+$/.test(part) || part.length > 1 && part[0] === "0") return false;
105
+ const num = Number(part);
106
+ return num >= 0 && num <= 255;
107
+ });
108
+ }
109
+ function isValidIPv6(ip) {
110
+ if (!/^[0-9a-fA-F:]+$/.test(ip)) return false;
111
+ if ((ip.match(/::/g) || []).length > 1) return false;
112
+ let groups = ip.split(":").filter((g) => g !== "");
113
+ if (8 - groups.length < 0) return false;
114
+ return groups.every((group) => group.length >= 1 && group.length <= 4);
115
+ }
116
+ function isValidDomain(domain) {
117
+ if (domain === "localhost") return true;
118
+ if (domain.includes("..") || domain.startsWith(".") || domain.endsWith(".")) return false;
119
+ const parts = domain.split(".");
120
+ if (parts.length < 2) return false;
121
+ if (parts[parts.length - 1].length < 2) return false;
122
+ return parts.every((part) => {
123
+ return part.length > 0 && !part.startsWith("-") && !part.endsWith("-") && /^[a-zA-Z0-9-]+$/.test(part);
124
+ });
125
+ }
126
+ function isValidPort(port) {
127
+ const portNum = Number(port);
128
+ return !isNaN(portNum) && portNum >= 1 && portNum <= 65535;
129
+ }
130
+ const fixedNumber = (value, precision) => {
131
+ return parseFloat(value.toFixed(ke(Math.round(precision), 0, 100)));
71
132
  };
133
+ export { isUrl as a, fixedNumber as i, fillArr as n, offsetOutward as o, findSameOption as r, defaultFilter as t };
@@ -1,5 +1,5 @@
1
- export declare function logInfo(...message: any[]): void;
2
- export declare function logWarn(...message: any[]): void;
3
- export declare function logError(...message: any[]): void;
1
+ export declare function logInfo(message: any, showInProd?: boolean): void;
2
+ export declare function logWarn(message: any, showInProd?: boolean): void;
3
+ export declare function logError(message: any, showInProd?: boolean): void;
4
4
  export declare function throwError(message: string): void;
5
5
  export declare function createError(message: string): Error;
@@ -1,9 +1,12 @@
1
- // @ts-ignore
2
- typeof process !== "undefined" && process.env.NODE_ENV !== "production";
3
- const projectName = "Pixelium";
1
+ var isNotProdMode = typeof process !== "undefined" && process.env.NODE_ENV !== "production";
2
+ var projectName = "Pixelium";
3
+ function logWarn(message, showInProd = false) {
4
+ if (isNotProdMode || showInProd) console.warn(`[${projectName}]`, message);
5
+ }
4
6
  function throwError(message) {
5
- throw new Error(`[${projectName}] ${message}`);
7
+ throw new Error(`[${projectName}] ${message}`);
8
+ }
9
+ function createError(message) {
10
+ return /* @__PURE__ */ new Error(`[${projectName}] ${message}`);
6
11
  }
7
- export {
8
- throwError as t
9
- };
12
+ export { logWarn as n, throwError as r, createError as t };
@@ -0,0 +1,19 @@
1
+ export declare function checkIntersection(target: HTMLElement, root?: HTMLElement): {
2
+ hasIntersection: boolean;
3
+ x: number;
4
+ y: number;
5
+ };
6
+ interface ZoomOptions {
7
+ maxWidth?: number;
8
+ maxHeight?: number;
9
+ margin?: number;
10
+ }
11
+ export declare function calculateZoomedSize(originalImg: HTMLImageElement, options?: ZoomOptions): {
12
+ width: number;
13
+ height: number;
14
+ left: number;
15
+ top: number;
16
+ };
17
+ export declare const checkMouseInsideElementFromEvent: (el: HTMLElement | SVGElement, e: MouseEvent | TouchEvent) => boolean;
18
+ export declare function imageDataToDataURL(imageData: ImageData): string;
19
+ export {};
@@ -0,0 +1,88 @@
1
+ import { w as Qn } from "../../vendor.js";
2
+ import { t as createError } from "./console.js";
3
+ function checkIntersection(target, root) {
4
+ if (window.getComputedStyle(target).display === "none") return {
5
+ hasIntersection: false,
6
+ x: Infinity,
7
+ y: Infinity
8
+ };
9
+ let isViewport = false;
10
+ if (!root) isViewport = true;
11
+ const rootRect = isViewport ? {
12
+ left: 0,
13
+ top: 0,
14
+ right: window.innerWidth,
15
+ bottom: window.innerHeight
16
+ } : root.getBoundingClientRect();
17
+ const targetRect = target.getBoundingClientRect();
18
+ const hasXIntersection = targetRect.left <= rootRect.right && targetRect.right >= rootRect.left;
19
+ const hasYIntersection = targetRect.top <= rootRect.bottom && targetRect.bottom >= rootRect.top;
20
+ const hasIntersection = hasXIntersection && hasYIntersection;
21
+ let xDistance;
22
+ if (hasXIntersection) xDistance = 0;
23
+ else if (targetRect.right < rootRect.left) xDistance = rootRect.left - targetRect.right;
24
+ else xDistance = targetRect.left - rootRect.right;
25
+ let yDistance;
26
+ if (hasYIntersection) yDistance = 0;
27
+ else if (targetRect.bottom < rootRect.top) yDistance = rootRect.top - targetRect.bottom;
28
+ else yDistance = targetRect.top - rootRect.bottom;
29
+ xDistance = Math.max(0, xDistance);
30
+ yDistance = Math.max(0, yDistance);
31
+ return {
32
+ hasIntersection,
33
+ x: xDistance,
34
+ y: yDistance
35
+ };
36
+ }
37
+ function calculateZoomedSize(originalImg, options) {
38
+ const currentOptions = Qn(options, {
39
+ margin: 32,
40
+ maxWidth: Infinity,
41
+ maxHeight: Infinity
42
+ });
43
+ const viewportWidth = window.innerWidth;
44
+ const viewportHeight = window.innerHeight;
45
+ const finalViewportWidth = Math.min(viewportWidth - currentOptions.margin * 2, currentOptions.maxWidth);
46
+ const finalViewportHeight = Math.min(viewportHeight - currentOptions.margin * 2, currentOptions.maxHeight);
47
+ if (!originalImg.complete) return {
48
+ width: 0,
49
+ height: 0,
50
+ left: finalViewportWidth / 2,
51
+ top: finalViewportHeight / 2
52
+ };
53
+ const naturalWidth = originalImg.naturalWidth || finalViewportWidth;
54
+ const naturalHeight = originalImg.naturalHeight || finalViewportHeight;
55
+ const aspectRatio = originalImg.naturalWidth / originalImg.naturalHeight;
56
+ const scaleX = Math.min(naturalWidth, finalViewportWidth) / naturalWidth;
57
+ const scaleY = Math.min(naturalHeight, finalViewportHeight) / naturalHeight;
58
+ const finalHeight = Math.min(scaleX, scaleY) * naturalHeight;
59
+ const finalWidth = finalHeight * aspectRatio;
60
+ return {
61
+ width: finalWidth,
62
+ height: finalHeight,
63
+ left: finalViewportWidth / 2 - finalWidth / 2 + currentOptions.margin,
64
+ top: finalViewportHeight / 2 - finalHeight / 2 + currentOptions.margin
65
+ };
66
+ }
67
+ const checkMouseInsideElementFromEvent = (el, e) => {
68
+ const rect = el.getBoundingClientRect();
69
+ let clientX, clientY;
70
+ if (e instanceof MouseEvent) {
71
+ clientX = e.clientX;
72
+ clientY = e.clientY;
73
+ } else {
74
+ clientX = e.touches[0].clientX;
75
+ clientY = e.touches[0].clientY;
76
+ }
77
+ return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;
78
+ };
79
+ function imageDataToDataURL(imageData) {
80
+ const canvas = document.createElement("canvas");
81
+ const ctx = canvas.getContext("2d");
82
+ if (!ctx) throw createError("Cannot get Canvas context");
83
+ canvas.width = imageData.width;
84
+ canvas.height = imageData.height;
85
+ ctx.putImageData(imageData, 0, 0);
86
+ return canvas.toDataURL("image/png");
87
+ }
88
+ export { imageDataToDataURL as i, checkIntersection as n, checkMouseInsideElementFromEvent as r, calculateZoomedSize as t };
@@ -1 +1,2 @@
1
+ export declare const inVitest: () => boolean;
1
2
  export declare const inBrowser: () => boolean;
@@ -1,6 +1,7 @@
1
- const inBrowser = () => {
2
- return typeof window !== "undefined";
1
+ const inVitest = () => {
2
+ return typeof process === "object" && typeof process.env === "object" && process.env.VITEST === "true";
3
3
  };
4
- export {
5
- inBrowser as i
4
+ const inBrowser = () => {
5
+ return typeof window !== "undefined";
6
6
  };
7
+ export { inVitest as n, inBrowser as t };
@@ -1,20 +1,3 @@
1
- function mitt(n) {
2
- return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
3
- var i = n.get(t);
4
- i ? i.push(e) : n.set(t, [e]);
5
- }, off: function(t, e) {
6
- var i = n.get(t);
7
- i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, []));
8
- }, emit: function(t, e) {
9
- var i = n.get(t);
10
- i && i.slice().map(function(n2) {
11
- n2(e);
12
- }), (i = n.get("*")) && i.slice().map(function(n2) {
13
- n2(t, e);
14
- });
15
- } };
16
- }
17
- const EventBus = mitt();
18
- export {
19
- EventBus as E
20
- };
1
+ import { m as mitt_default } from "../../vendor.js";
2
+ const EventBus = mitt_default();
3
+ export { EventBus as t };
@@ -1,35 +1,31 @@
1
1
  function createLRU(max) {
2
- if (!Number.isInteger(max) || max <= 0) {
3
- throw new RangeError("max must be a positive integer");
4
- }
5
- const cache = /* @__PURE__ */ new Map();
6
- return {
7
- get(key) {
8
- const val = cache.get(key);
9
- if (val === void 0) return void 0;
10
- cache.delete(key);
11
- cache.set(key, val);
12
- return val;
13
- },
14
- set(key, value) {
15
- if (cache.has(key)) cache.delete(key);
16
- else if (cache.size >= max) cache.delete(cache.keys().next().value);
17
- cache.set(key, value);
18
- },
19
- delete(key) {
20
- return cache.delete(key);
21
- },
22
- clear() {
23
- cache.clear();
24
- },
25
- has(key) {
26
- return cache.has(key);
27
- },
28
- get size() {
29
- return cache.size;
30
- }
31
- };
2
+ if (!Number.isInteger(max) || max <= 0) throw new RangeError("max must be a positive integer");
3
+ const cache = /* @__PURE__ */ new Map();
4
+ return {
5
+ get(key) {
6
+ const val = cache.get(key);
7
+ if (val === void 0) return void 0;
8
+ cache.delete(key);
9
+ cache.set(key, val);
10
+ return val;
11
+ },
12
+ set(key, value) {
13
+ if (cache.has(key)) cache.delete(key);
14
+ else if (cache.size >= max) cache.delete(cache.keys().next().value);
15
+ cache.set(key, value);
16
+ },
17
+ delete(key) {
18
+ return cache.delete(key);
19
+ },
20
+ clear() {
21
+ cache.clear();
22
+ },
23
+ has(key) {
24
+ return cache.has(key);
25
+ },
26
+ get size() {
27
+ return cache.size;
28
+ }
29
+ };
32
30
  }
33
- export {
34
- createLRU as c
35
- };
31
+ export { createLRU as t };
@@ -0,0 +1,4 @@
1
+ export declare function pixelateImage(imageSource: HTMLImageElement | string, pixelSize: number, options?: {
2
+ palette?: string[];
3
+ background?: string;
4
+ }): Promise<string>;
@@ -1,6 +1,8 @@
1
1
  import type { NumberOrPercentage, RgbaColor } from '../type';
2
2
  import type { ShallowRef } from 'vue';
3
+ export declare const roundToPixel: (coord: number, pixelSize: number) => number;
3
4
  export declare function drawCircle(ctx: CanvasRenderingContext2D, centerX: number, centerY: number, radius: number, startRad: number | undefined, endRad: number | undefined, pixelSize: number): void;
5
+ export declare function drawSmoothCircle(ctx: CanvasRenderingContext2D, centerX: number, centerY: number, radius: number, startRad: number | undefined, endRad: number | undefined, pixelSize: number): void;
4
6
  export type floodFillArgs = {
5
7
  x: number;
6
8
  y: number;
@@ -11,15 +13,18 @@ export type floodFillArgs = {
11
13
  pixels: number[];
12
14
  };
13
15
  export declare function floodFill(ctx: CanvasRenderingContext2D, startX: number, startY: number, fillColor: RgbaColor): void;
14
- export declare const transformBorderRadiusSizeValue: (canvas: HTMLCanvasElement, value: NumberOrPercentage, pixelSize: number) => number;
15
- export declare const getBorderRadius: (canvas: HTMLCanvasElement, pixelSize: number, borderRadius: NumberOrPercentage | NumberOrPercentage[] | undefined, shape: "default" | "round" | "circle" | "square" | undefined, size?: "medium" | "small" | "large", inner?: boolean, first?: boolean, last?: boolean) => number[];
16
+ export declare const transformBorderRadiusSizeValue: (canvas: HTMLCanvasElement, value: NumberOrPercentage, pixelSize: number, direction?: "horizontal" | "vertical") => number;
17
+ export declare const getBorderRadius: (canvas: HTMLCanvasElement, pixelSize: number, borderRadius: NumberOrPercentage | NumberOrPercentage[] | undefined, shape: "rect" | "round" | "circle" | "square" | "default" | undefined, size?: "medium" | "small" | "large", inner?: boolean, first?: boolean, last?: boolean, direction?: "horizontal" | "vertical") => number[];
16
18
  export declare function calcWhenLeaveBaseline(pixelSize: number, borderRadius: number): number;
17
19
  export declare const calcPixelSize: () => number;
18
20
  export declare const calcBorderCornerCenter: (borderRadius: number[], width: number, height: number, pixelSize: number, paddingX?: number, paddingY?: number) => [number, number][];
19
- export declare const canvasPreprocess: (wrapperRef: ShallowRef<HTMLElement | null>, canvasRef: ShallowRef<HTMLCanvasElement | null>) => {
21
+ export declare const canvasPreprocess: (wrapperRef: ShallowRef<HTMLElement | null>, canvasRef: ShallowRef<HTMLCanvasElement | null>, paddingX?: number, paddingY?: number) => {
20
22
  ctx: CanvasRenderingContext2D;
21
23
  width: number;
22
24
  height: number;
23
25
  rect: DOMRect;
24
26
  canvas: HTMLCanvasElement;
27
+ wrapper: HTMLElement;
25
28
  } | undefined;
29
+ export declare function floodFillEdge(ctx: CanvasRenderingContext2D, startX: number, startY: number, fillColor: RgbaColor): [number, number][];
30
+ export declare function outerEdgePoints(ctx: CanvasRenderingContext2D): [number, number][];