@fast-china/utils 1.0.32 → 1.0.34

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 (94) hide show
  1. package/README.md +4 -4
  2. package/README.zh.md +3 -3
  3. package/dist/index.global.js +135 -151
  4. package/dist/index.global.js.map +1 -1
  5. package/dist/index.global.min.js +1 -37
  6. package/dist/index.global.min.js.map +1 -1
  7. package/es/array/index.mjs +1 -52
  8. package/es/array/index.mjs.map +1 -1
  9. package/es/base64/index.mjs +1 -137
  10. package/es/base64/index.mjs.map +1 -1
  11. package/es/click/index.mjs +1 -81
  12. package/es/click/index.mjs.map +1 -1
  13. package/es/color/index.mjs +1 -60
  14. package/es/color/index.mjs.map +1 -1
  15. package/es/console/index.mjs +1 -65
  16. package/es/console/index.mjs.map +1 -1
  17. package/es/crypto/index.mjs +1 -105
  18. package/es/crypto/index.mjs.map +1 -1
  19. package/es/date/index.mjs +1 -267
  20. package/es/date/index.mjs.map +1 -1
  21. package/es/dom/index.mjs +1 -5
  22. package/es/dom/index.mjs.map +1 -1
  23. package/es/dom/style.mjs +1 -34
  24. package/es/dom/style.mjs.map +1 -1
  25. package/es/env/index.mjs +1 -37
  26. package/es/env/index.mjs.map +1 -1
  27. package/es/error/index.mjs +1 -9
  28. package/es/error/index.mjs.map +1 -1
  29. package/es/identity/index.mjs +1 -34
  30. package/es/identity/index.mjs.map +1 -1
  31. package/es/index.mjs +1 -59
  32. package/es/index.mjs.map +1 -1
  33. package/es/object/index.mjs +1 -45
  34. package/es/object/index.mjs.map +1 -1
  35. package/es/storage/index.mjs +1 -307
  36. package/es/storage/index.mjs.map +1 -1
  37. package/es/string/index.mjs +1 -314
  38. package/es/string/index.mjs.map +1 -1
  39. package/es/vue/emits.d.ts +8 -0
  40. package/es/vue/emits.mjs +2 -0
  41. package/es/vue/emits.mjs.map +1 -0
  42. package/es/vue/expose.mjs +1 -7
  43. package/es/vue/expose.mjs.map +1 -1
  44. package/es/vue/func.mjs +1 -25
  45. package/es/vue/func.mjs.map +1 -1
  46. package/es/vue/index.d.ts +1 -0
  47. package/es/vue/index.mjs +1 -19
  48. package/es/vue/index.mjs.map +1 -1
  49. package/es/vue/install.mjs +1 -30
  50. package/es/vue/install.mjs.map +1 -1
  51. package/es/vue/props.mjs +1 -14
  52. package/es/vue/props.mjs.map +1 -1
  53. package/es/vue/slots.mjs +1 -6
  54. package/es/vue/slots.mjs.map +1 -1
  55. package/es/vue/useRender.mjs +1 -12
  56. package/es/vue/useRender.mjs.map +1 -1
  57. package/es/vue/with.mjs +1 -6
  58. package/es/vue/with.mjs.map +1 -1
  59. package/lib/array/index.js +1 -1
  60. package/lib/array/index.js.map +1 -1
  61. package/lib/base64/index.js +1 -1
  62. package/lib/base64/index.js.map +1 -1
  63. package/lib/click/index.js +1 -1
  64. package/lib/click/index.js.map +1 -1
  65. package/lib/color/index.js.map +1 -1
  66. package/lib/console/index.js +1 -1
  67. package/lib/console/index.js.map +1 -1
  68. package/lib/crypto/index.js.map +1 -1
  69. package/lib/date/index.js.map +1 -1
  70. package/lib/dom/style.js +1 -1
  71. package/lib/dom/style.js.map +1 -1
  72. package/lib/env/index.js.map +1 -1
  73. package/lib/error/index.js.map +1 -1
  74. package/lib/identity/index.js +1 -1
  75. package/lib/identity/index.js.map +1 -1
  76. package/lib/index.js +1 -1
  77. package/lib/object/index.js +1 -1
  78. package/lib/object/index.js.map +1 -1
  79. package/lib/storage/index.js +1 -1
  80. package/lib/storage/index.js.map +1 -1
  81. package/lib/string/index.js +1 -1
  82. package/lib/string/index.js.map +1 -1
  83. package/lib/vue/emits.d.ts +8 -0
  84. package/lib/vue/emits.js +2 -0
  85. package/lib/vue/emits.js.map +1 -0
  86. package/lib/vue/func.js +1 -1
  87. package/lib/vue/func.js.map +1 -1
  88. package/lib/vue/index.d.ts +1 -0
  89. package/lib/vue/index.js +1 -1
  90. package/lib/vue/install.js.map +1 -1
  91. package/lib/vue/props.js +1 -1
  92. package/lib/vue/props.js.map +1 -1
  93. package/lib/vue/useRender.js.map +1 -1
  94. package/package.json +6 -6
