@gkd-kit/inspect 0.0.1701618945540 → 0.0.1701761676275

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 (50) hide show
  1. package/dist/404.html +7 -7
  2. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-d948deff.js +1388 -0
  3. package/dist/assets/DevicePage-fa8bcfbf.js +457 -0
  4. package/dist/assets/HomePage-e4a77c59.js +400 -0
  5. package/dist/assets/ImportPage-32019896.js +87 -0
  6. package/dist/assets/SnapshotPage-430959f6.js +3628 -0
  7. package/dist/assets/_404Page-e1f46b50.js +30 -0
  8. package/dist/assets/import-db3ec019.js +288 -0
  9. package/dist/assets/index-9eef18bb.css +360 -0
  10. package/dist/assets/index-b6ecc2e7.js +9780 -0
  11. package/dist/assets/index-df0b30b5.js +21365 -0
  12. package/dist/assets/jszip.min-9024b065.js +2651 -0
  13. package/dist/assets/node-8fda318c.js +7817 -0
  14. package/dist/assets/polyfills-82a76ef1.js +11381 -0
  15. package/dist/assets/storage-71d9086d.js +4479 -0
  16. package/dist/assets/table-9941a21f.js +8763 -0
  17. package/dist/index.html +7 -7
  18. package/package.json +25 -26
  19. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-e0e6453b.js +0 -10
  20. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-e0e6453b.js.map +0 -1
  21. package/dist/assets/DevicePage-6d350a54.js +0 -4
  22. package/dist/assets/DevicePage-6d350a54.js.map +0 -1
  23. package/dist/assets/HomePage-f6150882.js +0 -10
  24. package/dist/assets/HomePage-f6150882.js.map +0 -1
  25. package/dist/assets/ImportPage-e1fd5e19.js +0 -2
  26. package/dist/assets/ImportPage-e1fd5e19.js.map +0 -1
  27. package/dist/assets/SnapshotPage-49b5182f.css +0 -1
  28. package/dist/assets/SnapshotPage-57332573.js +0 -241
  29. package/dist/assets/SnapshotPage-57332573.js.map +0 -1
  30. package/dist/assets/_404Page-0de639dc.js +0 -2
  31. package/dist/assets/_404Page-0de639dc.js.map +0 -1
  32. package/dist/assets/_404Page-2ece9679.css +0 -1
  33. package/dist/assets/_plugin-vue_export-helper-c27b6911.js +0 -2
  34. package/dist/assets/_plugin-vue_export-helper-c27b6911.js.map +0 -1
  35. package/dist/assets/import-ad987535.js +0 -2
  36. package/dist/assets/import-ad987535.js.map +0 -1
  37. package/dist/assets/index-2cec9166.js +0 -17
  38. package/dist/assets/index-2cec9166.js.map +0 -1
  39. package/dist/assets/index-5093d345.css +0 -1
  40. package/dist/assets/index-d459a9d6.js +0 -558
  41. package/dist/assets/index-d459a9d6.js.map +0 -1
  42. package/dist/assets/jszip.min-3b5196b7.js +0 -13
  43. package/dist/assets/jszip.min-3b5196b7.js.map +0 -1
  44. package/dist/assets/node-f710d8d6.js +0 -731
  45. package/dist/assets/node-f710d8d6.js.map +0 -1
  46. package/dist/assets/polyfills-f223ca2c.js +0 -1
  47. package/dist/assets/storage-79dd328c.js +0 -330
  48. package/dist/assets/storage-79dd328c.js.map +0 -1
  49. package/dist/assets/table-a8d8181f.js +0 -958
  50. package/dist/assets/table-a8d8181f.js.map +0 -1
