@wfrog/vc-ui 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/es/chunk/{BMzd-IS6.mjs → 09Ec85_u.mjs} +13 -13
- package/dist/es/chunk/{su2Zrql0.mjs → 4eyJqDa9.mjs} +1 -1
- package/dist/es/chunk/{Dqz1zvKN.mjs → 73YgKz3H.mjs} +1 -1
- package/dist/es/chunk/{Dh4jaUSg.mjs → B5UQmWXg.mjs} +5 -5
- package/dist/es/chunk/{CVlj9F0I.mjs → BHsNc7jl.mjs} +4 -3
- package/dist/es/chunk/{CEm0brzD.mjs → BI0vrXwX.mjs} +2 -1
- package/dist/es/chunk/{BJS5Pdfp.mjs → BTpNRPQW.mjs} +1 -1
- package/dist/es/chunk/{De_EXLIy.mjs → BUEEWLrd.mjs} +1 -1
- package/dist/es/chunk/{C5hWsUfD.mjs → BcTuAX8r.mjs} +2 -2
- package/dist/es/chunk/{DyDMGLoF.mjs → Bl2KlMdP.mjs} +3 -2
- package/dist/es/chunk/{ViP2SEY4.mjs → Bp9jXKX0.mjs} +2 -3
- package/dist/es/chunk/{C2LgraHx.mjs → BpqBBo4z.mjs} +2 -3
- package/dist/es/chunk/{CS4VKsqy.mjs → BsGCX4td.mjs} +1 -1
- package/dist/es/chunk/{-EkpfdcW.mjs → BsLJxiSC.mjs} +46 -8
- package/dist/es/chunk/{zfg5SOj1.mjs → BtTIs3tG.mjs} +3 -3
- package/dist/es/chunk/{B_tU9Nax.mjs → BzedaLtg.mjs} +1 -1
- package/dist/es/chunk/{Dvi7RsXg.mjs → C7wQNvSS.mjs} +10 -9
- package/dist/es/chunk/{8rLUmOVR.mjs → CBSopeeE.mjs} +3 -2
- package/dist/es/chunk/{Coex0GxM.mjs → CLCfXfvv.mjs} +10 -10
- package/dist/es/chunk/{DqUIKX7f.mjs → CLMc8GzD.mjs} +8 -7
- package/dist/es/chunk/{D3uV7vm-.mjs → CLbj8G-F.mjs} +3 -3
- package/dist/es/chunk/{C7iSSBUr.mjs → CPERtDRX.mjs} +5 -5
- package/dist/es/chunk/{VAdRxe-1.mjs → Cbhe4I9Z.mjs} +1 -1
- package/dist/es/chunk/{D5259bwd.mjs → CizMbf5K.mjs} +2 -1
- package/dist/es/chunk/CsLIbnzG.mjs +64 -0
- package/dist/es/chunk/{Ce9ApjrT.mjs → Cu6erWl4.mjs} +4 -4
- package/dist/es/chunk/{VCrtRnxt.mjs → D0LB3gF-.mjs} +7 -7
- package/dist/es/chunk/{D3DXeVfC.mjs → DFOLES4O.mjs} +60 -16
- package/dist/es/chunk/{E_WRn0OP.mjs → DRoyW749.mjs} +58 -264
- package/dist/es/chunk/{D389hx_T.mjs → DTLPXrjb.mjs} +1 -1
- package/dist/es/chunk/{DZACQ9LT.mjs → DXPWe_a5.mjs} +2 -2
- package/dist/es/chunk/{BWcCXRRK.mjs → DZD-YnCt.mjs} +4 -4
- package/dist/es/chunk/{BdDihk0t.mjs → DaCDeO95.mjs} +591 -562
- package/dist/es/chunk/{CZ4ggqDE.mjs → DihosKp1.mjs} +6 -6
- package/dist/es/chunk/{aibQ9WSZ.mjs → Dk6Bx0KT.mjs} +1 -1
- package/dist/es/chunk/{CyxEcbcy.mjs → DouIsSPi.mjs} +1 -1
- package/dist/es/chunk/{HSv8BL8o.mjs → DrgvuOYH.mjs} +2 -1
- package/dist/es/chunk/{DhhdKtyu.mjs → DwKWIlzw.mjs} +9 -8
- package/dist/es/chunk/{BX-Ogf7p.mjs → FHvLvzEB.mjs} +23 -23
- package/dist/es/chunk/{CMABHk8B.mjs → HAog8AWU.mjs} +22 -22
- package/dist/es/chunk/{Spa-JKB4.mjs → NQBKROII.mjs} +127 -2
- package/dist/es/chunk/{BAtns-Mc.mjs → OEa4tYPF.mjs} +1 -1
- package/dist/es/chunk/{JCIyOUEY.mjs → XwSiBVsA.mjs} +3 -2
- package/dist/es/chunk/{CaTfZePA.mjs → axpwSky6.mjs} +5 -5
- package/dist/es/chunk/{DMHNh_tw.mjs → cPBw23yt.mjs} +3 -3
- package/dist/es/chunk/{nWBcrYxV.mjs → f0-vIQGp.mjs} +3 -5
- package/dist/es/components/awesome-icon/awesome-icon.mjs +4 -6
- package/dist/es/components/backbottom/backbottom.mjs +2 -2
- package/dist/es/components/button/button.mjs +8 -8
- package/dist/es/components/choice/choice.mjs +2 -2
- package/dist/es/components/choice-boolean/choice-boolean.mjs +1 -1
- package/dist/es/components/config-provider/config-provider.mjs +1 -1
- package/dist/es/components/config-provider/config-provider2.mjs +1 -1
- package/dist/es/components/cropper/cropper.mjs +150 -15
- package/dist/es/components/currency/currency.mjs +6 -6
- package/dist/es/components/daterange-picker/daterange-picker.mjs +25 -23
- package/dist/es/components/dialog/dialog.mjs +11 -12
- package/dist/es/components/dialog-camera-upload/dialog-camera-upload.mjs +20 -23
- package/dist/es/components/dialog-map-point/dialog-map-point.mjs +8 -13
- package/dist/es/components/dialog-upload-images/dialog-upload-images.mjs +12 -16
- package/dist/es/components/drag-verify/components/image.vue.d.ts +54 -0
- package/dist/es/components/drag-verify/components/text.vue.d.ts +22 -0
- package/dist/es/components/drag-verify/drag-verify.d.ts +22 -0
- package/dist/es/components/drag-verify/drag-verify.mjs +475 -0
- package/dist/es/components/drag-verify/drag-verify.vue.d.ts +123 -0
- package/dist/es/components/drag-verify/helper.d.ts +2 -0
- package/dist/es/components/drag-verify/index.css +117 -0
- package/dist/es/components/drag-verify/index.d.ts +4 -0
- package/dist/es/components/drag-verify/index.mjs +6 -0
- package/dist/es/components/drawer/drawer.mjs +12 -13
- package/dist/es/components/easy-pagination/easy-pagination.mjs +4 -4
- package/dist/es/components/el-icon/el-icon.mjs +2 -2
- package/dist/es/components/flag/flag.mjs +1 -1
- package/dist/es/components/icon/icon.mjs +2 -2
- package/dist/es/components/icon/icon2.mjs +1 -1
- package/dist/es/components/image/image.mjs +5 -5
- package/dist/es/components/input/input.mjs +4 -4
- package/dist/es/components/input-number/input-number.mjs +5 -5
- package/dist/es/components/pca-picker/pca-picker.mjs +21 -23
- package/dist/es/components/qr-code/qr-code.mjs +1 -1
- package/dist/es/components/screenfull/screenfull.mjs +5 -5
- package/dist/es/components/select/select.mjs +7 -7
- package/dist/es/components/single-player/single-player.mjs +16 -16
- package/dist/es/components/svg-icon/svg-icon.mjs +2 -2
- package/dist/es/components/switch/switch.mjs +2 -2
- package/dist/es/components/sync-scroll-container/sync-scroll-container.mjs +3 -3
- package/dist/es/components/tags/tags.mjs +9 -9
- package/dist/es/components/text-ellipsis/text-ellipsis.mjs +4 -4
- package/dist/es/components/thousand-input/thousand-input.mjs +4 -4
- package/dist/es/components/tinymce/index.css +1 -1
- package/dist/es/components/tinymce/tinymce.mjs +7 -10
- package/dist/es/components/tree-picker/tree-picker.mjs +11 -12
- package/dist/es/components/upload-file/upload-file.mjs +6 -9
- package/dist/es/index.d.ts +1 -0
- package/dist/es/index.mjs +26 -24
- package/dist/es/use/useSmallScreen/index.mjs +1 -1
- package/dist/global.d.ts +1 -0
- package/dist/index.css +118 -1
- package/package.json +3 -6
- package/dist/es/chunk/BAGoDD49.mjs +0 -36
- package/dist/es/chunk/CD98REcR.mjs +0 -666
- package/dist/es/chunk/CEClY-_T.mjs +0 -445
- package/dist/es/chunk/Fo0dZYnz.mjs +0 -128
- package/dist/es/chunk/O-uhUKF4.mjs +0 -43
- package/dist/es/chunk/qY9OvNHY.mjs +0 -283
- package/dist/es/components/cdn-tag.vue.d.ts +0 -5
- package/dist/es/components/document.vue.d.ts +0 -14
- package/dist/es/components/example-wrapper.vue.d.ts +0 -19
|
@@ -1,75 +1,242 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
const isClient = typeof window !== "undefined";
|
|
2
|
+
const defaultWindow = isClient ? window : void 0;
|
|
3
|
+
|
|
4
|
+
const baseCdnUrl = {
|
|
5
|
+
jsdelivr: "//cdn.jsdelivr.net/npm",
|
|
6
|
+
// jsdelivr.net
|
|
7
|
+
defaultBase: defaultWindow?.vc?.cdn?.host || "//cdn.staticfile.org",
|
|
8
|
+
localCDN: defaultWindow?.vc?.cdn?.path || "/local-cdn"
|
|
9
|
+
};
|
|
10
|
+
const cdnMapping = {
|
|
11
|
+
// 全屏
|
|
12
|
+
screenfull: (version = "5.2.0") => ({
|
|
13
|
+
version,
|
|
14
|
+
instance: () => defaultWindow && defaultWindow.screenfull,
|
|
15
|
+
source: {
|
|
16
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/screenfull@${version}`] },
|
|
17
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/screenfull.js/${version}/screenfull.min.js`] },
|
|
18
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/screenfull/${version}/screenfull.min.js`] }
|
|
19
|
+
}
|
|
20
|
+
}),
|
|
21
|
+
// 复制黏贴
|
|
22
|
+
clipboard: (version = "2.0.8") => ({
|
|
23
|
+
version,
|
|
24
|
+
instance: () => defaultWindow && defaultWindow.ClipboardJS,
|
|
25
|
+
source: {
|
|
26
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/clipboard@${version}`] },
|
|
27
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/clipboard.js/${version}/clipboard.min.js`] },
|
|
28
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/clipboard/${version}/clipboard.min.js`] }
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
// 富文本编辑器
|
|
32
|
+
tinymce: (version = "5.8.1") => ({
|
|
33
|
+
version,
|
|
34
|
+
instance: () => defaultWindow && defaultWindow.tinyMCE,
|
|
35
|
+
source: {
|
|
36
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/tinymce@${version}`] },
|
|
37
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/tinymce/${version}/tinymce.min.js`] },
|
|
38
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/tinymce/${version}/tinymce.min.js`] }
|
|
39
|
+
}
|
|
40
|
+
}),
|
|
41
|
+
// 二维码生成
|
|
42
|
+
QRCode: (version = "1.5.1") => ({
|
|
43
|
+
version,
|
|
44
|
+
instance: () => defaultWindow && defaultWindow.QRCode,
|
|
45
|
+
source: {
|
|
46
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/qrcode@${version}/build/qrcode.min.js`] },
|
|
47
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/qrcodejs/${version}/qrcode.min.js`] },
|
|
48
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/qrcode/${version}/qrcode.min.js`] }
|
|
49
|
+
}
|
|
50
|
+
}),
|
|
51
|
+
// 千分位
|
|
52
|
+
cleave: (version = "1.6.0") => ({
|
|
53
|
+
version,
|
|
54
|
+
instance: () => defaultWindow && defaultWindow.Cleave,
|
|
55
|
+
source: {
|
|
56
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/cleave.js@${version}`] },
|
|
57
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/cleave.js/${version}/cleave.min.js`] },
|
|
58
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/cleave/${version}/cleave.min.js`] }
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
61
|
+
// fontawesome 全量css版本
|
|
62
|
+
fontawesomeCss: (version = "6.1.2") => ({
|
|
63
|
+
version,
|
|
64
|
+
instance: () => window,
|
|
65
|
+
source: {
|
|
66
|
+
jsdelivr: { js: [], css: [`${baseCdnUrl.jsdelivr}/@fortawesome/fontawesome-free@${version}/css/all.min.css`] },
|
|
67
|
+
defaultBase: { js: [], css: [`${baseCdnUrl.defaultBase}/font-awesome/${version}/css/all.min.css`] },
|
|
68
|
+
localCDN: { js: [], css: [`${baseCdnUrl.localCDN}/font-awesome/${version}/css/all.min.css`] }
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
71
|
+
// fontawesome 全量js版本
|
|
72
|
+
fontawesomeJs: (version = "6.1.2") => ({
|
|
73
|
+
version,
|
|
74
|
+
instance: () => window,
|
|
75
|
+
source: {
|
|
76
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/@fortawesome/fontawesome-free@${version}/js/all.min.js`] },
|
|
77
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/font-awesome/${version}/js/all.min.js`] },
|
|
78
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/font-awesome/${version}/js/all.min.js`] }
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
cropper: (version = "1.5.12") => ({
|
|
82
|
+
version,
|
|
83
|
+
instance: () => defaultWindow && defaultWindow.Cropper,
|
|
84
|
+
source: {
|
|
85
|
+
jsdelivr: { js: [`${baseCdnUrl.jsdelivr}/cropperjs@${version}`], css: [`${baseCdnUrl.jsdelivr}/cropperjs@${version}/dist/cropper.min.css`] },
|
|
86
|
+
defaultBase: { js: [`${baseCdnUrl.defaultBase}/cropperjs/${version}/cropper.min.js`], css: [`${baseCdnUrl.defaultBase}/cropperjs/${version}/cropper.min.css`] },
|
|
87
|
+
localCDN: { js: [`${baseCdnUrl.localCDN}/cropperjs/${version}/cropper.min.js`], css: [`${baseCdnUrl.localCDN}/cropperjs/${version}/cropper.min.css`] }
|
|
88
|
+
}
|
|
89
|
+
}),
|
|
90
|
+
// flagIcons
|
|
91
|
+
flagIcons: (version = "6.6.6") => ({
|
|
92
|
+
version,
|
|
93
|
+
instance: () => window,
|
|
94
|
+
source: {
|
|
95
|
+
jsdelivr: { js: [], css: [`${baseCdnUrl.jsdelivr}/flag-icons@${version}/css/flag-icons.min.css`] },
|
|
96
|
+
defaultBase: { js: [], css: [`${baseCdnUrl.defaultBase}/flag-icons/${version}/css/flag-icons.min.css`] },
|
|
97
|
+
localCDN: { js: [], css: [`${baseCdnUrl.localCDN}/flag-icons/${version}/css/flag-icons.min.css`] }
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
};
|
|
101
|
+
function cdnSource(name, version) {
|
|
102
|
+
const cdnName = defaultWindow?.vc?.cdn?.name || "jsdelivr";
|
|
103
|
+
const resource = cdnMapping[name];
|
|
104
|
+
if (!resource) {
|
|
105
|
+
const defaultResource = {
|
|
106
|
+
instance: () => ({}),
|
|
107
|
+
js: [`${baseCdnUrl.defaultBase}/${cdnName}.js/${version}/${cdnName}.min.js`],
|
|
108
|
+
css: [`${baseCdnUrl.defaultBase}/${cdnName}/${version}/${cdnName}.min.css`]
|
|
109
|
+
};
|
|
110
|
+
return defaultResource;
|
|
111
|
+
}
|
|
112
|
+
const item = resource(version);
|
|
113
|
+
return Object.assign({ instance: void 0, js: [], css: [], version: "" }, { ...item.source[cdnName], instance: item.instance, version: item.version });
|
|
114
|
+
}
|
|
7
115
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
116
|
+
const FLAG_LOADEED = "yes";
|
|
117
|
+
function isScriptLoaded(url) {
|
|
118
|
+
const script = url && document.querySelector(`script[src="${url}"]`);
|
|
119
|
+
return !!(script && script.dataset.loader === FLAG_LOADEED);
|
|
120
|
+
}
|
|
121
|
+
function getScript(url) {
|
|
122
|
+
const script = url && document.querySelector(`script[src="${url}"]`);
|
|
123
|
+
return script && !script.dataset.loader ? script : null;
|
|
124
|
+
}
|
|
125
|
+
const isCssLoaded = (url) => !!(url && document.querySelector(`link[href="${url}"]`));
|
|
126
|
+
function loadScriptSingle(url) {
|
|
127
|
+
return new Promise((resolve, reject) => {
|
|
128
|
+
if (isScriptLoaded(url)) {
|
|
129
|
+
resolve(true);
|
|
130
|
+
} else {
|
|
131
|
+
const myScript = getScript(url);
|
|
132
|
+
if (!myScript) {
|
|
133
|
+
const head = document.getElementsByTagName("head")[0];
|
|
134
|
+
const script = document.createElement("script");
|
|
135
|
+
script.type = "text/javascript";
|
|
136
|
+
script.src = url;
|
|
137
|
+
script.onload = () => {
|
|
138
|
+
script.dataset.loaded = FLAG_LOADEED;
|
|
139
|
+
resolve(true);
|
|
140
|
+
};
|
|
141
|
+
script.onerror = () => {
|
|
142
|
+
head.removeChild(script);
|
|
143
|
+
reject(new Error("load failed"));
|
|
144
|
+
};
|
|
145
|
+
head.appendChild(script);
|
|
146
|
+
} else {
|
|
147
|
+
const timeout = 1e4;
|
|
148
|
+
const interval = 10;
|
|
149
|
+
let times = 0;
|
|
150
|
+
const timer = setInterval(() => {
|
|
151
|
+
times += interval;
|
|
152
|
+
if (times >= timeout) {
|
|
153
|
+
clearInterval(timer);
|
|
154
|
+
reject(new Error("time out!"));
|
|
155
|
+
}
|
|
156
|
+
if (myScript.dataset.loaded === FLAG_LOADEED) {
|
|
157
|
+
clearInterval(timer);
|
|
158
|
+
resolve(true);
|
|
159
|
+
}
|
|
160
|
+
}, interval);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async function loadScript(urls, options = { sequence: true }) {
|
|
166
|
+
if (options.sequence) {
|
|
167
|
+
try {
|
|
168
|
+
for (let i = 0; i < urls.length; i += 1) {
|
|
169
|
+
await loadScriptSingle(urls[i]);
|
|
170
|
+
}
|
|
171
|
+
return Promise.resolve(true);
|
|
172
|
+
} catch (e) {
|
|
173
|
+
return Promise.reject(e);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return Promise.all(urls.map((url) => loadScriptSingle(url)));
|
|
17
177
|
}
|
|
178
|
+
function loadCss(urls) {
|
|
179
|
+
const head = document.getElementsByTagName("head")[0];
|
|
180
|
+
urls.filter((url) => !isCssLoaded(url)).forEach((url) => {
|
|
181
|
+
const link = document.createElement("link");
|
|
182
|
+
link.type = "text/css";
|
|
183
|
+
link.rel = "stylesheet";
|
|
184
|
+
link.href = url;
|
|
185
|
+
head.appendChild(link);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function loadCdnSingle(name, version) {
|
|
189
|
+
const { js = [], css, instance } = cdnSource(name, version) || {};
|
|
190
|
+
Array.isArray(css) && css.length > 0 && loadCss(css);
|
|
191
|
+
return new Promise((resolve, reject) => {
|
|
192
|
+
loadScript(js).then(() => resolve(instance?.())).catch(() => reject(new Error(`加载 ${name} 失败`)));
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
const loadCdn = (names) => Promise.all(names.map((name) => loadCdnSingle(name)));
|
|
196
|
+
const index$1 = {
|
|
197
|
+
loadScriptSingle,
|
|
198
|
+
loadScript,
|
|
199
|
+
loadCss,
|
|
200
|
+
loadCdnSingle,
|
|
201
|
+
loadCdn,
|
|
202
|
+
baseCdnUrl,
|
|
203
|
+
cdnMapping,
|
|
204
|
+
cdnSource
|
|
205
|
+
};
|
|
18
206
|
|
|
19
|
-
|
|
20
|
-
var nodeIsDate = nodeUtil && nodeUtil.isDate;
|
|
207
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
21
208
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* @static
|
|
26
|
-
* @memberOf _
|
|
27
|
-
* @since 0.1.0
|
|
28
|
-
* @category Lang
|
|
29
|
-
* @param {*} value The value to check.
|
|
30
|
-
* @returns {boolean} Returns `true` if `value` is a date object, else `false`.
|
|
31
|
-
* @example
|
|
32
|
-
*
|
|
33
|
-
* _.isDate(new Date);
|
|
34
|
-
* // => true
|
|
35
|
-
*
|
|
36
|
-
* _.isDate('Mon April 23 2012');
|
|
37
|
-
* // => false
|
|
38
|
-
*/
|
|
39
|
-
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
|
|
40
|
-
|
|
41
|
-
/** `Object#toString` result references. */
|
|
42
|
-
var numberTag = '[object Number]';
|
|
209
|
+
function getDefaultExportFromCjs (x) {
|
|
210
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
211
|
+
}
|
|
43
212
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return typeof value == 'number' ||
|
|
72
|
-
(isObjectLike(value) && baseGetTag(value) == numberTag);
|
|
213
|
+
function getAugmentedNamespace(n) {
|
|
214
|
+
if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
|
|
215
|
+
var f = n.default;
|
|
216
|
+
if (typeof f == "function") {
|
|
217
|
+
var a = function a () {
|
|
218
|
+
var isInstance = false;
|
|
219
|
+
try {
|
|
220
|
+
isInstance = this instanceof a;
|
|
221
|
+
} catch {}
|
|
222
|
+
if (isInstance) {
|
|
223
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
224
|
+
}
|
|
225
|
+
return f.apply(this, arguments);
|
|
226
|
+
};
|
|
227
|
+
a.prototype = f.prototype;
|
|
228
|
+
} else a = {};
|
|
229
|
+
Object.defineProperty(a, '__esModule', {value: true});
|
|
230
|
+
Object.keys(n).forEach(function (k) {
|
|
231
|
+
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
232
|
+
Object.defineProperty(a, k, d.get ? d : {
|
|
233
|
+
enumerable: true,
|
|
234
|
+
get: function () {
|
|
235
|
+
return n[k];
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
return a;
|
|
73
240
|
}
|
|
74
241
|
|
|
75
242
|
var aes$1 = {exports: {}};
|
|
@@ -83,8 +250,8 @@ var core$1 = {exports: {}};
|
|
|
83
250
|
const __viteBrowserExternal = {};
|
|
84
251
|
|
|
85
252
|
const __viteBrowserExternal$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
86
|
-
|
|
87
|
-
|
|
253
|
+
__proto__: null,
|
|
254
|
+
default: __viteBrowserExternal
|
|
88
255
|
}, Symbol.toStringTag, { value: 'Module' }));
|
|
89
256
|
|
|
90
257
|
const require$$0 = /*@__PURE__*/getAugmentedNamespace(__viteBrowserExternal$1);
|
|
@@ -1121,7 +1288,7 @@ function requireMd5 () {
|
|
|
1121
1288
|
var M_offset_14 = M[offset + 14];
|
|
1122
1289
|
var M_offset_15 = M[offset + 15];
|
|
1123
1290
|
|
|
1124
|
-
// Working
|
|
1291
|
+
// Working variables
|
|
1125
1292
|
var a = H[0];
|
|
1126
1293
|
var b = H[1];
|
|
1127
1294
|
var c = H[2];
|
|
@@ -2545,14 +2712,19 @@ function requireCipherCore () {
|
|
|
2545
2712
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
|
|
2546
2713
|
* var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
|
|
2547
2714
|
*/
|
|
2548
|
-
execute: function (password, keySize, ivSize, salt) {
|
|
2715
|
+
execute: function (password, keySize, ivSize, salt, hasher) {
|
|
2549
2716
|
// Generate random salt
|
|
2550
2717
|
if (!salt) {
|
|
2551
2718
|
salt = WordArray.random(64/8);
|
|
2552
2719
|
}
|
|
2553
2720
|
|
|
2554
2721
|
// Derive key and IV
|
|
2555
|
-
|
|
2722
|
+
if (!hasher) {
|
|
2723
|
+
var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
|
|
2724
|
+
} else {
|
|
2725
|
+
var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2556
2728
|
|
|
2557
2729
|
// Separate key and IV
|
|
2558
2730
|
var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
|
|
@@ -2599,7 +2771,7 @@ function requireCipherCore () {
|
|
|
2599
2771
|
cfg = this.cfg.extend(cfg);
|
|
2600
2772
|
|
|
2601
2773
|
// Derive key and other params
|
|
2602
|
-
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
|
|
2774
|
+
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);
|
|
2603
2775
|
|
|
2604
2776
|
// Add IV to config
|
|
2605
2777
|
cfg.iv = derivedParams.iv;
|
|
@@ -2638,7 +2810,7 @@ function requireCipherCore () {
|
|
|
2638
2810
|
ciphertext = this._parse(ciphertext, cfg.format);
|
|
2639
2811
|
|
|
2640
2812
|
// Derive key and other params
|
|
2641
|
-
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
|
|
2813
|
+
var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);
|
|
2642
2814
|
|
|
2643
2815
|
// Add IV to config
|
|
2644
2816
|
cfg.iv = derivedParams.iv;
|
|
@@ -2925,496 +3097,353 @@ function requireEncUtf8 () {
|
|
|
2925
3097
|
var encUtf8Exports = requireEncUtf8();
|
|
2926
3098
|
const encUtf8 = /*@__PURE__*/getDefaultExportFromCjs(encUtf8Exports);
|
|
2927
3099
|
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
quality: 1,
|
|
2931
|
-
};
|
|
2932
|
-
// canvas转dataURL,todo:测试
|
|
2933
|
-
const canvasToDataURL = (canvas, option) => {
|
|
2934
|
-
const myOption = { ...defaultImageOption, ...option };
|
|
2935
|
-
return canvas.toDataURL(myOption.format, myOption.quality);
|
|
2936
|
-
};
|
|
2937
|
-
// img转canvas,可以是dataurl/src,todo:测试
|
|
2938
|
-
const imageToCanvas = (data) => new Promise((resolve, reject) => {
|
|
2939
|
-
const canvas = document.createElement('CANVAS');
|
|
2940
|
-
const ctx = canvas.getContext('2d');
|
|
2941
|
-
const img = new Image();
|
|
2942
|
-
img.onload = () => {
|
|
2943
|
-
if (!ctx) {
|
|
2944
|
-
return;
|
|
2945
|
-
}
|
|
2946
|
-
canvas.width = img.width;
|
|
2947
|
-
canvas.height = img.height;
|
|
2948
|
-
ctx.drawImage(img, 0, 0);
|
|
2949
|
-
resolve(canvas);
|
|
2950
|
-
};
|
|
2951
|
-
img.onerror = () => {
|
|
2952
|
-
reject(new Error('图片加载错误'));
|
|
2953
|
-
};
|
|
2954
|
-
img.src = data;
|
|
2955
|
-
});
|
|
2956
|
-
// canvas转image,todo:测试
|
|
2957
|
-
const canvasToImage = (canvas, option) => {
|
|
2958
|
-
const img = new Image();
|
|
2959
|
-
img.src = canvasToDataURL(canvas, option);
|
|
2960
|
-
return img;
|
|
2961
|
-
};
|
|
2962
|
-
// File/Blob对象转DataURL,todo:测试
|
|
2963
|
-
const fileOrBlobToDataURL = (obj) => new Promise((resolve, reject) => {
|
|
2964
|
-
const file = new FileReader();
|
|
2965
|
-
file.readAsDataURL(obj);
|
|
2966
|
-
file.onload = e => {
|
|
2967
|
-
if (e.target && e.target.result) {
|
|
2968
|
-
resolve(e.target.result);
|
|
2969
|
-
}
|
|
2970
|
-
else {
|
|
2971
|
-
reject(new Error('文件加载失败'));
|
|
2972
|
-
}
|
|
2973
|
-
};
|
|
2974
|
-
file.onerror = () => {
|
|
2975
|
-
reject(new Error('文件加载错误'));
|
|
2976
|
-
};
|
|
2977
|
-
});
|
|
2978
|
-
const dataURLtoUint8Array = (dataurl) => {
|
|
2979
|
-
const arr = dataurl.split(',');
|
|
2980
|
-
const match = arr[0].match(/:(.*?);/);
|
|
2981
|
-
if (!match) {
|
|
2982
|
-
throw new Error('dataURL数据错误');
|
|
2983
|
-
}
|
|
2984
|
-
const mime = match[1];
|
|
2985
|
-
const bstr = atob(arr[1]);
|
|
2986
|
-
let n = bstr.length;
|
|
2987
|
-
const u8arr = new Uint8Array(n);
|
|
2988
|
-
while (n--) {
|
|
2989
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
2990
|
-
}
|
|
2991
|
-
return { uint8Array: u8arr, type: mime };
|
|
2992
|
-
};
|
|
2993
|
-
// DataURL转Blob对象,todo:测试
|
|
2994
|
-
const dataURLToBlob = (dataurl) => {
|
|
2995
|
-
const data = dataURLtoUint8Array(dataurl);
|
|
2996
|
-
return new Blob([data.uint8Array], { type: data.type });
|
|
2997
|
-
};
|
|
2998
|
-
// DataURL转File对象,todo:测试
|
|
2999
|
-
const dataURLToFile = (dataurl, fileName) => {
|
|
3000
|
-
const data = dataURLtoUint8Array(dataurl);
|
|
3001
|
-
return new File([data.uint8Array], fileName, { type: data.type });
|
|
3002
|
-
};
|
|
3003
|
-
const blobToFile = (blob, fileName) => new File([blob], fileName, { type: blob.type, lastModified: Date.now() });
|
|
3004
|
-
// Blob转image,todo:测试
|
|
3005
|
-
const blobToImage = (blob) => new Promise((resolve, reject) => {
|
|
3006
|
-
fileOrBlobToDataURL(blob).then(dataurl => {
|
|
3007
|
-
const img = new Image();
|
|
3008
|
-
img.src = dataurl;
|
|
3009
|
-
resolve(img);
|
|
3010
|
-
}).then(e => reject(e));
|
|
3011
|
-
});
|
|
3012
|
-
// image转Blob,todo:测试
|
|
3013
|
-
const imageToBlob = (data) => new Promise((resolve, reject) => {
|
|
3014
|
-
imageToCanvas(data).then(canvas => {
|
|
3015
|
-
resolve(dataURLToBlob(canvasToDataURL(canvas)));
|
|
3016
|
-
}).catch(e => reject(e));
|
|
3017
|
-
});
|
|
3018
|
-
// Blob图片转canvas,todo:测试
|
|
3019
|
-
const blobToCanvas = (blob) => new Promise((resolve, reject) => {
|
|
3020
|
-
fileOrBlobToDataURL(blob).then(dataurl => {
|
|
3021
|
-
imageToCanvas(dataurl)
|
|
3022
|
-
.then(canvas => resolve(canvas))
|
|
3023
|
-
.catch(e => reject(e));
|
|
3024
|
-
}).catch(e => reject(e));
|
|
3025
|
-
});
|
|
3026
|
-
// canvas图片转Blob,todo:测试
|
|
3027
|
-
const canvasToBlob = (canvas) => dataURLToBlob(canvasToDataURL(canvas));
|
|
3028
|
-
// image(url/dataurl)转dataURL,todo:测试
|
|
3029
|
-
const imageToDataURL = (data) => new Promise((resolve, reject) => {
|
|
3030
|
-
imageToCanvas(data)
|
|
3031
|
-
.then(canvas => resolve(canvasToDataURL(canvas)))
|
|
3032
|
-
.catch(e => reject(e));
|
|
3033
|
-
});
|
|
3034
|
-
// dataURL转image,todo:测试
|
|
3035
|
-
const dataURLToImage = (dataurl) => {
|
|
3036
|
-
const img = new Image();
|
|
3037
|
-
img.src = dataurl;
|
|
3038
|
-
return img;
|
|
3039
|
-
};
|
|
3040
|
-
// 字符串转ArrayBuffer,todo:测试
|
|
3041
|
-
const stringToArrayBuffer = (s) => {
|
|
3042
|
-
const buf = new ArrayBuffer(s.length);
|
|
3043
|
-
const view = new Uint8Array(buf);
|
|
3044
|
-
for (let i = 0; i !== s.length; i += 1) {
|
|
3045
|
-
view[i] = s.charCodeAt(i) & 0xFF;
|
|
3046
|
-
}
|
|
3047
|
-
return buf;
|
|
3048
|
-
};
|
|
3049
|
-
var file = {
|
|
3050
|
-
canvasToDataURL,
|
|
3051
|
-
imageToCanvas,
|
|
3052
|
-
canvasToImage,
|
|
3053
|
-
fileOrBlobToDataURL,
|
|
3054
|
-
dataURLtoUint8Array,
|
|
3055
|
-
dataURLToBlob,
|
|
3056
|
-
dataURLToFile,
|
|
3057
|
-
blobToImage,
|
|
3058
|
-
imageToBlob,
|
|
3059
|
-
blobToCanvas,
|
|
3060
|
-
blobToFile,
|
|
3061
|
-
canvasToBlob,
|
|
3062
|
-
imageToDataURL,
|
|
3063
|
-
dataURLToImage,
|
|
3064
|
-
stringToArrayBuffer,
|
|
3065
|
-
};
|
|
3100
|
+
/** Detect free variable `global` from Node.js. */
|
|
3101
|
+
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
|
3066
3102
|
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
const SECRET_KEY = 'THIS_IS_SECRET';
|
|
3071
|
-
// 带有效期的localStorage
|
|
3072
|
-
// 删除指定的localStorge
|
|
3073
|
-
function remove(key, option) {
|
|
3074
|
-
const { instance = localStorage } = option || {};
|
|
3075
|
-
instance.removeItem(key);
|
|
3076
|
-
}
|
|
3077
|
-
// 设置localStorge
|
|
3078
|
-
function set(key, value, option) {
|
|
3079
|
-
const { expires, encrypt, secret, instance = localStorage } = option || {};
|
|
3080
|
-
let type = 'undefined';
|
|
3081
|
-
isNumber(expires) && (type = 'number');
|
|
3082
|
-
isDate(expires) && (type = 'date');
|
|
3083
|
-
const createAt = new Date().getTime();
|
|
3084
|
-
const val = encrypt ? AES.encrypt(JSON.stringify(value), secret || SECRET_KEY).toString() : value;
|
|
3085
|
-
const item = {
|
|
3086
|
-
val,
|
|
3087
|
-
type,
|
|
3088
|
-
createAt,
|
|
3089
|
-
encrypt: !!encrypt,
|
|
3090
|
-
};
|
|
3091
|
-
const handle = {
|
|
3092
|
-
date: () => { item.expires = new Date(expires).getTime(); },
|
|
3093
|
-
number: () => { item.expires = expires ? +expires : 99999; },
|
|
3094
|
-
};
|
|
3095
|
-
handle[type] && handle[type]();
|
|
3096
|
-
instance.setItem(key, JSON.stringify(item));
|
|
3097
|
-
}
|
|
3098
|
-
// 获取localStorge
|
|
3099
|
-
function get(key, option) {
|
|
3100
|
-
const { secret, instance = localStorage } = option || {};
|
|
3101
|
-
const val = instance.getItem(key);
|
|
3102
|
-
if (val === null) {
|
|
3103
|
-
return undefined;
|
|
3104
|
-
}
|
|
3105
|
-
const item = JSON.parse(val); // 未做类型转换
|
|
3106
|
-
let result = undefined;
|
|
3107
|
-
const handle = {
|
|
3108
|
-
date() {
|
|
3109
|
-
if (new Date() > new Date(item.expires)) { // 过期
|
|
3110
|
-
remove(key);
|
|
3111
|
-
result = undefined;
|
|
3112
|
-
}
|
|
3113
|
-
else {
|
|
3114
|
-
result = item.val;
|
|
3115
|
-
}
|
|
3116
|
-
},
|
|
3117
|
-
number() {
|
|
3118
|
-
const ss = (new Date().getTime() - item.createAt) / 1000;
|
|
3119
|
-
if (ss > +item.expires) { // 过期
|
|
3120
|
-
remove(key);
|
|
3121
|
-
result = undefined;
|
|
3122
|
-
}
|
|
3123
|
-
else {
|
|
3124
|
-
result = item.val;
|
|
3125
|
-
}
|
|
3126
|
-
},
|
|
3127
|
-
undefined() {
|
|
3128
|
-
result = item.val;
|
|
3129
|
-
},
|
|
3130
|
-
};
|
|
3131
|
-
handle[item.type] && handle[item.type]();
|
|
3132
|
-
if (!result) {
|
|
3133
|
-
return undefined;
|
|
3134
|
-
}
|
|
3135
|
-
try {
|
|
3136
|
-
result = item.encrypt ? JSON.parse(AES.decrypt(result, secret || SECRET_KEY).toString(encUtf8)) : result;
|
|
3137
|
-
}
|
|
3138
|
-
catch (err) {
|
|
3139
|
-
console.warn(err);
|
|
3140
|
-
result = undefined;
|
|
3141
|
-
}
|
|
3142
|
-
return result;
|
|
3143
|
-
}
|
|
3144
|
-
const info = () => {
|
|
3145
|
-
const count = (instance) => {
|
|
3146
|
-
let size = 0;
|
|
3147
|
-
for (const item in instance) {
|
|
3148
|
-
if (Object.prototype.hasOwnProperty.call(instance, item)) {
|
|
3149
|
-
size += instance.getItem(item)?.length || 0;
|
|
3150
|
-
}
|
|
3151
|
-
}
|
|
3152
|
-
return `${(size / 1024).toFixed(2)} KB`;
|
|
3153
|
-
};
|
|
3154
|
-
const totalSpace = () => new Promise(resolve => {
|
|
3155
|
-
let test = '0123456789';
|
|
3156
|
-
do {
|
|
3157
|
-
test += test;
|
|
3158
|
-
} while (test.length < 10240);
|
|
3159
|
-
let sum = test;
|
|
3160
|
-
const timer = setInterval(() => {
|
|
3161
|
-
sum += test;
|
|
3162
|
-
try {
|
|
3163
|
-
if (defaultWindow) {
|
|
3164
|
-
defaultWindow.localStorage.removeItem('test-storage-space');
|
|
3165
|
-
defaultWindow.localStorage.setItem('test-storage-space', sum);
|
|
3166
|
-
}
|
|
3167
|
-
}
|
|
3168
|
-
catch {
|
|
3169
|
-
resolve(`${sum.length / 1024} KB`);
|
|
3170
|
-
clearInterval(timer);
|
|
3171
|
-
}
|
|
3172
|
-
}, 0);
|
|
3173
|
-
});
|
|
3174
|
-
return {
|
|
3175
|
-
sessionSpace: count(sessionStorage),
|
|
3176
|
-
localSpace: count(localStorage),
|
|
3177
|
-
totalSpace,
|
|
3178
|
-
};
|
|
3179
|
-
};
|
|
3180
|
-
var storage = {
|
|
3181
|
-
set,
|
|
3182
|
-
get,
|
|
3183
|
-
remove,
|
|
3184
|
-
info,
|
|
3185
|
-
};
|
|
3103
|
+
/** Detect free variable `self`. */
|
|
3104
|
+
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
|
3186
3105
|
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
};
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3106
|
+
/** Used as a reference to the global object. */
|
|
3107
|
+
var root = freeGlobal || freeSelf || Function('return this')();
|
|
3108
|
+
|
|
3109
|
+
/** Built-in value references. */
|
|
3110
|
+
var Symbol$1 = root.Symbol;
|
|
3111
|
+
|
|
3112
|
+
/** Used for built-in method references. */
|
|
3113
|
+
var objectProto$1 = Object.prototype;
|
|
3114
|
+
|
|
3115
|
+
/** Used to check objects for own properties. */
|
|
3116
|
+
var hasOwnProperty = objectProto$1.hasOwnProperty;
|
|
3117
|
+
|
|
3118
|
+
/**
|
|
3119
|
+
* Used to resolve the
|
|
3120
|
+
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
|
3121
|
+
* of values.
|
|
3122
|
+
*/
|
|
3123
|
+
var nativeObjectToString$1 = objectProto$1.toString;
|
|
3124
|
+
|
|
3125
|
+
/** Built-in value references. */
|
|
3126
|
+
var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;
|
|
3127
|
+
|
|
3128
|
+
/**
|
|
3129
|
+
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
|
|
3130
|
+
*
|
|
3131
|
+
* @private
|
|
3132
|
+
* @param {*} value The value to query.
|
|
3133
|
+
* @returns {string} Returns the raw `toStringTag`.
|
|
3134
|
+
*/
|
|
3135
|
+
function getRawTag(value) {
|
|
3136
|
+
var isOwn = hasOwnProperty.call(value, symToStringTag$1),
|
|
3137
|
+
tag = value[symToStringTag$1];
|
|
3138
|
+
|
|
3139
|
+
try {
|
|
3140
|
+
value[symToStringTag$1] = undefined;
|
|
3141
|
+
var unmasked = true;
|
|
3142
|
+
} catch (e) {}
|
|
3143
|
+
|
|
3144
|
+
var result = nativeObjectToString$1.call(value);
|
|
3145
|
+
if (unmasked) {
|
|
3146
|
+
if (isOwn) {
|
|
3147
|
+
value[symToStringTag$1] = tag;
|
|
3148
|
+
} else {
|
|
3149
|
+
delete value[symToStringTag$1];
|
|
3150
|
+
}
|
|
3151
|
+
}
|
|
3152
|
+
return result;
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
/** Used for built-in method references. */
|
|
3156
|
+
var objectProto = Object.prototype;
|
|
3157
|
+
|
|
3158
|
+
/**
|
|
3159
|
+
* Used to resolve the
|
|
3160
|
+
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
|
|
3161
|
+
* of values.
|
|
3162
|
+
*/
|
|
3163
|
+
var nativeObjectToString = objectProto.toString;
|
|
3164
|
+
|
|
3165
|
+
/**
|
|
3166
|
+
* Converts `value` to a string using `Object.prototype.toString`.
|
|
3167
|
+
*
|
|
3168
|
+
* @private
|
|
3169
|
+
* @param {*} value The value to convert.
|
|
3170
|
+
* @returns {string} Returns the converted string.
|
|
3171
|
+
*/
|
|
3172
|
+
function objectToString(value) {
|
|
3173
|
+
return nativeObjectToString.call(value);
|
|
3174
|
+
}
|
|
3175
|
+
|
|
3176
|
+
/** `Object#toString` result references. */
|
|
3177
|
+
var nullTag = '[object Null]',
|
|
3178
|
+
undefinedTag = '[object Undefined]';
|
|
3179
|
+
|
|
3180
|
+
/** Built-in value references. */
|
|
3181
|
+
var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;
|
|
3182
|
+
|
|
3183
|
+
/**
|
|
3184
|
+
* The base implementation of `getTag` without fallbacks for buggy environments.
|
|
3185
|
+
*
|
|
3186
|
+
* @private
|
|
3187
|
+
* @param {*} value The value to query.
|
|
3188
|
+
* @returns {string} Returns the `toStringTag`.
|
|
3189
|
+
*/
|
|
3190
|
+
function baseGetTag(value) {
|
|
3191
|
+
if (value == null) {
|
|
3192
|
+
return value === undefined ? undefinedTag : nullTag;
|
|
3193
|
+
}
|
|
3194
|
+
return (symToStringTag && symToStringTag in Object(value))
|
|
3195
|
+
? getRawTag(value)
|
|
3196
|
+
: objectToString(value);
|
|
3197
|
+
}
|
|
3198
|
+
|
|
3199
|
+
/**
|
|
3200
|
+
* Checks if `value` is object-like. A value is object-like if it's not `null`
|
|
3201
|
+
* and has a `typeof` result of "object".
|
|
3202
|
+
*
|
|
3203
|
+
* @static
|
|
3204
|
+
* @memberOf _
|
|
3205
|
+
* @since 4.0.0
|
|
3206
|
+
* @category Lang
|
|
3207
|
+
* @param {*} value The value to check.
|
|
3208
|
+
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
|
|
3209
|
+
* @example
|
|
3210
|
+
*
|
|
3211
|
+
* _.isObjectLike({});
|
|
3212
|
+
* // => true
|
|
3213
|
+
*
|
|
3214
|
+
* _.isObjectLike([1, 2, 3]);
|
|
3215
|
+
* // => true
|
|
3216
|
+
*
|
|
3217
|
+
* _.isObjectLike(_.noop);
|
|
3218
|
+
* // => false
|
|
3219
|
+
*
|
|
3220
|
+
* _.isObjectLike(null);
|
|
3221
|
+
* // => false
|
|
3222
|
+
*/
|
|
3223
|
+
function isObjectLike(value) {
|
|
3224
|
+
return value != null && typeof value == 'object';
|
|
3225
|
+
}
|
|
3226
|
+
|
|
3227
|
+
/**
|
|
3228
|
+
* The base implementation of `_.unary` without support for storing metadata.
|
|
3229
|
+
*
|
|
3230
|
+
* @private
|
|
3231
|
+
* @param {Function} func The function to cap arguments for.
|
|
3232
|
+
* @returns {Function} Returns the new capped function.
|
|
3233
|
+
*/
|
|
3234
|
+
function baseUnary(func) {
|
|
3235
|
+
return function(value) {
|
|
3236
|
+
return func(value);
|
|
3237
|
+
};
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
/** Detect free variable `exports`. */
|
|
3241
|
+
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
|
|
3242
|
+
|
|
3243
|
+
/** Detect free variable `module`. */
|
|
3244
|
+
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
|
|
3245
|
+
|
|
3246
|
+
/** Detect the popular CommonJS extension `module.exports`. */
|
|
3247
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
|
3248
|
+
|
|
3249
|
+
/** Detect free variable `process` from Node.js. */
|
|
3250
|
+
var freeProcess = moduleExports && freeGlobal.process;
|
|
3251
|
+
|
|
3252
|
+
/** Used to access faster Node.js helpers. */
|
|
3253
|
+
var nodeUtil = (function() {
|
|
3254
|
+
try {
|
|
3255
|
+
// Use `util.types` for Node.js 10+.
|
|
3256
|
+
var types = freeModule && freeModule.require && freeModule.require('util').types;
|
|
3257
|
+
|
|
3258
|
+
if (types) {
|
|
3259
|
+
return types;
|
|
3260
|
+
}
|
|
3261
|
+
|
|
3262
|
+
// Legacy `process.binding('util')` for Node.js < 10.
|
|
3263
|
+
return freeProcess && freeProcess.binding && freeProcess.binding('util');
|
|
3264
|
+
} catch (e) {}
|
|
3265
|
+
}());
|
|
3266
|
+
|
|
3267
|
+
/** `Object#toString` result references. */
|
|
3268
|
+
var dateTag = '[object Date]';
|
|
3269
|
+
|
|
3270
|
+
/**
|
|
3271
|
+
* The base implementation of `_.isDate` without Node.js optimizations.
|
|
3272
|
+
*
|
|
3273
|
+
* @private
|
|
3274
|
+
* @param {*} value The value to check.
|
|
3275
|
+
* @returns {boolean} Returns `true` if `value` is a date object, else `false`.
|
|
3276
|
+
*/
|
|
3277
|
+
function baseIsDate(value) {
|
|
3278
|
+
return isObjectLike(value) && baseGetTag(value) == dateTag;
|
|
3279
|
+
}
|
|
3280
|
+
|
|
3281
|
+
/* Node.js helper references. */
|
|
3282
|
+
var nodeIsDate = nodeUtil && nodeUtil.isDate;
|
|
3283
|
+
|
|
3284
|
+
/**
|
|
3285
|
+
* Checks if `value` is classified as a `Date` object.
|
|
3286
|
+
*
|
|
3287
|
+
* @static
|
|
3288
|
+
* @memberOf _
|
|
3289
|
+
* @since 0.1.0
|
|
3290
|
+
* @category Lang
|
|
3291
|
+
* @param {*} value The value to check.
|
|
3292
|
+
* @returns {boolean} Returns `true` if `value` is a date object, else `false`.
|
|
3293
|
+
* @example
|
|
3294
|
+
*
|
|
3295
|
+
* _.isDate(new Date);
|
|
3296
|
+
* // => true
|
|
3297
|
+
*
|
|
3298
|
+
* _.isDate('Mon April 23 2012');
|
|
3299
|
+
* // => false
|
|
3300
|
+
*/
|
|
3301
|
+
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
|
|
3310
3302
|
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
}
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3303
|
+
/** `Object#toString` result references. */
|
|
3304
|
+
var numberTag = '[object Number]';
|
|
3305
|
+
|
|
3306
|
+
/**
|
|
3307
|
+
* Checks if `value` is classified as a `Number` primitive or object.
|
|
3308
|
+
*
|
|
3309
|
+
* **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
|
|
3310
|
+
* classified as numbers, use the `_.isFinite` method.
|
|
3311
|
+
*
|
|
3312
|
+
* @static
|
|
3313
|
+
* @memberOf _
|
|
3314
|
+
* @since 0.1.0
|
|
3315
|
+
* @category Lang
|
|
3316
|
+
* @param {*} value The value to check.
|
|
3317
|
+
* @returns {boolean} Returns `true` if `value` is a number, else `false`.
|
|
3318
|
+
* @example
|
|
3319
|
+
*
|
|
3320
|
+
* _.isNumber(3);
|
|
3321
|
+
* // => true
|
|
3322
|
+
*
|
|
3323
|
+
* _.isNumber(Number.MIN_VALUE);
|
|
3324
|
+
* // => true
|
|
3325
|
+
*
|
|
3326
|
+
* _.isNumber(Infinity);
|
|
3327
|
+
* // => true
|
|
3328
|
+
*
|
|
3329
|
+
* _.isNumber('3');
|
|
3330
|
+
* // => false
|
|
3331
|
+
*/
|
|
3332
|
+
function isNumber(value) {
|
|
3333
|
+
return typeof value == 'number' ||
|
|
3334
|
+
(isObjectLike(value) && baseGetTag(value) == numberTag);
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
const SECRET_KEY = "THIS_IS_SECRET";
|
|
3338
|
+
function remove(key, option) {
|
|
3339
|
+
const { instance = localStorage } = option || {};
|
|
3340
|
+
instance.removeItem(key);
|
|
3341
|
+
}
|
|
3342
|
+
function set(key, value, option) {
|
|
3343
|
+
const { expires, encrypt, secret, instance = localStorage } = option || {};
|
|
3344
|
+
let type = "undefined";
|
|
3345
|
+
isNumber(expires) && (type = "number");
|
|
3346
|
+
isDate(expires) && (type = "date");
|
|
3347
|
+
const createAt = (/* @__PURE__ */ new Date()).getTime();
|
|
3348
|
+
const val = encrypt ? AES.encrypt(JSON.stringify(value), secret || SECRET_KEY).toString() : value;
|
|
3349
|
+
const item = {
|
|
3350
|
+
val,
|
|
3351
|
+
type,
|
|
3352
|
+
createAt,
|
|
3353
|
+
encrypt: !!encrypt
|
|
3354
|
+
};
|
|
3355
|
+
const handle = {
|
|
3356
|
+
date: () => {
|
|
3357
|
+
item.expires = new Date(expires).getTime();
|
|
3358
|
+
},
|
|
3359
|
+
number: () => {
|
|
3360
|
+
item.expires = expires ? +expires : 99999;
|
|
3361
|
+
}
|
|
3362
|
+
};
|
|
3363
|
+
handle[type] && handle[type]();
|
|
3364
|
+
instance.setItem(key, JSON.stringify(item));
|
|
3365
|
+
}
|
|
3366
|
+
function get(key, option) {
|
|
3367
|
+
const { secret, instance = localStorage } = option || {};
|
|
3368
|
+
const val = instance.getItem(key);
|
|
3369
|
+
if (val === null) {
|
|
3370
|
+
return void 0;
|
|
3371
|
+
}
|
|
3372
|
+
const item = JSON.parse(val);
|
|
3373
|
+
let result;
|
|
3374
|
+
const handle = {
|
|
3375
|
+
date() {
|
|
3376
|
+
if (/* @__PURE__ */ new Date() > new Date(item.expires)) {
|
|
3377
|
+
remove(key);
|
|
3378
|
+
result = void 0;
|
|
3379
|
+
} else {
|
|
3380
|
+
result = item.val;
|
|
3381
|
+
}
|
|
3382
|
+
},
|
|
3383
|
+
number() {
|
|
3384
|
+
const ss = ((/* @__PURE__ */ new Date()).getTime() - item.createAt) / 1e3;
|
|
3385
|
+
if (ss > +item.expires) {
|
|
3386
|
+
remove(key);
|
|
3387
|
+
result = void 0;
|
|
3388
|
+
} else {
|
|
3389
|
+
result = item.val;
|
|
3390
|
+
}
|
|
3391
|
+
},
|
|
3392
|
+
undefined() {
|
|
3393
|
+
result = item.val;
|
|
3394
|
+
}
|
|
3395
|
+
};
|
|
3396
|
+
handle[item.type] && handle[item.type]();
|
|
3397
|
+
if (!result) {
|
|
3398
|
+
return void 0;
|
|
3399
|
+
}
|
|
3400
|
+
try {
|
|
3401
|
+
result = item.encrypt ? JSON.parse(AES.decrypt(result, secret || SECRET_KEY).toString(encUtf8)) : result;
|
|
3402
|
+
} catch (err) {
|
|
3403
|
+
console.warn(err);
|
|
3404
|
+
result = void 0;
|
|
3405
|
+
}
|
|
3406
|
+
return result;
|
|
3407
|
+
}
|
|
3408
|
+
function info() {
|
|
3409
|
+
const count = (instance) => {
|
|
3410
|
+
let size = 0;
|
|
3411
|
+
for (const item in instance) {
|
|
3412
|
+
if (Object.prototype.hasOwnProperty.call(instance, item)) {
|
|
3413
|
+
size += instance.getItem(item)?.length || 0;
|
|
3414
|
+
}
|
|
3415
|
+
}
|
|
3416
|
+
return `${(size / 1024).toFixed(2)} KB`;
|
|
3417
|
+
};
|
|
3418
|
+
const remainingSpace = (storage = localStorage) => new Promise((resolve) => {
|
|
3419
|
+
const STORAGE_TEST_KEY = "test-storage-space";
|
|
3420
|
+
let test = "0123456789";
|
|
3421
|
+
do {
|
|
3422
|
+
test += test;
|
|
3423
|
+
} while (test.length < 10240);
|
|
3424
|
+
let sum = test;
|
|
3425
|
+
const timer = setInterval(() => {
|
|
3426
|
+
sum += test;
|
|
3427
|
+
try {
|
|
3428
|
+
storage.removeItem(STORAGE_TEST_KEY);
|
|
3429
|
+
storage.setItem(STORAGE_TEST_KEY, sum);
|
|
3430
|
+
} catch {
|
|
3431
|
+
resolve(`${sum.length / 1024} KB`);
|
|
3432
|
+
clearInterval(timer);
|
|
3433
|
+
}
|
|
3434
|
+
}, 0);
|
|
3435
|
+
});
|
|
3436
|
+
return {
|
|
3437
|
+
sessionSpace: count(sessionStorage),
|
|
3438
|
+
localSpace: count(localStorage),
|
|
3439
|
+
remainingSpace
|
|
3440
|
+
};
|
|
3441
|
+
}
|
|
3442
|
+
const index = {
|
|
3443
|
+
set,
|
|
3444
|
+
get,
|
|
3445
|
+
remove,
|
|
3446
|
+
info
|
|
3418
3447
|
};
|
|
3419
3448
|
|
|
3420
|
-
export {
|
|
3449
|
+
export { index as a, index$1 as i };
|