@@ -1,315 +1,2 @@
1
- import { merge, isNumber, isString } from "lodash-unified";
2
- let language;
3
- const languageMap = {
4
- zh: "zh-CN",
5
- en: "en-US",
6
- zh_CN: "zh-CN",
7
- zh_TW: "zh-TW"
8
- };
9
- const stringUtil = {
10
- /**
11
- * 深度解码
12
- */
13
- deepDecodeURIComponent(str, maxDepth = 10) {
14
- if (!str) return str;
15
- let decoded = str;
16
- for (let i = 0; i < maxDepth; i++) {
17
- const next = decodeURIComponent(decoded);
18
- if (next === decoded) {
19
- break;
20
- }
21
- decoded = next;
22
- }
23
- return decoded;
24
- },
25
- /**
26
- * 获取Url参数
27
- */
28
- getUrlParams(url) {
29
- const regex = /[?&][^=?&]+=[^?&]+/g;
30
- const params = {};
31
- let match;
32
- while ((match = regex.exec(url)) !== null) {
33
- const [key, value] = match[0].substring(1).split("=");
34
- params[key] = decodeURIComponent(value);
35
- }
36
- return params;
37
- },
38
- /**
39
- * 是否为JSON字符串
40
- */
41
- isJson(value) {
42
- if (!isString(value)) return false;
43
- value = value.replace(/\s/g, "").replace(/\n|\r/, "");
44
- if (/^\{.*?\}$/.test(value)) return /".*?":/.test(value);
45
- if (/^\[.*?\]$/.test(value)) {
46
- return value.replace(/^\[/, "").replace(/\]$/, "").replace(/\},\{/g, "}\n{").split(/\n/).map((s) => {
47
- return stringUtil.isJson(s);
48
- }).reduce((prev, curr) => {
49
- return !!curr;
50
- });
51
- }
52
- return false;
53
- },
54
- /**
55
- * 切割骆驼命名式字符串
56
- */
57
- splitCamelCase(value) {
58
- if (!value) return [];
59
- if (value.length === 1) return [value];
60
- return value.split(new RegExp("(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})", "u")).filter((token) => token.length > 0);
61
- },
62
- /**
63
- * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串
64
- * 例如:'hello-world' 或 'hello_world' => 'helloWorld'
65
- */
66
- toCamelCase(value) {
67
- if (!value) return "";
68
- return value.replace(/[-_](\w)/g, (_, c) => c ? c.toUpperCase() : "");
69
- },
70
- /**
71
- * 字符串首字母大写
72
- */
73
- firstCharToUpper(value) {
74
- if (!value) return "";
75
- return value.charAt(0).toUpperCase() + value.slice(1);
76
- },
77
- /**
78
- * 字符串首字母小写
79
- */
80
- firstCharToLower(value) {
81
- if (!value) return "";
82
- return value.charAt(0).toLowerCase() + value.slice(1);
83
- },
84
- /**
85
- * 截取指定长度的字符串
86
- */
87
- subStringWithEllipsis(value, length, suffix = "...") {
88
- if (!value) return "";
89
- return value.length > length ? value.substring(0, length) + suffix : value;
90
- },
91
- /**
92
- * 生成随机字符串
93
- */
94
- generateRandomString(length) {
95
- const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
96
- let randomString = "";
97
- for (let i = 0; i < length; i++) {
98
- const randomIndex = Math.floor(Math.random() * characters.length);
99
- randomString += characters.charAt(randomIndex);
100
- }
101
- return randomString;
102
- },
103
- /**
104
- * @description 生成唯一 uuid
105
- */
106
- generateUUID() {
107
- let uuid = "";
108
- for (let i = 0; i < 32; i++) {
109
- const random = Math.random() * 16 | 0;
110
- if (i === 8 || i === 12 || i === 16 || i === 20) uuid += "-";
111
- uuid += (i === 12 ? 4 : i === 16 ? random & 3 | 8 : random).toString(16);
112
- }
113
- return uuid;
114
- },
115
- /**
116
- * 复制
117
- */
118
- async copy(value) {
119
- if (typeof uni !== "undefined") {
120
- return new Promise((resolve, reject) => {
121
- uni.setClipboardData({
122
- data: value,
123
- success: () => {
124
- resolve();
125
- },
126
- fail: () => {
127
- reject();
128
- }
129
- });
130
- });
131
- } else {
132
- if ((navigator == null ? void 0 : navigator.clipboard) && window.isSecureContext) {
133
- await navigator.clipboard.writeText(value);
134
- } else {
135
- const textareaEl = document.createElement("textarea");
136
- textareaEl.value = value;
137
- textareaEl.style.position = "absolute";
138
- textareaEl.style.opacity = "0";
139
- textareaEl.style.left = "-999999px";
140
- textareaEl.style.top = "-999999px";
141
- document.body.appendChild(textareaEl);
142
- textareaEl.focus();
143
- textareaEl.select();
144
- document.execCommand("copy");
145
- textareaEl.remove();
146
- }
147
- }
148
- },
149
- /**
150
- * 使用程序运行的语言将Number转为特定格式的字符串
151
- */
152
- toLocaleString(value, options) {
153
- if (value) {
154
- if (isNumber(value)) {
155
- if (typeof uni !== "undefined") {
156
- if (!language) {
157
- language = uni.getAppBaseInfo().language;
158
- }
159
- return value.toLocaleString(languageMap[language] || "zh-CN", options);
160
- } else {
161
- return value.toLocaleString(navigator.language || "zh-CN", options);
162
- }
163
- }
164
- }
165
- return value;
166
- },
167
- /**
168
- * 使用程序运行的语言将Number转为特定格式的字符串
169
- * @description 默认保留2位小数,补齐2位,不显示千分位
170
- */
171
- toLocaleString_i2x2(value, options) {
172
- options = merge(options || {}, {
173
- minimumFractionDigits: 2,
174
- maximumFractionDigits: 2,
175
- useGrouping: false
176
- });
177
- return this.toLocaleString(value, options);
178
- },
179
- /**
180
- * 使用程序运行的语言将Number转为特定格式的字符串
181
- * @description 默认保留2位小数,补齐2位,显示千分位
182
- */
183
- toLocaleString_i2x2g(value, options) {
184
- options = merge(options || {}, {
185
- minimumFractionDigits: 2,
186
- maximumFractionDigits: 2,
187
- useGrouping: true
188
- });
189
- return this.toLocaleString(value, options);
190
- },
191
- /**
192
- * 使用程序运行的语言将Number转为特定格式的字符串
193
- * @description 默认保留4位小数,补齐2位,不显示千分位
194
- */
195
- toLocaleString_i2x4(value, options) {
196
- options = merge(options || {}, {
197
- minimumFractionDigits: 2,
198
- maximumFractionDigits: 4,
199
- useGrouping: false
200
- });
201
- return this.toLocaleString(value, options);
202
- },
203
- /**
204
- * 使用程序运行的语言将Number转为特定格式的字符串
205
- * @description 默认保留4位小数,补齐2位,显示千分位
206
- */
207
- toLocaleString_i2x4g(value, options) {
208
- options = merge(options || {}, {
209
- minimumFractionDigits: 2,
210
- maximumFractionDigits: 4,
211
- useGrouping: true
212
- });
213
- return this.toLocaleString(value, options);
214
- },
215
- /**
216
- * 使用程序运行的语言将Number转为特定格式的字符串
217
- * @description 默认保留6位小数,补齐2位,不显示千分位
218
- */
219
- toLocaleString_i2x6(value, options) {
220
- options = merge(options || {}, {
221
- minimumFractionDigits: 2,
222
- maximumFractionDigits: 6,
223
- useGrouping: false
224
- });
225
- return this.toLocaleString(value, options);
226
- },
227
- /**
228
- * 使用程序运行的语言将Number转为特定格式的字符串
229
- * @description 默认保留6位小数,补齐2位,显示千分位
230
- */
231
- toLocaleString_i2x6g(value, options) {
232
- options = merge(options || {}, {
233
- minimumFractionDigits: 2,
234
- maximumFractionDigits: 6,
235
- useGrouping: true
236
- });
237
- return this.toLocaleString(value, options);
238
- },
239
- /**
240
- * 使用程序运行的语言将Number转为特定格式的字符串
241
- * @description 默认保留4位小数,补齐4位,不显示千分位
242
- */
243
- toLocaleString_i4x4(value, options) {
244
- options = merge(options || {}, {
245
- minimumFractionDigits: 4,
246
- maximumFractionDigits: 4,
247
- useGrouping: false
248
- });
249
- return this.toLocaleString(value, options);
250
- },
251
- /**
252
- * 使用程序运行的语言将Number转为特定格式的字符串
253
- * @description 默认保留4位小数,补齐4位,显示千分位
254
- */
255
- toLocaleString_i4x4g(value, options) {
256
- options = merge(options || {}, {
257
- minimumFractionDigits: 4,
258
- maximumFractionDigits: 4,
259
- useGrouping: true
260
- });
261
- return this.toLocaleString(value, options);
262
- },
263
- /**
264
- * 使用程序运行的语言将Number转为特定格式的字符串
265
- * @description 默认保留6位小数,补齐4位,不显示千分位
266
- */
267
- toLocaleString_i4x6(value, options) {
268
- options = merge(options || {}, {
269
- minimumFractionDigits: 4,
270
- maximumFractionDigits: 6,
271
- useGrouping: false
272
- });
273
- return this.toLocaleString(value, options);
274
- },
275
- /**
276
- * 使用程序运行的语言将Number转为特定格式的字符串
277
- * @description 默认保留6位小数,补齐4位,显示千分位
278
- */
279
- toLocaleString_i4x6g(value, options) {
280
- options = merge(options || {}, {
281
- minimumFractionDigits: 4,
282
- maximumFractionDigits: 6,
283
- useGrouping: true
284
- });
285
- return this.toLocaleString(value, options);
286
- },
287
- /**
288
- * 使用程序运行的语言将Number转为特定格式的字符串
289
- * @description 默认保留6位小数,补齐6位,不显示千分位
290
- */
291
- toLocaleString_i6x6(value, options) {
292
- options = merge(options || {}, {
293
- minimumFractionDigits: 6,
294
- maximumFractionDigits: 6,
295
- useGrouping: false
296
- });
297
- return this.toLocaleString(value, options);
298
- },
299
- /**
300
- * 使用程序运行的语言将Number转为特定格式的字符串
301
- * @description 默认保留6位小数,补齐6位,显示千分位
302
- */
303
- toLocaleString_i6x6g(value, options) {
304
- options = merge(options || {}, {
305
- minimumFractionDigits: 6,
306
- maximumFractionDigits: 6,
307
- useGrouping: true
308
- });
309
- return this.toLocaleString(value, options);
310
- }
311
- };
312
- export {
313
- stringUtil
314
- };
1
+ import{merge as t,isNumber as i,isString as e}from"lodash-unified";let o;const n={zh:"zh-CN",en:"en-US",zh_CN:"zh-CN",zh_TW:"zh-TW"},r={deepDecodeURIComponent(t,i=10){if(!t)return t;let e=t;for(let o=0;o<i;o++){const t=decodeURIComponent(e);if(t===e)break;e=t}return e},getUrlParams(t){const i=/[?&][^=?&]+=[^?&]+/g,e={};let o;for(;null!==(o=i.exec(t));){const[t,i]=o[0].substring(1).split("=");e[t]=decodeURIComponent(i)}return e},isJson:t=>!!e(t)&&(t=t.replace(/\s/g,"").replace(/\n|\r/,""),/^\{.*?\}$/.test(t)?/".*?":/.test(t):!!/^\[.*?\]$/.test(t)&&t.replace(/^\[/,"").replace(/\]$/,"").replace(/\},\{/g,"}\n{").split(/\n/).map(t=>r.isJson(t)).reduce((t,i)=>!!i)),splitCamelCase:t=>t?1===t.length?[t]:t.split(new RegExp("(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})","u")).filter(t=>t.length>0):[],toCamelCase:t=>t?t.replace(/[-_](\w)/g,(t,i)=>i?i.toUpperCase():""):"",firstCharToUpper:t=>t?t.charAt(0).toUpperCase()+t.slice(1):"",firstCharToLower:t=>t?t.charAt(0).toLowerCase()+t.slice(1):"",subStringWithEllipsis:(t,i,e="...")=>t?t.length>i?t.substring(0,i)+e:t:"",generateRandomString(t){const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let e="";for(let o=0;o<t;o++){const t=Math.floor(62*Math.random());e+=i.charAt(t)}return e},generateUUID(){let t="";for(let i=0;i<32;i++){const e=16*Math.random()|0;8!==i&&12!==i&&16!==i&&20!==i||(t+="-"),t+=(12===i?4:16===i?3&e|8:e).toString(16)}return t},async copy(t){if("undefined"!=typeof uni)return new Promise((i,e)=>{uni.setClipboardData({data:t,success:()=>{i()},fail:()=>{e()}})});if(navigator?.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(t);else{const i=document.createElement("textarea");i.value=t,i.style.position="absolute",i.style.opacity="0",i.style.left="-999999px",i.style.top="-999999px",document.body.appendChild(i),i.focus(),i.select(),document.execCommand("copy"),i.remove()}},toLocaleString:(t,e)=>t&&i(t)?"undefined"!=typeof uni?(o||(o=uni.getAppBaseInfo().language),t.toLocaleString(n[o]||"zh-CN",e)):t.toLocaleString(navigator.language||"zh-CN",e):t,toLocaleString_i2x2(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:2,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x2g(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:2,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i2x4(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:4,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x4g(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:4,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i2x6(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x6g(i,e){return e=t(e||{},{minimumFractionDigits:2,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i4x4(i,e){return e=t(e||{},{minimumFractionDigits:4,maximumFractionDigits:4,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i4x4g(i,e){return e=t(e||{},{minimumFractionDigits:4,maximumFractionDigits:4,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i4x6(i,e){return e=t(e||{},{minimumFractionDigits:4,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i4x6g(i,e){return e=t(e||{},{minimumFractionDigits:4,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i6x6(i,e){return e=t(e||{},{minimumFractionDigits:6,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i6x6g(i,e){return e=t(e||{},{minimumFractionDigits:6,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)}};export{r as stringUtil};
315
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 深度解码\n\t */\n\tdeepDecodeURIComponent(str: string, maxDepth = 10): string {\n\t\tif (!str) return str;\n\t\tlet decoded = str;\n\t\tfor (let i = 0; i < maxDepth; i++) {\n\t\t\tconst next = decodeURIComponent(decoded);\n\t\t\tif (next === decoded) {\n\t\t\t\t// 已经无法继续解码,提前退出\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdecoded = next;\n\t\t}\n\t\treturn decoded;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 深度解码\n\t */\n\tdeepDecodeURIComponent(str: string, maxDepth = 10): string {\n\t\tif (!str) return str;\n\t\tlet decoded = str;\n\t\tfor (let i = 0; i < maxDepth; i++) {\n\t\t\tconst next = decodeURIComponent(decoded);\n\t\t\tif (next === decoded) {\n\t\t\t\t// 已经无法继续解码,提前退出\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdecoded = next;\n\t\t}\n\t\treturn decoded;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":["language","languageMap","zh","en","zh_CN","zh_TW","stringUtil","deepDecodeURIComponent","str","maxDepth","decoded","i","next","decodeURIComponent","getUrlParams","url","regex","params","match","exec","key","value","substring","split","isJson","isString","replace","test","map","s","reduce","prev","curr","splitCamelCase","length","RegExp","filter","token","toCamelCase","_","c","toUpperCase","firstCharToUpper","charAt","slice","firstCharToLower","toLowerCase","subStringWithEllipsis","suffix","generateRandomString","characters","randomString","randomIndex","Math","floor","random","generateUUID","uuid","toString","copy","uni","Promise","resolve","reject","setClipboardData","data","success","fail","navigator","clipboard","window","isSecureContext","writeText","textareaEl","document","createElement","style","position","opacity","left","top","body","appendChild","focus","select","execCommand","remove","toLocaleString","options","isNumber","getAppBaseInfo","toLocaleString_i2x2","merge","minimumFractionDigits","maximumFractionDigits","useGrouping","this","toLocaleString_i2x2g","toLocaleString_i2x4","toLocaleString_i2x4g","toLocaleString_i2x6","toLocaleString_i2x6g","toLocaleString_i4x4","toLocaleString_i4x4g","toLocaleString_i4x6","toLocaleString_i4x6g","toLocaleString_i6x6","toLocaleString_i6x6g"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ComputedRef, EmitFn } from 'vue';
2
+ /**
3
+ * 构建 emits
4
+ * @param emits emits 配置
5
+ * @param emit emit 函数
6
+ * @param ignoreRawEmits 忽略 原生 emits 的 key
7
+ */
8
+ export declare const useEmits: <T extends Record<string, (...args: any[]) => void>>(emits: T, emit?: EmitFn<T>, ignoreRawEmits?: (keyof T)[]) => ComputedRef<Record<string, (...args: any[]) => void>>;
@@ -0,0 +1,2 @@
1
+ import{computed as e}from"vue";import{omit as o}from"lodash-unified";const r=(r,t,i)=>e(r?()=>{const e=r?o(r,i??[]):{};return Object.keys(e).reduce((e,o)=>(e[`on${o.split("-").map((e,o)=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}`]=(...e)=>t(o,...e),e),{})}:()=>({}));export{r as useEmits};
2
+ //# sourceMappingURL=emits.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emits.mjs","sources":["../../../../src/vue/emits.ts"],"sourcesContent":["import { computed } from \"vue\";\nimport { omit } from \"lodash-unified\";\nimport type { ComputedRef, EmitFn } from \"vue\";\n\n/**\n * 构建 emits\n * @param emits emits 配置\n * @param emit emit 函数\n * @param ignoreRawEmits 忽略 原生 emits 的 key\n */\nexport const useEmits = <T extends Record<string, (...args: any[]) => void>>(\n\temits: T,\n\temit?: EmitFn<T>,\n\tignoreRawEmits?: (keyof T)[]\n): ComputedRef<Record<string, (...args: any[]) => void>> => {\n\tif (!emits) return computed(() => ({}));\n\n\treturn computed<Record<string, (...args: any[]) => void>>(() => {\n\t\tconst omittedRawEmits = emits ? omit(emits, ignoreRawEmits ?? []) : {};\n\t\t// 提取对应的事件处理器\n\t\treturn Object.keys(omittedRawEmits).reduce((handlers, eventName) => {\n\t\t\t// 将 emit 名称转换为事件处理器名称: 'update:modelValue' -> 'onUpdate:modelValue'\n\t\t\tconst handlerName = `on${eventName\n\t\t\t\t.split(\"-\")\n\t\t\t\t.map((part, index) => (index === 0 ? part.charAt(0).toUpperCase() + part.slice(1) : part.charAt(0).toUpperCase() + part.slice(1)))\n\t\t\t\t.join(\"\")}`;\n\n\t\t\thandlers[handlerName] = (...args: any[]): void => emit(eventName, ...args);\n\t\t\treturn handlers;\n\t\t}, {});\n\t});\n};\n"],"names":["useEmits","emits","emit","ignoreRawEmits","computed","omittedRawEmits","omit","Object","keys","reduce","handlers","eventName","split","map","part","index","charAt","toUpperCase","slice","join","args"],"mappings":"qEAUO,MAAMA,EAAW,CACvBC,EACAC,EACAC,IAIOC,EAFFH,EAEqD,KACzD,MAAMI,EAAkBJ,EAAQK,EAAKL,EAAOE,GAAkB,IAAM,CAAA,EAEpE,OAAOI,OAAOC,KAAKH,GAAiBI,OAAO,CAACC,EAAUC,KAOrDD,EALoB,KAAKC,EACvBC,MAAM,KACNC,IAAI,CAACC,EAAMC,IAAyBD,EAAKE,OAAO,GAAGC,cAAgBH,EAAKI,MAAM,IAC9EC,KAAK,OAEiB,IAAIC,IAAsBlB,EAAKS,KAAcS,GAC9DV,GACL,CAAA,IAdwB,KAAA,CAAO"}
package/es/vue/expose.mjs CHANGED
@@ -1,8 +1,2 @@
1
- const useExpose = (expose, exposed) => {
2
- expose(exposed);
3
- return exposed;
4
- };
5
- export {
6
- useExpose
7
- };
1
+ const o=(o,t)=>(o(t),t);export{o as useExpose};
8
2
  //# sourceMappingURL=expose.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"expose.mjs","sources":["../../../../src/vue/expose.ts"],"sourcesContent":["/**\n * 构建 expose 和 vue.js devtools 状态查看\n */\nexport const useExpose = <Exposed extends Record<string, any> = Record<string, any>>(\n\texpose: (exposed?: Exposed) => void,\n\texposed?: Exposed\n): Exposed => {\n\texpose(exposed);\n\n\treturn exposed;\n};\n"],"names":[],"mappings":"AAGa,MAAA,YAAY,CACxB,QACA,YACa;AACb,SAAO,OAAO;AAEP,SAAA;AACR;"}
1
+ {"version":3,"file":"expose.mjs","sources":["../../../../src/vue/expose.ts"],"sourcesContent":["/**\n * 构建 expose 和 vue.js devtools 状态查看\n */\nexport const useExpose = <Exposed extends Record<string, any> = Record<string, any>>(\n\texpose: (exposed?: Exposed) => void,\n\texposed?: Exposed\n): Exposed => {\n\texpose(exposed);\n\n\treturn exposed;\n};\n"],"names":["useExpose","expose","exposed"],"mappings":"AAGO,MAAMA,EAAY,CACxBC,EACAC,KAEAD,EAAOC,GAEAA"}
package/es/vue/func.mjs CHANGED
@@ -1,26 +1,2 @@
1
- import { consoleError } from "../console/index.mjs";
2
- const execFunction = async (fn, ...args) => {
3
- if (!fn) return Promise.resolve(void 0);
4
- if (fn.constructor.name === "AsyncFunction") {
5
- try {
6
- return await fn(...args);
7
- } catch (error) {
8
- consoleError("execFunction", error);
9
- return Promise.reject(error);
10
- }
11
- } else {
12
- return new Promise((resolve, reject) => {
13
- try {
14
- const res = fn(...args);
15
- return resolve(res);
16
- } catch (error) {
17
- consoleError("execFunction", error);
18
- return reject(error);
19
- }
20
- });
21
- }
22
- };
23
- export {
24
- execFunction
25
- };
1
+ import{consoleError as r}from"../console/index.mjs";const e=async(e,...n)=>{if(!e)return Promise.resolve(void 0);if("AsyncFunction"!==e.constructor.name)return new Promise((t,c)=>{try{return t(e(...n))}catch(o){return r("execFunction",o),c(o)}});try{return await e(...n)}catch(t){return r("execFunction",t),Promise.reject(t)}};export{e as execFunction};
26
2
  //# sourceMappingURL=func.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"func.mjs","sources":["../../../../src/vue/func.ts"],"sourcesContent":["/**\n * 执行方法\n * @param fn 要执行的方法\n * @param args 参数\n */\n\nimport { consoleError } from \"../console\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const execFunction = async <T = void>(fn: Function, ...args: any[]): Promise<T> => {\n\tif (!fn) return Promise.resolve(undefined);\n\t// 判断是否为异步方法\n\tif (fn.constructor.name === \"AsyncFunction\") {\n\t\t// 异步方法\n\t\ttry {\n\t\t\treturn await fn(...args);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"execFunction\", error as any);\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t} else {\n\t\t// 同步方法\n\t\treturn new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst res = fn(...args);\n\t\t\t\treturn resolve(res);\n\t\t\t} catch (error) {\n\t\t\t\tconsoleError(\"execFunction\", error as any);\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t});\n\t}\n};\n"],"names":[],"mappings":";AASa,MAAA,eAAe,OAAiB,OAAiB,SAA4B;AACzF,MAAI,CAAC,GAAW,QAAA,QAAQ,QAAQ,MAAS;AAErC,MAAA,GAAG,YAAY,SAAS,iBAAiB;AAExC,QAAA;AACI,aAAA,MAAM,GAAG,GAAG,IAAI;AAAA,aACf,OAAO;AACf,mBAAa,gBAAgB,KAAY;AAClC,aAAA,QAAQ,OAAO,KAAK;AAAA,IAAA;AAAA,EAC5B,OACM;AAEN,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACnC,UAAA;AACG,cAAA,MAAM,GAAG,GAAG,IAAI;AACtB,eAAO,QAAQ,GAAG;AAAA,eACV,OAAO;AACf,qBAAa,gBAAgB,KAAY;AACzC,eAAO,OAAO,KAAK;AAAA,MAAA;AAAA,IACpB,CACA;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"func.mjs","sources":["../../../../src/vue/func.ts"],"sourcesContent":["/**\n * 执行方法\n * @param fn 要执行的方法\n * @param args 参数\n */\n\nimport { consoleError } from \"../console\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const execFunction = async <T = void>(fn: Function, ...args: any[]): Promise<T> => {\n\tif (!fn) return Promise.resolve(undefined);\n\t// 判断是否为异步方法\n\tif (fn.constructor.name === \"AsyncFunction\") {\n\t\t// 异步方法\n\t\ttry {\n\t\t\treturn await fn(...args);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"execFunction\", error as any);\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t} else {\n\t\t// 同步方法\n\t\treturn new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst res = fn(...args);\n\t\t\t\treturn resolve(res);\n\t\t\t} catch (error) {\n\t\t\t\tconsoleError(\"execFunction\", error as any);\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t});\n\t}\n};\n"],"names":["execFunction","async","fn","args","Promise","resolve","constructor","name","reject","error","consoleError"],"mappings":"oDASO,MAAMA,EAAeC,MAAiBC,KAAiBC,KAC7D,IAAKD,EAAI,OAAOE,QAAQC,aAAQ,GAEhC,GAA4B,kBAAxBH,EAAGI,YAAYC,KAUlB,OAAO,IAAIH,QAAQ,CAACC,EAASG,KAC5B,IAEC,OAAOH,EADKH,KAAMC,GAEnB,OAASM,GAER,OADAC,EAAa,eAAgBD,GACtBD,EAAOC,EACf,IAfD,IACC,aAAaP,KAAMC,EACpB,OAASM,GAER,OADAC,EAAa,eAAgBD,GACtBL,QAAQI,OAAOC,EACvB"}
package/es/vue/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './emits';
1
2
  export * from './expose';
2
3
  export * from './func';
3
4
  export * from './install';
package/es/vue/index.mjs CHANGED
@@ -1,20 +1,2 @@
1
- import { useExpose } from "./expose.mjs";
2
- import { execFunction } from "./func.mjs";
3
- import { withInstall, withInstallDirective, withNoopInstall } from "./install.mjs";
4
- import { definePropType, useProps } from "./props.mjs";
5
- import { makeSlots } from "./slots.mjs";
6
- import { useRender } from "./useRender.mjs";
7
- import { withDefineType } from "./with.mjs";
8
- export {
9
- definePropType,
10
- execFunction,
11
- makeSlots,
12
- useExpose,
13
- useProps,
14
- useRender,
15
- withDefineType,
16
- withInstall,
17
- withInstallDirective,
18
- withNoopInstall
19
- };
1
+ import{useEmits as m}from"./emits.mjs";import{useExpose as o}from"./expose.mjs";import{execFunction as r}from"./func.mjs";import{withInstall as s,withInstallDirective as t,withNoopInstall as p}from"./install.mjs";import{definePropType as i,useProps as f}from"./props.mjs";import{makeSlots as j}from"./slots.mjs";import{useRender as e}from"./useRender.mjs";import{withDefineType as l}from"./with.mjs";export{i as definePropType,r as execFunction,j as makeSlots,m as useEmits,o as useExpose,f as useProps,e as useRender,l as withDefineType,s as withInstall,t as withInstallDirective,p as withNoopInstall};
20
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,31 +1,2 @@
1
- const NOOP = () => {
2
- };
3
- const withInstall = (main, extra) => {
4
- main.install = (app) => {
5
- for (const comp of [main, ...Object.values(extra ?? {})]) {
6
- app.component(comp.name, comp);
7
- }
8
- };
9
- if (extra) {
10
- for (const [key, comp] of Object.entries(extra)) {
11
- main[key] = comp;
12
- }
13
- }
14
- return main;
15
- };
16
- const withNoopInstall = (component) => {
17
- component.install = NOOP;
18
- return component;
19
- };
20
- const withInstallDirective = (directive, name) => {
21
- directive.install = (app) => {
22
- app.directive(name, directive);
23
- };
24
- return directive;
25
- };
26
- export {
27
- withInstall,
28
- withInstallDirective,
29
- withNoopInstall
30
- };
1
+ const t=()=>{},e=(t,e)=>{if(t.install=n=>{for(const o of[t,...Object.values(e??{})])n.component(o.name,o)},e)for(const[n,o]of Object.entries(e))t[n]=o;return t},n=e=>(e.install=t,e),o=(t,e)=>(t.install=n=>{n.directive(e,t)},t);export{e as withInstall,o as withInstallDirective,n as withNoopInstall};
31
2
  //# sourceMappingURL=install.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.mjs","sources":["../../../../src/vue/install.ts"],"sourcesContent":["import type { App, Directive, Plugin } from \"vue\";\n\nexport type TSXWithInstall<T> = T & Plugin;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst NOOP = (): void => {};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E): TSXWithInstall<T> & E => {\n\t(main as TSXWithInstall<T>).install = (app): void => {\n\t\tfor (const comp of [main, ...Object.values(extra ?? {})]) {\n\t\t\tapp.component(comp.name, comp);\n\t\t}\n\t};\n\n\tif (extra) {\n\t\tfor (const [key, comp] of Object.entries(extra)) {\n\t\t\t(main as any)[key] = comp;\n\t\t}\n\t}\n\treturn main as TSXWithInstall<T> & E;\n};\n\nexport const withNoopInstall = <T>(component: T): TSXWithInstall<T> => {\n\t(component as TSXWithInstall<T>).install = NOOP;\n\n\treturn component as TSXWithInstall<T>;\n};\n\nexport const withInstallDirective = <T extends Directive>(directive: T, name: string): TSXWithInstall<T> => {\n\t(directive as TSXWithInstall<T>).install = (app: App): void => {\n\t\tapp.directive(name, directive);\n\t};\n\n\treturn directive as TSXWithInstall<T>;\n};\n"],"names":[],"mappings":"AAKA,MAAM,OAAO,MAAY;AAAC;AAEb,MAAA,cAAc,CAAmC,MAAS,UAAqC;AAC1G,OAA2B,UAAU,CAAC,QAAc;AACzC,eAAA,QAAQ,CAAC,MAAM,GAAG,OAAO,OAAO,SAAS,CAAE,CAAA,CAAC,GAAG;AACrD,UAAA,UAAU,KAAK,MAAM,IAAI;AAAA,IAAA;AAAA,EAE/B;AAEA,MAAI,OAAO;AACV,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC/C,WAAa,GAAG,IAAI;AAAA,IAAA;AAAA,EACtB;AAEM,SAAA;AACR;AAEa,MAAA,kBAAkB,CAAI,cAAoC;AACrE,YAAgC,UAAU;AAEpC,SAAA;AACR;AAEa,MAAA,uBAAuB,CAAsB,WAAc,SAAoC;AAC1G,YAAgC,UAAU,CAAC,QAAmB;AAC1D,QAAA,UAAU,MAAM,SAAS;AAAA,EAC9B;AAEO,SAAA;AACR;"}
1
+ {"version":3,"file":"install.mjs","sources":["../../../../src/vue/install.ts"],"sourcesContent":["import type { App, Directive, Plugin } from \"vue\";\n\nexport type TSXWithInstall<T> = T & Plugin;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst NOOP = (): void => {};\n\nexport const withInstall = <T, E extends Record<string, any>>(main: T, extra?: E): TSXWithInstall<T> & E => {\n\t(main as TSXWithInstall<T>).install = (app): void => {\n\t\tfor (const comp of [main, ...Object.values(extra ?? {})]) {\n\t\t\tapp.component(comp.name, comp);\n\t\t}\n\t};\n\n\tif (extra) {\n\t\tfor (const [key, comp] of Object.entries(extra)) {\n\t\t\t(main as any)[key] = comp;\n\t\t}\n\t}\n\treturn main as TSXWithInstall<T> & E;\n};\n\nexport const withNoopInstall = <T>(component: T): TSXWithInstall<T> => {\n\t(component as TSXWithInstall<T>).install = NOOP;\n\n\treturn component as TSXWithInstall<T>;\n};\n\nexport const withInstallDirective = <T extends Directive>(directive: T, name: string): TSXWithInstall<T> => {\n\t(directive as TSXWithInstall<T>).install = (app: App): void => {\n\t\tapp.directive(name, directive);\n\t};\n\n\treturn directive as TSXWithInstall<T>;\n};\n"],"names":["NOOP","withInstall","main","extra","install","app","comp","Object","values","component","name","key","entries","withNoopInstall","withInstallDirective","directive"],"mappings":"AAKA,MAAMA,EAAO,OAEAC,EAAc,CAAmCC,EAASC,KAOtE,GANCD,EAA2BE,QAAWC,IACtC,IAAA,MAAWC,IAAQ,CAACJ,KAASK,OAAOC,OAAOL,GAAS,CAAA,IACnDE,EAAII,UAAUH,EAAKI,KAAMJ,IAIvBH,EACH,IAAA,MAAYQ,EAAKL,KAASC,OAAOK,QAAQT,GACvCD,EAAaS,GAAOL,EAGvB,OAAOJ,GAGKW,EAAsBJ,IACjCA,EAAgCL,QAAUJ,EAEpCS,GAGKK,EAAuB,CAAsBC,EAAcL,KACtEK,EAAgCX,QAAWC,IAC3CA,EAAIU,UAAUL,EAAMK,IAGdA"}
package/es/vue/props.mjs CHANGED
@@ -1,15 +1,2 @@
1
- import { computed } from "vue";
2
- import { omit, pick } from "lodash-unified";
3
- const definePropType = (val) => val;
4
- const useProps = (props, rawProps, ignoreRawProps) => {
5
- if (!props) return computed(() => ({}));
6
- return computed(() => {
7
- const omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};
8
- return pick(props, Object.keys(omittedRawProps));
9
- });
10
- };
11
- export {
12
- definePropType,
13
- useProps
14
- };
1
+ import{computed as o}from"vue";import{omit as r,pick as t}from"lodash-unified";const e=o=>o,i=(e,i,m)=>o(e?()=>{const o=i?r(i,m??[]):{};return t(e,Object.keys(o))}:()=>({}));export{e as definePropType,i as useProps};
15
2
  //# sourceMappingURL=props.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../../src/vue/props.ts"],"sourcesContent":["import { computed } from \"vue\";\nimport { omit, pick } from \"lodash-unified\";\nimport type { ComputedRef, PropType } from \"vue\";\n\nexport const definePropType = <T>(val: any): PropType<T> => val;\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n */\nexport const useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[]\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\treturn pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t});\n};\n"],"names":[],"mappings":";;AAIa,MAAA,iBAAiB,CAAI,QAA0B;AAQrD,MAAM,WAAW,CACvB,OACA,UACA,mBAC0C;AAC1C,MAAI,CAAC,MAAO,QAAO,SAAS,OAAO,CAAG,EAAA;AAEtC,SAAO,SAAkC,MAAM;AACxC,UAAA,kBAAkB,WAAW,KAAK,UAAU,kBAAkB,CAAE,CAAA,IAAI,CAAC;AAC3E,WAAO,KAAK,OAAO,OAAO,KAAK,eAAe,CAAC;AAAA,EAAA,CAC/C;AACF;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../../src/vue/props.ts"],"sourcesContent":["import { computed } from \"vue\";\nimport { omit, pick } from \"lodash-unified\";\nimport type { ComputedRef, PropType } from \"vue\";\n\nexport const definePropType = <T>(val: any): PropType<T> => val;\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n */\nexport const useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[]\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\treturn pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t});\n};\n"],"names":["definePropType","val","useProps","props","rawProps","ignoreRawProps","computed","omittedRawProps","omit","pick","Object","keys"],"mappings":"+EAIO,MAAMA,EAAqBC,GAA0BA,EAQ/CC,EAAW,CACvBC,EACAC,EACAC,IAIOC,EAFFH,EAEoC,KACxC,MAAMI,EAAkBH,EAAWI,EAAKJ,EAAUC,GAAkB,IAAM,CAAA,EAC1E,OAAOI,EAAKN,EAAOO,OAAOC,KAAKJ,KAJJ,KAAA,CAAO"}
package/es/vue/slots.mjs CHANGED
@@ -1,7 +1,2 @@
1
- const makeSlots = () => {
2
- return Object;
3
- };
4
- export {
5
- makeSlots
6
- };
1
+ const t=()=>Object;export{t as makeSlots};
7
2
  //# sourceMappingURL=slots.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"slots.mjs","sources":["../../../../src/vue/slots.ts"],"sourcesContent":["import type { SlotsType, VNode } from \"vue\";\n\ntype RawSlots = Record<string, unknown>;\n\ntype VueSlots<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];\n\nexport type MakeSlots<T extends RawSlots> = {\n\t[K in keyof T]: VueSlots<T[K]>;\n};\n\n/**\n * 构建 slots\n */\nexport const makeSlots = <Slots extends RawSlots>(): SlotsType<Partial<MakeSlots<Slots>>> => {\n\treturn Object as SlotsType<Partial<MakeSlots<Slots>>>;\n};\n"],"names":[],"mappings":"AAaO,MAAM,YAAY,MAAoE;AACrF,SAAA;AACR;"}
1
+ {"version":3,"file":"slots.mjs","sources":["../../../../src/vue/slots.ts"],"sourcesContent":["import type { SlotsType, VNode } from \"vue\";\n\ntype RawSlots = Record<string, unknown>;\n\ntype VueSlots<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];\n\nexport type MakeSlots<T extends RawSlots> = {\n\t[K in keyof T]: VueSlots<T[K]>;\n};\n\n/**\n * 构建 slots\n */\nexport const makeSlots = <Slots extends RawSlots>(): SlotsType<Partial<MakeSlots<Slots>>> => {\n\treturn Object as SlotsType<Partial<MakeSlots<Slots>>>;\n};\n"],"names":["makeSlots","Object"],"mappings":"AAaO,MAAMA,EAAY,IACjBC"}
@@ -1,13 +1,2 @@
1
- import { getCurrentInstance } from "vue";
2
- import { FastError } from "../error/index.mjs";
3
- const useRender = (render) => {
4
- const vm = getCurrentInstance();
5
- if (!vm) {
6
- throw new FastError("useRender must be called from inside a setup function");
7
- }
8
- vm.render = render;
9
- };
10
- export {
11
- useRender
12
- };
1
+ import{getCurrentInstance as e}from"vue";import{FastError as r}from"../error/index.mjs";const o=o=>{const n=e();if(!n)throw new r("useRender must be called from inside a setup function");n.render=o};export{o as useRender};
13
2
  //# sourceMappingURL=useRender.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRender.mjs","sources":["../../../../src/vue/useRender.ts"],"sourcesContent":["import { getCurrentInstance } from \"vue\";\nimport { FastError } from \"../error\";\nimport type { VNode } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nexport const useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new FastError(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n"],"names":[],"mappings":";;AAQa,MAAA,YAAY,CAAC,WAA8B;AACvD,QAAM,KAAK,mBAAmB;AAC9B,MAAI,CAAC,IAAI;AACF,UAAA,IAAI,UAAU,uDAAuD;AAAA,EAAA;AAE5E,KAAG,SAAS;AACb;"}
1
+ {"version":3,"file":"useRender.mjs","sources":["../../../../src/vue/useRender.ts"],"sourcesContent":["import { getCurrentInstance } from \"vue\";\nimport { FastError } from \"../error\";\nimport type { VNode } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nexport const useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new FastError(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n"],"names":["useRender","render","vm","getCurrentInstance","FastError"],"mappings":"wFAQO,MAAMA,EAAaC,IACzB,MAAMC,EAAKC,IACX,IAAKD,EACJ,MAAM,IAAIE,EAAU,yDAErBF,EAAGD,OAASA"}