@@ -0,0 +1,4479 @@
1
+ var __accessCheck = (obj, member, msg) => {
2
+ if (!member.has(obj))
3
+ throw TypeError("Cannot " + msg);
4
+ };
5
+ var __privateGet = (obj, member, getter) => {
6
+ __accessCheck(obj, member, "read from private field");
7
+ return getter ? getter.call(obj) : member.get(obj);
8
+ };
9
+ var __privateAdd = (obj, member, value) => {
10
+ if (member.has(obj))
11
+ throw TypeError("Cannot add the same private member more than once");
12
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
+ };
14
+ var __privateSet = (obj, member, value, setter) => {
15
+ __accessCheck(obj, member, "write to private field");
16
+ setter ? setter.call(obj, value) : member.set(obj, value);
17
+ return value;
18
+ };
19
+ var __privateWrapper = (obj, member, setter, getter) => ({
20
+ set _(value) {
21
+ __privateSet(obj, member, value, setter);
22
+ },
23
+ get _() {
24
+ return __privateGet(obj, member, getter);
25
+ }
26
+ });
27
+ var _head, _tail, _size;
28
+ import { y as c, bP as commonVariables$1, bQ as dialogProps, d as defineComponent, A as ref, n as h, bR as NDialog, aI as keep, bS as dialogPropKeys, N as NModal, C as provide, bT as dialogApiInjectionKey, bU as useClicked, bV as useClickPosition, bW as dialogProviderInjectionKey, bX as dialogReactiveListInjectionKey, F as Fragment, O as createId, r as reactive, Q as inject, S as throwError, X as createTheme, p as commonLight, Y as scrollbarLight, G as createInjectionKey, q as cB, bY as fadeInTransition, v as cM, z as useConfig, c as computed, B as useTheme, E as useThemeClass, K as withDirectives, L as vShow, aA as Transition, ae as nextTick, aK as isMounted, ak as Teleport, x as cE, a9 as iconSwitchTransition, D as useRtl, a2 as NIconSwitchTransition, a4 as render, aE as NBaseClose, a1 as createKey, a3 as NBaseLoading, U as NBaseIcon, bZ as InfoIcon, b_ as SuccessIcon, b$ as WarningIcon, c0 as ErrorIcon, a6 as onMounted, M as NFadeInExpandTransition, w as watchEffect, aD as NScrollbar, aH as keysOf, aa as getMargin, c1 as createApp, a5 as isBrowser, u as unref, c2 as NConfigProvider, aT as warn, c3 as router, ap as store, e as watch, bO as toRaw } from "./index-df0b30b5.js";
29
+ function omit(object, keys = [], rest) {
30
+ const omitedObject = {};
31
+ const originalKeys = Object.getOwnPropertyNames(object);
32
+ originalKeys.forEach((originalKey) => {
33
+ if (!keys.includes(originalKey)) {
34
+ omitedObject[originalKey] = object[originalKey];
35
+ }
36
+ });
37
+ return Object.assign(omitedObject, rest);
38
+ }
39
+ const {
40
+ cubicBezierEaseInOut,
41
+ cubicBezierEaseOut,
42
+ cubicBezierEaseIn
43
+ } = commonVariables$1;
44
+ function fadeInHeightExpandTransition({
45
+ overflow = "hidden",
46
+ duration = ".3s",
47
+ originalTransition = "",
48
+ leavingDelay = "0s",
49
+ foldPadding = false,
50
+ enterToProps = void 0,
51
+ leaveToProps = void 0,
52
+ reverse = false
53
+ } = {}) {
54
+ const enterClass = reverse ? "leave" : "enter";
55
+ const leaveClass = reverse ? "enter" : "leave";
56
+ return [c(`&.fade-in-height-expand-transition-${leaveClass}-from,
57
+ &.fade-in-height-expand-transition-${enterClass}-to`, Object.assign(Object.assign({}, enterToProps), {
58
+ opacity: 1
59
+ })), c(`&.fade-in-height-expand-transition-${leaveClass}-to,
60
+ &.fade-in-height-expand-transition-${enterClass}-from`, Object.assign(Object.assign({}, leaveToProps), {
61
+ opacity: 0,
62
+ marginTop: "0 !important",
63
+ marginBottom: "0 !important",
64
+ paddingTop: foldPadding ? "0 !important" : void 0,
65
+ paddingBottom: foldPadding ? "0 !important" : void 0
66
+ })), c(`&.fade-in-height-expand-transition-${leaveClass}-active`, `
67
+ overflow: ${overflow};
68
+ transition:
69
+ max-height ${duration} ${cubicBezierEaseInOut} ${leavingDelay},
70
+ opacity ${duration} ${cubicBezierEaseOut} ${leavingDelay},
71
+ margin-top ${duration} ${cubicBezierEaseInOut} ${leavingDelay},
72
+ margin-bottom ${duration} ${cubicBezierEaseInOut} ${leavingDelay},
73
+ padding-top ${duration} ${cubicBezierEaseInOut} ${leavingDelay},
74
+ padding-bottom ${duration} ${cubicBezierEaseInOut} ${leavingDelay}
75
+ ${originalTransition ? "," + originalTransition : ""}
76
+ `), c(`&.fade-in-height-expand-transition-${enterClass}-active`, `
77
+ overflow: ${overflow};
78
+ transition:
79
+ max-height ${duration} ${cubicBezierEaseInOut},
80
+ opacity ${duration} ${cubicBezierEaseIn},
81
+ margin-top ${duration} ${cubicBezierEaseInOut},
82
+ margin-bottom ${duration} ${cubicBezierEaseInOut},
83
+ padding-top ${duration} ${cubicBezierEaseInOut},
84
+ padding-bottom ${duration} ${cubicBezierEaseInOut}
85
+ ${originalTransition ? "," + originalTransition : ""}
86
+ `)];
87
+ }
88
+ var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
89
+ function getDefaultExportFromCjs(x) {
90
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
91
+ }
92
+ const exposedDialogEnvProps = Object.assign(Object.assign({}, dialogProps), { onAfterEnter: Function, onAfterLeave: Function, transformOrigin: String, blockScroll: { type: Boolean, default: true }, closeOnEsc: { type: Boolean, default: true }, onEsc: Function, autoFocus: {
93
+ type: Boolean,
94
+ default: true
95
+ }, internalStyle: [String, Object], maskClosable: {
96
+ type: Boolean,
97
+ default: true
98
+ }, onPositiveClick: Function, onNegativeClick: Function, onClose: Function, onMaskClick: Function });
99
+ const NDialogEnvironment = defineComponent({
100
+ name: "DialogEnvironment",
101
+ props: Object.assign(Object.assign({}, exposedDialogEnvProps), {
102
+ internalKey: {
103
+ type: String,
104
+ required: true
105
+ },
106
+ to: [String, Object],
107
+ // private
108
+ onInternalAfterLeave: {
109
+ type: Function,
110
+ required: true
111
+ }
112
+ }),
113
+ setup(props) {
114
+ const showRef = ref(true);
115
+ function handleAfterLeave() {
116
+ const { onInternalAfterLeave, internalKey, onAfterLeave } = props;
117
+ if (onInternalAfterLeave)
118
+ onInternalAfterLeave(internalKey);
119
+ if (onAfterLeave)
120
+ onAfterLeave();
121
+ }
122
+ function handlePositiveClick(e) {
123
+ const { onPositiveClick } = props;
124
+ if (onPositiveClick) {
125
+ void Promise.resolve(onPositiveClick(e)).then((result) => {
126
+ if (result === false)
127
+ return;
128
+ hide();
129
+ });
130
+ } else {
131
+ hide();
132
+ }
133
+ }
134
+ function handleNegativeClick(e) {
135
+ const { onNegativeClick } = props;
136
+ if (onNegativeClick) {
137
+ void Promise.resolve(onNegativeClick(e)).then((result) => {
138
+ if (result === false)
139
+ return;
140
+ hide();
141
+ });
142
+ } else {
143
+ hide();
144
+ }
145
+ }
146
+ function handleCloseClick() {
147
+ const { onClose } = props;
148
+ if (onClose) {
149
+ void Promise.resolve(onClose()).then((result) => {
150
+ if (result === false)
151
+ return;
152
+ hide();
153
+ });
154
+ } else {
155
+ hide();
156
+ }
157
+ }
158
+ function handleMaskClick(e) {
159
+ const { onMaskClick, maskClosable } = props;
160
+ if (onMaskClick) {
161
+ onMaskClick(e);
162
+ maskClosable && hide();
163
+ }
164
+ }
165
+ function handleEsc() {
166
+ const { onEsc } = props;
167
+ if (onEsc) {
168
+ onEsc();
169
+ }
170
+ }
171
+ function hide() {
172
+ showRef.value = false;
173
+ }
174
+ function handleUpdateShow(value) {
175
+ showRef.value = value;
176
+ }
177
+ return {
178
+ show: showRef,
179
+ hide,
180
+ handleUpdateShow,
181
+ handleAfterLeave,
182
+ handleCloseClick,
183
+ handleNegativeClick,
184
+ handlePositiveClick,
185
+ handleMaskClick,
186
+ handleEsc
187
+ };
188
+ },
189
+ render() {
190
+ const { handlePositiveClick, handleUpdateShow, handleNegativeClick, handleCloseClick, handleAfterLeave, handleMaskClick, handleEsc, to, maskClosable, show } = this;
191
+ return h(NModal, { show, onUpdateShow: handleUpdateShow, onMaskClick: handleMaskClick, onEsc: handleEsc, to, maskClosable, onAfterEnter: this.onAfterEnter, onAfterLeave: handleAfterLeave, closeOnEsc: this.closeOnEsc, blockScroll: this.blockScroll, autoFocus: this.autoFocus, transformOrigin: this.transformOrigin, internalAppear: true, internalDialog: true }, {
192
+ default: () => h(NDialog, Object.assign({}, keep(this.$props, dialogPropKeys), { style: this.internalStyle, onClose: handleCloseClick, onNegativeClick: handleNegativeClick, onPositiveClick: handlePositiveClick }))
193
+ });
194
+ }
195
+ });
196
+ const dialogProviderProps = {
197
+ injectionKey: String,
198
+ to: [String, Object]
199
+ };
200
+ const NDialogProvider = defineComponent({
201
+ name: "DialogProvider",
202
+ props: dialogProviderProps,
203
+ setup() {
204
+ const dialogListRef = ref([]);
205
+ const dialogInstRefs = {};
206
+ function create(options = {}) {
207
+ const key = createId();
208
+ const dialogReactive = reactive(Object.assign(Object.assign({}, options), { key, destroy: () => {
209
+ dialogInstRefs[`n-dialog-${key}`].hide();
210
+ } }));
211
+ dialogListRef.value.push(dialogReactive);
212
+ return dialogReactive;
213
+ }
214
+ const typedApi = ["info", "success", "warning", "error"].map((type) => (options) => {
215
+ return create(Object.assign(Object.assign({}, options), { type }));
216
+ });
217
+ function handleAfterLeave(key) {
218
+ const { value: dialogList } = dialogListRef;
219
+ dialogList.splice(dialogList.findIndex((dialog2) => dialog2.key === key), 1);
220
+ }
221
+ function destroyAll() {
222
+ Object.values(dialogInstRefs).forEach((dialogInstRef) => {
223
+ dialogInstRef.hide();
224
+ });
225
+ }
226
+ const api = {
227
+ create,
228
+ destroyAll,
229
+ info: typedApi[0],
230
+ success: typedApi[1],
231
+ warning: typedApi[2],
232
+ error: typedApi[3]
233
+ };
234
+ provide(dialogApiInjectionKey, api);
235
+ provide(dialogProviderInjectionKey, {
236
+ clickedRef: useClicked(64),
237
+ clickPositionRef: useClickPosition()
238
+ });
239
+ provide(dialogReactiveListInjectionKey, dialogListRef);
240
+ return Object.assign(Object.assign({}, api), {
241
+ dialogList: dialogListRef,
242
+ dialogInstRefs,
243
+ handleAfterLeave
244
+ });
245
+ },
246
+ render() {
247
+ var _a, _b;
248
+ return h(Fragment, null, [
249
+ this.dialogList.map((dialog2) => h(NDialogEnvironment, omit(dialog2, ["destroy", "style"], {
250
+ internalStyle: dialog2.style,
251
+ to: this.to,
252
+ ref: (inst) => {
253
+ if (inst === null) {
254
+ delete this.dialogInstRefs[`n-dialog-${dialog2.key}`];
255
+ } else {
256
+ this.dialogInstRefs[`n-dialog-${dialog2.key}`] = inst;
257
+ }
258
+ },
259
+ internalKey: dialog2.key,
260
+ onInternalAfterLeave: this.handleAfterLeave
261
+ }))),
262
+ (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a)
263
+ ]);
264
+ }
265
+ });
266
+ function useDialog() {
267
+ const dialog2 = inject(dialogApiInjectionKey, null);
268
+ if (dialog2 === null) {
269
+ throwError("use-dialog", "No outer <n-dialog-provider /> founded.");
270
+ }
271
+ return dialog2;
272
+ }
273
+ const commonVars = {
274
+ closeMargin: "16px 12px",
275
+ closeSize: "20px",
276
+ closeIconSize: "16px",
277
+ width: "365px",
278
+ padding: "16px",
279
+ titleFontSize: "16px",
280
+ metaFontSize: "12px",
281
+ descriptionFontSize: "12px"
282
+ };
283
+ const self$3 = (vars) => {
284
+ const { textColor2, successColor, infoColor, warningColor, errorColor, popoverColor, closeIconColor, closeIconColorHover, closeIconColorPressed, closeColorHover, closeColorPressed, textColor1, textColor3, borderRadius, fontWeightStrong, boxShadow2, lineHeight, fontSize } = vars;
285
+ return Object.assign(Object.assign({}, commonVars), {
286
+ borderRadius,
287
+ lineHeight,
288
+ fontSize,
289
+ headerFontWeight: fontWeightStrong,
290
+ iconColor: textColor2,
291
+ iconColorSuccess: successColor,
292
+ iconColorInfo: infoColor,
293
+ iconColorWarning: warningColor,
294
+ iconColorError: errorColor,
295
+ color: popoverColor,
296
+ textColor: textColor2,
297
+ closeIconColor,
298
+ closeIconColorHover,
299
+ closeIconColorPressed,
300
+ closeBorderRadius: borderRadius,
301
+ closeColorHover,
302
+ closeColorPressed,
303
+ headerTextColor: textColor1,
304
+ descriptionTextColor: textColor3,
305
+ actionTextColor: textColor2,
306
+ boxShadow: boxShadow2
307
+ });
308
+ };
309
+ const notificationLight = createTheme({
310
+ name: "Notification",
311
+ common: commonLight,
312
+ peers: {
313
+ Scrollbar: scrollbarLight
314
+ },
315
+ self: self$3
316
+ });
317
+ const notificationLight$1 = notificationLight;
318
+ const commonVariables = {
319
+ margin: "0 0 8px 0",
320
+ padding: "10px 20px",
321
+ maxWidth: "720px",
322
+ minWidth: "420px",
323
+ iconMargin: "0 10px 0 0",
324
+ closeMargin: "0 0 0 10px",
325
+ closeSize: "20px",
326
+ closeIconSize: "16px",
327
+ iconSize: "20px",
328
+ fontSize: "14px"
329
+ };
330
+ const self$2 = (vars) => {
331
+ const { textColor2, closeIconColor, closeIconColorHover, closeIconColorPressed, infoColor, successColor, errorColor, warningColor, popoverColor, boxShadow2, primaryColor, lineHeight, borderRadius, closeColorHover, closeColorPressed } = vars;
332
+ return Object.assign(Object.assign({}, commonVariables), {
333
+ closeBorderRadius: borderRadius,
334
+ textColor: textColor2,
335
+ textColorInfo: textColor2,
336
+ textColorSuccess: textColor2,
337
+ textColorError: textColor2,
338
+ textColorWarning: textColor2,
339
+ textColorLoading: textColor2,
340
+ color: popoverColor,
341
+ colorInfo: popoverColor,
342
+ colorSuccess: popoverColor,
343
+ colorError: popoverColor,
344
+ colorWarning: popoverColor,
345
+ colorLoading: popoverColor,
346
+ boxShadow: boxShadow2,
347
+ boxShadowInfo: boxShadow2,
348
+ boxShadowSuccess: boxShadow2,
349
+ boxShadowError: boxShadow2,
350
+ boxShadowWarning: boxShadow2,
351
+ boxShadowLoading: boxShadow2,
352
+ iconColor: textColor2,
353
+ iconColorInfo: infoColor,
354
+ iconColorSuccess: successColor,
355
+ iconColorWarning: warningColor,
356
+ iconColorError: errorColor,
357
+ iconColorLoading: primaryColor,
358
+ closeColorHover,
359
+ closeColorPressed,
360
+ closeIconColor,
361
+ closeIconColorHover,
362
+ closeIconColorPressed,
363
+ closeColorHoverInfo: closeColorHover,
364
+ closeColorPressedInfo: closeColorPressed,
365
+ closeIconColorInfo: closeIconColor,
366
+ closeIconColorHoverInfo: closeIconColorHover,
367
+ closeIconColorPressedInfo: closeIconColorPressed,
368
+ closeColorHoverSuccess: closeColorHover,
369
+ closeColorPressedSuccess: closeColorPressed,
370
+ closeIconColorSuccess: closeIconColor,
371
+ closeIconColorHoverSuccess: closeIconColorHover,
372
+ closeIconColorPressedSuccess: closeIconColorPressed,
373
+ closeColorHoverError: closeColorHover,
374
+ closeColorPressedError: closeColorPressed,
375
+ closeIconColorError: closeIconColor,
376
+ closeIconColorHoverError: closeIconColorHover,
377
+ closeIconColorPressedError: closeIconColorPressed,
378
+ closeColorHoverWarning: closeColorHover,
379
+ closeColorPressedWarning: closeColorPressed,
380
+ closeIconColorWarning: closeIconColor,
381
+ closeIconColorHoverWarning: closeIconColorHover,
382
+ closeIconColorPressedWarning: closeIconColorPressed,
383
+ closeColorHoverLoading: closeColorHover,
384
+ closeColorPressedLoading: closeColorPressed,
385
+ closeIconColorLoading: closeIconColor,
386
+ closeIconColorHoverLoading: closeIconColorHover,
387
+ closeIconColorPressedLoading: closeIconColorPressed,
388
+ loadingColor: primaryColor,
389
+ lineHeight,
390
+ borderRadius
391
+ });
392
+ };
393
+ const messageLight = {
394
+ name: "Message",
395
+ common: commonLight,
396
+ self: self$2
397
+ };
398
+ const messageLight$1 = messageLight;
399
+ const self$1 = (vars) => {
400
+ const { primaryColor, errorColor } = vars;
401
+ return {
402
+ colorError: errorColor,
403
+ colorLoading: primaryColor,
404
+ height: "2px"
405
+ };
406
+ };
407
+ const loadingBarLight = {
408
+ name: "LoadingBar",
409
+ common: commonLight,
410
+ self: self$1
411
+ };
412
+ const loadingBarLight$1 = loadingBarLight;
413
+ const loadingBarProviderInjectionKey = createInjectionKey("n-loading-bar");
414
+ const loadingBarApiInjectionKey = createInjectionKey("n-loading-bar-api");
415
+ const style$2 = cB("loading-bar-container", `
416
+ z-index: 5999;
417
+ position: fixed;
418
+ top: 0;
419
+ left: 0;
420
+ right: 0;
421
+ height: 2px;
422
+ `, [fadeInTransition({
423
+ enterDuration: "0.3s",
424
+ leaveDuration: "0.8s"
425
+ }), cB("loading-bar", `
426
+ width: 100%;
427
+ transition:
428
+ max-width 4s linear,
429
+ background .2s linear;
430
+ height: var(--n-height);
431
+ `, [cM("starting", `
432
+ background: var(--n-color-loading);
433
+ `), cM("finishing", `
434
+ background: var(--n-color-loading);
435
+ transition:
436
+ max-width .2s linear,
437
+ background .2s linear;
438
+ `), cM("error", `
439
+ background: var(--n-color-error);
440
+ transition:
441
+ max-width .2s linear,
442
+ background .2s linear;
443
+ `)])]);
444
+ var __awaiter = globalThis && globalThis.__awaiter || function(thisArg, _arguments, P, generator) {
445
+ function adopt(value) {
446
+ return value instanceof P ? value : new P(function(resolve) {
447
+ resolve(value);
448
+ });
449
+ }
450
+ return new (P || (P = Promise))(function(resolve, reject) {
451
+ function fulfilled(value) {
452
+ try {
453
+ step(generator.next(value));
454
+ } catch (e) {
455
+ reject(e);
456
+ }
457
+ }
458
+ function rejected(value) {
459
+ try {
460
+ step(generator["throw"](value));
461
+ } catch (e) {
462
+ reject(e);
463
+ }
464
+ }
465
+ function step(result) {
466
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
467
+ }
468
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
469
+ });
470
+ };
471
+ function createClassName(status, clsPrefix) {
472
+ return `${clsPrefix}-loading-bar ${clsPrefix}-loading-bar--${status}`;
473
+ }
474
+ const NLoadingBar = defineComponent({
475
+ name: "LoadingBar",
476
+ props: {
477
+ containerStyle: [String, Object]
478
+ },
479
+ setup() {
480
+ const { inlineThemeDisabled } = useConfig();
481
+ const {
482
+ props: providerProps,
483
+ mergedClsPrefixRef
484
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
485
+ } = inject(loadingBarProviderInjectionKey);
486
+ const loadingBarRef = ref(null);
487
+ const enteringRef = ref(false);
488
+ const startedRef = ref(false);
489
+ const loadingRef = ref(false);
490
+ const transitionDisabledRef = ref(false);
491
+ let finishing = false;
492
+ const erroringRef = ref(false);
493
+ const mergedLoadingBarStyle = computed(() => {
494
+ const { loadingBarStyle } = providerProps;
495
+ if (!loadingBarStyle)
496
+ return "";
497
+ return loadingBarStyle[erroringRef.value ? "error" : "loading"];
498
+ });
499
+ function init() {
500
+ return __awaiter(this, void 0, void 0, function* () {
501
+ enteringRef.value = false;
502
+ loadingRef.value = false;
503
+ finishing = false;
504
+ erroringRef.value = false;
505
+ transitionDisabledRef.value = true;
506
+ yield nextTick();
507
+ transitionDisabledRef.value = false;
508
+ });
509
+ }
510
+ function start(fromProgress = 0, toProgress = 80, status = "starting") {
511
+ return __awaiter(this, void 0, void 0, function* () {
512
+ startedRef.value = true;
513
+ yield init();
514
+ if (finishing)
515
+ return;
516
+ loadingRef.value = true;
517
+ yield nextTick();
518
+ const el = loadingBarRef.value;
519
+ if (!el)
520
+ return;
521
+ el.style.maxWidth = `${fromProgress}%`;
522
+ el.style.transition = "none";
523
+ void el.offsetWidth;
524
+ el.className = createClassName(status, mergedClsPrefixRef.value);
525
+ el.style.transition = "";
526
+ el.style.maxWidth = `${toProgress}%`;
527
+ });
528
+ }
529
+ function finish() {
530
+ return __awaiter(this, void 0, void 0, function* () {
531
+ if (finishing || erroringRef.value)
532
+ return;
533
+ if (startedRef.value) {
534
+ yield nextTick();
535
+ }
536
+ finishing = true;
537
+ const el = loadingBarRef.value;
538
+ if (!el)
539
+ return;
540
+ el.className = createClassName("finishing", mergedClsPrefixRef.value);
541
+ el.style.maxWidth = "100%";
542
+ void el.offsetWidth;
543
+ loadingRef.value = false;
544
+ });
545
+ }
546
+ function error() {
547
+ if (finishing || erroringRef.value)
548
+ return;
549
+ if (!loadingRef.value) {
550
+ void start(100, 100, "error").then(() => {
551
+ erroringRef.value = true;
552
+ const el = loadingBarRef.value;
553
+ if (!el)
554
+ return;
555
+ el.className = createClassName("error", mergedClsPrefixRef.value);
556
+ void el.offsetWidth;
557
+ loadingRef.value = false;
558
+ });
559
+ } else {
560
+ erroringRef.value = true;
561
+ const el = loadingBarRef.value;
562
+ if (!el)
563
+ return;
564
+ el.className = createClassName("error", mergedClsPrefixRef.value);
565
+ el.style.maxWidth = "100%";
566
+ void el.offsetWidth;
567
+ loadingRef.value = false;
568
+ }
569
+ }
570
+ function handleEnter() {
571
+ enteringRef.value = true;
572
+ }
573
+ function handleAfterEnter() {
574
+ enteringRef.value = false;
575
+ }
576
+ function handleAfterLeave() {
577
+ return __awaiter(this, void 0, void 0, function* () {
578
+ yield init();
579
+ });
580
+ }
581
+ const themeRef = useTheme("LoadingBar", "-loading-bar", style$2, loadingBarLight$1, providerProps, mergedClsPrefixRef);
582
+ const cssVarsRef = computed(() => {
583
+ const { self: { height, colorError, colorLoading } } = themeRef.value;
584
+ return {
585
+ "--n-height": height,
586
+ "--n-color-loading": colorLoading,
587
+ "--n-color-error": colorError
588
+ };
589
+ });
590
+ const themeClassHandle = inlineThemeDisabled ? useThemeClass("loading-bar", void 0, cssVarsRef, providerProps) : void 0;
591
+ return {
592
+ mergedClsPrefix: mergedClsPrefixRef,
593
+ loadingBarRef,
594
+ started: startedRef,
595
+ loading: loadingRef,
596
+ entering: enteringRef,
597
+ transitionDisabled: transitionDisabledRef,
598
+ start,
599
+ error,
600
+ finish,
601
+ handleEnter,
602
+ handleAfterEnter,
603
+ handleAfterLeave,
604
+ mergedLoadingBarStyle,
605
+ cssVars: inlineThemeDisabled ? void 0 : cssVarsRef,
606
+ themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,
607
+ onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender
608
+ };
609
+ },
610
+ render() {
611
+ if (!this.started)
612
+ return null;
613
+ const { mergedClsPrefix } = this;
614
+ return h(Transition, {
615
+ name: "fade-in-transition",
616
+ appear: true,
617
+ onEnter: this.handleEnter,
618
+ onAfterEnter: this.handleAfterEnter,
619
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
620
+ onAfterLeave: this.handleAfterLeave,
621
+ css: !this.transitionDisabled
622
+ }, {
623
+ default: () => {
624
+ var _a;
625
+ (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);
626
+ return withDirectives(h(
627
+ "div",
628
+ { class: [
629
+ `${mergedClsPrefix}-loading-bar-container`,
630
+ this.themeClass
631
+ ], style: this.containerStyle },
632
+ h("div", { ref: "loadingBarRef", class: [`${mergedClsPrefix}-loading-bar`], style: [
633
+ this.cssVars,
634
+ this.mergedLoadingBarStyle
635
+ ] })
636
+ ), [[vShow, this.loading || !this.loading && this.entering]]);
637
+ }
638
+ });
639
+ }
640
+ });
641
+ const loadingBarProviderProps = Object.assign(Object.assign({}, useTheme.props), { to: {
642
+ type: [String, Object, Boolean],
643
+ default: void 0
644
+ }, containerStyle: [String, Object], loadingBarStyle: {
645
+ type: Object
646
+ } });
647
+ const NLoadingBarProvider = defineComponent({
648
+ name: "LoadingBarProvider",
649
+ props: loadingBarProviderProps,
650
+ setup(props) {
651
+ const isMountedRef = isMounted();
652
+ const loadingBarRef = ref(null);
653
+ const methods = {
654
+ start() {
655
+ var _a;
656
+ if (isMountedRef.value) {
657
+ (_a = loadingBarRef.value) === null || _a === void 0 ? void 0 : _a.start();
658
+ } else {
659
+ void nextTick(() => {
660
+ var _a2;
661
+ (_a2 = loadingBarRef.value) === null || _a2 === void 0 ? void 0 : _a2.start();
662
+ });
663
+ }
664
+ },
665
+ error() {
666
+ var _a;
667
+ if (isMountedRef.value) {
668
+ (_a = loadingBarRef.value) === null || _a === void 0 ? void 0 : _a.error();
669
+ } else {
670
+ void nextTick(() => {
671
+ var _a2;
672
+ (_a2 = loadingBarRef.value) === null || _a2 === void 0 ? void 0 : _a2.error();
673
+ });
674
+ }
675
+ },
676
+ finish() {
677
+ var _a;
678
+ if (isMountedRef.value) {
679
+ (_a = loadingBarRef.value) === null || _a === void 0 ? void 0 : _a.finish();
680
+ } else {
681
+ void nextTick(() => {
682
+ var _a2;
683
+ (_a2 = loadingBarRef.value) === null || _a2 === void 0 ? void 0 : _a2.finish();
684
+ });
685
+ }
686
+ }
687
+ };
688
+ const { mergedClsPrefixRef } = useConfig(props);
689
+ provide(loadingBarApiInjectionKey, methods);
690
+ provide(loadingBarProviderInjectionKey, {
691
+ props,
692
+ mergedClsPrefixRef
693
+ });
694
+ return Object.assign(methods, {
695
+ loadingBarRef
696
+ });
697
+ },
698
+ render() {
699
+ var _a, _b;
700
+ return h(
701
+ Fragment,
702
+ null,
703
+ h(
704
+ Teleport,
705
+ { disabled: this.to === false, to: this.to || "body" },
706
+ h(NLoadingBar, { ref: "loadingBarRef", containerStyle: this.containerStyle })
707
+ ),
708
+ (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a)
709
+ );
710
+ }
711
+ });
712
+ function useLoadingBar() {
713
+ const loadingBar2 = inject(loadingBarApiInjectionKey, null);
714
+ if (loadingBar2 === null) {
715
+ throwError("use-loading-bar", "No outer <n-loading-bar-provider /> founded.");
716
+ }
717
+ return loadingBar2;
718
+ }
719
+ const messageProps = {
720
+ icon: Function,
721
+ type: {
722
+ type: String,
723
+ default: "info"
724
+ },
725
+ content: [String, Number, Function],
726
+ showIcon: {
727
+ type: Boolean,
728
+ default: true
729
+ },
730
+ closable: Boolean,
731
+ keepAliveOnHover: Boolean,
732
+ onClose: Function,
733
+ onMouseenter: Function,
734
+ onMouseleave: Function
735
+ };
736
+ const messageApiInjectionKey = createInjectionKey("n-message-api");
737
+ const messageProviderInjectionKey = createInjectionKey("n-message-provider");
738
+ const style$1 = c([cB("message-wrapper", `
739
+ margin: var(--n-margin);
740
+ z-index: 0;
741
+ transform-origin: top center;
742
+ display: flex;
743
+ `, [fadeInHeightExpandTransition({
744
+ overflow: "visible",
745
+ originalTransition: "transform .3s var(--n-bezier)",
746
+ enterToProps: {
747
+ transform: "scale(1)"
748
+ },
749
+ leaveToProps: {
750
+ transform: "scale(0.85)"
751
+ }
752
+ })]), cB("message", `
753
+ box-sizing: border-box;
754
+ display: flex;
755
+ align-items: center;
756
+ transition:
757
+ color .3s var(--n-bezier),
758
+ box-shadow .3s var(--n-bezier),
759
+ background-color .3s var(--n-bezier),
760
+ opacity .3s var(--n-bezier),
761
+ transform .3s var(--n-bezier),
762
+ margin-bottom .3s var(--n-bezier);
763
+ padding: var(--n-padding);
764
+ border-radius: var(--n-border-radius);
765
+ flex-wrap: nowrap;
766
+ overflow: hidden;
767
+ max-width: var(--n-max-width);
768
+ color: var(--n-text-color);
769
+ background-color: var(--n-color);
770
+ box-shadow: var(--n-box-shadow);
771
+ `, [cE("content", `
772
+ display: inline-block;
773
+ line-height: var(--n-line-height);
774
+ font-size: var(--n-font-size);
775
+ `), cE("icon", `
776
+ position: relative;
777
+ margin: var(--n-icon-margin);
778
+ height: var(--n-icon-size);
779
+ width: var(--n-icon-size);
780
+ font-size: var(--n-icon-size);
781
+ flex-shrink: 0;
782
+ `, [["default", "info", "success", "warning", "error", "loading"].map((type) => cM(`${type}-type`, [c("> *", `
783
+ color: var(--n-icon-color-${type});
784
+ transition: color .3s var(--n-bezier);
785
+ `)])), c("> *", `
786
+ position: absolute;
787
+ left: 0;
788
+ top: 0;
789
+ right: 0;
790
+ bottom: 0;
791
+ `, [iconSwitchTransition()])]), cE("close", `
792
+ margin: var(--n-close-margin);
793
+ transition:
794
+ background-color .3s var(--n-bezier),
795
+ color .3s var(--n-bezier);
796
+ flex-shrink: 0;
797
+ `, [c("&:hover", `
798
+ color: var(--n-close-icon-color-hover);
799
+ `), c("&:active", `
800
+ color: var(--n-close-icon-color-pressed);
801
+ `)])]), cB("message-container", `
802
+ z-index: 6000;
803
+ position: fixed;
804
+ height: 0;
805
+ overflow: visible;
806
+ display: flex;
807
+ flex-direction: column;
808
+ align-items: center;
809
+ `, [cM("top", `
810
+ top: 12px;
811
+ left: 0;
812
+ right: 0;
813
+ `), cM("top-left", `
814
+ top: 12px;
815
+ left: 12px;
816
+ right: 0;
817
+ align-items: flex-start;
818
+ `), cM("top-right", `
819
+ top: 12px;
820
+ left: 0;
821
+ right: 12px;
822
+ align-items: flex-end;
823
+ `), cM("bottom", `
824
+ bottom: 4px;
825
+ left: 0;
826
+ right: 0;
827
+ justify-content: flex-end;
828
+ `), cM("bottom-left", `
829
+ bottom: 4px;
830
+ left: 12px;
831
+ right: 0;
832
+ justify-content: flex-end;
833
+ align-items: flex-start;
834
+ `), cM("bottom-right", `
835
+ bottom: 4px;
836
+ left: 0;
837
+ right: 12px;
838
+ justify-content: flex-end;
839
+ align-items: flex-end;
840
+ `)])]);
841
+ const iconRenderMap$1 = {
842
+ info: () => h(InfoIcon, null),
843
+ success: () => h(SuccessIcon, null),
844
+ warning: () => h(WarningIcon, null),
845
+ error: () => h(ErrorIcon, null),
846
+ default: () => null
847
+ };
848
+ const NMessage = defineComponent({
849
+ name: "Message",
850
+ props: Object.assign(Object.assign({}, messageProps), { render: Function }),
851
+ setup(props) {
852
+ const { inlineThemeDisabled, mergedRtlRef } = useConfig(props);
853
+ const {
854
+ props: messageProviderProps2,
855
+ mergedClsPrefixRef
856
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
857
+ } = inject(messageProviderInjectionKey);
858
+ const rtlEnabledRef = useRtl("Message", mergedRtlRef, mergedClsPrefixRef);
859
+ const themeRef = useTheme("Message", "-message", style$1, messageLight$1, messageProviderProps2, mergedClsPrefixRef);
860
+ const cssVarsRef = computed(() => {
861
+ const { type } = props;
862
+ const { common: { cubicBezierEaseInOut: cubicBezierEaseInOut2 }, self: { padding, margin, maxWidth, iconMargin, closeMargin, closeSize, iconSize, fontSize, lineHeight, borderRadius, iconColorInfo, iconColorSuccess, iconColorWarning, iconColorError, iconColorLoading, closeIconSize, closeBorderRadius, [createKey("textColor", type)]: textColor, [createKey("boxShadow", type)]: boxShadow, [createKey("color", type)]: color, [createKey("closeColorHover", type)]: closeColorHover, [createKey("closeColorPressed", type)]: closeColorPressed, [createKey("closeIconColor", type)]: closeIconColor, [createKey("closeIconColorPressed", type)]: closeIconColorPressed, [createKey("closeIconColorHover", type)]: closeIconColorHover } } = themeRef.value;
863
+ return {
864
+ "--n-bezier": cubicBezierEaseInOut2,
865
+ "--n-margin": margin,
866
+ "--n-padding": padding,
867
+ "--n-max-width": maxWidth,
868
+ "--n-font-size": fontSize,
869
+ "--n-icon-margin": iconMargin,
870
+ "--n-icon-size": iconSize,
871
+ "--n-close-icon-size": closeIconSize,
872
+ "--n-close-border-radius": closeBorderRadius,
873
+ "--n-close-size": closeSize,
874
+ "--n-close-margin": closeMargin,
875
+ "--n-text-color": textColor,
876
+ "--n-color": color,
877
+ "--n-box-shadow": boxShadow,
878
+ "--n-icon-color-info": iconColorInfo,
879
+ "--n-icon-color-success": iconColorSuccess,
880
+ "--n-icon-color-warning": iconColorWarning,
881
+ "--n-icon-color-error": iconColorError,
882
+ "--n-icon-color-loading": iconColorLoading,
883
+ "--n-close-color-hover": closeColorHover,
884
+ "--n-close-color-pressed": closeColorPressed,
885
+ "--n-close-icon-color": closeIconColor,
886
+ "--n-close-icon-color-pressed": closeIconColorPressed,
887
+ "--n-close-icon-color-hover": closeIconColorHover,
888
+ "--n-line-height": lineHeight,
889
+ "--n-border-radius": borderRadius
890
+ };
891
+ });
892
+ const themeClassHandle = inlineThemeDisabled ? useThemeClass("message", computed(() => props.type[0]), cssVarsRef, {}) : void 0;
893
+ return {
894
+ mergedClsPrefix: mergedClsPrefixRef,
895
+ rtlEnabled: rtlEnabledRef,
896
+ messageProviderProps: messageProviderProps2,
897
+ handleClose() {
898
+ var _a;
899
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
900
+ },
901
+ cssVars: inlineThemeDisabled ? void 0 : cssVarsRef,
902
+ themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,
903
+ onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender,
904
+ placement: messageProviderProps2.placement
905
+ };
906
+ },
907
+ render() {
908
+ const { render: renderMessage, type, closable, content, mergedClsPrefix, cssVars, themeClass, onRender, icon, handleClose, showIcon } = this;
909
+ onRender === null || onRender === void 0 ? void 0 : onRender();
910
+ let iconNode;
911
+ return h("div", { class: [`${mergedClsPrefix}-message-wrapper`, themeClass], onMouseenter: this.onMouseenter, onMouseleave: this.onMouseleave, style: [
912
+ {
913
+ alignItems: this.placement.startsWith("top") ? "flex-start" : "flex-end"
914
+ },
915
+ cssVars
916
+ ] }, renderMessage ? renderMessage(this.$props) : h(
917
+ "div",
918
+ { class: [
919
+ `${mergedClsPrefix}-message ${mergedClsPrefix}-message--${type}-type`,
920
+ this.rtlEnabled && `${mergedClsPrefix}-message--rtl`
921
+ ] },
922
+ (iconNode = createIconVNode(icon, type, mergedClsPrefix)) && showIcon ? h(
923
+ "div",
924
+ { class: `${mergedClsPrefix}-message__icon ${mergedClsPrefix}-message__icon--${type}-type` },
925
+ h(NIconSwitchTransition, null, {
926
+ default: () => iconNode
927
+ })
928
+ ) : null,
929
+ h("div", { class: `${mergedClsPrefix}-message__content` }, render(content)),
930
+ closable ? h(NBaseClose, { clsPrefix: mergedClsPrefix, class: `${mergedClsPrefix}-message__close`, onClick: handleClose, absolute: true }) : null
931
+ ));
932
+ }
933
+ });
934
+ function createIconVNode(icon, type, clsPrefix) {
935
+ if (typeof icon === "function") {
936
+ return icon();
937
+ } else {
938
+ const innerIcon = type === "loading" ? h(NBaseLoading, { clsPrefix, strokeWidth: 24, scale: 0.85 }) : iconRenderMap$1[type]();
939
+ if (!innerIcon)
940
+ return null;
941
+ return h(NBaseIcon, { clsPrefix, key: type }, {
942
+ default: () => innerIcon
943
+ });
944
+ }
945
+ }
946
+ const MessageEnvironment = defineComponent({
947
+ name: "MessageEnvironment",
948
+ props: Object.assign(Object.assign({}, messageProps), {
949
+ duration: {
950
+ type: Number,
951
+ default: 3e3
952
+ },
953
+ onAfterLeave: Function,
954
+ onLeave: Function,
955
+ internalKey: {
956
+ type: String,
957
+ required: true
958
+ },
959
+ // private
960
+ onInternalAfterLeave: Function,
961
+ // deprecated
962
+ onHide: Function,
963
+ onAfterHide: Function
964
+ }),
965
+ setup(props) {
966
+ let timerId = null;
967
+ const showRef = ref(true);
968
+ onMounted(() => {
969
+ setHideTimeout();
970
+ });
971
+ function setHideTimeout() {
972
+ const { duration } = props;
973
+ if (duration) {
974
+ timerId = window.setTimeout(hide, duration);
975
+ }
976
+ }
977
+ function handleMouseenter(e) {
978
+ if (e.currentTarget !== e.target)
979
+ return;
980
+ if (timerId !== null) {
981
+ window.clearTimeout(timerId);
982
+ timerId = null;
983
+ }
984
+ }
985
+ function handleMouseleave(e) {
986
+ if (e.currentTarget !== e.target)
987
+ return;
988
+ setHideTimeout();
989
+ }
990
+ function hide() {
991
+ const { onHide } = props;
992
+ showRef.value = false;
993
+ if (timerId) {
994
+ window.clearTimeout(timerId);
995
+ timerId = null;
996
+ }
997
+ if (onHide)
998
+ onHide();
999
+ }
1000
+ function handleClose() {
1001
+ const { onClose } = props;
1002
+ if (onClose)
1003
+ onClose();
1004
+ hide();
1005
+ }
1006
+ function handleAfterLeave() {
1007
+ const { onAfterLeave, onInternalAfterLeave, onAfterHide, internalKey } = props;
1008
+ if (onAfterLeave)
1009
+ onAfterLeave();
1010
+ if (onInternalAfterLeave)
1011
+ onInternalAfterLeave(internalKey);
1012
+ if (onAfterHide)
1013
+ onAfterHide();
1014
+ }
1015
+ function deactivate() {
1016
+ hide();
1017
+ }
1018
+ return {
1019
+ show: showRef,
1020
+ hide,
1021
+ handleClose,
1022
+ handleAfterLeave,
1023
+ handleMouseleave,
1024
+ handleMouseenter,
1025
+ deactivate
1026
+ };
1027
+ },
1028
+ render() {
1029
+ return h(NFadeInExpandTransition, { appear: true, onAfterLeave: this.handleAfterLeave, onLeave: this.onLeave }, {
1030
+ default: () => [
1031
+ this.show ? h(NMessage, { content: this.content, type: this.type, icon: this.icon, showIcon: this.showIcon, closable: this.closable, onClose: this.handleClose, onMouseenter: this.keepAliveOnHover ? this.handleMouseenter : void 0, onMouseleave: this.keepAliveOnHover ? this.handleMouseleave : void 0 }) : null
1032
+ ]
1033
+ });
1034
+ }
1035
+ });
1036
+ const messageProviderProps = Object.assign(Object.assign({}, useTheme.props), { to: [String, Object], duration: {
1037
+ type: Number,
1038
+ default: 3e3
1039
+ }, keepAliveOnHover: Boolean, max: Number, placement: {
1040
+ type: String,
1041
+ default: "top"
1042
+ }, closable: Boolean, containerStyle: [String, Object] });
1043
+ const NMessageProvider = defineComponent({
1044
+ name: "MessageProvider",
1045
+ props: messageProviderProps,
1046
+ setup(props) {
1047
+ const { mergedClsPrefixRef } = useConfig(props);
1048
+ const messageListRef = ref([]);
1049
+ const messageRefs = ref({});
1050
+ const api = {
1051
+ create(content, options) {
1052
+ return create(content, Object.assign({ type: "default" }, options));
1053
+ },
1054
+ info(content, options) {
1055
+ return create(content, Object.assign(Object.assign({}, options), { type: "info" }));
1056
+ },
1057
+ success(content, options) {
1058
+ return create(content, Object.assign(Object.assign({}, options), { type: "success" }));
1059
+ },
1060
+ warning(content, options) {
1061
+ return create(content, Object.assign(Object.assign({}, options), { type: "warning" }));
1062
+ },
1063
+ error(content, options) {
1064
+ return create(content, Object.assign(Object.assign({}, options), { type: "error" }));
1065
+ },
1066
+ loading(content, options) {
1067
+ return create(content, Object.assign(Object.assign({}, options), { type: "loading" }));
1068
+ },
1069
+ destroyAll
1070
+ };
1071
+ provide(messageProviderInjectionKey, {
1072
+ props,
1073
+ mergedClsPrefixRef
1074
+ });
1075
+ provide(messageApiInjectionKey, api);
1076
+ function create(content, options) {
1077
+ const key = createId();
1078
+ const messageReactive = reactive(Object.assign(Object.assign({}, options), {
1079
+ content,
1080
+ key,
1081
+ destroy: () => {
1082
+ var _a;
1083
+ (_a = messageRefs.value[key]) === null || _a === void 0 ? void 0 : _a.hide();
1084
+ }
1085
+ }));
1086
+ const { max } = props;
1087
+ if (max && messageListRef.value.length >= max) {
1088
+ messageListRef.value.shift();
1089
+ }
1090
+ messageListRef.value.push(messageReactive);
1091
+ return messageReactive;
1092
+ }
1093
+ function handleAfterLeave(key) {
1094
+ messageListRef.value.splice(messageListRef.value.findIndex((message2) => message2.key === key), 1);
1095
+ delete messageRefs.value[key];
1096
+ }
1097
+ function destroyAll() {
1098
+ Object.values(messageRefs.value).forEach((messageInstRef) => {
1099
+ messageInstRef.hide();
1100
+ });
1101
+ }
1102
+ return Object.assign({
1103
+ mergedClsPrefix: mergedClsPrefixRef,
1104
+ messageRefs,
1105
+ messageList: messageListRef,
1106
+ handleAfterLeave
1107
+ }, api);
1108
+ },
1109
+ render() {
1110
+ var _a, _b, _c;
1111
+ return h(
1112
+ Fragment,
1113
+ null,
1114
+ (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a),
1115
+ this.messageList.length ? h(
1116
+ Teleport,
1117
+ { to: (_c = this.to) !== null && _c !== void 0 ? _c : "body" },
1118
+ h("div", { class: [
1119
+ `${this.mergedClsPrefix}-message-container`,
1120
+ `${this.mergedClsPrefix}-message-container--${this.placement}`
1121
+ ], key: "message-container", style: this.containerStyle }, this.messageList.map((message2) => {
1122
+ return h(MessageEnvironment, Object.assign({ ref: (inst) => {
1123
+ if (inst) {
1124
+ this.messageRefs[message2.key] = inst;
1125
+ }
1126
+ }, internalKey: message2.key, onInternalAfterLeave: this.handleAfterLeave }, omit(message2, ["destroy"], void 0), { duration: message2.duration === void 0 ? this.duration : message2.duration, keepAliveOnHover: message2.keepAliveOnHover === void 0 ? this.keepAliveOnHover : message2.keepAliveOnHover, closable: message2.closable === void 0 ? this.closable : message2.closable }));
1127
+ }))
1128
+ ) : null
1129
+ );
1130
+ }
1131
+ });
1132
+ function useMessage() {
1133
+ const api = inject(messageApiInjectionKey, null);
1134
+ if (api === null) {
1135
+ throwError("use-message", "No outer <n-message-provider /> founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A.");
1136
+ }
1137
+ return api;
1138
+ }
1139
+ const notificationProviderInjectionKey = createInjectionKey("n-notification-provider");
1140
+ const NotificationContainer = defineComponent({
1141
+ name: "NotificationContainer",
1142
+ props: {
1143
+ scrollable: {
1144
+ type: Boolean,
1145
+ required: true
1146
+ },
1147
+ placement: {
1148
+ type: String,
1149
+ required: true
1150
+ }
1151
+ },
1152
+ setup() {
1153
+ const { mergedThemeRef, mergedClsPrefixRef, wipTransitionCountRef } = inject(notificationProviderInjectionKey);
1154
+ const selfRef = ref(null);
1155
+ watchEffect(() => {
1156
+ var _a, _b;
1157
+ if (wipTransitionCountRef.value > 0) {
1158
+ (_a = selfRef === null || selfRef === void 0 ? void 0 : selfRef.value) === null || _a === void 0 ? void 0 : _a.classList.add("transitioning");
1159
+ } else {
1160
+ (_b = selfRef === null || selfRef === void 0 ? void 0 : selfRef.value) === null || _b === void 0 ? void 0 : _b.classList.remove("transitioning");
1161
+ }
1162
+ });
1163
+ return {
1164
+ selfRef,
1165
+ mergedTheme: mergedThemeRef,
1166
+ mergedClsPrefix: mergedClsPrefixRef,
1167
+ transitioning: wipTransitionCountRef
1168
+ };
1169
+ },
1170
+ render() {
1171
+ const { $slots, scrollable, mergedClsPrefix, mergedTheme, placement } = this;
1172
+ return h("div", { ref: "selfRef", class: [
1173
+ `${mergedClsPrefix}-notification-container`,
1174
+ scrollable && `${mergedClsPrefix}-notification-container--scrollable`,
1175
+ `${mergedClsPrefix}-notification-container--${placement}`
1176
+ ] }, scrollable ? h(NScrollbar, { theme: mergedTheme.peers.Scrollbar, themeOverrides: mergedTheme.peerOverrides.Scrollbar, contentStyle: { overflow: "hidden" } }, $slots) : $slots);
1177
+ }
1178
+ });
1179
+ const iconRenderMap = {
1180
+ info: () => h(InfoIcon, null),
1181
+ success: () => h(SuccessIcon, null),
1182
+ warning: () => h(WarningIcon, null),
1183
+ error: () => h(ErrorIcon, null),
1184
+ default: () => null
1185
+ };
1186
+ const notificationProps = {
1187
+ closable: {
1188
+ type: Boolean,
1189
+ default: true
1190
+ },
1191
+ type: {
1192
+ type: String,
1193
+ default: "default"
1194
+ },
1195
+ avatar: Function,
1196
+ title: [String, Function],
1197
+ description: [String, Function],
1198
+ content: [String, Function],
1199
+ meta: [String, Function],
1200
+ action: [String, Function],
1201
+ onClose: {
1202
+ type: Function,
1203
+ required: true
1204
+ },
1205
+ keepAliveOnHover: Boolean,
1206
+ onMouseenter: Function,
1207
+ onMouseleave: Function
1208
+ };
1209
+ const notificationPropKeys = keysOf(notificationProps);
1210
+ const Notification = defineComponent({
1211
+ name: "Notification",
1212
+ props: notificationProps,
1213
+ setup(props) {
1214
+ const {
1215
+ mergedClsPrefixRef,
1216
+ mergedThemeRef,
1217
+ props: providerProps
1218
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1219
+ } = inject(notificationProviderInjectionKey);
1220
+ const { inlineThemeDisabled, mergedRtlRef } = useConfig();
1221
+ const rtlEnabledRef = useRtl("Notification", mergedRtlRef, mergedClsPrefixRef);
1222
+ const cssVarsRef = computed(() => {
1223
+ const { type } = props;
1224
+ const { self: { color, textColor, closeIconColor, closeIconColorHover, closeIconColorPressed, headerTextColor, descriptionTextColor, actionTextColor, borderRadius, headerFontWeight, boxShadow, lineHeight, fontSize, closeMargin, closeSize, width, padding, closeIconSize, closeBorderRadius, closeColorHover, closeColorPressed, titleFontSize, metaFontSize, descriptionFontSize, [createKey("iconColor", type)]: iconColor }, common: { cubicBezierEaseOut: cubicBezierEaseOut2, cubicBezierEaseIn: cubicBezierEaseIn2, cubicBezierEaseInOut: cubicBezierEaseInOut2 } } = mergedThemeRef.value;
1225
+ const { left, right, top, bottom } = getMargin(padding);
1226
+ return {
1227
+ "--n-color": color,
1228
+ "--n-font-size": fontSize,
1229
+ "--n-text-color": textColor,
1230
+ "--n-description-text-color": descriptionTextColor,
1231
+ "--n-action-text-color": actionTextColor,
1232
+ "--n-title-text-color": headerTextColor,
1233
+ "--n-title-font-weight": headerFontWeight,
1234
+ "--n-bezier": cubicBezierEaseInOut2,
1235
+ "--n-bezier-ease-out": cubicBezierEaseOut2,
1236
+ "--n-bezier-ease-in": cubicBezierEaseIn2,
1237
+ "--n-border-radius": borderRadius,
1238
+ "--n-box-shadow": boxShadow,
1239
+ "--n-close-border-radius": closeBorderRadius,
1240
+ "--n-close-color-hover": closeColorHover,
1241
+ "--n-close-color-pressed": closeColorPressed,
1242
+ "--n-close-icon-color": closeIconColor,
1243
+ "--n-close-icon-color-hover": closeIconColorHover,
1244
+ "--n-close-icon-color-pressed": closeIconColorPressed,
1245
+ "--n-line-height": lineHeight,
1246
+ "--n-icon-color": iconColor,
1247
+ "--n-close-margin": closeMargin,
1248
+ "--n-close-size": closeSize,
1249
+ "--n-close-icon-size": closeIconSize,
1250
+ "--n-width": width,
1251
+ "--n-padding-left": left,
1252
+ "--n-padding-right": right,
1253
+ "--n-padding-top": top,
1254
+ "--n-padding-bottom": bottom,
1255
+ "--n-title-font-size": titleFontSize,
1256
+ "--n-meta-font-size": metaFontSize,
1257
+ "--n-description-font-size": descriptionFontSize
1258
+ };
1259
+ });
1260
+ const themeClassHandle = inlineThemeDisabled ? useThemeClass("notification", computed(() => props.type[0]), cssVarsRef, providerProps) : void 0;
1261
+ return {
1262
+ mergedClsPrefix: mergedClsPrefixRef,
1263
+ showAvatar: computed(() => {
1264
+ return props.avatar || props.type !== "default";
1265
+ }),
1266
+ handleCloseClick() {
1267
+ props.onClose();
1268
+ },
1269
+ rtlEnabled: rtlEnabledRef,
1270
+ cssVars: inlineThemeDisabled ? void 0 : cssVarsRef,
1271
+ themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,
1272
+ onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender
1273
+ };
1274
+ },
1275
+ render() {
1276
+ var _a;
1277
+ const { mergedClsPrefix } = this;
1278
+ (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);
1279
+ return h(
1280
+ "div",
1281
+ { class: [`${mergedClsPrefix}-notification-wrapper`, this.themeClass], onMouseenter: this.onMouseenter, onMouseleave: this.onMouseleave, style: this.cssVars },
1282
+ h(
1283
+ "div",
1284
+ { class: [
1285
+ `${mergedClsPrefix}-notification`,
1286
+ this.rtlEnabled && `${mergedClsPrefix}-notification--rtl`,
1287
+ this.themeClass,
1288
+ {
1289
+ [`${mergedClsPrefix}-notification--closable`]: this.closable,
1290
+ [`${mergedClsPrefix}-notification--show-avatar`]: this.showAvatar
1291
+ }
1292
+ ], style: this.cssVars },
1293
+ this.showAvatar ? h("div", { class: `${mergedClsPrefix}-notification__avatar` }, this.avatar ? render(this.avatar) : this.type !== "default" ? h(NBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => iconRenderMap[this.type]() }) : null) : null,
1294
+ this.closable ? h(NBaseClose, { clsPrefix: mergedClsPrefix, class: `${mergedClsPrefix}-notification__close`, onClick: this.handleCloseClick }) : null,
1295
+ h(
1296
+ "div",
1297
+ { ref: "bodyRef", class: `${mergedClsPrefix}-notification-main` },
1298
+ this.title ? h("div", { class: `${mergedClsPrefix}-notification-main__header` }, render(this.title)) : null,
1299
+ this.description ? h("div", { class: `${mergedClsPrefix}-notification-main__description` }, render(this.description)) : null,
1300
+ this.content ? h("pre", { class: `${mergedClsPrefix}-notification-main__content` }, render(this.content)) : null,
1301
+ this.meta || this.action ? h(
1302
+ "div",
1303
+ { class: `${mergedClsPrefix}-notification-main-footer` },
1304
+ this.meta ? h("div", { class: `${mergedClsPrefix}-notification-main-footer__meta` }, render(this.meta)) : null,
1305
+ this.action ? h("div", { class: `${mergedClsPrefix}-notification-main-footer__action` }, render(this.action)) : null
1306
+ ) : null
1307
+ )
1308
+ )
1309
+ );
1310
+ }
1311
+ });
1312
+ const notificationEnvOptions = Object.assign(Object.assign({}, notificationProps), {
1313
+ duration: Number,
1314
+ onClose: Function,
1315
+ onLeave: Function,
1316
+ onAfterEnter: Function,
1317
+ onAfterLeave: Function,
1318
+ /** @deprecated */
1319
+ onHide: Function,
1320
+ /** @deprecated */
1321
+ onAfterShow: Function,
1322
+ /** @deprecated */
1323
+ onAfterHide: Function
1324
+ });
1325
+ const NotificationEnvironment = defineComponent({
1326
+ name: "NotificationEnvironment",
1327
+ props: Object.assign(Object.assign({}, notificationEnvOptions), {
1328
+ // private
1329
+ internalKey: {
1330
+ type: String,
1331
+ required: true
1332
+ },
1333
+ onInternalAfterLeave: {
1334
+ type: Function,
1335
+ required: true
1336
+ }
1337
+ }),
1338
+ setup(props) {
1339
+ const {
1340
+ wipTransitionCountRef
1341
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1342
+ } = inject(notificationProviderInjectionKey);
1343
+ const showRef = ref(true);
1344
+ let timerId = null;
1345
+ function hide() {
1346
+ showRef.value = false;
1347
+ if (timerId) {
1348
+ window.clearTimeout(timerId);
1349
+ }
1350
+ }
1351
+ function handleBeforeEnter(el) {
1352
+ wipTransitionCountRef.value++;
1353
+ void nextTick(() => {
1354
+ el.style.height = `${el.offsetHeight}px`;
1355
+ el.style.maxHeight = "0";
1356
+ el.style.transition = "none";
1357
+ void el.offsetHeight;
1358
+ el.style.transition = "";
1359
+ el.style.maxHeight = el.style.height;
1360
+ });
1361
+ }
1362
+ function handleAfterEnter(el) {
1363
+ wipTransitionCountRef.value--;
1364
+ el.style.height = "";
1365
+ el.style.maxHeight = "";
1366
+ const { onAfterEnter, onAfterShow } = props;
1367
+ if (onAfterEnter)
1368
+ onAfterEnter();
1369
+ if (onAfterShow)
1370
+ onAfterShow();
1371
+ }
1372
+ function handleBeforeLeave(el) {
1373
+ wipTransitionCountRef.value++;
1374
+ el.style.maxHeight = `${el.offsetHeight}px`;
1375
+ el.style.height = `${el.offsetHeight}px`;
1376
+ void el.offsetHeight;
1377
+ }
1378
+ function handleLeave(el) {
1379
+ const { onHide } = props;
1380
+ if (onHide)
1381
+ onHide();
1382
+ el.style.maxHeight = "0";
1383
+ void el.offsetHeight;
1384
+ }
1385
+ function handleAfterLeave() {
1386
+ wipTransitionCountRef.value--;
1387
+ const { onAfterLeave, onInternalAfterLeave, onAfterHide, internalKey } = props;
1388
+ if (onAfterLeave)
1389
+ onAfterLeave();
1390
+ onInternalAfterLeave(internalKey);
1391
+ if (onAfterHide)
1392
+ onAfterHide();
1393
+ }
1394
+ function setHideTimeout() {
1395
+ const { duration } = props;
1396
+ if (duration) {
1397
+ timerId = window.setTimeout(hide, duration);
1398
+ }
1399
+ }
1400
+ function handleMouseenter(e) {
1401
+ if (e.currentTarget !== e.target)
1402
+ return;
1403
+ if (timerId !== null) {
1404
+ window.clearTimeout(timerId);
1405
+ timerId = null;
1406
+ }
1407
+ }
1408
+ function handleMouseleave(e) {
1409
+ if (e.currentTarget !== e.target)
1410
+ return;
1411
+ setHideTimeout();
1412
+ }
1413
+ function handleClose() {
1414
+ const { onClose } = props;
1415
+ if (onClose) {
1416
+ void Promise.resolve(onClose()).then((feedback) => {
1417
+ if (feedback === false)
1418
+ return;
1419
+ hide();
1420
+ });
1421
+ } else {
1422
+ hide();
1423
+ }
1424
+ }
1425
+ onMounted(() => {
1426
+ if (props.duration) {
1427
+ timerId = window.setTimeout(hide, props.duration);
1428
+ }
1429
+ });
1430
+ return {
1431
+ show: showRef,
1432
+ hide,
1433
+ handleClose,
1434
+ handleAfterLeave,
1435
+ handleLeave,
1436
+ handleBeforeLeave,
1437
+ handleAfterEnter,
1438
+ handleBeforeEnter,
1439
+ handleMouseenter,
1440
+ handleMouseleave
1441
+ };
1442
+ },
1443
+ render() {
1444
+ return h(Transition, {
1445
+ name: "notification-transition",
1446
+ appear: true,
1447
+ // convert to any since Element is not compitable with HTMLElement
1448
+ onBeforeEnter: this.handleBeforeEnter,
1449
+ onAfterEnter: this.handleAfterEnter,
1450
+ onBeforeLeave: this.handleBeforeLeave,
1451
+ onLeave: this.handleLeave,
1452
+ onAfterLeave: this.handleAfterLeave
1453
+ }, {
1454
+ default: () => {
1455
+ return this.show ? h(Notification, Object.assign({}, keep(this.$props, notificationPropKeys), { onClose: this.handleClose, onMouseenter: this.duration && this.keepAliveOnHover ? this.handleMouseenter : void 0, onMouseleave: this.duration && this.keepAliveOnHover ? this.handleMouseleave : void 0 })) : null;
1456
+ }
1457
+ });
1458
+ }
1459
+ });
1460
+ const style = c([cB("notification-container", `
1461
+ z-index: 4000;
1462
+ position: fixed;
1463
+ overflow: visible;
1464
+ display: flex;
1465
+ flex-direction: column;
1466
+ align-items: flex-end;
1467
+ `, [c(">", [cB("scrollbar", `
1468
+ width: initial;
1469
+ overflow: visible;
1470
+ height: -moz-fit-content !important;
1471
+ height: fit-content !important;
1472
+ max-height: 100vh !important;
1473
+ `, [c(">", [cB("scrollbar-container", `
1474
+ height: -moz-fit-content !important;
1475
+ height: fit-content !important;
1476
+ max-height: 100vh !important;
1477
+ `, [cB("scrollbar-content", `
1478
+ padding-top: 12px;
1479
+ padding-bottom: 33px;
1480
+ `)])])])]), cM("top, top-right, top-left", `
1481
+ top: 12px;
1482
+ `, [c("&.transitioning >", [cB("scrollbar", [c(">", [cB("scrollbar-container", `
1483
+ min-height: 100vh !important;
1484
+ `)])])])]), cM("bottom, bottom-right, bottom-left", `
1485
+ bottom: 12px;
1486
+ `, [c(">", [cB("scrollbar", [c(">", [cB("scrollbar-container", [cB("scrollbar-content", `
1487
+ padding-bottom: 12px;
1488
+ `)])])])]), cB("notification-wrapper", `
1489
+ display: flex;
1490
+ align-items: flex-end;
1491
+ margin-bottom: 0;
1492
+ margin-top: 12px;
1493
+ `)]), cM("top, bottom", `
1494
+ left: 50%;
1495
+ transform: translateX(-50%);
1496
+ `, [cB("notification-wrapper", [c("&.notification-transition-enter-from, &.notification-transition-leave-to", `
1497
+ transform: scale(0.85);
1498
+ `), c("&.notification-transition-leave-from, &.notification-transition-enter-to", `
1499
+ transform: scale(1);
1500
+ `)])]), cM("top", [cB("notification-wrapper", `
1501
+ transform-origin: top center;
1502
+ `)]), cM("bottom", [cB("notification-wrapper", `
1503
+ transform-origin: bottom center;
1504
+ `)]), cM("top-right, bottom-right", [cB("notification", `
1505
+ margin-left: 28px;
1506
+ margin-right: 16px;
1507
+ `)]), cM("top-left, bottom-left", [cB("notification", `
1508
+ margin-left: 16px;
1509
+ margin-right: 28px;
1510
+ `)]), cM("top-right", `
1511
+ right: 0;
1512
+ `, [placementTransformStyle("top-right")]), cM("top-left", `
1513
+ left: 0;
1514
+ `, [placementTransformStyle("top-left")]), cM("bottom-right", `
1515
+ right: 0;
1516
+ `, [placementTransformStyle("bottom-right")]), cM("bottom-left", `
1517
+ left: 0;
1518
+ `, [placementTransformStyle("bottom-left")]), cM("scrollable", [cM("top-right", `
1519
+ top: 0;
1520
+ `), cM("top-left", `
1521
+ top: 0;
1522
+ `), cM("bottom-right", `
1523
+ bottom: 0;
1524
+ `), cM("bottom-left", `
1525
+ bottom: 0;
1526
+ `)]), cB("notification-wrapper", `
1527
+ margin-bottom: 12px;
1528
+ `, [c("&.notification-transition-enter-from, &.notification-transition-leave-to", `
1529
+ opacity: 0;
1530
+ margin-top: 0 !important;
1531
+ margin-bottom: 0 !important;
1532
+ `), c("&.notification-transition-leave-from, &.notification-transition-enter-to", `
1533
+ opacity: 1;
1534
+ `), c("&.notification-transition-leave-active", `
1535
+ transition:
1536
+ background-color .3s var(--n-bezier),
1537
+ color .3s var(--n-bezier),
1538
+ opacity .3s var(--n-bezier),
1539
+ transform .3s var(--n-bezier-ease-in),
1540
+ max-height .3s var(--n-bezier),
1541
+ margin-top .3s linear,
1542
+ margin-bottom .3s linear,
1543
+ box-shadow .3s var(--n-bezier);
1544
+ `), c("&.notification-transition-enter-active", `
1545
+ transition:
1546
+ background-color .3s var(--n-bezier),
1547
+ color .3s var(--n-bezier),
1548
+ opacity .3s var(--n-bezier),
1549
+ transform .3s var(--n-bezier-ease-out),
1550
+ max-height .3s var(--n-bezier),
1551
+ margin-top .3s linear,
1552
+ margin-bottom .3s linear,
1553
+ box-shadow .3s var(--n-bezier);
1554
+ `)]), cB("notification", `
1555
+ background-color: var(--n-color);
1556
+ color: var(--n-text-color);
1557
+ transition:
1558
+ background-color .3s var(--n-bezier),
1559
+ color .3s var(--n-bezier),
1560
+ opacity .3s var(--n-bezier),
1561
+ box-shadow .3s var(--n-bezier);
1562
+ font-family: inherit;
1563
+ font-size: var(--n-font-size);
1564
+ font-weight: 400;
1565
+ position: relative;
1566
+ display: flex;
1567
+ overflow: hidden;
1568
+ flex-shrink: 0;
1569
+ padding-left: var(--n-padding-left);
1570
+ padding-right: var(--n-padding-right);
1571
+ width: var(--n-width);
1572
+ border-radius: var(--n-border-radius);
1573
+ box-shadow: var(--n-box-shadow);
1574
+ box-sizing: border-box;
1575
+ opacity: 1;
1576
+ `, [cE("avatar", [cB("icon", {
1577
+ color: "var(--n-icon-color)"
1578
+ }), cB("base-icon", {
1579
+ color: "var(--n-icon-color)"
1580
+ })]), cM("show-avatar", [cB("notification-main", `
1581
+ margin-left: 40px;
1582
+ width: calc(100% - 40px);
1583
+ `)]), cM("closable", [cB("notification-main", [c("> *:first-child", {
1584
+ paddingRight: "20px"
1585
+ })]), cE("close", `
1586
+ position: absolute;
1587
+ top: 0;
1588
+ right: 0;
1589
+ margin: var(--n-close-margin);
1590
+ transition:
1591
+ background-color .3s var(--n-bezier),
1592
+ color .3s var(--n-bezier);
1593
+ `)]), cE("avatar", `
1594
+ position: absolute;
1595
+ top: var(--n-padding-top);
1596
+ left: var(--n-padding-left);
1597
+ width: 28px;
1598
+ height: 28px;
1599
+ font-size: 28px;
1600
+ display: flex;
1601
+ align-items: center;
1602
+ justify-content: center;
1603
+ `, [cB("icon", "transition: color .3s var(--n-bezier);")]), cB("notification-main", `
1604
+ padding-top: var(--n-padding-top);
1605
+ padding-bottom: var(--n-padding-bottom);
1606
+ box-sizing: border-box;
1607
+ display: flex;
1608
+ flex-direction: column;
1609
+ margin-left: 8px;
1610
+ width: calc(100% - 8px);
1611
+ `, [cB("notification-main-footer", `
1612
+ display: flex;
1613
+ align-items: center;
1614
+ justify-content: space-between;
1615
+ margin-top: 12px;
1616
+ `, [cE("meta", `
1617
+ font-size: var(--n-meta-font-size);
1618
+ transition: color .3s var(--n-bezier-ease-out);
1619
+ color: var(--n-description-text-color);
1620
+ `), cE("action", `
1621
+ cursor: pointer;
1622
+ transition: color .3s var(--n-bezier-ease-out);
1623
+ color: var(--n-action-text-color);
1624
+ `)]), cE("header", `
1625
+ font-weight: var(--n-title-font-weight);
1626
+ font-size: var(--n-title-font-size);
1627
+ transition: color .3s var(--n-bezier-ease-out);
1628
+ color: var(--n-title-text-color);
1629
+ `), cE("description", `
1630
+ margin-top: 8px;
1631
+ font-size: var(--n-description-font-size);
1632
+ white-space: pre-wrap;
1633
+ word-wrap: break-word;
1634
+ transition: color .3s var(--n-bezier-ease-out);
1635
+ color: var(--n-description-text-color);
1636
+ `), cE("content", `
1637
+ line-height: var(--n-line-height);
1638
+ margin: 12px 0 0 0;
1639
+ font-family: inherit;
1640
+ white-space: pre-wrap;
1641
+ word-wrap: break-word;
1642
+ transition: color .3s var(--n-bezier-ease-out);
1643
+ color: var(--n-text-color);
1644
+ `, [c("&:first-child", {
1645
+ margin: 0
1646
+ })])])])])]);
1647
+ function placementTransformStyle(placement) {
1648
+ const direction = placement.split("-")[1];
1649
+ const transformXEnter = direction === "left" ? "calc(-100%)" : "calc(100%)";
1650
+ const transformXLeave = "0";
1651
+ return cB("notification-wrapper", [c("&.notification-transition-enter-from, &.notification-transition-leave-to", `
1652
+ transform: translate(${transformXEnter}, 0);
1653
+ `), c("&.notification-transition-leave-from, &.notification-transition-enter-to", `
1654
+ transform: translate(${transformXLeave}, 0);
1655
+ `)]);
1656
+ }
1657
+ const notificationApiInjectionKey = createInjectionKey("n-notification-api");
1658
+ const notificationProviderProps = Object.assign(Object.assign({}, useTheme.props), { containerStyle: [String, Object], to: [String, Object], scrollable: {
1659
+ type: Boolean,
1660
+ default: true
1661
+ }, max: Number, placement: {
1662
+ type: String,
1663
+ default: "top-right"
1664
+ }, keepAliveOnHover: Boolean });
1665
+ const NNotificationProvider = defineComponent({
1666
+ name: "NotificationProvider",
1667
+ props: notificationProviderProps,
1668
+ setup(props) {
1669
+ const { mergedClsPrefixRef } = useConfig(props);
1670
+ const notificationListRef = ref([]);
1671
+ const notificationRefs = {};
1672
+ const leavingKeySet = /* @__PURE__ */ new Set();
1673
+ function create(options) {
1674
+ const key = createId();
1675
+ const destroy = () => {
1676
+ leavingKeySet.add(key);
1677
+ if (notificationRefs[key]) {
1678
+ notificationRefs[key].hide();
1679
+ }
1680
+ };
1681
+ const notificationReactive = reactive(Object.assign(Object.assign({}, options), {
1682
+ key,
1683
+ destroy,
1684
+ hide: destroy,
1685
+ deactivate: destroy
1686
+ }));
1687
+ const { max } = props;
1688
+ if (max && notificationListRef.value.length - leavingKeySet.size >= max) {
1689
+ let someoneMountedRemoved = false;
1690
+ let index = 0;
1691
+ for (const notification of notificationListRef.value) {
1692
+ if (!leavingKeySet.has(notification.key)) {
1693
+ if (notificationRefs[notification.key]) {
1694
+ notification.destroy();
1695
+ someoneMountedRemoved = true;
1696
+ }
1697
+ break;
1698
+ }
1699
+ index++;
1700
+ }
1701
+ if (!someoneMountedRemoved) {
1702
+ notificationListRef.value.splice(index, 1);
1703
+ }
1704
+ }
1705
+ notificationListRef.value.push(notificationReactive);
1706
+ return notificationReactive;
1707
+ }
1708
+ const apis = ["info", "success", "warning", "error"].map((type) => {
1709
+ return (options) => create(Object.assign(Object.assign({}, options), { type }));
1710
+ });
1711
+ function handleAfterLeave(key) {
1712
+ leavingKeySet.delete(key);
1713
+ notificationListRef.value.splice(notificationListRef.value.findIndex((notification) => notification.key === key), 1);
1714
+ }
1715
+ const themeRef = useTheme("Notification", "-notification", style, notificationLight$1, props, mergedClsPrefixRef);
1716
+ const api = {
1717
+ create,
1718
+ info: apis[0],
1719
+ success: apis[1],
1720
+ warning: apis[2],
1721
+ error: apis[3],
1722
+ open,
1723
+ destroyAll
1724
+ };
1725
+ const wipTransitionCountRef = ref(0);
1726
+ provide(notificationApiInjectionKey, api);
1727
+ provide(notificationProviderInjectionKey, {
1728
+ props,
1729
+ mergedClsPrefixRef,
1730
+ mergedThemeRef: themeRef,
1731
+ wipTransitionCountRef
1732
+ });
1733
+ function open(options) {
1734
+ return create(options);
1735
+ }
1736
+ function destroyAll() {
1737
+ Object.values(notificationListRef.value).forEach((notification) => {
1738
+ notification.hide();
1739
+ });
1740
+ }
1741
+ return Object.assign({
1742
+ mergedClsPrefix: mergedClsPrefixRef,
1743
+ notificationList: notificationListRef,
1744
+ notificationRefs,
1745
+ handleAfterLeave
1746
+ }, api);
1747
+ },
1748
+ render() {
1749
+ var _a, _b, _c;
1750
+ const { placement } = this;
1751
+ return h(
1752
+ Fragment,
1753
+ null,
1754
+ (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a),
1755
+ this.notificationList.length ? h(
1756
+ Teleport,
1757
+ { to: (_c = this.to) !== null && _c !== void 0 ? _c : "body" },
1758
+ h(NotificationContainer, { style: this.containerStyle, scrollable: this.scrollable && placement !== "top" && placement !== "bottom", placement }, {
1759
+ default: () => {
1760
+ return this.notificationList.map((notification) => {
1761
+ return h(NotificationEnvironment, Object.assign({ ref: (inst) => {
1762
+ const refKey = notification.key;
1763
+ if (inst === null) {
1764
+ delete this.notificationRefs[refKey];
1765
+ } else
1766
+ this.notificationRefs[refKey] = inst;
1767
+ } }, omit(notification, [
1768
+ "destroy",
1769
+ "hide",
1770
+ "deactivate"
1771
+ ]), { internalKey: notification.key, onInternalAfterLeave: this.handleAfterLeave, keepAliveOnHover: notification.keepAliveOnHover === void 0 ? this.keepAliveOnHover : notification.keepAliveOnHover }));
1772
+ });
1773
+ }
1774
+ })
1775
+ ) : null
1776
+ );
1777
+ }
1778
+ });
1779
+ function useNotification() {
1780
+ const api = inject(notificationApiInjectionKey, null);
1781
+ if (api === null) {
1782
+ throwError("use-notification", "No outer `n-notification-provider` found.");
1783
+ }
1784
+ return api;
1785
+ }
1786
+ const NInjectionExtractor = defineComponent({
1787
+ name: "InjectionExtractor",
1788
+ props: {
1789
+ onSetup: Function
1790
+ },
1791
+ setup(props, { slots }) {
1792
+ var _a;
1793
+ (_a = props.onSetup) === null || _a === void 0 ? void 0 : _a.call(props);
1794
+ return () => {
1795
+ var _a2;
1796
+ return (_a2 = slots.default) === null || _a2 === void 0 ? void 0 : _a2.call(slots);
1797
+ };
1798
+ }
1799
+ });
1800
+ const injectionFactoryMap = {
1801
+ message: useMessage,
1802
+ notification: useNotification,
1803
+ loadingBar: useLoadingBar,
1804
+ dialog: useDialog
1805
+ };
1806
+ function createDiscreteApp({ providersAndProps, configProviderProps }) {
1807
+ const App = () => {
1808
+ return h(NConfigProvider, unref(configProviderProps), {
1809
+ default: () => providersAndProps.map(({ type, Provider, props }) => {
1810
+ return h(Provider, unref(props), {
1811
+ default: () => h(NInjectionExtractor, {
1812
+ onSetup: () => extractedApi[type] = injectionFactoryMap[type]()
1813
+ })
1814
+ });
1815
+ })
1816
+ });
1817
+ };
1818
+ let app = createApp(App);
1819
+ const extractedApi = {
1820
+ app
1821
+ };
1822
+ let hostEl;
1823
+ if (isBrowser) {
1824
+ hostEl = document.createElement("div");
1825
+ document.body.appendChild(hostEl);
1826
+ app.mount(hostEl);
1827
+ }
1828
+ const unmount = () => {
1829
+ var _a;
1830
+ if (app === null || hostEl === null) {
1831
+ warn("discrete", "unmount call no need because discrete app has been unmounted");
1832
+ return;
1833
+ }
1834
+ app.unmount();
1835
+ (_a = hostEl.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(hostEl);
1836
+ hostEl = null;
1837
+ app = null;
1838
+ };
1839
+ return Object.assign({ unmount }, extractedApi);
1840
+ }
1841
+ function createDiscreteApi(includes, { configProviderProps, messageProviderProps: messageProviderProps2, dialogProviderProps: dialogProviderProps2, notificationProviderProps: notificationProviderProps2, loadingBarProviderProps: loadingBarProviderProps2 } = {}) {
1842
+ const providersAndProps = [];
1843
+ includes.forEach((type) => {
1844
+ switch (type) {
1845
+ case "message":
1846
+ providersAndProps.push({
1847
+ type,
1848
+ Provider: NMessageProvider,
1849
+ props: messageProviderProps2
1850
+ });
1851
+ break;
1852
+ case "notification":
1853
+ providersAndProps.push({
1854
+ type,
1855
+ Provider: NNotificationProvider,
1856
+ props: notificationProviderProps2
1857
+ });
1858
+ break;
1859
+ case "dialog":
1860
+ providersAndProps.push({
1861
+ type,
1862
+ Provider: NDialogProvider,
1863
+ props: dialogProviderProps2
1864
+ });
1865
+ break;
1866
+ case "loadingBar":
1867
+ providersAndProps.push({
1868
+ type,
1869
+ Provider: NLoadingBarProvider,
1870
+ props: loadingBarProviderProps2
1871
+ });
1872
+ break;
1873
+ }
1874
+ });
1875
+ const discreteApp = createDiscreteApp({
1876
+ providersAndProps,
1877
+ configProviderProps
1878
+ });
1879
+ return discreteApp;
1880
+ }
1881
+ const { message, dialog, loadingBar } = createDiscreteApi([
1882
+ "message",
1883
+ "dialog",
1884
+ "loadingBar"
1885
+ ]);
1886
+ function commonjsRequire(path) {
1887
+ throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
1888
+ }
1889
+ class Node {
1890
+ value;
1891
+ next;
1892
+ constructor(value) {
1893
+ this.value = value;
1894
+ }
1895
+ }
1896
+ class Queue {
1897
+ constructor() {
1898
+ __privateAdd(this, _head, void 0);
1899
+ __privateAdd(this, _tail, void 0);
1900
+ __privateAdd(this, _size, void 0);
1901
+ this.clear();
1902
+ }
1903
+ enqueue(value) {
1904
+ const node = new Node(value);
1905
+ if (__privateGet(this, _head)) {
1906
+ __privateGet(this, _tail).next = node;
1907
+ __privateSet(this, _tail, node);
1908
+ } else {
1909
+ __privateSet(this, _head, node);
1910
+ __privateSet(this, _tail, node);
1911
+ }
1912
+ __privateWrapper(this, _size)._++;
1913
+ }
1914
+ dequeue() {
1915
+ const current = __privateGet(this, _head);
1916
+ if (!current) {
1917
+ return;
1918
+ }
1919
+ __privateSet(this, _head, __privateGet(this, _head).next);
1920
+ __privateWrapper(this, _size)._--;
1921
+ return current.value;
1922
+ }
1923
+ clear() {
1924
+ __privateSet(this, _head, void 0);
1925
+ __privateSet(this, _tail, void 0);
1926
+ __privateSet(this, _size, 0);
1927
+ }
1928
+ get size() {
1929
+ return __privateGet(this, _size);
1930
+ }
1931
+ *[Symbol.iterator]() {
1932
+ let current = __privateGet(this, _head);
1933
+ while (current) {
1934
+ yield current.value;
1935
+ current = current.next;
1936
+ }
1937
+ }
1938
+ }
1939
+ _head = new WeakMap();
1940
+ _tail = new WeakMap();
1941
+ _size = new WeakMap();
1942
+ const AsyncResource = {
1943
+ bind(fn, _type, thisArg) {
1944
+ return fn.bind(thisArg);
1945
+ }
1946
+ };
1947
+ function pLimit(concurrency) {
1948
+ if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {
1949
+ throw new TypeError("Expected `concurrency` to be a number from 1 and up");
1950
+ }
1951
+ const queue = new Queue();
1952
+ let activeCount = 0;
1953
+ const next = () => {
1954
+ activeCount--;
1955
+ if (queue.size > 0) {
1956
+ queue.dequeue()();
1957
+ }
1958
+ };
1959
+ const run = async (function_, resolve, arguments_) => {
1960
+ activeCount++;
1961
+ const result = (async () => function_(...arguments_))();
1962
+ resolve(result);
1963
+ try {
1964
+ await result;
1965
+ } catch {
1966
+ }
1967
+ next();
1968
+ };
1969
+ const enqueue = (function_, resolve, arguments_) => {
1970
+ queue.enqueue(
1971
+ AsyncResource.bind(run.bind(void 0, function_, resolve, arguments_))
1972
+ );
1973
+ (async () => {
1974
+ await Promise.resolve();
1975
+ if (activeCount < concurrency && queue.size > 0) {
1976
+ queue.dequeue()();
1977
+ }
1978
+ })();
1979
+ };
1980
+ const generator = (function_, ...arguments_) => new Promise((resolve) => {
1981
+ enqueue(function_, resolve, arguments_);
1982
+ });
1983
+ Object.defineProperties(generator, {
1984
+ activeCount: {
1985
+ get: () => activeCount
1986
+ },
1987
+ pendingCount: {
1988
+ get: () => queue.size
1989
+ },
1990
+ clearQueue: {
1991
+ value() {
1992
+ queue.clear();
1993
+ }
1994
+ }
1995
+ });
1996
+ return generator;
1997
+ }
1998
+ const obj2form = (...objs) => {
1999
+ const fd = new FormData();
2000
+ objs.forEach((obj) => {
2001
+ for (const k in obj) {
2002
+ const v = obj[k];
2003
+ if (v === void 0)
2004
+ continue;
2005
+ if (v instanceof Blob) {
2006
+ fd.append(k, v, v.name);
2007
+ } else {
2008
+ fd.append(k, String(v));
2009
+ }
2010
+ }
2011
+ });
2012
+ return fd;
2013
+ };
2014
+ const headers2obj = (headers) => {
2015
+ const h2 = {};
2016
+ headers.forEach((v, k) => {
2017
+ h2[k] = v;
2018
+ });
2019
+ return h2;
2020
+ };
2021
+ const delay = async (n = 0) => {
2022
+ return new Promise((res) => {
2023
+ setTimeout(res, n);
2024
+ });
2025
+ };
2026
+ const copy = (() => {
2027
+ let lastText = void 0;
2028
+ return async (text = ``) => {
2029
+ if (lastText === text)
2030
+ return;
2031
+ lastText = text;
2032
+ delay(1e4).then(() => {
2033
+ lastText = void 0;
2034
+ });
2035
+ await navigator.clipboard.writeText(text);
2036
+ message.success(`复制成功`);
2037
+ };
2038
+ })();
2039
+ const proxyFc = (getFc) => {
2040
+ return (...args) => getFc()(...args);
2041
+ };
2042
+ const GM_xmlhttpRequest = proxyFc(
2043
+ () => {
2044
+ var _a;
2045
+ return (_a = window.__NetworkExtension__) == null ? void 0 : _a.GM_xmlhttpRequest;
2046
+ }
2047
+ );
2048
+ const gmOk = () => {
2049
+ var _a;
2050
+ return !!((_a = window.__NetworkExtension__) == null ? void 0 : _a.GM_xmlhttpRequest);
2051
+ };
2052
+ const parseHeaders = (rawHeaders = "") => {
2053
+ const headers = new Headers();
2054
+ const preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " ");
2055
+ preProcessedHeaders.split("\r").map(function(header) {
2056
+ return header.startsWith(`
2057
+ `) ? header.substring(1) : header;
2058
+ }).forEach(function(line) {
2059
+ var _a;
2060
+ let parts = line.split(":");
2061
+ let key = (_a = parts.shift()) == null ? void 0 : _a.trim();
2062
+ if (key) {
2063
+ let value = parts.join(":").trim();
2064
+ try {
2065
+ headers.append(key, value);
2066
+ } catch {
2067
+ }
2068
+ }
2069
+ });
2070
+ return headers;
2071
+ };
2072
+ const fixUrl = (url = "") => {
2073
+ try {
2074
+ return url === "" && location.href ? location.href : url;
2075
+ } catch {
2076
+ return url;
2077
+ }
2078
+ };
2079
+ const GM_fetch = async (input, init = {}, xhrDetails = {}) => {
2080
+ var _a;
2081
+ const request = new Request(input, init).clone();
2082
+ if ((_a = request.signal) == null ? void 0 : _a.aborted) {
2083
+ throw new DOMException("Aborted", "AbortError");
2084
+ }
2085
+ const method = request.method.toUpperCase();
2086
+ const url = fixUrl(request.url);
2087
+ const sendHeaders = new Headers(request.headers);
2088
+ new Headers(init.headers).forEach((value, key) => {
2089
+ sendHeaders.set(key, value);
2090
+ });
2091
+ let binary = false;
2092
+ let data = void 0;
2093
+ if (method != "GET") {
2094
+ if (init.body) {
2095
+ if (typeof init.body == "string" || init.body instanceof URLSearchParams) {
2096
+ data = init.body;
2097
+ } else if (init.body instanceof FormData) {
2098
+ data = init.body;
2099
+ sendHeaders.delete(`content-type`);
2100
+ } else {
2101
+ binary = true;
2102
+ data = await request.blob();
2103
+ }
2104
+ }
2105
+ }
2106
+ return new Promise((resolve, reject) => {
2107
+ var _a2;
2108
+ let initXhrDetails = {
2109
+ method,
2110
+ url,
2111
+ headers: headers2obj(sendHeaders),
2112
+ data,
2113
+ binary,
2114
+ responseType: "blob",
2115
+ async onload(e) {
2116
+ let body = void 0;
2117
+ if (!(e.response instanceof Blob && e.response.size == 0)) {
2118
+ body = e.response ?? e.responseText;
2119
+ }
2120
+ await delay();
2121
+ const resp = new Response(body, {
2122
+ status: e.status,
2123
+ statusText: e.statusText,
2124
+ headers: parseHeaders(e.responseHeaders)
2125
+ });
2126
+ Object.defineProperty(resp, "url", { value: e.finalUrl });
2127
+ resolve(resp);
2128
+ },
2129
+ async onerror() {
2130
+ await delay();
2131
+ reject(new TypeError("Network request onerror failed"));
2132
+ },
2133
+ async ontimeout() {
2134
+ await delay();
2135
+ reject(new TypeError("Network request ontimeout failed"));
2136
+ },
2137
+ async onabort() {
2138
+ await delay();
2139
+ reject(new DOMException("Aborted", "AbortError"));
2140
+ },
2141
+ async onreadystatechange(response) {
2142
+ var _a3;
2143
+ if (response.readyState === 4) {
2144
+ (_a3 = request.signal) == null ? void 0 : _a3.removeEventListener("abort", abortXhr);
2145
+ }
2146
+ }
2147
+ };
2148
+ if (typeof xhrDetails == "function") {
2149
+ initXhrDetails = xhrDetails(initXhrDetails);
2150
+ } else {
2151
+ initXhrDetails = { ...initXhrDetails, ...xhrDetails };
2152
+ }
2153
+ const handle = GM_xmlhttpRequest(initXhrDetails);
2154
+ function abortXhr() {
2155
+ handle.abort();
2156
+ }
2157
+ (_a2 = request.signal) == null ? void 0 : _a2.addEventListener("abort", abortXhr);
2158
+ });
2159
+ };
2160
+ const corsOkOrigins = /* @__PURE__ */ new Set([
2161
+ location.origin,
2162
+ `https://cdn.jsdelivr.net`,
2163
+ `https://fastly.jsdelivr.net`,
2164
+ `https://raw.githubusercontent.com`,
2165
+ `https://raw.githubusercontents.com`,
2166
+ `https://raw.gitmirror.com`
2167
+ ]);
2168
+ const isAllowCorsUrl = (targetUrl) => {
2169
+ targetUrl = new URL(targetUrl);
2170
+ if (targetUrl.hostname == `127.0.0.1` || targetUrl.hostname == `localhost`) {
2171
+ return true;
2172
+ }
2173
+ if (location.protocol == `http:` && targetUrl.protocol == `http:` && targetUrl.hostname.split(`.`).every((s) => Number.isSafeInteger(parseInt(s)))) {
2174
+ return true;
2175
+ }
2176
+ return corsOkOrigins.has(targetUrl.origin);
2177
+ };
2178
+ const githubZipUrlReg = /^https:\/\/github\.com\/gkd-kit\/inspect\/files\/([0-9]+)\/file\.zip$/;
2179
+ const githubImageUrlReg = /^https:\/\/github\.com\/gkd-kit\/inspect\/assets\/([0-9]+)\/([0-9a-z\-]+)$/;
2180
+ const githubUrlToSelfUrl = (u) => {
2181
+ u = u.toString();
2182
+ const { 1: zipAssetId } = u.match(githubZipUrlReg) || [];
2183
+ const { 1: userId, 2: imgAssetId } = u.match(githubImageUrlReg) || [];
2184
+ if (zipAssetId) {
2185
+ return location.origin + router.resolve({
2186
+ path: `/import/${zipAssetId}`
2187
+ }).href;
2188
+ } else if (userId && imgAssetId) {
2189
+ return `https://m.gkd.li/${userId}/${imgAssetId}`;
2190
+ } else {
2191
+ throw new Error(
2192
+ `github url ${u} should come from gkd-kit/inspect files/assets`
2193
+ );
2194
+ }
2195
+ };
2196
+ const enhanceFetch = async (input, init, options) => {
2197
+ const req = new Request(input);
2198
+ const u = new URL(req.url);
2199
+ if (isAllowCorsUrl(u))
2200
+ return fetch(input, { ...init, mode: "cors" });
2201
+ if (gmOk()) {
2202
+ return GM_fetch(input, init);
2203
+ } else if (options == null ? void 0 : options.proxy) {
2204
+ const proxyUrl = new URL(`https://proxy-workers.lisonge.workers.dev/`);
2205
+ proxyUrl.searchParams.set(`proxyUrl`, u.href);
2206
+ const request = new Request(input, init);
2207
+ return fetch(proxyUrl, {
2208
+ method: request.method,
2209
+ headers: request.headers,
2210
+ body: request.body
2211
+ });
2212
+ } else {
2213
+ store.networkErrorDlgVisible = true;
2214
+ throw new Error(`gm is not supported`);
2215
+ }
2216
+ };
2217
+ var localforage$1 = { exports: {} };
2218
+ /*!
2219
+ localForage -- Offline Storage, Improved
2220
+ Version 1.10.0
2221
+ https://localforage.github.io/localForage
2222
+ (c) 2013-2017 Mozilla, Apache License 2.0
2223
+ */
2224
+ (function(module, exports) {
2225
+ (function(f) {
2226
+ {
2227
+ module.exports = f();
2228
+ }
2229
+ })(function() {
2230
+ return function e(t, n, r) {
2231
+ function s(o2, u) {
2232
+ if (!n[o2]) {
2233
+ if (!t[o2]) {
2234
+ var a = typeof commonjsRequire == "function" && commonjsRequire;
2235
+ if (!u && a)
2236
+ return a(o2, true);
2237
+ if (i)
2238
+ return i(o2, true);
2239
+ var f = new Error("Cannot find module '" + o2 + "'");
2240
+ throw f.code = "MODULE_NOT_FOUND", f;
2241
+ }
2242
+ var l = n[o2] = { exports: {} };
2243
+ t[o2][0].call(l.exports, function(e2) {
2244
+ var n2 = t[o2][1][e2];
2245
+ return s(n2 ? n2 : e2);
2246
+ }, l, l.exports, e, t, n, r);
2247
+ }
2248
+ return n[o2].exports;
2249
+ }
2250
+ var i = typeof commonjsRequire == "function" && commonjsRequire;
2251
+ for (var o = 0; o < r.length; o++)
2252
+ s(r[o]);
2253
+ return s;
2254
+ }({ 1: [function(_dereq_, module2, exports2) {
2255
+ (function(global2) {
2256
+ var Mutation = global2.MutationObserver || global2.WebKitMutationObserver;
2257
+ var scheduleDrain;
2258
+ {
2259
+ if (Mutation) {
2260
+ var called = 0;
2261
+ var observer = new Mutation(nextTick2);
2262
+ var element = global2.document.createTextNode("");
2263
+ observer.observe(element, {
2264
+ characterData: true
2265
+ });
2266
+ scheduleDrain = function() {
2267
+ element.data = called = ++called % 2;
2268
+ };
2269
+ } else if (!global2.setImmediate && typeof global2.MessageChannel !== "undefined") {
2270
+ var channel = new global2.MessageChannel();
2271
+ channel.port1.onmessage = nextTick2;
2272
+ scheduleDrain = function() {
2273
+ channel.port2.postMessage(0);
2274
+ };
2275
+ } else if ("document" in global2 && "onreadystatechange" in global2.document.createElement("script")) {
2276
+ scheduleDrain = function() {
2277
+ var scriptEl = global2.document.createElement("script");
2278
+ scriptEl.onreadystatechange = function() {
2279
+ nextTick2();
2280
+ scriptEl.onreadystatechange = null;
2281
+ scriptEl.parentNode.removeChild(scriptEl);
2282
+ scriptEl = null;
2283
+ };
2284
+ global2.document.documentElement.appendChild(scriptEl);
2285
+ };
2286
+ } else {
2287
+ scheduleDrain = function() {
2288
+ setTimeout(nextTick2, 0);
2289
+ };
2290
+ }
2291
+ }
2292
+ var draining;
2293
+ var queue = [];
2294
+ function nextTick2() {
2295
+ draining = true;
2296
+ var i, oldQueue;
2297
+ var len = queue.length;
2298
+ while (len) {
2299
+ oldQueue = queue;
2300
+ queue = [];
2301
+ i = -1;
2302
+ while (++i < len) {
2303
+ oldQueue[i]();
2304
+ }
2305
+ len = queue.length;
2306
+ }
2307
+ draining = false;
2308
+ }
2309
+ module2.exports = immediate;
2310
+ function immediate(task) {
2311
+ if (queue.push(task) === 1 && !draining) {
2312
+ scheduleDrain();
2313
+ }
2314
+ }
2315
+ }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
2316
+ }, {}], 2: [function(_dereq_, module2, exports2) {
2317
+ var immediate = _dereq_(1);
2318
+ function INTERNAL() {
2319
+ }
2320
+ var handlers = {};
2321
+ var REJECTED = ["REJECTED"];
2322
+ var FULFILLED = ["FULFILLED"];
2323
+ var PENDING = ["PENDING"];
2324
+ module2.exports = Promise2;
2325
+ function Promise2(resolver) {
2326
+ if (typeof resolver !== "function") {
2327
+ throw new TypeError("resolver must be a function");
2328
+ }
2329
+ this.state = PENDING;
2330
+ this.queue = [];
2331
+ this.outcome = void 0;
2332
+ if (resolver !== INTERNAL) {
2333
+ safelyResolveThenable(this, resolver);
2334
+ }
2335
+ }
2336
+ Promise2.prototype["catch"] = function(onRejected) {
2337
+ return this.then(null, onRejected);
2338
+ };
2339
+ Promise2.prototype.then = function(onFulfilled, onRejected) {
2340
+ if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) {
2341
+ return this;
2342
+ }
2343
+ var promise = new this.constructor(INTERNAL);
2344
+ if (this.state !== PENDING) {
2345
+ var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
2346
+ unwrap(promise, resolver, this.outcome);
2347
+ } else {
2348
+ this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
2349
+ }
2350
+ return promise;
2351
+ };
2352
+ function QueueItem(promise, onFulfilled, onRejected) {
2353
+ this.promise = promise;
2354
+ if (typeof onFulfilled === "function") {
2355
+ this.onFulfilled = onFulfilled;
2356
+ this.callFulfilled = this.otherCallFulfilled;
2357
+ }
2358
+ if (typeof onRejected === "function") {
2359
+ this.onRejected = onRejected;
2360
+ this.callRejected = this.otherCallRejected;
2361
+ }
2362
+ }
2363
+ QueueItem.prototype.callFulfilled = function(value) {
2364
+ handlers.resolve(this.promise, value);
2365
+ };
2366
+ QueueItem.prototype.otherCallFulfilled = function(value) {
2367
+ unwrap(this.promise, this.onFulfilled, value);
2368
+ };
2369
+ QueueItem.prototype.callRejected = function(value) {
2370
+ handlers.reject(this.promise, value);
2371
+ };
2372
+ QueueItem.prototype.otherCallRejected = function(value) {
2373
+ unwrap(this.promise, this.onRejected, value);
2374
+ };
2375
+ function unwrap(promise, func, value) {
2376
+ immediate(function() {
2377
+ var returnValue;
2378
+ try {
2379
+ returnValue = func(value);
2380
+ } catch (e) {
2381
+ return handlers.reject(promise, e);
2382
+ }
2383
+ if (returnValue === promise) {
2384
+ handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
2385
+ } else {
2386
+ handlers.resolve(promise, returnValue);
2387
+ }
2388
+ });
2389
+ }
2390
+ handlers.resolve = function(self2, value) {
2391
+ var result = tryCatch(getThen, value);
2392
+ if (result.status === "error") {
2393
+ return handlers.reject(self2, result.value);
2394
+ }
2395
+ var thenable = result.value;
2396
+ if (thenable) {
2397
+ safelyResolveThenable(self2, thenable);
2398
+ } else {
2399
+ self2.state = FULFILLED;
2400
+ self2.outcome = value;
2401
+ var i = -1;
2402
+ var len = self2.queue.length;
2403
+ while (++i < len) {
2404
+ self2.queue[i].callFulfilled(value);
2405
+ }
2406
+ }
2407
+ return self2;
2408
+ };
2409
+ handlers.reject = function(self2, error) {
2410
+ self2.state = REJECTED;
2411
+ self2.outcome = error;
2412
+ var i = -1;
2413
+ var len = self2.queue.length;
2414
+ while (++i < len) {
2415
+ self2.queue[i].callRejected(error);
2416
+ }
2417
+ return self2;
2418
+ };
2419
+ function getThen(obj) {
2420
+ var then = obj && obj.then;
2421
+ if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") {
2422
+ return function appyThen() {
2423
+ then.apply(obj, arguments);
2424
+ };
2425
+ }
2426
+ }
2427
+ function safelyResolveThenable(self2, thenable) {
2428
+ var called = false;
2429
+ function onError(value) {
2430
+ if (called) {
2431
+ return;
2432
+ }
2433
+ called = true;
2434
+ handlers.reject(self2, value);
2435
+ }
2436
+ function onSuccess(value) {
2437
+ if (called) {
2438
+ return;
2439
+ }
2440
+ called = true;
2441
+ handlers.resolve(self2, value);
2442
+ }
2443
+ function tryToUnwrap() {
2444
+ thenable(onSuccess, onError);
2445
+ }
2446
+ var result = tryCatch(tryToUnwrap);
2447
+ if (result.status === "error") {
2448
+ onError(result.value);
2449
+ }
2450
+ }
2451
+ function tryCatch(func, value) {
2452
+ var out = {};
2453
+ try {
2454
+ out.value = func(value);
2455
+ out.status = "success";
2456
+ } catch (e) {
2457
+ out.status = "error";
2458
+ out.value = e;
2459
+ }
2460
+ return out;
2461
+ }
2462
+ Promise2.resolve = resolve;
2463
+ function resolve(value) {
2464
+ if (value instanceof this) {
2465
+ return value;
2466
+ }
2467
+ return handlers.resolve(new this(INTERNAL), value);
2468
+ }
2469
+ Promise2.reject = reject;
2470
+ function reject(reason) {
2471
+ var promise = new this(INTERNAL);
2472
+ return handlers.reject(promise, reason);
2473
+ }
2474
+ Promise2.all = all;
2475
+ function all(iterable) {
2476
+ var self2 = this;
2477
+ if (Object.prototype.toString.call(iterable) !== "[object Array]") {
2478
+ return this.reject(new TypeError("must be an array"));
2479
+ }
2480
+ var len = iterable.length;
2481
+ var called = false;
2482
+ if (!len) {
2483
+ return this.resolve([]);
2484
+ }
2485
+ var values = new Array(len);
2486
+ var resolved = 0;
2487
+ var i = -1;
2488
+ var promise = new this(INTERNAL);
2489
+ while (++i < len) {
2490
+ allResolver(iterable[i], i);
2491
+ }
2492
+ return promise;
2493
+ function allResolver(value, i2) {
2494
+ self2.resolve(value).then(resolveFromAll, function(error) {
2495
+ if (!called) {
2496
+ called = true;
2497
+ handlers.reject(promise, error);
2498
+ }
2499
+ });
2500
+ function resolveFromAll(outValue) {
2501
+ values[i2] = outValue;
2502
+ if (++resolved === len && !called) {
2503
+ called = true;
2504
+ handlers.resolve(promise, values);
2505
+ }
2506
+ }
2507
+ }
2508
+ }
2509
+ Promise2.race = race;
2510
+ function race(iterable) {
2511
+ var self2 = this;
2512
+ if (Object.prototype.toString.call(iterable) !== "[object Array]") {
2513
+ return this.reject(new TypeError("must be an array"));
2514
+ }
2515
+ var len = iterable.length;
2516
+ var called = false;
2517
+ if (!len) {
2518
+ return this.resolve([]);
2519
+ }
2520
+ var i = -1;
2521
+ var promise = new this(INTERNAL);
2522
+ while (++i < len) {
2523
+ resolver(iterable[i]);
2524
+ }
2525
+ return promise;
2526
+ function resolver(value) {
2527
+ self2.resolve(value).then(function(response) {
2528
+ if (!called) {
2529
+ called = true;
2530
+ handlers.resolve(promise, response);
2531
+ }
2532
+ }, function(error) {
2533
+ if (!called) {
2534
+ called = true;
2535
+ handlers.reject(promise, error);
2536
+ }
2537
+ });
2538
+ }
2539
+ }
2540
+ }, { "1": 1 }], 3: [function(_dereq_, module2, exports2) {
2541
+ (function(global2) {
2542
+ if (typeof global2.Promise !== "function") {
2543
+ global2.Promise = _dereq_(2);
2544
+ }
2545
+ }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
2546
+ }, { "2": 2 }], 4: [function(_dereq_, module2, exports2) {
2547
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
2548
+ return typeof obj;
2549
+ } : function(obj) {
2550
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
2551
+ };
2552
+ function _classCallCheck(instance, Constructor) {
2553
+ if (!(instance instanceof Constructor)) {
2554
+ throw new TypeError("Cannot call a class as a function");
2555
+ }
2556
+ }
2557
+ function getIDB() {
2558
+ try {
2559
+ if (typeof indexedDB !== "undefined") {
2560
+ return indexedDB;
2561
+ }
2562
+ if (typeof webkitIndexedDB !== "undefined") {
2563
+ return webkitIndexedDB;
2564
+ }
2565
+ if (typeof mozIndexedDB !== "undefined") {
2566
+ return mozIndexedDB;
2567
+ }
2568
+ if (typeof OIndexedDB !== "undefined") {
2569
+ return OIndexedDB;
2570
+ }
2571
+ if (typeof msIndexedDB !== "undefined") {
2572
+ return msIndexedDB;
2573
+ }
2574
+ } catch (e) {
2575
+ return;
2576
+ }
2577
+ }
2578
+ var idb = getIDB();
2579
+ function isIndexedDBValid() {
2580
+ try {
2581
+ if (!idb || !idb.open) {
2582
+ return false;
2583
+ }
2584
+ var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);
2585
+ var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1;
2586
+ return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung
2587
+ // and HTC Android devices <4.4 are missing IDBKeyRange
2588
+ // See: https://github.com/mozilla/localForage/issues/128
2589
+ // See: https://github.com/mozilla/localForage/issues/272
2590
+ typeof IDBKeyRange !== "undefined";
2591
+ } catch (e) {
2592
+ return false;
2593
+ }
2594
+ }
2595
+ function createBlob(parts, properties) {
2596
+ parts = parts || [];
2597
+ properties = properties || {};
2598
+ try {
2599
+ return new Blob(parts, properties);
2600
+ } catch (e) {
2601
+ if (e.name !== "TypeError") {
2602
+ throw e;
2603
+ }
2604
+ var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
2605
+ var builder = new Builder();
2606
+ for (var i = 0; i < parts.length; i += 1) {
2607
+ builder.append(parts[i]);
2608
+ }
2609
+ return builder.getBlob(properties.type);
2610
+ }
2611
+ }
2612
+ if (typeof Promise === "undefined") {
2613
+ _dereq_(3);
2614
+ }
2615
+ var Promise$1 = Promise;
2616
+ function executeCallback(promise, callback) {
2617
+ if (callback) {
2618
+ promise.then(function(result) {
2619
+ callback(null, result);
2620
+ }, function(error) {
2621
+ callback(error);
2622
+ });
2623
+ }
2624
+ }
2625
+ function executeTwoCallbacks(promise, callback, errorCallback) {
2626
+ if (typeof callback === "function") {
2627
+ promise.then(callback);
2628
+ }
2629
+ if (typeof errorCallback === "function") {
2630
+ promise["catch"](errorCallback);
2631
+ }
2632
+ }
2633
+ function normalizeKey(key2) {
2634
+ if (typeof key2 !== "string") {
2635
+ console.warn(key2 + " used as a key, but it is not a string.");
2636
+ key2 = String(key2);
2637
+ }
2638
+ return key2;
2639
+ }
2640
+ function getCallback() {
2641
+ if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
2642
+ return arguments[arguments.length - 1];
2643
+ }
2644
+ }
2645
+ var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support";
2646
+ var supportsBlobs = void 0;
2647
+ var dbContexts = {};
2648
+ var toString = Object.prototype.toString;
2649
+ var READ_ONLY = "readonly";
2650
+ var READ_WRITE = "readwrite";
2651
+ function _binStringToArrayBuffer(bin) {
2652
+ var length2 = bin.length;
2653
+ var buf = new ArrayBuffer(length2);
2654
+ var arr = new Uint8Array(buf);
2655
+ for (var i = 0; i < length2; i++) {
2656
+ arr[i] = bin.charCodeAt(i);
2657
+ }
2658
+ return buf;
2659
+ }
2660
+ function _checkBlobSupportWithoutCaching(idb2) {
2661
+ return new Promise$1(function(resolve) {
2662
+ var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);
2663
+ var blob = createBlob([""]);
2664
+ txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key");
2665
+ txn.onabort = function(e) {
2666
+ e.preventDefault();
2667
+ e.stopPropagation();
2668
+ resolve(false);
2669
+ };
2670
+ txn.oncomplete = function() {
2671
+ var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);
2672
+ var matchedEdge = navigator.userAgent.match(/Edge\//);
2673
+ resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);
2674
+ };
2675
+ })["catch"](function() {
2676
+ return false;
2677
+ });
2678
+ }
2679
+ function _checkBlobSupport(idb2) {
2680
+ if (typeof supportsBlobs === "boolean") {
2681
+ return Promise$1.resolve(supportsBlobs);
2682
+ }
2683
+ return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
2684
+ supportsBlobs = value;
2685
+ return supportsBlobs;
2686
+ });
2687
+ }
2688
+ function _deferReadiness(dbInfo) {
2689
+ var dbContext = dbContexts[dbInfo.name];
2690
+ var deferredOperation = {};
2691
+ deferredOperation.promise = new Promise$1(function(resolve, reject) {
2692
+ deferredOperation.resolve = resolve;
2693
+ deferredOperation.reject = reject;
2694
+ });
2695
+ dbContext.deferredOperations.push(deferredOperation);
2696
+ if (!dbContext.dbReady) {
2697
+ dbContext.dbReady = deferredOperation.promise;
2698
+ } else {
2699
+ dbContext.dbReady = dbContext.dbReady.then(function() {
2700
+ return deferredOperation.promise;
2701
+ });
2702
+ }
2703
+ }
2704
+ function _advanceReadiness(dbInfo) {
2705
+ var dbContext = dbContexts[dbInfo.name];
2706
+ var deferredOperation = dbContext.deferredOperations.pop();
2707
+ if (deferredOperation) {
2708
+ deferredOperation.resolve();
2709
+ return deferredOperation.promise;
2710
+ }
2711
+ }
2712
+ function _rejectReadiness(dbInfo, err) {
2713
+ var dbContext = dbContexts[dbInfo.name];
2714
+ var deferredOperation = dbContext.deferredOperations.pop();
2715
+ if (deferredOperation) {
2716
+ deferredOperation.reject(err);
2717
+ return deferredOperation.promise;
2718
+ }
2719
+ }
2720
+ function _getConnection(dbInfo, upgradeNeeded) {
2721
+ return new Promise$1(function(resolve, reject) {
2722
+ dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();
2723
+ if (dbInfo.db) {
2724
+ if (upgradeNeeded) {
2725
+ _deferReadiness(dbInfo);
2726
+ dbInfo.db.close();
2727
+ } else {
2728
+ return resolve(dbInfo.db);
2729
+ }
2730
+ }
2731
+ var dbArgs = [dbInfo.name];
2732
+ if (upgradeNeeded) {
2733
+ dbArgs.push(dbInfo.version);
2734
+ }
2735
+ var openreq = idb.open.apply(idb, dbArgs);
2736
+ if (upgradeNeeded) {
2737
+ openreq.onupgradeneeded = function(e) {
2738
+ var db = openreq.result;
2739
+ try {
2740
+ db.createObjectStore(dbInfo.storeName);
2741
+ if (e.oldVersion <= 1) {
2742
+ db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);
2743
+ }
2744
+ } catch (ex) {
2745
+ if (ex.name === "ConstraintError") {
2746
+ console.warn('The database "' + dbInfo.name + '" has been upgraded from version ' + e.oldVersion + " to version " + e.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.');
2747
+ } else {
2748
+ throw ex;
2749
+ }
2750
+ }
2751
+ };
2752
+ }
2753
+ openreq.onerror = function(e) {
2754
+ e.preventDefault();
2755
+ reject(openreq.error);
2756
+ };
2757
+ openreq.onsuccess = function() {
2758
+ var db = openreq.result;
2759
+ db.onversionchange = function(e) {
2760
+ e.target.close();
2761
+ };
2762
+ resolve(db);
2763
+ _advanceReadiness(dbInfo);
2764
+ };
2765
+ });
2766
+ }
2767
+ function _getOriginalConnection(dbInfo) {
2768
+ return _getConnection(dbInfo, false);
2769
+ }
2770
+ function _getUpgradedConnection(dbInfo) {
2771
+ return _getConnection(dbInfo, true);
2772
+ }
2773
+ function _isUpgradeNeeded(dbInfo, defaultVersion) {
2774
+ if (!dbInfo.db) {
2775
+ return true;
2776
+ }
2777
+ var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);
2778
+ var isDowngrade = dbInfo.version < dbInfo.db.version;
2779
+ var isUpgrade = dbInfo.version > dbInfo.db.version;
2780
+ if (isDowngrade) {
2781
+ if (dbInfo.version !== defaultVersion) {
2782
+ console.warn('The database "' + dbInfo.name + `" can't be downgraded from version ` + dbInfo.db.version + " to version " + dbInfo.version + ".");
2783
+ }
2784
+ dbInfo.version = dbInfo.db.version;
2785
+ }
2786
+ if (isUpgrade || isNewStore) {
2787
+ if (isNewStore) {
2788
+ var incVersion = dbInfo.db.version + 1;
2789
+ if (incVersion > dbInfo.version) {
2790
+ dbInfo.version = incVersion;
2791
+ }
2792
+ }
2793
+ return true;
2794
+ }
2795
+ return false;
2796
+ }
2797
+ function _encodeBlob(blob) {
2798
+ return new Promise$1(function(resolve, reject) {
2799
+ var reader = new FileReader();
2800
+ reader.onerror = reject;
2801
+ reader.onloadend = function(e) {
2802
+ var base64 = btoa(e.target.result || "");
2803
+ resolve({
2804
+ __local_forage_encoded_blob: true,
2805
+ data: base64,
2806
+ type: blob.type
2807
+ });
2808
+ };
2809
+ reader.readAsBinaryString(blob);
2810
+ });
2811
+ }
2812
+ function _decodeBlob(encodedBlob) {
2813
+ var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
2814
+ return createBlob([arrayBuff], { type: encodedBlob.type });
2815
+ }
2816
+ function _isEncodedBlob(value) {
2817
+ return value && value.__local_forage_encoded_blob;
2818
+ }
2819
+ function _fullyReady(callback) {
2820
+ var self2 = this;
2821
+ var promise = self2._initReady().then(function() {
2822
+ var dbContext = dbContexts[self2._dbInfo.name];
2823
+ if (dbContext && dbContext.dbReady) {
2824
+ return dbContext.dbReady;
2825
+ }
2826
+ });
2827
+ executeTwoCallbacks(promise, callback, callback);
2828
+ return promise;
2829
+ }
2830
+ function _tryReconnect(dbInfo) {
2831
+ _deferReadiness(dbInfo);
2832
+ var dbContext = dbContexts[dbInfo.name];
2833
+ var forages = dbContext.forages;
2834
+ for (var i = 0; i < forages.length; i++) {
2835
+ var forage = forages[i];
2836
+ if (forage._dbInfo.db) {
2837
+ forage._dbInfo.db.close();
2838
+ forage._dbInfo.db = null;
2839
+ }
2840
+ }
2841
+ dbInfo.db = null;
2842
+ return _getOriginalConnection(dbInfo).then(function(db) {
2843
+ dbInfo.db = db;
2844
+ if (_isUpgradeNeeded(dbInfo)) {
2845
+ return _getUpgradedConnection(dbInfo);
2846
+ }
2847
+ return db;
2848
+ }).then(function(db) {
2849
+ dbInfo.db = dbContext.db = db;
2850
+ for (var i2 = 0; i2 < forages.length; i2++) {
2851
+ forages[i2]._dbInfo.db = db;
2852
+ }
2853
+ })["catch"](function(err) {
2854
+ _rejectReadiness(dbInfo, err);
2855
+ throw err;
2856
+ });
2857
+ }
2858
+ function createTransaction(dbInfo, mode, callback, retries) {
2859
+ if (retries === void 0) {
2860
+ retries = 1;
2861
+ }
2862
+ try {
2863
+ var tx = dbInfo.db.transaction(dbInfo.storeName, mode);
2864
+ callback(null, tx);
2865
+ } catch (err) {
2866
+ if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) {
2867
+ return Promise$1.resolve().then(function() {
2868
+ if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {
2869
+ if (dbInfo.db) {
2870
+ dbInfo.version = dbInfo.db.version + 1;
2871
+ }
2872
+ return _getUpgradedConnection(dbInfo);
2873
+ }
2874
+ }).then(function() {
2875
+ return _tryReconnect(dbInfo).then(function() {
2876
+ createTransaction(dbInfo, mode, callback, retries - 1);
2877
+ });
2878
+ })["catch"](callback);
2879
+ }
2880
+ callback(err);
2881
+ }
2882
+ }
2883
+ function createDbContext() {
2884
+ return {
2885
+ // Running localForages sharing a database.
2886
+ forages: [],
2887
+ // Shared database.
2888
+ db: null,
2889
+ // Database readiness (promise).
2890
+ dbReady: null,
2891
+ // Deferred operations on the database.
2892
+ deferredOperations: []
2893
+ };
2894
+ }
2895
+ function _initStorage(options) {
2896
+ var self2 = this;
2897
+ var dbInfo = {
2898
+ db: null
2899
+ };
2900
+ if (options) {
2901
+ for (var i in options) {
2902
+ dbInfo[i] = options[i];
2903
+ }
2904
+ }
2905
+ var dbContext = dbContexts[dbInfo.name];
2906
+ if (!dbContext) {
2907
+ dbContext = createDbContext();
2908
+ dbContexts[dbInfo.name] = dbContext;
2909
+ }
2910
+ dbContext.forages.push(self2);
2911
+ if (!self2._initReady) {
2912
+ self2._initReady = self2.ready;
2913
+ self2.ready = _fullyReady;
2914
+ }
2915
+ var initPromises = [];
2916
+ function ignoreErrors() {
2917
+ return Promise$1.resolve();
2918
+ }
2919
+ for (var j = 0; j < dbContext.forages.length; j++) {
2920
+ var forage = dbContext.forages[j];
2921
+ if (forage !== self2) {
2922
+ initPromises.push(forage._initReady()["catch"](ignoreErrors));
2923
+ }
2924
+ }
2925
+ var forages = dbContext.forages.slice(0);
2926
+ return Promise$1.all(initPromises).then(function() {
2927
+ dbInfo.db = dbContext.db;
2928
+ return _getOriginalConnection(dbInfo);
2929
+ }).then(function(db) {
2930
+ dbInfo.db = db;
2931
+ if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) {
2932
+ return _getUpgradedConnection(dbInfo);
2933
+ }
2934
+ return db;
2935
+ }).then(function(db) {
2936
+ dbInfo.db = dbContext.db = db;
2937
+ self2._dbInfo = dbInfo;
2938
+ for (var k = 0; k < forages.length; k++) {
2939
+ var forage2 = forages[k];
2940
+ if (forage2 !== self2) {
2941
+ forage2._dbInfo.db = dbInfo.db;
2942
+ forage2._dbInfo.version = dbInfo.version;
2943
+ }
2944
+ }
2945
+ });
2946
+ }
2947
+ function getItem(key2, callback) {
2948
+ var self2 = this;
2949
+ key2 = normalizeKey(key2);
2950
+ var promise = new Promise$1(function(resolve, reject) {
2951
+ self2.ready().then(function() {
2952
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
2953
+ if (err) {
2954
+ return reject(err);
2955
+ }
2956
+ try {
2957
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
2958
+ var req = store2.get(key2);
2959
+ req.onsuccess = function() {
2960
+ var value = req.result;
2961
+ if (value === void 0) {
2962
+ value = null;
2963
+ }
2964
+ if (_isEncodedBlob(value)) {
2965
+ value = _decodeBlob(value);
2966
+ }
2967
+ resolve(value);
2968
+ };
2969
+ req.onerror = function() {
2970
+ reject(req.error);
2971
+ };
2972
+ } catch (e) {
2973
+ reject(e);
2974
+ }
2975
+ });
2976
+ })["catch"](reject);
2977
+ });
2978
+ executeCallback(promise, callback);
2979
+ return promise;
2980
+ }
2981
+ function iterate(iterator, callback) {
2982
+ var self2 = this;
2983
+ var promise = new Promise$1(function(resolve, reject) {
2984
+ self2.ready().then(function() {
2985
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
2986
+ if (err) {
2987
+ return reject(err);
2988
+ }
2989
+ try {
2990
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
2991
+ var req = store2.openCursor();
2992
+ var iterationNumber = 1;
2993
+ req.onsuccess = function() {
2994
+ var cursor = req.result;
2995
+ if (cursor) {
2996
+ var value = cursor.value;
2997
+ if (_isEncodedBlob(value)) {
2998
+ value = _decodeBlob(value);
2999
+ }
3000
+ var result = iterator(value, cursor.key, iterationNumber++);
3001
+ if (result !== void 0) {
3002
+ resolve(result);
3003
+ } else {
3004
+ cursor["continue"]();
3005
+ }
3006
+ } else {
3007
+ resolve();
3008
+ }
3009
+ };
3010
+ req.onerror = function() {
3011
+ reject(req.error);
3012
+ };
3013
+ } catch (e) {
3014
+ reject(e);
3015
+ }
3016
+ });
3017
+ })["catch"](reject);
3018
+ });
3019
+ executeCallback(promise, callback);
3020
+ return promise;
3021
+ }
3022
+ function setItem(key2, value, callback) {
3023
+ var self2 = this;
3024
+ key2 = normalizeKey(key2);
3025
+ var promise = new Promise$1(function(resolve, reject) {
3026
+ var dbInfo;
3027
+ self2.ready().then(function() {
3028
+ dbInfo = self2._dbInfo;
3029
+ if (toString.call(value) === "[object Blob]") {
3030
+ return _checkBlobSupport(dbInfo.db).then(function(blobSupport) {
3031
+ if (blobSupport) {
3032
+ return value;
3033
+ }
3034
+ return _encodeBlob(value);
3035
+ });
3036
+ }
3037
+ return value;
3038
+ }).then(function(value2) {
3039
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
3040
+ if (err) {
3041
+ return reject(err);
3042
+ }
3043
+ try {
3044
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3045
+ if (value2 === null) {
3046
+ value2 = void 0;
3047
+ }
3048
+ var req = store2.put(value2, key2);
3049
+ transaction.oncomplete = function() {
3050
+ if (value2 === void 0) {
3051
+ value2 = null;
3052
+ }
3053
+ resolve(value2);
3054
+ };
3055
+ transaction.onabort = transaction.onerror = function() {
3056
+ var err2 = req.error ? req.error : req.transaction.error;
3057
+ reject(err2);
3058
+ };
3059
+ } catch (e) {
3060
+ reject(e);
3061
+ }
3062
+ });
3063
+ })["catch"](reject);
3064
+ });
3065
+ executeCallback(promise, callback);
3066
+ return promise;
3067
+ }
3068
+ function removeItem(key2, callback) {
3069
+ var self2 = this;
3070
+ key2 = normalizeKey(key2);
3071
+ var promise = new Promise$1(function(resolve, reject) {
3072
+ self2.ready().then(function() {
3073
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
3074
+ if (err) {
3075
+ return reject(err);
3076
+ }
3077
+ try {
3078
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3079
+ var req = store2["delete"](key2);
3080
+ transaction.oncomplete = function() {
3081
+ resolve();
3082
+ };
3083
+ transaction.onerror = function() {
3084
+ reject(req.error);
3085
+ };
3086
+ transaction.onabort = function() {
3087
+ var err2 = req.error ? req.error : req.transaction.error;
3088
+ reject(err2);
3089
+ };
3090
+ } catch (e) {
3091
+ reject(e);
3092
+ }
3093
+ });
3094
+ })["catch"](reject);
3095
+ });
3096
+ executeCallback(promise, callback);
3097
+ return promise;
3098
+ }
3099
+ function clear(callback) {
3100
+ var self2 = this;
3101
+ var promise = new Promise$1(function(resolve, reject) {
3102
+ self2.ready().then(function() {
3103
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
3104
+ if (err) {
3105
+ return reject(err);
3106
+ }
3107
+ try {
3108
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3109
+ var req = store2.clear();
3110
+ transaction.oncomplete = function() {
3111
+ resolve();
3112
+ };
3113
+ transaction.onabort = transaction.onerror = function() {
3114
+ var err2 = req.error ? req.error : req.transaction.error;
3115
+ reject(err2);
3116
+ };
3117
+ } catch (e) {
3118
+ reject(e);
3119
+ }
3120
+ });
3121
+ })["catch"](reject);
3122
+ });
3123
+ executeCallback(promise, callback);
3124
+ return promise;
3125
+ }
3126
+ function length(callback) {
3127
+ var self2 = this;
3128
+ var promise = new Promise$1(function(resolve, reject) {
3129
+ self2.ready().then(function() {
3130
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
3131
+ if (err) {
3132
+ return reject(err);
3133
+ }
3134
+ try {
3135
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3136
+ var req = store2.count();
3137
+ req.onsuccess = function() {
3138
+ resolve(req.result);
3139
+ };
3140
+ req.onerror = function() {
3141
+ reject(req.error);
3142
+ };
3143
+ } catch (e) {
3144
+ reject(e);
3145
+ }
3146
+ });
3147
+ })["catch"](reject);
3148
+ });
3149
+ executeCallback(promise, callback);
3150
+ return promise;
3151
+ }
3152
+ function key(n, callback) {
3153
+ var self2 = this;
3154
+ var promise = new Promise$1(function(resolve, reject) {
3155
+ if (n < 0) {
3156
+ resolve(null);
3157
+ return;
3158
+ }
3159
+ self2.ready().then(function() {
3160
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
3161
+ if (err) {
3162
+ return reject(err);
3163
+ }
3164
+ try {
3165
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3166
+ var advanced = false;
3167
+ var req = store2.openKeyCursor();
3168
+ req.onsuccess = function() {
3169
+ var cursor = req.result;
3170
+ if (!cursor) {
3171
+ resolve(null);
3172
+ return;
3173
+ }
3174
+ if (n === 0) {
3175
+ resolve(cursor.key);
3176
+ } else {
3177
+ if (!advanced) {
3178
+ advanced = true;
3179
+ cursor.advance(n);
3180
+ } else {
3181
+ resolve(cursor.key);
3182
+ }
3183
+ }
3184
+ };
3185
+ req.onerror = function() {
3186
+ reject(req.error);
3187
+ };
3188
+ } catch (e) {
3189
+ reject(e);
3190
+ }
3191
+ });
3192
+ })["catch"](reject);
3193
+ });
3194
+ executeCallback(promise, callback);
3195
+ return promise;
3196
+ }
3197
+ function keys(callback) {
3198
+ var self2 = this;
3199
+ var promise = new Promise$1(function(resolve, reject) {
3200
+ self2.ready().then(function() {
3201
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
3202
+ if (err) {
3203
+ return reject(err);
3204
+ }
3205
+ try {
3206
+ var store2 = transaction.objectStore(self2._dbInfo.storeName);
3207
+ var req = store2.openKeyCursor();
3208
+ var keys2 = [];
3209
+ req.onsuccess = function() {
3210
+ var cursor = req.result;
3211
+ if (!cursor) {
3212
+ resolve(keys2);
3213
+ return;
3214
+ }
3215
+ keys2.push(cursor.key);
3216
+ cursor["continue"]();
3217
+ };
3218
+ req.onerror = function() {
3219
+ reject(req.error);
3220
+ };
3221
+ } catch (e) {
3222
+ reject(e);
3223
+ }
3224
+ });
3225
+ })["catch"](reject);
3226
+ });
3227
+ executeCallback(promise, callback);
3228
+ return promise;
3229
+ }
3230
+ function dropInstance(options, callback) {
3231
+ callback = getCallback.apply(this, arguments);
3232
+ var currentConfig = this.config();
3233
+ options = typeof options !== "function" && options || {};
3234
+ if (!options.name) {
3235
+ options.name = options.name || currentConfig.name;
3236
+ options.storeName = options.storeName || currentConfig.storeName;
3237
+ }
3238
+ var self2 = this;
3239
+ var promise;
3240
+ if (!options.name) {
3241
+ promise = Promise$1.reject("Invalid arguments");
3242
+ } else {
3243
+ var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db;
3244
+ var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) {
3245
+ var dbContext = dbContexts[options.name];
3246
+ var forages = dbContext.forages;
3247
+ dbContext.db = db;
3248
+ for (var i = 0; i < forages.length; i++) {
3249
+ forages[i]._dbInfo.db = db;
3250
+ }
3251
+ return db;
3252
+ });
3253
+ if (!options.storeName) {
3254
+ promise = dbPromise.then(function(db) {
3255
+ _deferReadiness(options);
3256
+ var dbContext = dbContexts[options.name];
3257
+ var forages = dbContext.forages;
3258
+ db.close();
3259
+ for (var i = 0; i < forages.length; i++) {
3260
+ var forage = forages[i];
3261
+ forage._dbInfo.db = null;
3262
+ }
3263
+ var dropDBPromise = new Promise$1(function(resolve, reject) {
3264
+ var req = idb.deleteDatabase(options.name);
3265
+ req.onerror = function() {
3266
+ var db2 = req.result;
3267
+ if (db2) {
3268
+ db2.close();
3269
+ }
3270
+ reject(req.error);
3271
+ };
3272
+ req.onblocked = function() {
3273
+ console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed');
3274
+ };
3275
+ req.onsuccess = function() {
3276
+ var db2 = req.result;
3277
+ if (db2) {
3278
+ db2.close();
3279
+ }
3280
+ resolve(db2);
3281
+ };
3282
+ });
3283
+ return dropDBPromise.then(function(db2) {
3284
+ dbContext.db = db2;
3285
+ for (var i2 = 0; i2 < forages.length; i2++) {
3286
+ var _forage = forages[i2];
3287
+ _advanceReadiness(_forage._dbInfo);
3288
+ }
3289
+ })["catch"](function(err) {
3290
+ (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
3291
+ });
3292
+ throw err;
3293
+ });
3294
+ });
3295
+ } else {
3296
+ promise = dbPromise.then(function(db) {
3297
+ if (!db.objectStoreNames.contains(options.storeName)) {
3298
+ return;
3299
+ }
3300
+ var newVersion = db.version + 1;
3301
+ _deferReadiness(options);
3302
+ var dbContext = dbContexts[options.name];
3303
+ var forages = dbContext.forages;
3304
+ db.close();
3305
+ for (var i = 0; i < forages.length; i++) {
3306
+ var forage = forages[i];
3307
+ forage._dbInfo.db = null;
3308
+ forage._dbInfo.version = newVersion;
3309
+ }
3310
+ var dropObjectPromise = new Promise$1(function(resolve, reject) {
3311
+ var req = idb.open(options.name, newVersion);
3312
+ req.onerror = function(err) {
3313
+ var db2 = req.result;
3314
+ db2.close();
3315
+ reject(err);
3316
+ };
3317
+ req.onupgradeneeded = function() {
3318
+ var db2 = req.result;
3319
+ db2.deleteObjectStore(options.storeName);
3320
+ };
3321
+ req.onsuccess = function() {
3322
+ var db2 = req.result;
3323
+ db2.close();
3324
+ resolve(db2);
3325
+ };
3326
+ });
3327
+ return dropObjectPromise.then(function(db2) {
3328
+ dbContext.db = db2;
3329
+ for (var j = 0; j < forages.length; j++) {
3330
+ var _forage2 = forages[j];
3331
+ _forage2._dbInfo.db = db2;
3332
+ _advanceReadiness(_forage2._dbInfo);
3333
+ }
3334
+ })["catch"](function(err) {
3335
+ (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
3336
+ });
3337
+ throw err;
3338
+ });
3339
+ });
3340
+ }
3341
+ }
3342
+ executeCallback(promise, callback);
3343
+ return promise;
3344
+ }
3345
+ var asyncStorage = {
3346
+ _driver: "asyncStorage",
3347
+ _initStorage,
3348
+ _support: isIndexedDBValid(),
3349
+ iterate,
3350
+ getItem,
3351
+ setItem,
3352
+ removeItem,
3353
+ clear,
3354
+ length,
3355
+ key,
3356
+ keys,
3357
+ dropInstance
3358
+ };
3359
+ function isWebSQLValid() {
3360
+ return typeof openDatabase === "function";
3361
+ }
3362
+ var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
3363
+ var BLOB_TYPE_PREFIX = "~~local_forage_type~";
3364
+ var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
3365
+ var SERIALIZED_MARKER = "__lfsc__:";
3366
+ var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;
3367
+ var TYPE_ARRAYBUFFER = "arbf";
3368
+ var TYPE_BLOB = "blob";
3369
+ var TYPE_INT8ARRAY = "si08";
3370
+ var TYPE_UINT8ARRAY = "ui08";
3371
+ var TYPE_UINT8CLAMPEDARRAY = "uic8";
3372
+ var TYPE_INT16ARRAY = "si16";
3373
+ var TYPE_INT32ARRAY = "si32";
3374
+ var TYPE_UINT16ARRAY = "ur16";
3375
+ var TYPE_UINT32ARRAY = "ui32";
3376
+ var TYPE_FLOAT32ARRAY = "fl32";
3377
+ var TYPE_FLOAT64ARRAY = "fl64";
3378
+ var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;
3379
+ var toString$1 = Object.prototype.toString;
3380
+ function stringToBuffer(serializedString) {
3381
+ var bufferLength = serializedString.length * 0.75;
3382
+ var len = serializedString.length;
3383
+ var i;
3384
+ var p = 0;
3385
+ var encoded1, encoded2, encoded3, encoded4;
3386
+ if (serializedString[serializedString.length - 1] === "=") {
3387
+ bufferLength--;
3388
+ if (serializedString[serializedString.length - 2] === "=") {
3389
+ bufferLength--;
3390
+ }
3391
+ }
3392
+ var buffer = new ArrayBuffer(bufferLength);
3393
+ var bytes = new Uint8Array(buffer);
3394
+ for (i = 0; i < len; i += 4) {
3395
+ encoded1 = BASE_CHARS.indexOf(serializedString[i]);
3396
+ encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);
3397
+ encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);
3398
+ encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);
3399
+ bytes[p++] = encoded1 << 2 | encoded2 >> 4;
3400
+ bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
3401
+ bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
3402
+ }
3403
+ return buffer;
3404
+ }
3405
+ function bufferToString(buffer) {
3406
+ var bytes = new Uint8Array(buffer);
3407
+ var base64String = "";
3408
+ var i;
3409
+ for (i = 0; i < bytes.length; i += 3) {
3410
+ base64String += BASE_CHARS[bytes[i] >> 2];
3411
+ base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
3412
+ base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
3413
+ base64String += BASE_CHARS[bytes[i + 2] & 63];
3414
+ }
3415
+ if (bytes.length % 3 === 2) {
3416
+ base64String = base64String.substring(0, base64String.length - 1) + "=";
3417
+ } else if (bytes.length % 3 === 1) {
3418
+ base64String = base64String.substring(0, base64String.length - 2) + "==";
3419
+ }
3420
+ return base64String;
3421
+ }
3422
+ function serialize(value, callback) {
3423
+ var valueType = "";
3424
+ if (value) {
3425
+ valueType = toString$1.call(value);
3426
+ }
3427
+ if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) {
3428
+ var buffer;
3429
+ var marker = SERIALIZED_MARKER;
3430
+ if (value instanceof ArrayBuffer) {
3431
+ buffer = value;
3432
+ marker += TYPE_ARRAYBUFFER;
3433
+ } else {
3434
+ buffer = value.buffer;
3435
+ if (valueType === "[object Int8Array]") {
3436
+ marker += TYPE_INT8ARRAY;
3437
+ } else if (valueType === "[object Uint8Array]") {
3438
+ marker += TYPE_UINT8ARRAY;
3439
+ } else if (valueType === "[object Uint8ClampedArray]") {
3440
+ marker += TYPE_UINT8CLAMPEDARRAY;
3441
+ } else if (valueType === "[object Int16Array]") {
3442
+ marker += TYPE_INT16ARRAY;
3443
+ } else if (valueType === "[object Uint16Array]") {
3444
+ marker += TYPE_UINT16ARRAY;
3445
+ } else if (valueType === "[object Int32Array]") {
3446
+ marker += TYPE_INT32ARRAY;
3447
+ } else if (valueType === "[object Uint32Array]") {
3448
+ marker += TYPE_UINT32ARRAY;
3449
+ } else if (valueType === "[object Float32Array]") {
3450
+ marker += TYPE_FLOAT32ARRAY;
3451
+ } else if (valueType === "[object Float64Array]") {
3452
+ marker += TYPE_FLOAT64ARRAY;
3453
+ } else {
3454
+ callback(new Error("Failed to get type for BinaryArray"));
3455
+ }
3456
+ }
3457
+ callback(marker + bufferToString(buffer));
3458
+ } else if (valueType === "[object Blob]") {
3459
+ var fileReader = new FileReader();
3460
+ fileReader.onload = function() {
3461
+ var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result);
3462
+ callback(SERIALIZED_MARKER + TYPE_BLOB + str);
3463
+ };
3464
+ fileReader.readAsArrayBuffer(value);
3465
+ } else {
3466
+ try {
3467
+ callback(JSON.stringify(value));
3468
+ } catch (e) {
3469
+ console.error("Couldn't convert value into a JSON string: ", value);
3470
+ callback(null, e);
3471
+ }
3472
+ }
3473
+ }
3474
+ function deserialize(value) {
3475
+ if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {
3476
+ return JSON.parse(value);
3477
+ }
3478
+ var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
3479
+ var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
3480
+ var blobType;
3481
+ if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
3482
+ var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
3483
+ blobType = matcher[1];
3484
+ serializedString = serializedString.substring(matcher[0].length);
3485
+ }
3486
+ var buffer = stringToBuffer(serializedString);
3487
+ switch (type) {
3488
+ case TYPE_ARRAYBUFFER:
3489
+ return buffer;
3490
+ case TYPE_BLOB:
3491
+ return createBlob([buffer], { type: blobType });
3492
+ case TYPE_INT8ARRAY:
3493
+ return new Int8Array(buffer);
3494
+ case TYPE_UINT8ARRAY:
3495
+ return new Uint8Array(buffer);
3496
+ case TYPE_UINT8CLAMPEDARRAY:
3497
+ return new Uint8ClampedArray(buffer);
3498
+ case TYPE_INT16ARRAY:
3499
+ return new Int16Array(buffer);
3500
+ case TYPE_UINT16ARRAY:
3501
+ return new Uint16Array(buffer);
3502
+ case TYPE_INT32ARRAY:
3503
+ return new Int32Array(buffer);
3504
+ case TYPE_UINT32ARRAY:
3505
+ return new Uint32Array(buffer);
3506
+ case TYPE_FLOAT32ARRAY:
3507
+ return new Float32Array(buffer);
3508
+ case TYPE_FLOAT64ARRAY:
3509
+ return new Float64Array(buffer);
3510
+ default:
3511
+ throw new Error("Unkown type: " + type);
3512
+ }
3513
+ }
3514
+ var localforageSerializer = {
3515
+ serialize,
3516
+ deserialize,
3517
+ stringToBuffer,
3518
+ bufferToString
3519
+ };
3520
+ function createDbTable(t, dbInfo, callback, errorCallback) {
3521
+ t.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback);
3522
+ }
3523
+ function _initStorage$1(options) {
3524
+ var self2 = this;
3525
+ var dbInfo = {
3526
+ db: null
3527
+ };
3528
+ if (options) {
3529
+ for (var i in options) {
3530
+ dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i];
3531
+ }
3532
+ }
3533
+ var dbInfoPromise = new Promise$1(function(resolve, reject) {
3534
+ try {
3535
+ dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);
3536
+ } catch (e) {
3537
+ return reject(e);
3538
+ }
3539
+ dbInfo.db.transaction(function(t) {
3540
+ createDbTable(t, dbInfo, function() {
3541
+ self2._dbInfo = dbInfo;
3542
+ resolve();
3543
+ }, function(t2, error) {
3544
+ reject(error);
3545
+ });
3546
+ }, reject);
3547
+ });
3548
+ dbInfo.serializer = localforageSerializer;
3549
+ return dbInfoPromise;
3550
+ }
3551
+ function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {
3552
+ t.executeSql(sqlStatement, args, callback, function(t2, error) {
3553
+ if (error.code === error.SYNTAX_ERR) {
3554
+ t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t3, results) {
3555
+ if (!results.rows.length) {
3556
+ createDbTable(t3, dbInfo, function() {
3557
+ t3.executeSql(sqlStatement, args, callback, errorCallback);
3558
+ }, errorCallback);
3559
+ } else {
3560
+ errorCallback(t3, error);
3561
+ }
3562
+ }, errorCallback);
3563
+ } else {
3564
+ errorCallback(t2, error);
3565
+ }
3566
+ }, errorCallback);
3567
+ }
3568
+ function getItem$1(key2, callback) {
3569
+ var self2 = this;
3570
+ key2 = normalizeKey(key2);
3571
+ var promise = new Promise$1(function(resolve, reject) {
3572
+ self2.ready().then(function() {
3573
+ var dbInfo = self2._dbInfo;
3574
+ dbInfo.db.transaction(function(t) {
3575
+ tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t2, results) {
3576
+ var result = results.rows.length ? results.rows.item(0).value : null;
3577
+ if (result) {
3578
+ result = dbInfo.serializer.deserialize(result);
3579
+ }
3580
+ resolve(result);
3581
+ }, function(t2, error) {
3582
+ reject(error);
3583
+ });
3584
+ });
3585
+ })["catch"](reject);
3586
+ });
3587
+ executeCallback(promise, callback);
3588
+ return promise;
3589
+ }
3590
+ function iterate$1(iterator, callback) {
3591
+ var self2 = this;
3592
+ var promise = new Promise$1(function(resolve, reject) {
3593
+ self2.ready().then(function() {
3594
+ var dbInfo = self2._dbInfo;
3595
+ dbInfo.db.transaction(function(t) {
3596
+ tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t2, results) {
3597
+ var rows = results.rows;
3598
+ var length2 = rows.length;
3599
+ for (var i = 0; i < length2; i++) {
3600
+ var item = rows.item(i);
3601
+ var result = item.value;
3602
+ if (result) {
3603
+ result = dbInfo.serializer.deserialize(result);
3604
+ }
3605
+ result = iterator(result, item.key, i + 1);
3606
+ if (result !== void 0) {
3607
+ resolve(result);
3608
+ return;
3609
+ }
3610
+ }
3611
+ resolve();
3612
+ }, function(t2, error) {
3613
+ reject(error);
3614
+ });
3615
+ });
3616
+ })["catch"](reject);
3617
+ });
3618
+ executeCallback(promise, callback);
3619
+ return promise;
3620
+ }
3621
+ function _setItem(key2, value, callback, retriesLeft) {
3622
+ var self2 = this;
3623
+ key2 = normalizeKey(key2);
3624
+ var promise = new Promise$1(function(resolve, reject) {
3625
+ self2.ready().then(function() {
3626
+ if (value === void 0) {
3627
+ value = null;
3628
+ }
3629
+ var originalValue = value;
3630
+ var dbInfo = self2._dbInfo;
3631
+ dbInfo.serializer.serialize(value, function(value2, error) {
3632
+ if (error) {
3633
+ reject(error);
3634
+ } else {
3635
+ dbInfo.db.transaction(function(t) {
3636
+ tryExecuteSql(t, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() {
3637
+ resolve(originalValue);
3638
+ }, function(t2, error2) {
3639
+ reject(error2);
3640
+ });
3641
+ }, function(sqlError) {
3642
+ if (sqlError.code === sqlError.QUOTA_ERR) {
3643
+ if (retriesLeft > 0) {
3644
+ resolve(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1]));
3645
+ return;
3646
+ }
3647
+ reject(sqlError);
3648
+ }
3649
+ });
3650
+ }
3651
+ });
3652
+ })["catch"](reject);
3653
+ });
3654
+ executeCallback(promise, callback);
3655
+ return promise;
3656
+ }
3657
+ function setItem$1(key2, value, callback) {
3658
+ return _setItem.apply(this, [key2, value, callback, 1]);
3659
+ }
3660
+ function removeItem$1(key2, callback) {
3661
+ var self2 = this;
3662
+ key2 = normalizeKey(key2);
3663
+ var promise = new Promise$1(function(resolve, reject) {
3664
+ self2.ready().then(function() {
3665
+ var dbInfo = self2._dbInfo;
3666
+ dbInfo.db.transaction(function(t) {
3667
+ tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() {
3668
+ resolve();
3669
+ }, function(t2, error) {
3670
+ reject(error);
3671
+ });
3672
+ });
3673
+ })["catch"](reject);
3674
+ });
3675
+ executeCallback(promise, callback);
3676
+ return promise;
3677
+ }
3678
+ function clear$1(callback) {
3679
+ var self2 = this;
3680
+ var promise = new Promise$1(function(resolve, reject) {
3681
+ self2.ready().then(function() {
3682
+ var dbInfo = self2._dbInfo;
3683
+ dbInfo.db.transaction(function(t) {
3684
+ tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() {
3685
+ resolve();
3686
+ }, function(t2, error) {
3687
+ reject(error);
3688
+ });
3689
+ });
3690
+ })["catch"](reject);
3691
+ });
3692
+ executeCallback(promise, callback);
3693
+ return promise;
3694
+ }
3695
+ function length$1(callback) {
3696
+ var self2 = this;
3697
+ var promise = new Promise$1(function(resolve, reject) {
3698
+ self2.ready().then(function() {
3699
+ var dbInfo = self2._dbInfo;
3700
+ dbInfo.db.transaction(function(t) {
3701
+ tryExecuteSql(t, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t2, results) {
3702
+ var result = results.rows.item(0).c;
3703
+ resolve(result);
3704
+ }, function(t2, error) {
3705
+ reject(error);
3706
+ });
3707
+ });
3708
+ })["catch"](reject);
3709
+ });
3710
+ executeCallback(promise, callback);
3711
+ return promise;
3712
+ }
3713
+ function key$1(n, callback) {
3714
+ var self2 = this;
3715
+ var promise = new Promise$1(function(resolve, reject) {
3716
+ self2.ready().then(function() {
3717
+ var dbInfo = self2._dbInfo;
3718
+ dbInfo.db.transaction(function(t) {
3719
+ tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n + 1], function(t2, results) {
3720
+ var result = results.rows.length ? results.rows.item(0).key : null;
3721
+ resolve(result);
3722
+ }, function(t2, error) {
3723
+ reject(error);
3724
+ });
3725
+ });
3726
+ })["catch"](reject);
3727
+ });
3728
+ executeCallback(promise, callback);
3729
+ return promise;
3730
+ }
3731
+ function keys$1(callback) {
3732
+ var self2 = this;
3733
+ var promise = new Promise$1(function(resolve, reject) {
3734
+ self2.ready().then(function() {
3735
+ var dbInfo = self2._dbInfo;
3736
+ dbInfo.db.transaction(function(t) {
3737
+ tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t2, results) {
3738
+ var keys2 = [];
3739
+ for (var i = 0; i < results.rows.length; i++) {
3740
+ keys2.push(results.rows.item(i).key);
3741
+ }
3742
+ resolve(keys2);
3743
+ }, function(t2, error) {
3744
+ reject(error);
3745
+ });
3746
+ });
3747
+ })["catch"](reject);
3748
+ });
3749
+ executeCallback(promise, callback);
3750
+ return promise;
3751
+ }
3752
+ function getAllStoreNames(db) {
3753
+ return new Promise$1(function(resolve, reject) {
3754
+ db.transaction(function(t) {
3755
+ t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t2, results) {
3756
+ var storeNames = [];
3757
+ for (var i = 0; i < results.rows.length; i++) {
3758
+ storeNames.push(results.rows.item(i).name);
3759
+ }
3760
+ resolve({
3761
+ db,
3762
+ storeNames
3763
+ });
3764
+ }, function(t2, error) {
3765
+ reject(error);
3766
+ });
3767
+ }, function(sqlError) {
3768
+ reject(sqlError);
3769
+ });
3770
+ });
3771
+ }
3772
+ function dropInstance$1(options, callback) {
3773
+ callback = getCallback.apply(this, arguments);
3774
+ var currentConfig = this.config();
3775
+ options = typeof options !== "function" && options || {};
3776
+ if (!options.name) {
3777
+ options.name = options.name || currentConfig.name;
3778
+ options.storeName = options.storeName || currentConfig.storeName;
3779
+ }
3780
+ var self2 = this;
3781
+ var promise;
3782
+ if (!options.name) {
3783
+ promise = Promise$1.reject("Invalid arguments");
3784
+ } else {
3785
+ promise = new Promise$1(function(resolve) {
3786
+ var db;
3787
+ if (options.name === currentConfig.name) {
3788
+ db = self2._dbInfo.db;
3789
+ } else {
3790
+ db = openDatabase(options.name, "", "", 0);
3791
+ }
3792
+ if (!options.storeName) {
3793
+ resolve(getAllStoreNames(db));
3794
+ } else {
3795
+ resolve({
3796
+ db,
3797
+ storeNames: [options.storeName]
3798
+ });
3799
+ }
3800
+ }).then(function(operationInfo) {
3801
+ return new Promise$1(function(resolve, reject) {
3802
+ operationInfo.db.transaction(function(t) {
3803
+ function dropTable(storeName) {
3804
+ return new Promise$1(function(resolve2, reject2) {
3805
+ t.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() {
3806
+ resolve2();
3807
+ }, function(t2, error) {
3808
+ reject2(error);
3809
+ });
3810
+ });
3811
+ }
3812
+ var operations = [];
3813
+ for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {
3814
+ operations.push(dropTable(operationInfo.storeNames[i]));
3815
+ }
3816
+ Promise$1.all(operations).then(function() {
3817
+ resolve();
3818
+ })["catch"](function(e) {
3819
+ reject(e);
3820
+ });
3821
+ }, function(sqlError) {
3822
+ reject(sqlError);
3823
+ });
3824
+ });
3825
+ });
3826
+ }
3827
+ executeCallback(promise, callback);
3828
+ return promise;
3829
+ }
3830
+ var webSQLStorage = {
3831
+ _driver: "webSQLStorage",
3832
+ _initStorage: _initStorage$1,
3833
+ _support: isWebSQLValid(),
3834
+ iterate: iterate$1,
3835
+ getItem: getItem$1,
3836
+ setItem: setItem$1,
3837
+ removeItem: removeItem$1,
3838
+ clear: clear$1,
3839
+ length: length$1,
3840
+ key: key$1,
3841
+ keys: keys$1,
3842
+ dropInstance: dropInstance$1
3843
+ };
3844
+ function isLocalStorageValid() {
3845
+ try {
3846
+ return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object'
3847
+ !!localStorage.setItem;
3848
+ } catch (e) {
3849
+ return false;
3850
+ }
3851
+ }
3852
+ function _getKeyPrefix(options, defaultConfig) {
3853
+ var keyPrefix = options.name + "/";
3854
+ if (options.storeName !== defaultConfig.storeName) {
3855
+ keyPrefix += options.storeName + "/";
3856
+ }
3857
+ return keyPrefix;
3858
+ }
3859
+ function checkIfLocalStorageThrows() {
3860
+ var localStorageTestKey = "_localforage_support_test";
3861
+ try {
3862
+ localStorage.setItem(localStorageTestKey, true);
3863
+ localStorage.removeItem(localStorageTestKey);
3864
+ return false;
3865
+ } catch (e) {
3866
+ return true;
3867
+ }
3868
+ }
3869
+ function _isLocalStorageUsable() {
3870
+ return !checkIfLocalStorageThrows() || localStorage.length > 0;
3871
+ }
3872
+ function _initStorage$2(options) {
3873
+ var self2 = this;
3874
+ var dbInfo = {};
3875
+ if (options) {
3876
+ for (var i in options) {
3877
+ dbInfo[i] = options[i];
3878
+ }
3879
+ }
3880
+ dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
3881
+ if (!_isLocalStorageUsable()) {
3882
+ return Promise$1.reject();
3883
+ }
3884
+ self2._dbInfo = dbInfo;
3885
+ dbInfo.serializer = localforageSerializer;
3886
+ return Promise$1.resolve();
3887
+ }
3888
+ function clear$2(callback) {
3889
+ var self2 = this;
3890
+ var promise = self2.ready().then(function() {
3891
+ var keyPrefix = self2._dbInfo.keyPrefix;
3892
+ for (var i = localStorage.length - 1; i >= 0; i--) {
3893
+ var key2 = localStorage.key(i);
3894
+ if (key2.indexOf(keyPrefix) === 0) {
3895
+ localStorage.removeItem(key2);
3896
+ }
3897
+ }
3898
+ });
3899
+ executeCallback(promise, callback);
3900
+ return promise;
3901
+ }
3902
+ function getItem$2(key2, callback) {
3903
+ var self2 = this;
3904
+ key2 = normalizeKey(key2);
3905
+ var promise = self2.ready().then(function() {
3906
+ var dbInfo = self2._dbInfo;
3907
+ var result = localStorage.getItem(dbInfo.keyPrefix + key2);
3908
+ if (result) {
3909
+ result = dbInfo.serializer.deserialize(result);
3910
+ }
3911
+ return result;
3912
+ });
3913
+ executeCallback(promise, callback);
3914
+ return promise;
3915
+ }
3916
+ function iterate$2(iterator, callback) {
3917
+ var self2 = this;
3918
+ var promise = self2.ready().then(function() {
3919
+ var dbInfo = self2._dbInfo;
3920
+ var keyPrefix = dbInfo.keyPrefix;
3921
+ var keyPrefixLength = keyPrefix.length;
3922
+ var length2 = localStorage.length;
3923
+ var iterationNumber = 1;
3924
+ for (var i = 0; i < length2; i++) {
3925
+ var key2 = localStorage.key(i);
3926
+ if (key2.indexOf(keyPrefix) !== 0) {
3927
+ continue;
3928
+ }
3929
+ var value = localStorage.getItem(key2);
3930
+ if (value) {
3931
+ value = dbInfo.serializer.deserialize(value);
3932
+ }
3933
+ value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
3934
+ if (value !== void 0) {
3935
+ return value;
3936
+ }
3937
+ }
3938
+ });
3939
+ executeCallback(promise, callback);
3940
+ return promise;
3941
+ }
3942
+ function key$2(n, callback) {
3943
+ var self2 = this;
3944
+ var promise = self2.ready().then(function() {
3945
+ var dbInfo = self2._dbInfo;
3946
+ var result;
3947
+ try {
3948
+ result = localStorage.key(n);
3949
+ } catch (error) {
3950
+ result = null;
3951
+ }
3952
+ if (result) {
3953
+ result = result.substring(dbInfo.keyPrefix.length);
3954
+ }
3955
+ return result;
3956
+ });
3957
+ executeCallback(promise, callback);
3958
+ return promise;
3959
+ }
3960
+ function keys$2(callback) {
3961
+ var self2 = this;
3962
+ var promise = self2.ready().then(function() {
3963
+ var dbInfo = self2._dbInfo;
3964
+ var length2 = localStorage.length;
3965
+ var keys2 = [];
3966
+ for (var i = 0; i < length2; i++) {
3967
+ var itemKey = localStorage.key(i);
3968
+ if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {
3969
+ keys2.push(itemKey.substring(dbInfo.keyPrefix.length));
3970
+ }
3971
+ }
3972
+ return keys2;
3973
+ });
3974
+ executeCallback(promise, callback);
3975
+ return promise;
3976
+ }
3977
+ function length$2(callback) {
3978
+ var self2 = this;
3979
+ var promise = self2.keys().then(function(keys2) {
3980
+ return keys2.length;
3981
+ });
3982
+ executeCallback(promise, callback);
3983
+ return promise;
3984
+ }
3985
+ function removeItem$2(key2, callback) {
3986
+ var self2 = this;
3987
+ key2 = normalizeKey(key2);
3988
+ var promise = self2.ready().then(function() {
3989
+ var dbInfo = self2._dbInfo;
3990
+ localStorage.removeItem(dbInfo.keyPrefix + key2);
3991
+ });
3992
+ executeCallback(promise, callback);
3993
+ return promise;
3994
+ }
3995
+ function setItem$2(key2, value, callback) {
3996
+ var self2 = this;
3997
+ key2 = normalizeKey(key2);
3998
+ var promise = self2.ready().then(function() {
3999
+ if (value === void 0) {
4000
+ value = null;
4001
+ }
4002
+ var originalValue = value;
4003
+ return new Promise$1(function(resolve, reject) {
4004
+ var dbInfo = self2._dbInfo;
4005
+ dbInfo.serializer.serialize(value, function(value2, error) {
4006
+ if (error) {
4007
+ reject(error);
4008
+ } else {
4009
+ try {
4010
+ localStorage.setItem(dbInfo.keyPrefix + key2, value2);
4011
+ resolve(originalValue);
4012
+ } catch (e) {
4013
+ if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED") {
4014
+ reject(e);
4015
+ }
4016
+ reject(e);
4017
+ }
4018
+ }
4019
+ });
4020
+ });
4021
+ });
4022
+ executeCallback(promise, callback);
4023
+ return promise;
4024
+ }
4025
+ function dropInstance$2(options, callback) {
4026
+ callback = getCallback.apply(this, arguments);
4027
+ options = typeof options !== "function" && options || {};
4028
+ if (!options.name) {
4029
+ var currentConfig = this.config();
4030
+ options.name = options.name || currentConfig.name;
4031
+ options.storeName = options.storeName || currentConfig.storeName;
4032
+ }
4033
+ var self2 = this;
4034
+ var promise;
4035
+ if (!options.name) {
4036
+ promise = Promise$1.reject("Invalid arguments");
4037
+ } else {
4038
+ promise = new Promise$1(function(resolve) {
4039
+ if (!options.storeName) {
4040
+ resolve(options.name + "/");
4041
+ } else {
4042
+ resolve(_getKeyPrefix(options, self2._defaultConfig));
4043
+ }
4044
+ }).then(function(keyPrefix) {
4045
+ for (var i = localStorage.length - 1; i >= 0; i--) {
4046
+ var key2 = localStorage.key(i);
4047
+ if (key2.indexOf(keyPrefix) === 0) {
4048
+ localStorage.removeItem(key2);
4049
+ }
4050
+ }
4051
+ });
4052
+ }
4053
+ executeCallback(promise, callback);
4054
+ return promise;
4055
+ }
4056
+ var localStorageWrapper = {
4057
+ _driver: "localStorageWrapper",
4058
+ _initStorage: _initStorage$2,
4059
+ _support: isLocalStorageValid(),
4060
+ iterate: iterate$2,
4061
+ getItem: getItem$2,
4062
+ setItem: setItem$2,
4063
+ removeItem: removeItem$2,
4064
+ clear: clear$2,
4065
+ length: length$2,
4066
+ key: key$2,
4067
+ keys: keys$2,
4068
+ dropInstance: dropInstance$2
4069
+ };
4070
+ var sameValue = function sameValue2(x, y) {
4071
+ return x === y || typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y);
4072
+ };
4073
+ var includes = function includes2(array, searchElement) {
4074
+ var len = array.length;
4075
+ var i = 0;
4076
+ while (i < len) {
4077
+ if (sameValue(array[i], searchElement)) {
4078
+ return true;
4079
+ }
4080
+ i++;
4081
+ }
4082
+ return false;
4083
+ };
4084
+ var isArray = Array.isArray || function(arg) {
4085
+ return Object.prototype.toString.call(arg) === "[object Array]";
4086
+ };
4087
+ var DefinedDrivers = {};
4088
+ var DriverSupport = {};
4089
+ var DefaultDrivers = {
4090
+ INDEXEDDB: asyncStorage,
4091
+ WEBSQL: webSQLStorage,
4092
+ LOCALSTORAGE: localStorageWrapper
4093
+ };
4094
+ var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];
4095
+ var OptionalDriverMethods = ["dropInstance"];
4096
+ var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods);
4097
+ var DefaultConfig = {
4098
+ description: "",
4099
+ driver: DefaultDriverOrder.slice(),
4100
+ name: "localforage",
4101
+ // Default DB size is _JUST UNDER_ 5MB, as it's the highest size
4102
+ // we can use without a prompt.
4103
+ size: 4980736,
4104
+ storeName: "keyvaluepairs",
4105
+ version: 1
4106
+ };
4107
+ function callWhenReady(localForageInstance, libraryMethod) {
4108
+ localForageInstance[libraryMethod] = function() {
4109
+ var _args = arguments;
4110
+ return localForageInstance.ready().then(function() {
4111
+ return localForageInstance[libraryMethod].apply(localForageInstance, _args);
4112
+ });
4113
+ };
4114
+ }
4115
+ function extend() {
4116
+ for (var i = 1; i < arguments.length; i++) {
4117
+ var arg = arguments[i];
4118
+ if (arg) {
4119
+ for (var _key in arg) {
4120
+ if (arg.hasOwnProperty(_key)) {
4121
+ if (isArray(arg[_key])) {
4122
+ arguments[0][_key] = arg[_key].slice();
4123
+ } else {
4124
+ arguments[0][_key] = arg[_key];
4125
+ }
4126
+ }
4127
+ }
4128
+ }
4129
+ }
4130
+ return arguments[0];
4131
+ }
4132
+ var LocalForage = function() {
4133
+ function LocalForage2(options) {
4134
+ _classCallCheck(this, LocalForage2);
4135
+ for (var driverTypeKey in DefaultDrivers) {
4136
+ if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {
4137
+ var driver = DefaultDrivers[driverTypeKey];
4138
+ var driverName = driver._driver;
4139
+ this[driverTypeKey] = driverName;
4140
+ if (!DefinedDrivers[driverName]) {
4141
+ this.defineDriver(driver);
4142
+ }
4143
+ }
4144
+ }
4145
+ this._defaultConfig = extend({}, DefaultConfig);
4146
+ this._config = extend({}, this._defaultConfig, options);
4147
+ this._driverSet = null;
4148
+ this._initDriver = null;
4149
+ this._ready = false;
4150
+ this._dbInfo = null;
4151
+ this._wrapLibraryMethodsWithReady();
4152
+ this.setDriver(this._config.driver)["catch"](function() {
4153
+ });
4154
+ }
4155
+ LocalForage2.prototype.config = function config(options) {
4156
+ if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") {
4157
+ if (this._ready) {
4158
+ return new Error("Can't call config() after localforage has been used.");
4159
+ }
4160
+ for (var i in options) {
4161
+ if (i === "storeName") {
4162
+ options[i] = options[i].replace(/\W/g, "_");
4163
+ }
4164
+ if (i === "version" && typeof options[i] !== "number") {
4165
+ return new Error("Database version must be a number.");
4166
+ }
4167
+ this._config[i] = options[i];
4168
+ }
4169
+ if ("driver" in options && options.driver) {
4170
+ return this.setDriver(this._config.driver);
4171
+ }
4172
+ return true;
4173
+ } else if (typeof options === "string") {
4174
+ return this._config[options];
4175
+ } else {
4176
+ return this._config;
4177
+ }
4178
+ };
4179
+ LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {
4180
+ var promise = new Promise$1(function(resolve, reject) {
4181
+ try {
4182
+ var driverName = driverObject._driver;
4183
+ var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
4184
+ if (!driverObject._driver) {
4185
+ reject(complianceError);
4186
+ return;
4187
+ }
4188
+ var driverMethods = LibraryMethods.concat("_initStorage");
4189
+ for (var i = 0, len = driverMethods.length; i < len; i++) {
4190
+ var driverMethodName = driverMethods[i];
4191
+ var isRequired = !includes(OptionalDriverMethods, driverMethodName);
4192
+ if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") {
4193
+ reject(complianceError);
4194
+ return;
4195
+ }
4196
+ }
4197
+ var configureMissingMethods = function configureMissingMethods2() {
4198
+ var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) {
4199
+ return function() {
4200
+ var error = new Error("Method " + methodName + " is not implemented by the current driver");
4201
+ var promise2 = Promise$1.reject(error);
4202
+ executeCallback(promise2, arguments[arguments.length - 1]);
4203
+ return promise2;
4204
+ };
4205
+ };
4206
+ for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {
4207
+ var optionalDriverMethod = OptionalDriverMethods[_i];
4208
+ if (!driverObject[optionalDriverMethod]) {
4209
+ driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);
4210
+ }
4211
+ }
4212
+ };
4213
+ configureMissingMethods();
4214
+ var setDriverSupport = function setDriverSupport2(support) {
4215
+ if (DefinedDrivers[driverName]) {
4216
+ console.info("Redefining LocalForage driver: " + driverName);
4217
+ }
4218
+ DefinedDrivers[driverName] = driverObject;
4219
+ DriverSupport[driverName] = support;
4220
+ resolve();
4221
+ };
4222
+ if ("_support" in driverObject) {
4223
+ if (driverObject._support && typeof driverObject._support === "function") {
4224
+ driverObject._support().then(setDriverSupport, reject);
4225
+ } else {
4226
+ setDriverSupport(!!driverObject._support);
4227
+ }
4228
+ } else {
4229
+ setDriverSupport(true);
4230
+ }
4231
+ } catch (e) {
4232
+ reject(e);
4233
+ }
4234
+ });
4235
+ executeTwoCallbacks(promise, callback, errorCallback);
4236
+ return promise;
4237
+ };
4238
+ LocalForage2.prototype.driver = function driver() {
4239
+ return this._driver || null;
4240
+ };
4241
+ LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {
4242
+ var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found."));
4243
+ executeTwoCallbacks(getDriverPromise, callback, errorCallback);
4244
+ return getDriverPromise;
4245
+ };
4246
+ LocalForage2.prototype.getSerializer = function getSerializer(callback) {
4247
+ var serializerPromise = Promise$1.resolve(localforageSerializer);
4248
+ executeTwoCallbacks(serializerPromise, callback);
4249
+ return serializerPromise;
4250
+ };
4251
+ LocalForage2.prototype.ready = function ready(callback) {
4252
+ var self2 = this;
4253
+ var promise = self2._driverSet.then(function() {
4254
+ if (self2._ready === null) {
4255
+ self2._ready = self2._initDriver();
4256
+ }
4257
+ return self2._ready;
4258
+ });
4259
+ executeTwoCallbacks(promise, callback, callback);
4260
+ return promise;
4261
+ };
4262
+ LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {
4263
+ var self2 = this;
4264
+ if (!isArray(drivers)) {
4265
+ drivers = [drivers];
4266
+ }
4267
+ var supportedDrivers = this._getSupportedDrivers(drivers);
4268
+ function setDriverToConfig() {
4269
+ self2._config.driver = self2.driver();
4270
+ }
4271
+ function extendSelfWithDriver(driver) {
4272
+ self2._extend(driver);
4273
+ setDriverToConfig();
4274
+ self2._ready = self2._initStorage(self2._config);
4275
+ return self2._ready;
4276
+ }
4277
+ function initDriver(supportedDrivers2) {
4278
+ return function() {
4279
+ var currentDriverIndex = 0;
4280
+ function driverPromiseLoop() {
4281
+ while (currentDriverIndex < supportedDrivers2.length) {
4282
+ var driverName = supportedDrivers2[currentDriverIndex];
4283
+ currentDriverIndex++;
4284
+ self2._dbInfo = null;
4285
+ self2._ready = null;
4286
+ return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);
4287
+ }
4288
+ setDriverToConfig();
4289
+ var error = new Error("No available storage method found.");
4290
+ self2._driverSet = Promise$1.reject(error);
4291
+ return self2._driverSet;
4292
+ }
4293
+ return driverPromiseLoop();
4294
+ };
4295
+ }
4296
+ var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() {
4297
+ return Promise$1.resolve();
4298
+ }) : Promise$1.resolve();
4299
+ this._driverSet = oldDriverSetDone.then(function() {
4300
+ var driverName = supportedDrivers[0];
4301
+ self2._dbInfo = null;
4302
+ self2._ready = null;
4303
+ return self2.getDriver(driverName).then(function(driver) {
4304
+ self2._driver = driver._driver;
4305
+ setDriverToConfig();
4306
+ self2._wrapLibraryMethodsWithReady();
4307
+ self2._initDriver = initDriver(supportedDrivers);
4308
+ });
4309
+ })["catch"](function() {
4310
+ setDriverToConfig();
4311
+ var error = new Error("No available storage method found.");
4312
+ self2._driverSet = Promise$1.reject(error);
4313
+ return self2._driverSet;
4314
+ });
4315
+ executeTwoCallbacks(this._driverSet, callback, errorCallback);
4316
+ return this._driverSet;
4317
+ };
4318
+ LocalForage2.prototype.supports = function supports(driverName) {
4319
+ return !!DriverSupport[driverName];
4320
+ };
4321
+ LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) {
4322
+ extend(this, libraryMethodsAndProperties);
4323
+ };
4324
+ LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {
4325
+ var supportedDrivers = [];
4326
+ for (var i = 0, len = drivers.length; i < len; i++) {
4327
+ var driverName = drivers[i];
4328
+ if (this.supports(driverName)) {
4329
+ supportedDrivers.push(driverName);
4330
+ }
4331
+ }
4332
+ return supportedDrivers;
4333
+ };
4334
+ LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {
4335
+ for (var i = 0, len = LibraryMethods.length; i < len; i++) {
4336
+ callWhenReady(this, LibraryMethods[i]);
4337
+ }
4338
+ };
4339
+ LocalForage2.prototype.createInstance = function createInstance(options) {
4340
+ return new LocalForage2(options);
4341
+ };
4342
+ return LocalForage2;
4343
+ }();
4344
+ var localforage_js = new LocalForage();
4345
+ module2.exports = localforage_js;
4346
+ }, { "3": 3 }] }, {}, [4])(4);
4347
+ });
4348
+ })(localforage$1);
4349
+ var localforageExports = localforage$1.exports;
4350
+ const localforage = /* @__PURE__ */ getDefaultExportFromCjs(localforageExports);
4351
+ const useStorage = (options = {}) => {
4352
+ options.driver ?? (options.driver = localforage.INDEXEDDB);
4353
+ const storage = localforage.createInstance(options);
4354
+ const setItem = async (key, value) => {
4355
+ return storage.setItem(key.toString(), value);
4356
+ };
4357
+ const getItem = async (key) => {
4358
+ return storage.getItem(key.toString());
4359
+ };
4360
+ const getAllItems = async () => {
4361
+ return Promise.all(
4362
+ (await storage.keys()).map((k) => storage.getItem(k))
4363
+ );
4364
+ };
4365
+ const removeItem = async (key) => {
4366
+ return storage.removeItem(key.toString());
4367
+ };
4368
+ const hasItem = async (key) => {
4369
+ const keyStr = key.toString();
4370
+ return storage.keys().then((r) => r.includes(keyStr));
4371
+ };
4372
+ const keys = async () => {
4373
+ return storage.keys();
4374
+ };
4375
+ return {
4376
+ keys,
4377
+ hasItem,
4378
+ getItem,
4379
+ setItem,
4380
+ removeItem,
4381
+ getAllItems
4382
+ };
4383
+ };
4384
+ const useReactiveStorage = (key, initialValue) => {
4385
+ const store2 = reactive(
4386
+ typeof initialValue == "function" ? initialValue() : initialValue
4387
+ );
4388
+ let storeInited = false;
4389
+ watch(store2, async () => {
4390
+ if (!storeInited)
4391
+ return;
4392
+ await localforage.setItem(key, toRaw(store2));
4393
+ });
4394
+ localforage.getItem(key).then((r) => {
4395
+ r && Object.assign(store2, r);
4396
+ storeInited = true;
4397
+ });
4398
+ return store2;
4399
+ };
4400
+ const snapshotStorage = useStorage({
4401
+ name: `snapshot`,
4402
+ version: 1
4403
+ });
4404
+ const snapshotSetItem = snapshotStorage.setItem;
4405
+ snapshotStorage.setItem = async (key, value) => {
4406
+ const shallowValue = { ...value, nodes: [] };
4407
+ await shallowSnapshotStorage.setItem(key, shallowValue);
4408
+ return snapshotSetItem(key, value);
4409
+ };
4410
+ const snapshotRemoveItem = snapshotStorage.removeItem;
4411
+ snapshotStorage.removeItem = async (key) => {
4412
+ await Promise.all([
4413
+ snapshotRemoveItem(key),
4414
+ shallowSnapshotStorage.removeItem(key),
4415
+ screenshotStorage.removeItem(key)
4416
+ ]);
4417
+ };
4418
+ const shallowSnapshotStorage = useStorage({
4419
+ name: `shallowSnapshot`,
4420
+ version: 1
4421
+ });
4422
+ const screenshotStorage = useStorage({
4423
+ name: `screenshot`,
4424
+ version: 1
4425
+ });
4426
+ const setSnapshot = async (snapshot, bf) => {
4427
+ Object.entries(urlStorage).forEach(([k, v]) => {
4428
+ if (v == snapshot.id) {
4429
+ delete urlStorage[k];
4430
+ }
4431
+ });
4432
+ if (githubJpgStorage[snapshot.id]) {
4433
+ delete githubJpgStorage[snapshot.id];
4434
+ }
4435
+ if (githubZipStorage[snapshot.id]) {
4436
+ delete githubZipStorage[snapshot.id];
4437
+ }
4438
+ await snapshotStorage.setItem(snapshot.id, snapshot);
4439
+ await screenshotStorage.setItem(snapshot.id, bf);
4440
+ };
4441
+ useStorage({
4442
+ name: `cache`,
4443
+ version: 1
4444
+ });
4445
+ const urlStorage = useReactiveStorage(`url`, {});
4446
+ const githubJpgStorage = useReactiveStorage(
4447
+ `githubJpg`,
4448
+ {}
4449
+ );
4450
+ const githubZipStorage = useReactiveStorage(
4451
+ `githubZip`,
4452
+ {}
4453
+ );
4454
+ export {
4455
+ snapshotStorage as a,
4456
+ githubJpgStorage as b,
4457
+ copy as c,
4458
+ dialog as d,
4459
+ githubZipStorage as e,
4460
+ fadeInHeightExpandTransition as f,
4461
+ githubUrlToSelfUrl as g,
4462
+ gmOk as h,
4463
+ screenshotStorage as i,
4464
+ delay as j,
4465
+ commonjsGlobal as k,
4466
+ enhanceFetch as l,
4467
+ message as m,
4468
+ loadingBar as n,
4469
+ obj2form as o,
4470
+ pLimit as p,
4471
+ githubZipUrlReg as q,
4472
+ githubImageUrlReg as r,
4473
+ shallowSnapshotStorage as s,
4474
+ setSnapshot as t,
4475
+ urlStorage as u,
4476
+ commonjsRequire as v,
4477
+ getDefaultExportFromCjs as w,
4478
+ omit as x
4479
+ };