@widget-js/core 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/BrowserWindowApi.js +14 -0
- package/dist/cjs/api/Channel.js +9 -0
- package/dist/cjs/api/ElectronApi.js +27 -75
- package/dist/cjs/api/Keys.js +1 -0
- package/dist/cjs/api/NotificationApi.js +83 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/model/Notification.js +15 -0
- package/dist/cjs/repository/WidgetDataRepository.js +31 -48
- package/dist/cjs/utils/ElectronUtils.js +24 -0
- package/dist/esm/api/BrowserWindowApi.js +10 -0
- package/dist/esm/api/Channel.js +6 -0
- package/dist/esm/api/ElectronApi.js +27 -75
- package/dist/esm/api/Keys.js +1 -0
- package/dist/esm/api/NotificationApi.js +79 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/model/Notification.js +11 -0
- package/dist/esm/repository/WidgetDataRepository.js +31 -48
- package/dist/esm/utils/ElectronUtils.js +20 -0
- package/dist/types/api/BrowserWindowApi.d.ts +4 -0
- package/dist/types/api/Channel.d.ts +5 -0
- package/dist/types/api/ElectronApi.d.ts +0 -1
- package/dist/types/api/Keys.d.ts +1 -0
- package/dist/types/api/NotificationApi.d.ts +14 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/model/Notification.d.ts +16 -0
- package/dist/types/utils/ElectronUtils.d.ts +8 -0
- package/dist/umd/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserWindowApi = void 0;
|
|
4
|
+
const Channel_1 = require("./Channel");
|
|
5
|
+
const ElectronUtils_1 = require("../utils/ElectronUtils");
|
|
6
|
+
class BrowserWindowApi {
|
|
7
|
+
static async setIgnoreMouseEvent(ignore) {
|
|
8
|
+
await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.SET_IGNORE_MOUSE_EVENT, ignore);
|
|
9
|
+
}
|
|
10
|
+
static async setWindowVisibility(show) {
|
|
11
|
+
await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.BROWSER_WINDOW, show);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.BrowserWindowApi = BrowserWindowApi;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Channel = void 0;
|
|
4
|
+
var Channel;
|
|
5
|
+
(function (Channel) {
|
|
6
|
+
Channel["SET_IGNORE_MOUSE_EVENT"] = "channel::com.wisdom.widgets.set_ignore_mouse_event";
|
|
7
|
+
Channel["NOTIFICATION"] = "channel::com.wisdom.widgets.notification";
|
|
8
|
+
Channel["BROWSER_WINDOW"] = "channel::com.wisdom.widgets.browser_window";
|
|
9
|
+
})(Channel = exports.Channel || (exports.Channel = {}));
|
|
@@ -1,93 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.ElectronApi = void 0;
|
|
13
4
|
const Keys_1 = require("./Keys");
|
|
5
|
+
const ElectronUtils_1 = require("../utils/ElectronUtils");
|
|
14
6
|
class ElectronApi {
|
|
15
7
|
static openAddWidgetWindow() {
|
|
16
|
-
|
|
17
|
-
// @ts-ignore
|
|
18
|
-
window.electronAPI.invokeIpc("openAddWidgetWindow");
|
|
19
|
-
}
|
|
8
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc("openAddWidgetWindow");
|
|
20
9
|
}
|
|
21
|
-
static registerWidgets(widgets) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const data = JSON.parse(JSON.stringify(widgets.map(item => JSON.stringify(item))));
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
yield window.electronAPI.invokeIpc("registerWidgets", data);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
10
|
+
static async registerWidgets(widgets) {
|
|
11
|
+
const data = JSON.parse(JSON.stringify(widgets.map(item => JSON.stringify(item))));
|
|
12
|
+
await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc("registerWidgets", data);
|
|
29
13
|
}
|
|
30
|
-
static setConfig(key, value) {
|
|
31
|
-
|
|
32
|
-
if (this.hasElectronApi()) {
|
|
33
|
-
// @ts-ignore
|
|
34
|
-
yield window.electronAPI.invokeIpc("setConfig", { key, value });
|
|
35
|
-
}
|
|
36
|
-
});
|
|
14
|
+
static async setConfig(key, value) {
|
|
15
|
+
await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc("setConfig", { key, value });
|
|
37
16
|
}
|
|
38
|
-
static sendBroadcastEvent(event) {
|
|
39
|
-
|
|
40
|
-
if (this.hasElectronApi()) {
|
|
41
|
-
// @ts-ignore
|
|
42
|
-
yield window.electronAPI.invokeIpc(Keys_1.Keys.BROADCAST_EVENT, JSON.stringify(event));
|
|
43
|
-
}
|
|
44
|
-
});
|
|
17
|
+
static async sendBroadcastEvent(event) {
|
|
18
|
+
await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Keys_1.Keys.BROADCAST_EVENT, JSON.stringify(event));
|
|
45
19
|
}
|
|
46
|
-
static registerBroadcast(callback) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
callback(JSON.parse(json));
|
|
50
|
-
});
|
|
20
|
+
static async registerBroadcast(callback) {
|
|
21
|
+
await this.addIpcListener(Keys_1.Keys.BROADCAST_EVENT, (json) => {
|
|
22
|
+
callback(JSON.parse(json));
|
|
51
23
|
});
|
|
52
24
|
}
|
|
53
|
-
static unregisterBroadcast() {
|
|
54
|
-
|
|
55
|
-
yield this.removeIpcListener(Keys_1.Keys.BROADCAST_EVENT);
|
|
56
|
-
});
|
|
25
|
+
static async unregisterBroadcast() {
|
|
26
|
+
await this.removeIpcListener(Keys_1.Keys.BROADCAST_EVENT);
|
|
57
27
|
}
|
|
58
|
-
static addIpcListener(key, f) {
|
|
59
|
-
|
|
60
|
-
if (this.hasElectronApi()) {
|
|
61
|
-
// @ts-ignore
|
|
62
|
-
yield window.electronAPI.addIpcListener(key, f);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
28
|
+
static async addIpcListener(key, f) {
|
|
29
|
+
await ElectronUtils_1.ElectronUtils.getAPI().addIpcListener(key, f);
|
|
65
30
|
}
|
|
66
|
-
static removeIpcListener(key) {
|
|
67
|
-
|
|
68
|
-
if (this.hasElectronApi()) {
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
yield window.electronAPI.removeIpcListener(key);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
static getConfig(key, defaultValue) {
|
|
75
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
if (this.hasElectronApi()) {
|
|
77
|
-
// @ts-ignore
|
|
78
|
-
const value = yield window.electronAPI.invokeIpc("getConfig", key);
|
|
79
|
-
if (value === null || value === undefined) {
|
|
80
|
-
return defaultValue;
|
|
81
|
-
}
|
|
82
|
-
if (typeof defaultValue == "boolean") {
|
|
83
|
-
return value === "true";
|
|
84
|
-
}
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
31
|
+
static async removeIpcListener(key) {
|
|
32
|
+
await ElectronUtils_1.ElectronUtils.getAPI().removeIpcListener(key);
|
|
88
33
|
}
|
|
89
|
-
static
|
|
90
|
-
|
|
34
|
+
static async getConfig(key, defaultValue) {
|
|
35
|
+
const value = await ElectronUtils_1.ElectronUtils.getAPI().invokeIpc("getConfig", key);
|
|
36
|
+
if (value === null || value === undefined) {
|
|
37
|
+
return defaultValue;
|
|
38
|
+
}
|
|
39
|
+
if (typeof defaultValue == "boolean") {
|
|
40
|
+
return value === "true";
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
91
43
|
}
|
|
92
44
|
}
|
|
93
45
|
exports.ElectronApi = ElectronApi;
|
package/dist/cjs/api/Keys.js
CHANGED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotificationApi = void 0;
|
|
4
|
+
const Notification_1 = require("../model/Notification");
|
|
5
|
+
const Channel_1 = require("./Channel");
|
|
6
|
+
const ElectronUtils_1 = require("../utils/ElectronUtils");
|
|
7
|
+
class NotificationApi {
|
|
8
|
+
static async call(duration = 5000) {
|
|
9
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
10
|
+
title: "章鱼哥",
|
|
11
|
+
type: "call",
|
|
12
|
+
message: "下班提醒",
|
|
13
|
+
duration: duration
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
static async advanceCountdown(message, targetTime, title) {
|
|
17
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
18
|
+
title,
|
|
19
|
+
message,
|
|
20
|
+
targetTime,
|
|
21
|
+
type: "advance-countdown"
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
static async countdown(message, targetTime) {
|
|
25
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
26
|
+
message,
|
|
27
|
+
targetTime,
|
|
28
|
+
type: "countdown"
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
static async success(message, duration = 5000) {
|
|
32
|
+
if (ElectronUtils_1.ElectronUtils.hasElectronApi()) {
|
|
33
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
34
|
+
message,
|
|
35
|
+
type: "success",
|
|
36
|
+
duration
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.callback("success", message, duration);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
static async error(message, duration = 5000) {
|
|
44
|
+
if (ElectronUtils_1.ElectronUtils.hasElectronApi()) {
|
|
45
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
46
|
+
message,
|
|
47
|
+
type: "error",
|
|
48
|
+
duration
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.callback("error", message, duration);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static async warning(message, duration = 5000) {
|
|
56
|
+
if (ElectronUtils_1.ElectronUtils.hasElectronApi()) {
|
|
57
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
58
|
+
message,
|
|
59
|
+
type: "warning",
|
|
60
|
+
duration
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.callback("warning", message, duration);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
static async message(message, duration = 5000) {
|
|
68
|
+
if (ElectronUtils_1.ElectronUtils.hasElectronApi()) {
|
|
69
|
+
ElectronUtils_1.ElectronUtils.getAPI().invokeIpc(Channel_1.Channel.NOTIFICATION, new Notification_1.Notification({
|
|
70
|
+
message,
|
|
71
|
+
type: "message",
|
|
72
|
+
duration
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.callback("message", message, duration);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static setDebugNotification(callback) {
|
|
80
|
+
this.callback = callback;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.NotificationApi = NotificationApi;
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,6 +18,11 @@ __exportStar(require("./model/Widget"), exports);
|
|
|
18
18
|
__exportStar(require("./model/BroadcastEvent"), exports);
|
|
19
19
|
__exportStar(require("./model/WidgetData"), exports);
|
|
20
20
|
__exportStar(require("./model/WidgetParams"), exports);
|
|
21
|
+
__exportStar(require("./model/Notification"), exports);
|
|
21
22
|
__exportStar(require("./api/ElectronApi"), exports);
|
|
22
23
|
__exportStar(require("./api/Keys"), exports);
|
|
23
24
|
__exportStar(require("./repository/WidgetDataRepository"), exports);
|
|
25
|
+
__exportStar(require("./api/BrowserWindowApi"), exports);
|
|
26
|
+
__exportStar(require("./api/NotificationApi"), exports);
|
|
27
|
+
__exportStar(require("./api/Channel"), exports);
|
|
28
|
+
__exportStar(require("./utils/ElectronUtils"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Notification = void 0;
|
|
4
|
+
class Notification {
|
|
5
|
+
constructor(option) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
this.type = "message";
|
|
8
|
+
this.type = (_a = option.type) !== null && _a !== void 0 ? _a : "message";
|
|
9
|
+
this.title = option.title;
|
|
10
|
+
this.message = option.message;
|
|
11
|
+
this.targetTime = option.targetTime;
|
|
12
|
+
this.duration = (_b = option.duration) !== null && _b !== void 0 ? _b : 5000;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Notification = Notification;
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -21,14 +12,12 @@ class WidgetDataRepository {
|
|
|
21
12
|
* 保存组件数据
|
|
22
13
|
* @param data
|
|
23
14
|
*/
|
|
24
|
-
static save(data) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return result;
|
|
31
|
-
});
|
|
15
|
+
static async save(data) {
|
|
16
|
+
let store = this.getStore(data.name);
|
|
17
|
+
const result = await store.setItem(this.getKey(data.name, data.id), JSON.stringify(data));
|
|
18
|
+
const broadcastEvent = new BroadcastEvent_1.BroadcastEvent(BroadcastEvent_1.BroadcastEvent.TYPE_WIDGET_UPDATED, "", data);
|
|
19
|
+
await ElectronApi_1.ElectronApi.sendBroadcastEvent(broadcastEvent);
|
|
20
|
+
return result;
|
|
32
21
|
}
|
|
33
22
|
/**
|
|
34
23
|
* 获取组件 LocalForage 存储实例
|
|
@@ -46,39 +35,33 @@ class WidgetDataRepository {
|
|
|
46
35
|
* 通过组件名保存组件信息,通常用于存储可以在同类组件中共用的数据
|
|
47
36
|
* @param data
|
|
48
37
|
*/
|
|
49
|
-
static saveByName(data) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return result;
|
|
57
|
-
});
|
|
38
|
+
static async saveByName(data) {
|
|
39
|
+
const store = this.getStore(data.name);
|
|
40
|
+
const json = JSON.stringify(data);
|
|
41
|
+
const result = await store.setItem(data.name, json);
|
|
42
|
+
const broadcastEvent = new BroadcastEvent_1.BroadcastEvent(BroadcastEvent_1.BroadcastEvent.TYPE_WIDGET_UPDATED, "", { name: data.name, json });
|
|
43
|
+
await ElectronApi_1.ElectronApi.sendBroadcastEvent(broadcastEvent);
|
|
44
|
+
return result;
|
|
58
45
|
}
|
|
59
|
-
static findByName(name, type) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return undefined;
|
|
69
|
-
});
|
|
46
|
+
static async findByName(name, type) {
|
|
47
|
+
let store = this.getStore(name);
|
|
48
|
+
let result = await store.getItem(name);
|
|
49
|
+
if (result) {
|
|
50
|
+
const widgetData = new type(name);
|
|
51
|
+
widgetData.parseJSON(JSON.parse(result));
|
|
52
|
+
return widgetData;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
70
55
|
}
|
|
71
|
-
static find(name, id, type) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return undefined;
|
|
81
|
-
});
|
|
56
|
+
static async find(name, id, type) {
|
|
57
|
+
let store = this.getStore(name);
|
|
58
|
+
let result = await store.getItem(this.getKey(name, id));
|
|
59
|
+
if (result) {
|
|
60
|
+
const widgetData = new type(name, id);
|
|
61
|
+
widgetData.parseJSON(JSON.parse(result));
|
|
62
|
+
return widgetData;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
82
65
|
}
|
|
83
66
|
static getKey(name, id) {
|
|
84
67
|
return `${name}@${id}`;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElectronUtils = void 0;
|
|
4
|
+
class ElectronUtils {
|
|
5
|
+
static hasElectronApi() {
|
|
6
|
+
return Reflect.has(window, "electronAPI");
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 获取ElectronAPI
|
|
10
|
+
* windows api
|
|
11
|
+
*/
|
|
12
|
+
static getAPI() {
|
|
13
|
+
if (Reflect.has(window, "electronAPI")) {
|
|
14
|
+
//@ts-ignore
|
|
15
|
+
return window.electronAPI;
|
|
16
|
+
}
|
|
17
|
+
else if (Reflect.has(window.parent, "electronAPI")) {
|
|
18
|
+
//@ts-ignore
|
|
19
|
+
return window.parent.electronAPI;
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ElectronUtils = ElectronUtils;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Channel } from "./Channel";
|
|
2
|
+
import { ElectronUtils } from "../utils/ElectronUtils";
|
|
3
|
+
export class BrowserWindowApi {
|
|
4
|
+
static async setIgnoreMouseEvent(ignore) {
|
|
5
|
+
await ElectronUtils.getAPI().invokeIpc(Channel.SET_IGNORE_MOUSE_EVENT, ignore);
|
|
6
|
+
}
|
|
7
|
+
static async setWindowVisibility(show) {
|
|
8
|
+
await ElectronUtils.getAPI().invokeIpc(Channel.BROWSER_WINDOW, show);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var Channel;
|
|
2
|
+
(function (Channel) {
|
|
3
|
+
Channel["SET_IGNORE_MOUSE_EVENT"] = "channel::com.wisdom.widgets.set_ignore_mouse_event";
|
|
4
|
+
Channel["NOTIFICATION"] = "channel::com.wisdom.widgets.notification";
|
|
5
|
+
Channel["BROWSER_WINDOW"] = "channel::com.wisdom.widgets.browser_window";
|
|
6
|
+
})(Channel || (Channel = {}));
|
|
@@ -1,89 +1,41 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { Keys } from "./Keys";
|
|
2
|
+
import { ElectronUtils } from "../utils/ElectronUtils";
|
|
11
3
|
export class ElectronApi {
|
|
12
4
|
static openAddWidgetWindow() {
|
|
13
|
-
|
|
14
|
-
// @ts-ignore
|
|
15
|
-
window.electronAPI.invokeIpc("openAddWidgetWindow");
|
|
16
|
-
}
|
|
5
|
+
ElectronUtils.getAPI().invokeIpc("openAddWidgetWindow");
|
|
17
6
|
}
|
|
18
|
-
static registerWidgets(widgets) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const data = JSON.parse(JSON.stringify(widgets.map(item => JSON.stringify(item))));
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
yield window.electronAPI.invokeIpc("registerWidgets", data);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
7
|
+
static async registerWidgets(widgets) {
|
|
8
|
+
const data = JSON.parse(JSON.stringify(widgets.map(item => JSON.stringify(item))));
|
|
9
|
+
await ElectronUtils.getAPI().invokeIpc("registerWidgets", data);
|
|
26
10
|
}
|
|
27
|
-
static setConfig(key, value) {
|
|
28
|
-
|
|
29
|
-
if (this.hasElectronApi()) {
|
|
30
|
-
// @ts-ignore
|
|
31
|
-
yield window.electronAPI.invokeIpc("setConfig", { key, value });
|
|
32
|
-
}
|
|
33
|
-
});
|
|
11
|
+
static async setConfig(key, value) {
|
|
12
|
+
await ElectronUtils.getAPI().invokeIpc("setConfig", { key, value });
|
|
34
13
|
}
|
|
35
|
-
static sendBroadcastEvent(event) {
|
|
36
|
-
|
|
37
|
-
if (this.hasElectronApi()) {
|
|
38
|
-
// @ts-ignore
|
|
39
|
-
yield window.electronAPI.invokeIpc(Keys.BROADCAST_EVENT, JSON.stringify(event));
|
|
40
|
-
}
|
|
41
|
-
});
|
|
14
|
+
static async sendBroadcastEvent(event) {
|
|
15
|
+
await ElectronUtils.getAPI().invokeIpc(Keys.BROADCAST_EVENT, JSON.stringify(event));
|
|
42
16
|
}
|
|
43
|
-
static registerBroadcast(callback) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
callback(JSON.parse(json));
|
|
47
|
-
});
|
|
17
|
+
static async registerBroadcast(callback) {
|
|
18
|
+
await this.addIpcListener(Keys.BROADCAST_EVENT, (json) => {
|
|
19
|
+
callback(JSON.parse(json));
|
|
48
20
|
});
|
|
49
21
|
}
|
|
50
|
-
static unregisterBroadcast() {
|
|
51
|
-
|
|
52
|
-
yield this.removeIpcListener(Keys.BROADCAST_EVENT);
|
|
53
|
-
});
|
|
22
|
+
static async unregisterBroadcast() {
|
|
23
|
+
await this.removeIpcListener(Keys.BROADCAST_EVENT);
|
|
54
24
|
}
|
|
55
|
-
static addIpcListener(key, f) {
|
|
56
|
-
|
|
57
|
-
if (this.hasElectronApi()) {
|
|
58
|
-
// @ts-ignore
|
|
59
|
-
yield window.electronAPI.addIpcListener(key, f);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
25
|
+
static async addIpcListener(key, f) {
|
|
26
|
+
await ElectronUtils.getAPI().addIpcListener(key, f);
|
|
62
27
|
}
|
|
63
|
-
static removeIpcListener(key) {
|
|
64
|
-
|
|
65
|
-
if (this.hasElectronApi()) {
|
|
66
|
-
// @ts-ignore
|
|
67
|
-
yield window.electronAPI.removeIpcListener(key);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
static getConfig(key, defaultValue) {
|
|
72
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
if (this.hasElectronApi()) {
|
|
74
|
-
// @ts-ignore
|
|
75
|
-
const value = yield window.electronAPI.invokeIpc("getConfig", key);
|
|
76
|
-
if (value === null || value === undefined) {
|
|
77
|
-
return defaultValue;
|
|
78
|
-
}
|
|
79
|
-
if (typeof defaultValue == "boolean") {
|
|
80
|
-
return value === "true";
|
|
81
|
-
}
|
|
82
|
-
return value;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
28
|
+
static async removeIpcListener(key) {
|
|
29
|
+
await ElectronUtils.getAPI().removeIpcListener(key);
|
|
85
30
|
}
|
|
86
|
-
static
|
|
87
|
-
|
|
31
|
+
static async getConfig(key, defaultValue) {
|
|
32
|
+
const value = await ElectronUtils.getAPI().invokeIpc("getConfig", key);
|
|
33
|
+
if (value === null || value === undefined) {
|
|
34
|
+
return defaultValue;
|
|
35
|
+
}
|
|
36
|
+
if (typeof defaultValue == "boolean") {
|
|
37
|
+
return value === "true";
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
88
40
|
}
|
|
89
41
|
}
|
package/dist/esm/api/Keys.js
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Notification } from "../model/Notification";
|
|
2
|
+
import { Channel } from "./Channel";
|
|
3
|
+
import { ElectronUtils } from "../utils/ElectronUtils";
|
|
4
|
+
export class NotificationApi {
|
|
5
|
+
static async call(duration = 5000) {
|
|
6
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
7
|
+
title: "章鱼哥",
|
|
8
|
+
type: "call",
|
|
9
|
+
message: "下班提醒",
|
|
10
|
+
duration: duration
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
static async advanceCountdown(message, targetTime, title) {
|
|
14
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
15
|
+
title,
|
|
16
|
+
message,
|
|
17
|
+
targetTime,
|
|
18
|
+
type: "advance-countdown"
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
static async countdown(message, targetTime) {
|
|
22
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
23
|
+
message,
|
|
24
|
+
targetTime,
|
|
25
|
+
type: "countdown"
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
static async success(message, duration = 5000) {
|
|
29
|
+
if (ElectronUtils.hasElectronApi()) {
|
|
30
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
31
|
+
message,
|
|
32
|
+
type: "success",
|
|
33
|
+
duration
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.callback("success", message, duration);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static async error(message, duration = 5000) {
|
|
41
|
+
if (ElectronUtils.hasElectronApi()) {
|
|
42
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
43
|
+
message,
|
|
44
|
+
type: "error",
|
|
45
|
+
duration
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.callback("error", message, duration);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
static async warning(message, duration = 5000) {
|
|
53
|
+
if (ElectronUtils.hasElectronApi()) {
|
|
54
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
55
|
+
message,
|
|
56
|
+
type: "warning",
|
|
57
|
+
duration
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.callback("warning", message, duration);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static async message(message, duration = 5000) {
|
|
65
|
+
if (ElectronUtils.hasElectronApi()) {
|
|
66
|
+
ElectronUtils.getAPI().invokeIpc(Channel.NOTIFICATION, new Notification({
|
|
67
|
+
message,
|
|
68
|
+
type: "message",
|
|
69
|
+
duration
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.callback("message", message, duration);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
static setDebugNotification(callback) {
|
|
77
|
+
this.callback = callback;
|
|
78
|
+
}
|
|
79
|
+
}
|
package/dist/esm/index.js
CHANGED
|
@@ -2,6 +2,11 @@ export * from "./model/Widget";
|
|
|
2
2
|
export * from "./model/BroadcastEvent";
|
|
3
3
|
export * from "./model/WidgetData";
|
|
4
4
|
export * from "./model/WidgetParams";
|
|
5
|
+
export * from "./model/Notification";
|
|
5
6
|
export * from "./api/ElectronApi";
|
|
6
7
|
export * from "./api/Keys";
|
|
7
8
|
export * from "./repository/WidgetDataRepository";
|
|
9
|
+
export * from "./api/BrowserWindowApi";
|
|
10
|
+
export * from "./api/NotificationApi";
|
|
11
|
+
export * from "./api/Channel";
|
|
12
|
+
export * from "./utils/ElectronUtils";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class Notification {
|
|
2
|
+
constructor(option) {
|
|
3
|
+
var _a, _b;
|
|
4
|
+
this.type = "message";
|
|
5
|
+
this.type = (_a = option.type) !== null && _a !== void 0 ? _a : "message";
|
|
6
|
+
this.title = option.title;
|
|
7
|
+
this.message = option.message;
|
|
8
|
+
this.targetTime = option.targetTime;
|
|
9
|
+
this.duration = (_b = option.duration) !== null && _b !== void 0 ? _b : 5000;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import localforage from "localforage";
|
|
11
2
|
import { BroadcastEvent } from "../model/BroadcastEvent";
|
|
12
3
|
import { ElectronApi } from "../api/ElectronApi";
|
|
@@ -15,14 +6,12 @@ export class WidgetDataRepository {
|
|
|
15
6
|
* 保存组件数据
|
|
16
7
|
* @param data
|
|
17
8
|
*/
|
|
18
|
-
static save(data) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return result;
|
|
25
|
-
});
|
|
9
|
+
static async save(data) {
|
|
10
|
+
let store = this.getStore(data.name);
|
|
11
|
+
const result = await store.setItem(this.getKey(data.name, data.id), JSON.stringify(data));
|
|
12
|
+
const broadcastEvent = new BroadcastEvent(BroadcastEvent.TYPE_WIDGET_UPDATED, "", data);
|
|
13
|
+
await ElectronApi.sendBroadcastEvent(broadcastEvent);
|
|
14
|
+
return result;
|
|
26
15
|
}
|
|
27
16
|
/**
|
|
28
17
|
* 获取组件 LocalForage 存储实例
|
|
@@ -40,39 +29,33 @@ export class WidgetDataRepository {
|
|
|
40
29
|
* 通过组件名保存组件信息,通常用于存储可以在同类组件中共用的数据
|
|
41
30
|
* @param data
|
|
42
31
|
*/
|
|
43
|
-
static saveByName(data) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return result;
|
|
51
|
-
});
|
|
32
|
+
static async saveByName(data) {
|
|
33
|
+
const store = this.getStore(data.name);
|
|
34
|
+
const json = JSON.stringify(data);
|
|
35
|
+
const result = await store.setItem(data.name, json);
|
|
36
|
+
const broadcastEvent = new BroadcastEvent(BroadcastEvent.TYPE_WIDGET_UPDATED, "", { name: data.name, json });
|
|
37
|
+
await ElectronApi.sendBroadcastEvent(broadcastEvent);
|
|
38
|
+
return result;
|
|
52
39
|
}
|
|
53
|
-
static findByName(name, type) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return undefined;
|
|
63
|
-
});
|
|
40
|
+
static async findByName(name, type) {
|
|
41
|
+
let store = this.getStore(name);
|
|
42
|
+
let result = await store.getItem(name);
|
|
43
|
+
if (result) {
|
|
44
|
+
const widgetData = new type(name);
|
|
45
|
+
widgetData.parseJSON(JSON.parse(result));
|
|
46
|
+
return widgetData;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
64
49
|
}
|
|
65
|
-
static find(name, id, type) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return undefined;
|
|
75
|
-
});
|
|
50
|
+
static async find(name, id, type) {
|
|
51
|
+
let store = this.getStore(name);
|
|
52
|
+
let result = await store.getItem(this.getKey(name, id));
|
|
53
|
+
if (result) {
|
|
54
|
+
const widgetData = new type(name, id);
|
|
55
|
+
widgetData.parseJSON(JSON.parse(result));
|
|
56
|
+
return widgetData;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
76
59
|
}
|
|
77
60
|
static getKey(name, id) {
|
|
78
61
|
return `${name}@${id}`;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class ElectronUtils {
|
|
2
|
+
static hasElectronApi() {
|
|
3
|
+
return Reflect.has(window, "electronAPI");
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 获取ElectronAPI
|
|
7
|
+
* windows api
|
|
8
|
+
*/
|
|
9
|
+
static getAPI() {
|
|
10
|
+
if (Reflect.has(window, "electronAPI")) {
|
|
11
|
+
//@ts-ignore
|
|
12
|
+
return window.electronAPI;
|
|
13
|
+
}
|
|
14
|
+
else if (Reflect.has(window.parent, "electronAPI")) {
|
|
15
|
+
//@ts-ignore
|
|
16
|
+
return window.parent.electronAPI;
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -10,5 +10,4 @@ export declare class ElectronApi {
|
|
|
10
10
|
static addIpcListener(key: String, f: Function): Promise<void>;
|
|
11
11
|
static removeIpcListener(key: String): Promise<void>;
|
|
12
12
|
static getConfig(key: string, defaultValue: string | number | boolean): Promise<any>;
|
|
13
|
-
static hasElectronApi(): boolean;
|
|
14
13
|
}
|
package/dist/types/api/Keys.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NotificationType } from "../model/Notification";
|
|
2
|
+
type NotificationCallback = (type: NotificationType, message: string, duration: number) => void;
|
|
3
|
+
export declare class NotificationApi {
|
|
4
|
+
static call(duration?: number): Promise<void>;
|
|
5
|
+
static advanceCountdown(message: string, targetTime: string, title?: string): Promise<void>;
|
|
6
|
+
static countdown(message: string, targetTime: string): Promise<void>;
|
|
7
|
+
static success(message: string, duration?: number): Promise<void>;
|
|
8
|
+
static error(message: string, duration?: number): Promise<void>;
|
|
9
|
+
static warning(message: string, duration?: number): Promise<void>;
|
|
10
|
+
static message(message: string, duration?: number): Promise<void>;
|
|
11
|
+
private static callback;
|
|
12
|
+
static setDebugNotification(callback: NotificationCallback): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ export * from "./model/Widget";
|
|
|
2
2
|
export * from "./model/BroadcastEvent";
|
|
3
3
|
export * from "./model/WidgetData";
|
|
4
4
|
export * from "./model/WidgetParams";
|
|
5
|
+
export * from "./model/Notification";
|
|
5
6
|
export * from "./api/ElectronApi";
|
|
6
7
|
export * from "./api/Keys";
|
|
7
8
|
export * from "./repository/WidgetDataRepository";
|
|
9
|
+
export * from "./api/BrowserWindowApi";
|
|
10
|
+
export * from "./api/NotificationApi";
|
|
11
|
+
export * from "./api/Channel";
|
|
12
|
+
export * from "./utils/ElectronUtils";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type NotificationType = "call" | "message" | "countdown" | "advance-countdown" | "error" | "success" | "warning" | "info";
|
|
2
|
+
export type NotificationOption = {
|
|
3
|
+
type?: NotificationType;
|
|
4
|
+
title?: string;
|
|
5
|
+
message: string;
|
|
6
|
+
targetTime?: string;
|
|
7
|
+
duration?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class Notification {
|
|
10
|
+
type: NotificationType;
|
|
11
|
+
message: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
targetTime?: string;
|
|
14
|
+
duration: number;
|
|
15
|
+
constructor(option: NotificationOption);
|
|
16
|
+
}
|
package/dist/umd/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.exampleTypescriptPackage=t():e.exampleTypescriptPackage=t()}(this,(()=>(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,r){function o(a,c){if(!n[a]){if(!t[a]){if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var s=n[a]={exports:{}};t[a][0].call(s.exports,(function(e){return o(t[a][1][e]||e)}),s,s.exports,e,t,n,r)}return n[a].exports}for(var i=void 0,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,r){(function(e){"use strict";var n,r,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var i=0,a=new o(f),c=e.document.createTextNode("");a.observe(c,{characterData:!0}),n=function(){c.data=i=++i%2}}else if(e.setImmediate||void 0===e.MessageChannel)n="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){f(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(f,0)};else{var u=new e.MessageChannel;u.port1.onmessage=f,n=function(){u.port2.postMessage(0)}}var s=[];function f(){var e,t;r=!0;for(var n=s.length;n;){for(t=s,s=[],e=-1;++e<n;)t[e]();n=s.length}r=!1}t.exports=function(e){1!==s.push(e)||r||n()}}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function o(){}var i={},a=["REJECTED"],c=["FULFILLED"],u=["PENDING"];function s(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,e!==o&&h(this,e)}function f(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function l(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return i.reject(e,t)}r===e?i.reject(e,new TypeError("Cannot resolve promise with itself")):i.resolve(e,r)}))}function d(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function h(e,t){var n=!1;function r(t){n||(n=!0,i.reject(e,t))}function o(t){n||(n=!0,i.resolve(e,t))}var a=v((function(){t(o,r)}));"error"===a.status&&r(a.value)}function v(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=s,s.prototype.catch=function(e){return this.then(null,e)},s.prototype.then=function(e,t){if("function"!=typeof e&&this.state===c||"function"!=typeof t&&this.state===a)return this;var n=new this.constructor(o);return this.state!==u?l(n,this.state===c?e:t,this.outcome):this.queue.push(new f(n,e,t)),n},f.prototype.callFulfilled=function(e){i.resolve(this.promise,e)},f.prototype.otherCallFulfilled=function(e){l(this.promise,this.onFulfilled,e)},f.prototype.callRejected=function(e){i.reject(this.promise,e)},f.prototype.otherCallRejected=function(e){l(this.promise,this.onRejected,e)},i.resolve=function(e,t){var n=v(d,t);if("error"===n.status)return i.reject(e,n.value);var r=n.value;if(r)h(e,r);else{e.state=c,e.outcome=t;for(var o=-1,a=e.queue.length;++o<a;)e.queue[o].callFulfilled(t)}return e},i.reject=function(e,t){e.state=a,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},s.resolve=function(e){return e instanceof this?e:i.resolve(new this(o),e)},s.reject=function(e){var t=new this(o);return i.reject(t,e)},s.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var a=new Array(n),c=0,u=-1,s=new this(o);++u<n;)f(e[u],u);return s;function f(e,o){t.resolve(e).then((function(e){a[o]=e,++c!==n||r||(r=!0,i.resolve(s,a))}),(function(e){r||(r=!0,i.reject(s,e))}))}},s.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n,r=e.length,a=!1;if(!r)return this.resolve([]);for(var c=-1,u=new this(o);++c<r;)n=e[c],t.resolve(n).then((function(e){a||(a=!0,i.resolve(u,e))}),(function(e){a||(a=!0,i.reject(u,e))}));return u}},{1:1}],3:[function(e,t,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function i(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var a=Promise;function c(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function u(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function s(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function f(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var l="local-forage-detect-blob-support",d=void 0,h={},v=Object.prototype.toString,p="readonly",y="readwrite";function g(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;o<t;o++)r[o]=e.charCodeAt(o);return n}function m(e){return"boolean"==typeof d?a.resolve(d):function(e){return new a((function(t){var n=e.transaction(l,y),r=i([""]);n.objectStore(l).put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return d=e}))}function b(e){var t=h[e.name],n={};n.promise=new a((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function _(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function A(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function w(e,t){return new a((function(n,r){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);b(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var a=o.open.apply(o,i);t&&(a.onupgradeneeded=function(t){var n=a.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(l)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),a.onerror=function(e){e.preventDefault(),r(a.error)},a.onsuccess=function(){var t=a.result;t.onversionchange=function(e){e.target.close()},n(t),_(e)}}))}function I(e){return w(e,!1)}function E(e){return w(e,!0)}function S(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,o=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var i=e.db.version+1;i>e.version&&(e.version=i)}return!0}return!1}function R(e){return i([g(atob(e.data))],{type:e.type})}function P(e){return e&&e.__local_forage_encoded_blob}function O(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return u(n,e,e),n}function N(e,t,n,r){void 0===r&&(r=1);try{var o=e.db.transaction(e.storeName,t);n(null,o)}catch(o){if(r>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return a.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),E(e)})).then((function(){return function(e){b(e);for(var t=h[e.name],n=t.forages,r=0;r<n.length;r++){var o=n[r];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,I(e).then((function(t){return e.db=t,S(e)?E(e):t})).then((function(r){e.db=t.db=r;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=r})).catch((function(t){throw A(e,t),t}))}(e).then((function(){N(e,t,n,r-1)}))})).catch(n);n(o)}}var D={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var o=h[n.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},h[n.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=O);var i=[];function c(){return a.resolve()}for(var u=0;u<o.forages.length;u++){var s=o.forages[u];s!==t&&i.push(s._initReady().catch(c))}var f=o.forages.slice(0);return a.all(i).then((function(){return n.db=o.db,I(n)})).then((function(e){return n.db=e,S(n,t._defaultConfig.version)?E(n):e})).then((function(e){n.db=o.db=e,t._dbInfo=n;for(var r=0;r<f.length;r++){var i=f[r];i!==t&&(i._dbInfo.db=n.db,i._dbInfo.version=n.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){N(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).openCursor(),c=1;a.onsuccess=function(){var n=a.result;if(n){var r=n.value;P(r)&&(r=R(r));var o=e(r,n.key,c++);void 0!==o?t(o):n.continue()}else t()},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},getItem:function(e,t){var n=this;e=s(e);var r=new a((function(t,r){n.ready().then((function(){N(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).get(e);a.onsuccess=function(){var e=a.result;void 0===e&&(e=null),P(e)&&(e=R(e)),t(e)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},setItem:function(e,t,n){var r=this;e=s(e);var o=new a((function(n,o){var i;r.ready().then((function(){return i=r._dbInfo,"[object Blob]"===v.call(t)?m(i.db).then((function(e){return e?t:(n=t,new a((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){N(r._dbInfo,y,(function(i,a){if(i)return o(i);try{var c=a.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var u=c.put(t,e);a.oncomplete=function(){void 0===t&&(t=null),n(t)},a.onabort=a.onerror=function(){var e=u.error?u.error:u.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return c(o,n),o},removeItem:function(e,t){var n=this;e=s(e);var r=new a((function(t,r){n.ready().then((function(){N(n._dbInfo,y,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).delete(e);i.oncomplete=function(){t()},i.onerror=function(){r(a.error)},i.onabort=function(){var e=a.error?a.error:a.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},clear:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){N(t._dbInfo,y,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=i.error?i.error:i.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},length:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){N(t._dbInfo,p,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).count();i.onsuccess=function(){e(i.result)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},key:function(e,t){var n=this,r=new a((function(t,r){e<0?t(null):n.ready().then((function(){N(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName),c=!1,u=a.openKeyCursor();u.onsuccess=function(){var n=u.result;n?0===e||c?t(n.key):(c=!0,n.advance(e)):t(null)},u.onerror=function(){r(u.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},keys:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){N(t._dbInfo,p,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).openKeyCursor(),a=[];i.onsuccess=function(){var t=i.result;t?(a.push(t.key),t.continue()):e(a)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},dropInstance:function(e,t){t=f.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,i=this;if(e.name){var u=e.name===n.name&&i._dbInfo.db?a.resolve(i._dbInfo.db):I(e).then((function(t){var n=h[e.name],r=n.forages;n.db=t;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=t;return t}));r=e.storeName?u.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;b(e);var r=h[e.name],i=r.forages;t.close();for(var c=0;c<i.length;c++){var u=i[c];u._dbInfo.db=null,u._dbInfo.version=n}var s=new a((function(t,r){var i=o.open(e.name,n);i.onerror=function(e){i.result.close(),r(e)},i.onupgradeneeded=function(){i.result.deleteObjectStore(e.storeName)},i.onsuccess=function(){var e=i.result;e.close(),t(e)}}));return s.then((function(e){r.db=e;for(var t=0;t<i.length;t++){var n=i[t];n._dbInfo.db=e,_(n._dbInfo)}})).catch((function(t){throw(A(e,t)||a.resolve()).catch((function(){})),t}))}})):u.then((function(t){b(e);var n=h[e.name],r=n.forages;t.close();for(var i=0;i<r.length;i++)r[i]._dbInfo.db=null;var c=new a((function(t,n){var r=o.deleteDatabase(e.name);r.onerror=function(){var e=r.result;e&&e.close(),n(r.error)},r.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}}));return c.then((function(e){n.db=e;for(var t=0;t<r.length;t++)_(r[t]._dbInfo)})).catch((function(t){throw(A(e,t)||a.resolve()).catch((function(){})),t}))}))}else r=a.reject("Invalid arguments");return c(r,t),r}};var M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=/^~~local_forage_type~([^~]+)~/,j="__lfsc__:",x=j.length,B="arbf",W="blob",C="si08",k="ui08",L="uic8",U="si16",H="si32",F="ur16",z="ui32",K="fl32",G="fl64",Q=x+B.length,V=Object.prototype.toString;function J(e){var t,n,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var s=new ArrayBuffer(a),f=new Uint8Array(s);for(t=0;t<c;t+=4)n=M.indexOf(e[t]),r=M.indexOf(e[t+1]),o=M.indexOf(e[t+2]),i=M.indexOf(e[t+3]),f[u++]=n<<2|r>>4,f[u++]=(15&r)<<4|o>>2,f[u++]=(3&o)<<6|63&i;return s}function q(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=M[n[t]>>2],r+=M[(3&n[t])<<4|n[t+1]>>4],r+=M[(15&n[t+1])<<2|n[t+2]>>6],r+=M[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var X={serialize:function(e,t){var n="";if(e&&(n=V.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===V.call(e.buffer))){var r,o=j;e instanceof ArrayBuffer?(r=e,o+=B):(r=e.buffer,"[object Int8Array]"===n?o+=C:"[object Uint8Array]"===n?o+=k:"[object Uint8ClampedArray]"===n?o+=L:"[object Int16Array]"===n?o+=U:"[object Uint16Array]"===n?o+=F:"[object Int32Array]"===n?o+=H:"[object Uint32Array]"===n?o+=z:"[object Float32Array]"===n?o+=K:"[object Float64Array]"===n?o+=G:t(new Error("Failed to get type for BinaryArray"))),t(o+q(r))}else if("[object Blob]"===n){var i=new FileReader;i.onload=function(){var n="~~local_forage_type~"+e.type+"~"+q(this.result);t("__lfsc__:blob"+n)},i.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,x)!==j)return JSON.parse(e);var t,n=e.substring(Q),r=e.substring(x,Q);if(r===W&&T.test(n)){var o=n.match(T);t=o[1],n=n.substring(o[0].length)}var a=J(n);switch(r){case B:return a;case W:return i([a],{type:t});case C:return new Int8Array(a);case k:return new Uint8Array(a);case L:return new Uint8ClampedArray(a);case U:return new Int16Array(a);case F:return new Uint16Array(a);case H:return new Int32Array(a);case z:return new Uint32Array(a);case K:return new Float32Array(a);case G:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}},stringToBuffer:J,bufferToString:q};function Y(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function $(e,t,n,r,o,i){e.executeSql(n,r,o,(function(e,a){a.code===a.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,c){c.rows.length?i(e,a):Y(e,t,(function(){e.executeSql(n,r,o,i)}),i)}),i):i(e,a)}),i)}function Z(e,t,n,r){var o=this;e=s(e);var i=new a((function(i,a){o.ready().then((function(){void 0===t&&(t=null);var c=t,u=o._dbInfo;u.serializer.serialize(t,(function(t,s){s?a(s):u.db.transaction((function(n){$(n,u,"INSERT OR REPLACE INTO "+u.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){i(c)}),(function(e,t){a(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void i(Z.apply(o,[e,c,n,r-1]));a(t)}}))}))})).catch(a)}));return c(i,n),i}function ee(e){return new a((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],i=0;i<r.rows.length;i++)o.push(r.rows.item(i).name);t({db:e,storeNames:o})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var te={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new a((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(o){Y(o,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=X,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT * FROM "+o.storeName,[],(function(n,r){for(var i=r.rows,a=i.length,c=0;c<a;c++){var u=i.item(c),s=u.value;if(s&&(s=o.serializer.deserialize(s)),void 0!==(s=e(s,u.key,c+1)))return void t(s)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},getItem:function(e,t){var n=this;e=s(e);var r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},setItem:function(e,t,n){return Z.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=s(e);var r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},clear:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},length:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},key:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},keys:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],o=0;o<n.rows.length;o++)r.push(n.rows.item(o).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},dropInstance:function(e,t){t=f.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,o=this;return c(r=e.name?new a((function(t){var r;r=e.name===n.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(ee(r))})).then((function(e){return new a((function(t,n){e.db.transaction((function(r){function o(e){return new a((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var i=[],c=0,u=e.storeNames.length;c<u;c++)i.push(o(e.storeNames[c]));a.all(i).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):a.reject("Invalid arguments"),t),r}};function ne(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}function re(){return!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0}var oe={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=ne(e,this._defaultConfig),re()?(this._dbInfo=t,t.serializer=X,a.resolve()):a.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,i=localStorage.length,a=1,c=0;c<i;c++){var u=localStorage.key(c);if(0===u.indexOf(r)){var s=localStorage.getItem(u);if(s&&(s=t.serializer.deserialize(s)),void 0!==(s=e(s,u.substring(o),a++)))return s}}}));return c(r,t),r},getItem:function(e,t){var n=this;e=s(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return c(r,t),r},setItem:function(e,t,n){var r=this;e=s(e);var o=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new a((function(o,i){var a=r._dbInfo;a.serializer.serialize(t,(function(t,r){if(r)i(r);else try{localStorage.setItem(a.keyPrefix+e,t),o(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||i(e),i(e)}}))}))}));return c(o,n),o},removeItem:function(e,t){var n=this;e=s(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return c(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return c(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return c(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return c(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],o=0;o<n;o++){var i=localStorage.key(o);0===i.indexOf(e.keyPrefix)&&r.push(i.substring(e.keyPrefix.length))}return r}));return c(n,e),n},dropInstance:function(e,t){if(t=f.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,o=this;return r=e.name?new a((function(t){e.storeName?t(ne(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):a.reject("Invalid arguments"),c(r,t),r}},ie=function(e,t){for(var n=e.length,r=0;r<n;){if((o=e[r])===(i=t)||"number"==typeof o&&"number"==typeof i&&isNaN(o)&&isNaN(i))return!0;r++}var o,i;return!1},ae=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},ce={},ue={},se={INDEXEDDB:D,WEBSQL:te,LOCALSTORAGE:oe},fe=[se.INDEXEDDB._driver,se.WEBSQL._driver,se.LOCALSTORAGE._driver],le=["dropInstance"],de=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(le),he={description:"",driver:fe.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function ve(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function pe(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&(ae(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var ye=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),se)if(se.hasOwnProperty(n)){var r=se[n],o=r._driver;this[n]=o,ce[o]||this.defineDriver(r)}this._defaultConfig=pe({},he),this._config=pe({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new a((function(t,n){try{var r=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(o);for(var i=de.concat("_initStorage"),u=0,s=i.length;u<s;u++){var f=i[u];if((!ie(le,f)||e[f])&&"function"!=typeof e[f])return void n(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=a.reject(t);return c(n,arguments[arguments.length-1]),n}},n=0,r=le.length;n<r;n++){var o=le[n];e[o]||(e[o]=t(o))}}();var l=function(n){ce[r]&&console.info("Redefining LocalForage driver: "+r),ce[r]=e,ue[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(l,n):l(!!e._support):l(!0)}catch(e){n(e)}}));return u(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=ce[e]?a.resolve(ce[e]):a.reject(new Error("Driver not found."));return u(r,t,n),r},e.prototype.getSerializer=function(e){var t=a.resolve(X);return u(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return u(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;ae(e)||(e=[e]);var o=this._getSupportedDrivers(e);function i(){r._config.driver=r.driver()}function c(e){return r._extend(e),i(),r._ready=r._initStorage(r._config),r._ready}var s=null!==this._driverSet?this._driverSet.catch((function(){return a.resolve()})):a.resolve();return this._driverSet=s.then((function(){var e=o[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,i(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var o=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(o).then(c).catch(n)}i();var u=new Error("No available storage method found.");return r._driverSet=a.reject(u),r._driverSet}()}}(o)}))})).catch((function(){i();var e=new Error("No available storage method found.");return r._driverSet=a.reject(e),r._driverSet})),u(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!ue[e]},e.prototype._extend=function(e){pe(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o=e[n];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=de.length;e<t;e++)ve(this,de[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),ge=new ye;t.exports=ge},{3:3}]},{},[4])(4)},991:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function c(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}u((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ElectronApi=void 0;const o=n(873);t.ElectronApi=class{static openAddWidgetWindow(){this.hasElectronApi()&&window.electronAPI.invokeIpc("openAddWidgetWindow")}static registerWidgets(e){return r(this,void 0,void 0,(function*(){if(this.hasElectronApi()){const t=JSON.parse(JSON.stringify(e.map((e=>JSON.stringify(e)))));yield window.electronAPI.invokeIpc("registerWidgets",t)}}))}static setConfig(e,t){return r(this,void 0,void 0,(function*(){this.hasElectronApi()&&(yield window.electronAPI.invokeIpc("setConfig",{key:e,value:t}))}))}static sendBroadcastEvent(e){return r(this,void 0,void 0,(function*(){this.hasElectronApi()&&(yield window.electronAPI.invokeIpc(o.Keys.BROADCAST_EVENT,JSON.stringify(e)))}))}static registerBroadcast(e){return r(this,void 0,void 0,(function*(){yield this.addIpcListener(o.Keys.BROADCAST_EVENT,(t=>{e(JSON.parse(t))}))}))}static unregisterBroadcast(){return r(this,void 0,void 0,(function*(){yield this.removeIpcListener(o.Keys.BROADCAST_EVENT)}))}static addIpcListener(e,t){return r(this,void 0,void 0,(function*(){this.hasElectronApi()&&(yield window.electronAPI.addIpcListener(e,t))}))}static removeIpcListener(e){return r(this,void 0,void 0,(function*(){this.hasElectronApi()&&(yield window.electronAPI.removeIpcListener(e))}))}static getConfig(e,t){return r(this,void 0,void 0,(function*(){if(this.hasElectronApi()){const n=yield window.electronAPI.invokeIpc("getConfig",e);return null==n?t:"boolean"==typeof t?"true"===n:n}}))}static hasElectronApi(){return Reflect.has(window,"electronAPI")}}},873:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Keys=void 0;class n{}t.Keys=n,n.CONFIG_LAUNCH_AT_STARTUP="LAUNCH_AT_STARTUP",n.CONFIG_WIDGET_SHADOW="WIDGET_SHADOW",n.CHANNEL_MAIN="WeiZ5kaKijae",n.EVENT_WIDGET_UPDATED="WIDGET_SHADOW",n.BROADCAST_EVENT="sendBroadcastEvent"},432:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(203),t),o(n(982),t),o(n(791),t),o(n(387),t),o(n(991),t),o(n(873),t),o(n(865),t)},982:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcastEvent=void 0;class n{constructor(e,t,n){this.type=e,this.from=t,this.payload=n}}t.BroadcastEvent=n,n.TYPE_WIDGET_UPDATED="BROADCAST:WIDGET_UPDATED"},203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetKeyword=t.Widget=void 0;class n{constructor(e){var t,n,r,o,i;this.lang="zh",this.name=e.name,this.title=e.title,this.description=e.description,this.keywords=e.keywords,this.lang=e.lang,this.w=e.w,this.h=e.h,this.maxW=null!==(t=e.maxW)&&void 0!==t?t:e.w,this.maxH=null!==(n=e.maxH)&&void 0!==n?n:e.h,this.minW=null!==(r=e.minW)&&void 0!==r?r:e.w,this.minH=null!==(o=e.minH)&&void 0!==o?o:e.h,this.url=e.url,this.configUrl=e.configUrl,this.extraUrl=null!==(i=e.extraUrl)&&void 0!==i?i:new Map}getTitle(e){return e?this.title.get(e):this.title.get(this.lang)}getDescription(e){return e?this.description.get(e):this.description.get(this.lang)}toJSON(){return{name:this.name,title:Object.fromEntries(this.title),description:Object.fromEntries(this.description),keywords:this.keywords,lang:this.lang,w:this.w,h:this.h,maxW:this.maxW,maxH:this.maxH,minW:this.minW,minH:this.minH,url:this.url,configUrl:this.configUrl,extraUrl:Object.fromEntries(this.extraUrl)}}static parse(e){const t=JSON.parse(e);return new n({configUrl:t.configUrl,description:new Map(Object.entries(t.description)),extraUrl:new Map(Object.entries(t.extraUrl)),h:t.h,keywords:t.keywords,lang:t.lang,maxH:t.maxH,maxW:t.maxW,minH:t.minH,minW:t.minW,name:t.name,title:new Map(Object.entries(t.title)),url:t.url,w:t.w})}}var r;t.Widget=n,(r=t.WidgetKeyword||(t.WidgetKeyword={})).RECOMMEND="recommend",r.TOOLS="tools",r.EFFICIENCY="efficiency",r.PICTURE="picture",r.LIFE="life",r.SHORTCUT="shortcut",r.COUNTDOWN="countdown",r.TIMER="timer",r.INFO="info",r.DASHBOARD="dashboard"},791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetData=void 0,t.WidgetData=class{constructor(e,t){this.id=t,this.name=e}parseJSON(e){Object.assign(this,e)}}},387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetHostMode=t.ThemeMode=t.WidgetParams=void 0;const r=n(470);class o{toUrlParams(){const e=new URLSearchParams,t=Object.getOwnPropertyNames(this);for(let n of t){const t=this[n];t&&e.append(o.PARAM_PREFIX+n,t.toString())}return e}getPersistKey(){return`${this.name}-${this.id}`}static fromCurrentLocation(){let e=window.location.href.split("?")[1];return this.fromObject((0,r.parseQuery)(e))}static setValue(e,t,n){const r=t.replace(this.PARAM_PREFIX,"");r==o.PARAM_ID?e.id=n:r==o.PARAM_X?e.x=parseInt(n):r==o.PARAM_Y?e.y=parseInt(n):r==o.PARAM_H?e.h=parseInt(n):r==o.PARAM_W?e.w=parseInt(n):r==o.PARAM_LANG?e.lang=n:r==o.PARAM_THEME?e.theme=n:r==o.PARAM_MODE?e.mode=parseInt(n):r==o.PARAM_RADIUS?e.radius=parseInt(n):r==o.PARAM_WIDTH?e.width=parseInt(n):r==o.PARAM_HEIGHT?e.height=parseInt(n):r==o.PARAM_NAME?e.name=n:r==o.PARAM_TITLE?e.title=n:r==o.PARAM_PREVIEW&&(e.preview="true"===n)}static fromObject(e){const t=new o,n=Object.getOwnPropertyNames(e);for(let r of n){const n=r,o=e[n];this.setValue(t,n,o)}return t}}var i,a;t.WidgetParams=o,o.PARAM_PREFIX="w_",o.PARAM_ID="id",o.PARAM_W="w",o.PARAM_H="h",o.PARAM_WIDTH="width",o.PARAM_HEIGHT="height",o.PARAM_X="x",o.PARAM_Y="y",o.PARAM_LANG="lang",o.PARAM_THEME="theme",o.PARAM_MODE="mode",o.PARAM_RADIUS="radius",o.PARAM_NAME="name",o.PARAM_TITLE="title",o.PARAM_PREVIEW="preview",o.PARAMS=[o.PARAM_ID,o.PARAM_W,o.PARAM_H,o.PARAM_X,o.PARAM_Y,o.PARAM_LANG,o.PARAM_THEME,o.PARAM_MODE,o.PARAM_WIDTH,o.PARAM_HEIGHT,o.PARAM_NAME,o.PARAM_TITLE,o.PARAM_PREVIEW],(a=t.ThemeMode||(t.ThemeMode={})).AUTO="auto",a.LIGHT="LIGHT",a.DARK="DARK",(i=t.WidgetHostMode||(t.WidgetHostMode={}))[i.DEFAULT=0]="DEFAULT",i[i.OVERLAP=1]="OVERLAP"},865:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function c(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}u((r=r.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetDataRepository=void 0;const i=o(n(483)),a=n(982),c=n(991);class u{static save(e){return r(this,void 0,void 0,(function*(){let t=this.getStore(e.name);const n=yield t.setItem(this.getKey(e.name,e.id),JSON.stringify(e)),r=new a.BroadcastEvent(a.BroadcastEvent.TYPE_WIDGET_UPDATED,"",e);return yield c.ElectronApi.sendBroadcastEvent(r),n}))}static getStore(e){if(this.stores.has(e))return this.stores.get(e);const t=i.default.createInstance({name:e});return this.stores.set(e,t),t}static saveByName(e){return r(this,void 0,void 0,(function*(){const t=this.getStore(e.name),n=JSON.stringify(e),r=yield t.setItem(e.name,n),o=new a.BroadcastEvent(a.BroadcastEvent.TYPE_WIDGET_UPDATED,"",{name:e.name,json:n});return yield c.ElectronApi.sendBroadcastEvent(o),r}))}static findByName(e,t){return r(this,void 0,void 0,(function*(){let n=this.getStore(e),r=yield n.getItem(e);if(r){const n=new t(e);return n.parseJSON(JSON.parse(r)),n}}))}static find(e,t,n){return r(this,void 0,void 0,(function*(){let r=this.getStore(e),o=yield r.getItem(this.getKey(e,t));if(o){const r=new n(e,t);return r.parseJSON(JSON.parse(o)),r}}))}static getKey(e,t){return`${e}@${t}`}}t.WidgetDataRepository=u,u.stores=new Map},194:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encodeParam=t.encodePath=t.encodeQueryKey=t.encodeQueryValue=t.encodeHash=t.PLUS_RE=void 0;const n=/#/g,r=/&/g,o=/\//g,i=/=/g,a=/\?/g;t.PLUS_RE=/\+/g;const c=/%5B/g,u=/%5D/g,s=/%5E/g,f=/%60/g,l=/%7B/g,d=/%7C/g,h=/%7D/g,v=/%20/g;function p(e){return encodeURI(""+e).replace(d,"|").replace(c,"[").replace(u,"]")}function y(e){return p(e).replace(t.PLUS_RE,"%2B").replace(v,"+").replace(n,"%23").replace(r,"%26").replace(f,"`").replace(l,"{").replace(h,"}").replace(s,"^")}function g(e){return p(e).replace(n,"%23").replace(a,"%3F")}t.encodeHash=function(e){return p(e).replace(l,"{").replace(h,"}").replace(s,"^")},t.encodeQueryValue=y,t.encodeQueryKey=function(e){return y(e).replace(i,"%3D")},t.encodePath=g,t.encodeParam=function(e){return null==e?"":g(e).replace(o,"%2F")},t.decode=function(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}},470:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeQuery=t.stringifyQuery=t.parseQuery=void 0;const r=n(194),o=Array.isArray;t.parseQuery=function(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;e<n.length;++e){const i=n[e].replace(r.PLUS_RE," "),a=i.indexOf("="),c=(0,r.decode)(a<0?i:i.slice(0,a)),u=a<0?null:(0,r.decode)(i.slice(a+1));if(c in t){let e=t[c];o(e)||(e=t[c]=[e]),e.push(u)}else t[c]=u}return t},t.stringifyQuery=function(e){let t="";for(let n in e){const i=e[n];(n=(0,r.encodeQueryKey)(n),null!=i)?(o(i)?i.map((e=>e&&(0,r.encodeQueryValue)(e))):[i&&(0,r.encodeQueryValue)(i)]).forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))})):void 0!==i&&(t+=(t.length?"&":"")+n)}return t},t.normalizeQuery=function(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=o(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n(432)})()));
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.exampleTypescriptPackage=t():e.exampleTypescriptPackage=t()}(this,(()=>(()=>{var e={483:(e,t,n)=>{e.exports=function e(t,n,r){function o(a,c){if(!n[a]){if(!t[a]){if(i)return i(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var u=n[a]={exports:{}};t[a][0].call(u.exports,(function(e){return o(t[a][1][e]||e)}),u,u.exports,e,t,n,r)}return n[a].exports}for(var i=void 0,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,r){(function(e){"use strict";var n,r,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var i=0,a=new o(f),c=e.document.createTextNode("");a.observe(c,{characterData:!0}),n=function(){c.data=i=++i%2}}else if(e.setImmediate||void 0===e.MessageChannel)n="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){f(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(f,0)};else{var s=new e.MessageChannel;s.port1.onmessage=f,n=function(){s.port2.postMessage(0)}}var u=[];function f(){var e,t;r=!0;for(var n=u.length;n;){for(t=u,u=[],e=-1;++e<n;)t[e]();n=u.length}r=!1}t.exports=function(e){1!==u.push(e)||r||n()}}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function o(){}var i={},a=["REJECTED"],c=["FULFILLED"],s=["PENDING"];function u(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=s,this.queue=[],this.outcome=void 0,e!==o&&h(this,e)}function f(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function l(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return i.reject(e,t)}r===e?i.reject(e,new TypeError("Cannot resolve promise with itself")):i.resolve(e,r)}))}function d(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function h(e,t){var n=!1;function r(t){n||(n=!0,i.reject(e,t))}function o(t){n||(n=!0,i.resolve(e,t))}var a=v((function(){t(o,r)}));"error"===a.status&&r(a.value)}function v(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=u,u.prototype.catch=function(e){return this.then(null,e)},u.prototype.then=function(e,t){if("function"!=typeof e&&this.state===c||"function"!=typeof t&&this.state===a)return this;var n=new this.constructor(o);return this.state!==s?l(n,this.state===c?e:t,this.outcome):this.queue.push(new f(n,e,t)),n},f.prototype.callFulfilled=function(e){i.resolve(this.promise,e)},f.prototype.otherCallFulfilled=function(e){l(this.promise,this.onFulfilled,e)},f.prototype.callRejected=function(e){i.reject(this.promise,e)},f.prototype.otherCallRejected=function(e){l(this.promise,this.onRejected,e)},i.resolve=function(e,t){var n=v(d,t);if("error"===n.status)return i.reject(e,n.value);var r=n.value;if(r)h(e,r);else{e.state=c,e.outcome=t;for(var o=-1,a=e.queue.length;++o<a;)e.queue[o].callFulfilled(t)}return e},i.reject=function(e,t){e.state=a,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},u.resolve=function(e){return e instanceof this?e:i.resolve(new this(o),e)},u.reject=function(e){var t=new this(o);return i.reject(t,e)},u.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var a=new Array(n),c=0,s=-1,u=new this(o);++s<n;)f(e[s],s);return u;function f(e,o){t.resolve(e).then((function(e){a[o]=e,++c!==n||r||(r=!0,i.resolve(u,a))}),(function(e){r||(r=!0,i.reject(u,e))}))}},u.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n,r=e.length,a=!1;if(!r)return this.resolve([]);for(var c=-1,s=new this(o);++c<r;)n=e[c],t.resolve(n).then((function(e){a||(a=!0,i.resolve(s,e))}),(function(e){a||(a=!0,i.reject(s,e))}));return s}},{1:1}],3:[function(e,t,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function i(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var a=Promise;function c(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function s(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function u(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function f(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var l="local-forage-detect-blob-support",d=void 0,h={},v=Object.prototype.toString,p="readonly",y="readwrite";function g(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;o<t;o++)r[o]=e.charCodeAt(o);return n}function m(e){return"boolean"==typeof d?a.resolve(d):function(e){return new a((function(t){var n=e.transaction(l,y),r=i([""]);n.objectStore(l).put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return d=e}))}function b(e){var t=h[e.name],n={};n.promise=new a((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function _(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function I(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function A(e,t){return new a((function(n,r){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);b(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var a=o.open.apply(o,i);t&&(a.onupgradeneeded=function(t){var n=a.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(l)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),a.onerror=function(e){e.preventDefault(),r(a.error)},a.onsuccess=function(){var t=a.result;t.onversionchange=function(e){e.target.close()},n(t),_(e)}}))}function w(e){return A(e,!1)}function E(e){return A(e,!0)}function N(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,o=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var i=e.db.version+1;i>e.version&&(e.version=i)}return!0}return!1}function O(e){return i([g(atob(e.data))],{type:e.type})}function S(e){return e&&e.__local_forage_encoded_blob}function R(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return s(n,e,e),n}function P(e,t,n,r){void 0===r&&(r=1);try{var o=e.db.transaction(e.storeName,t);n(null,o)}catch(o){if(r>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return a.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),E(e)})).then((function(){return function(e){b(e);for(var t=h[e.name],n=t.forages,r=0;r<n.length;r++){var o=n[r];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,w(e).then((function(t){return e.db=t,N(e)?E(e):t})).then((function(r){e.db=t.db=r;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=r})).catch((function(t){throw I(e,t),t}))}(e).then((function(){P(e,t,n,r-1)}))})).catch(n);n(o)}}var T={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var o=h[n.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},h[n.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=R);var i=[];function c(){return a.resolve()}for(var s=0;s<o.forages.length;s++){var u=o.forages[s];u!==t&&i.push(u._initReady().catch(c))}var f=o.forages.slice(0);return a.all(i).then((function(){return n.db=o.db,w(n)})).then((function(e){return n.db=e,N(n,t._defaultConfig.version)?E(n):e})).then((function(e){n.db=o.db=e,t._dbInfo=n;for(var r=0;r<f.length;r++){var i=f[r];i!==t&&(i._dbInfo.db=n.db,i._dbInfo.version=n.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){P(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).openCursor(),c=1;a.onsuccess=function(){var n=a.result;if(n){var r=n.value;S(r)&&(r=O(r));var o=e(r,n.key,c++);void 0!==o?t(o):n.continue()}else t()},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},getItem:function(e,t){var n=this;e=u(e);var r=new a((function(t,r){n.ready().then((function(){P(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).get(e);a.onsuccess=function(){var e=a.result;void 0===e&&(e=null),S(e)&&(e=O(e)),t(e)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},setItem:function(e,t,n){var r=this;e=u(e);var o=new a((function(n,o){var i;r.ready().then((function(){return i=r._dbInfo,"[object Blob]"===v.call(t)?m(i.db).then((function(e){return e?t:(n=t,new a((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){P(r._dbInfo,y,(function(i,a){if(i)return o(i);try{var c=a.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var s=c.put(t,e);a.oncomplete=function(){void 0===t&&(t=null),n(t)},a.onabort=a.onerror=function(){var e=s.error?s.error:s.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return c(o,n),o},removeItem:function(e,t){var n=this;e=u(e);var r=new a((function(t,r){n.ready().then((function(){P(n._dbInfo,y,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName).delete(e);i.oncomplete=function(){t()},i.onerror=function(){r(a.error)},i.onabort=function(){var e=a.error?a.error:a.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},clear:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){P(t._dbInfo,y,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=i.error?i.error:i.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},length:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){P(t._dbInfo,p,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).count();i.onsuccess=function(){e(i.result)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},key:function(e,t){var n=this,r=new a((function(t,r){e<0?t(null):n.ready().then((function(){P(n._dbInfo,p,(function(o,i){if(o)return r(o);try{var a=i.objectStore(n._dbInfo.storeName),c=!1,s=a.openKeyCursor();s.onsuccess=function(){var n=s.result;n?0===e||c?t(n.key):(c=!0,n.advance(e)):t(null)},s.onerror=function(){r(s.error)}}catch(e){r(e)}}))})).catch(r)}));return c(r,t),r},keys:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){P(t._dbInfo,p,(function(r,o){if(r)return n(r);try{var i=o.objectStore(t._dbInfo.storeName).openKeyCursor(),a=[];i.onsuccess=function(){var t=i.result;t?(a.push(t.key),t.continue()):e(a)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return c(n,e),n},dropInstance:function(e,t){t=f.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,i=this;if(e.name){var s=e.name===n.name&&i._dbInfo.db?a.resolve(i._dbInfo.db):w(e).then((function(t){var n=h[e.name],r=n.forages;n.db=t;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=t;return t}));r=e.storeName?s.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;b(e);var r=h[e.name],i=r.forages;t.close();for(var c=0;c<i.length;c++){var s=i[c];s._dbInfo.db=null,s._dbInfo.version=n}var u=new a((function(t,r){var i=o.open(e.name,n);i.onerror=function(e){i.result.close(),r(e)},i.onupgradeneeded=function(){i.result.deleteObjectStore(e.storeName)},i.onsuccess=function(){var e=i.result;e.close(),t(e)}}));return u.then((function(e){r.db=e;for(var t=0;t<i.length;t++){var n=i[t];n._dbInfo.db=e,_(n._dbInfo)}})).catch((function(t){throw(I(e,t)||a.resolve()).catch((function(){})),t}))}})):s.then((function(t){b(e);var n=h[e.name],r=n.forages;t.close();for(var i=0;i<r.length;i++)r[i]._dbInfo.db=null;var c=new a((function(t,n){var r=o.deleteDatabase(e.name);r.onerror=function(){var e=r.result;e&&e.close(),n(r.error)},r.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}}));return c.then((function(e){n.db=e;for(var t=0;t<r.length;t++)_(r[t]._dbInfo)})).catch((function(t){throw(I(e,t)||a.resolve()).catch((function(){})),t}))}))}else r=a.reject("Invalid arguments");return c(r,t),r}};var M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",D=/^~~local_forage_type~([^~]+)~/,j="__lfsc__:",C=j.length,x="arbf",U="blob",W="si08",B="ui08",k="uic8",L="si16",F="si32",H="ur16",z="ui32",K="fl32",G="fl64",V=C+x.length,Q=Object.prototype.toString;function J(e){var t,n,r,o,i,a=.75*e.length,c=e.length,s=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var u=new ArrayBuffer(a),f=new Uint8Array(u);for(t=0;t<c;t+=4)n=M.indexOf(e[t]),r=M.indexOf(e[t+1]),o=M.indexOf(e[t+2]),i=M.indexOf(e[t+3]),f[s++]=n<<2|r>>4,f[s++]=(15&r)<<4|o>>2,f[s++]=(3&o)<<6|63&i;return u}function q(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=M[n[t]>>2],r+=M[(3&n[t])<<4|n[t+1]>>4],r+=M[(15&n[t+1])<<2|n[t+2]>>6],r+=M[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var X={serialize:function(e,t){var n="";if(e&&(n=Q.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===Q.call(e.buffer))){var r,o=j;e instanceof ArrayBuffer?(r=e,o+=x):(r=e.buffer,"[object Int8Array]"===n?o+=W:"[object Uint8Array]"===n?o+=B:"[object Uint8ClampedArray]"===n?o+=k:"[object Int16Array]"===n?o+=L:"[object Uint16Array]"===n?o+=H:"[object Int32Array]"===n?o+=F:"[object Uint32Array]"===n?o+=z:"[object Float32Array]"===n?o+=K:"[object Float64Array]"===n?o+=G:t(new Error("Failed to get type for BinaryArray"))),t(o+q(r))}else if("[object Blob]"===n){var i=new FileReader;i.onload=function(){var n="~~local_forage_type~"+e.type+"~"+q(this.result);t("__lfsc__:blob"+n)},i.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,C)!==j)return JSON.parse(e);var t,n=e.substring(V),r=e.substring(C,V);if(r===U&&D.test(n)){var o=n.match(D);t=o[1],n=n.substring(o[0].length)}var a=J(n);switch(r){case x:return a;case U:return i([a],{type:t});case W:return new Int8Array(a);case B:return new Uint8Array(a);case k:return new Uint8ClampedArray(a);case L:return new Int16Array(a);case H:return new Uint16Array(a);case F:return new Int32Array(a);case z:return new Uint32Array(a);case K:return new Float32Array(a);case G:return new Float64Array(a);default:throw new Error("Unkown type: "+r)}},stringToBuffer:J,bufferToString:q};function Y(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function $(e,t,n,r,o,i){e.executeSql(n,r,o,(function(e,a){a.code===a.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,c){c.rows.length?i(e,a):Y(e,t,(function(){e.executeSql(n,r,o,i)}),i)}),i):i(e,a)}),i)}function Z(e,t,n,r){var o=this;e=u(e);var i=new a((function(i,a){o.ready().then((function(){void 0===t&&(t=null);var c=t,s=o._dbInfo;s.serializer.serialize(t,(function(t,u){u?a(u):s.db.transaction((function(n){$(n,s,"INSERT OR REPLACE INTO "+s.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){i(c)}),(function(e,t){a(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void i(Z.apply(o,[e,c,n,r-1]));a(t)}}))}))})).catch(a)}));return c(i,n),i}function ee(e){return new a((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],i=0;i<r.rows.length;i++)o.push(r.rows.item(i).name);t({db:e,storeNames:o})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var te={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new a((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(o){Y(o,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=X,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT * FROM "+o.storeName,[],(function(n,r){for(var i=r.rows,a=i.length,c=0;c<a;c++){var s=i.item(c),u=s.value;if(u&&(u=o.serializer.deserialize(u)),void 0!==(u=e(u,s.key,c+1)))return void t(u)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},getItem:function(e,t){var n=this;e=u(e);var r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},setItem:function(e,t,n){return Z.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=u(e);var r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},clear:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},length:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},key:function(e,t){var n=this,r=new a((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){$(n,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return c(r,t),r},keys:function(e){var t=this,n=new a((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){$(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],o=0;o<n.rows.length;o++)r.push(n.rows.item(o).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return c(n,e),n},dropInstance:function(e,t){t=f.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,o=this;return c(r=e.name?new a((function(t){var r;r=e.name===n.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(ee(r))})).then((function(e){return new a((function(t,n){e.db.transaction((function(r){function o(e){return new a((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var i=[],c=0,s=e.storeNames.length;c<s;c++)i.push(o(e.storeNames[c]));a.all(i).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):a.reject("Invalid arguments"),t),r}};function ne(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}function re(){return!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0}var oe={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=ne(e,this._defaultConfig),re()?(this._dbInfo=t,t.serializer=X,a.resolve()):a.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,i=localStorage.length,a=1,c=0;c<i;c++){var s=localStorage.key(c);if(0===s.indexOf(r)){var u=localStorage.getItem(s);if(u&&(u=t.serializer.deserialize(u)),void 0!==(u=e(u,s.substring(o),a++)))return u}}}));return c(r,t),r},getItem:function(e,t){var n=this;e=u(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return c(r,t),r},setItem:function(e,t,n){var r=this;e=u(e);var o=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new a((function(o,i){var a=r._dbInfo;a.serializer.serialize(t,(function(t,r){if(r)i(r);else try{localStorage.setItem(a.keyPrefix+e,t),o(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||i(e),i(e)}}))}))}));return c(o,n),o},removeItem:function(e,t){var n=this;e=u(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return c(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return c(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return c(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return c(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],o=0;o<n;o++){var i=localStorage.key(o);0===i.indexOf(e.keyPrefix)&&r.push(i.substring(e.keyPrefix.length))}return r}));return c(n,e),n},dropInstance:function(e,t){if(t=f.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,o=this;return r=e.name?new a((function(t){e.storeName?t(ne(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):a.reject("Invalid arguments"),c(r,t),r}},ie=function(e,t){for(var n=e.length,r=0;r<n;){if((o=e[r])===(i=t)||"number"==typeof o&&"number"==typeof i&&isNaN(o)&&isNaN(i))return!0;r++}var o,i;return!1},ae=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},ce={},se={},ue={INDEXEDDB:T,WEBSQL:te,LOCALSTORAGE:oe},fe=[ue.INDEXEDDB._driver,ue.WEBSQL._driver,ue.LOCALSTORAGE._driver],le=["dropInstance"],de=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(le),he={description:"",driver:fe.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function ve(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function pe(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&(ae(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var ye=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ue)if(ue.hasOwnProperty(n)){var r=ue[n],o=r._driver;this[n]=o,ce[o]||this.defineDriver(r)}this._defaultConfig=pe({},he),this._config=pe({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new a((function(t,n){try{var r=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(o);for(var i=de.concat("_initStorage"),s=0,u=i.length;s<u;s++){var f=i[s];if((!ie(le,f)||e[f])&&"function"!=typeof e[f])return void n(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=a.reject(t);return c(n,arguments[arguments.length-1]),n}},n=0,r=le.length;n<r;n++){var o=le[n];e[o]||(e[o]=t(o))}}();var l=function(n){ce[r]&&console.info("Redefining LocalForage driver: "+r),ce[r]=e,se[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(l,n):l(!!e._support):l(!0)}catch(e){n(e)}}));return s(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=ce[e]?a.resolve(ce[e]):a.reject(new Error("Driver not found."));return s(r,t,n),r},e.prototype.getSerializer=function(e){var t=a.resolve(X);return s(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return s(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;ae(e)||(e=[e]);var o=this._getSupportedDrivers(e);function i(){r._config.driver=r.driver()}function c(e){return r._extend(e),i(),r._ready=r._initStorage(r._config),r._ready}var u=null!==this._driverSet?this._driverSet.catch((function(){return a.resolve()})):a.resolve();return this._driverSet=u.then((function(){var e=o[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,i(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var o=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(o).then(c).catch(n)}i();var s=new Error("No available storage method found.");return r._driverSet=a.reject(s),r._driverSet}()}}(o)}))})).catch((function(){i();var e=new Error("No available storage method found.");return r._driverSet=a.reject(e),r._driverSet})),s(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!se[e]},e.prototype._extend=function(e){pe(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o=e[n];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=de.length;e<t;e++)ve(this,de[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),ge=new ye;t.exports=ge},{3:3}]},{},[4])(4)},434:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BrowserWindowApi=void 0;const r=n(714),o=n(823);t.BrowserWindowApi=class{static async setIgnoreMouseEvent(e){await o.ElectronUtils.getAPI().invokeIpc(r.Channel.SET_IGNORE_MOUSE_EVENT,e)}static async setWindowVisibility(e){await o.ElectronUtils.getAPI().invokeIpc(r.Channel.BROWSER_WINDOW,e)}}},714:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.Channel=void 0,(n=t.Channel||(t.Channel={})).SET_IGNORE_MOUSE_EVENT="channel::com.wisdom.widgets.set_ignore_mouse_event",n.NOTIFICATION="channel::com.wisdom.widgets.notification",n.BROWSER_WINDOW="channel::com.wisdom.widgets.browser_window"},991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ElectronApi=void 0;const r=n(873),o=n(823);t.ElectronApi=class{static openAddWidgetWindow(){o.ElectronUtils.getAPI().invokeIpc("openAddWidgetWindow")}static async registerWidgets(e){const t=JSON.parse(JSON.stringify(e.map((e=>JSON.stringify(e)))));await o.ElectronUtils.getAPI().invokeIpc("registerWidgets",t)}static async setConfig(e,t){await o.ElectronUtils.getAPI().invokeIpc("setConfig",{key:e,value:t})}static async sendBroadcastEvent(e){await o.ElectronUtils.getAPI().invokeIpc(r.Keys.BROADCAST_EVENT,JSON.stringify(e))}static async registerBroadcast(e){await this.addIpcListener(r.Keys.BROADCAST_EVENT,(t=>{e(JSON.parse(t))}))}static async unregisterBroadcast(){await this.removeIpcListener(r.Keys.BROADCAST_EVENT)}static async addIpcListener(e,t){await o.ElectronUtils.getAPI().addIpcListener(e,t)}static async removeIpcListener(e){await o.ElectronUtils.getAPI().removeIpcListener(e)}static async getConfig(e,t){const n=await o.ElectronUtils.getAPI().invokeIpc("getConfig",e);return null==n?t:"boolean"==typeof t?"true"===n:n}}},873:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Keys=void 0;class n{}t.Keys=n,n.CONFIG_LAUNCH_AT_STARTUP="LAUNCH_AT_STARTUP",n.CONFIG_WIDGET_SHADOW="WIDGET_SHADOW",n.CHANNEL_MAIN="WeiZ5kaKijae",n.EVENT_WIDGET_UPDATED="WIDGET_SHADOW",n.BROADCAST_EVENT="sendBroadcastEvent",n.INVOKE_SET_IGNORE_MOUSE_EVENT="SEND_NOTIFICATION"},585:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationApi=void 0;const r=n(957),o=n(714),i=n(823);t.NotificationApi=class{static async call(e=5e3){i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({title:"章鱼哥",type:"call",message:"下班提醒",duration:e}))}static async advanceCountdown(e,t,n){i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({title:n,message:e,targetTime:t,type:"advance-countdown"}))}static async countdown(e,t){i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({message:e,targetTime:t,type:"countdown"}))}static async success(e,t=5e3){i.ElectronUtils.hasElectronApi()?i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({message:e,type:"success",duration:t})):this.callback("success",e,t)}static async error(e,t=5e3){i.ElectronUtils.hasElectronApi()?i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({message:e,type:"error",duration:t})):this.callback("error",e,t)}static async warning(e,t=5e3){i.ElectronUtils.hasElectronApi()?i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({message:e,type:"warning",duration:t})):this.callback("warning",e,t)}static async message(e,t=5e3){i.ElectronUtils.hasElectronApi()?i.ElectronUtils.getAPI().invokeIpc(o.Channel.NOTIFICATION,new r.Notification({message:e,type:"message",duration:t})):this.callback("message",e,t)}static setDebugNotification(e){this.callback=e}}},432:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(203),t),o(n(982),t),o(n(791),t),o(n(387),t),o(n(957),t),o(n(991),t),o(n(873),t),o(n(865),t),o(n(434),t),o(n(585),t),o(n(714),t),o(n(823),t)},982:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcastEvent=void 0;class n{constructor(e,t,n){this.type=e,this.from=t,this.payload=n}}t.BroadcastEvent=n,n.TYPE_WIDGET_UPDATED="BROADCAST:WIDGET_UPDATED"},957:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Notification=void 0,t.Notification=class{constructor(e){var t,n;this.type="message",this.type=null!==(t=e.type)&&void 0!==t?t:"message",this.title=e.title,this.message=e.message,this.targetTime=e.targetTime,this.duration=null!==(n=e.duration)&&void 0!==n?n:5e3}}},203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetKeyword=t.Widget=void 0;class n{constructor(e){var t,n,r,o,i;this.lang="zh",this.name=e.name,this.title=e.title,this.description=e.description,this.keywords=e.keywords,this.lang=e.lang,this.w=e.w,this.h=e.h,this.maxW=null!==(t=e.maxW)&&void 0!==t?t:e.w,this.maxH=null!==(n=e.maxH)&&void 0!==n?n:e.h,this.minW=null!==(r=e.minW)&&void 0!==r?r:e.w,this.minH=null!==(o=e.minH)&&void 0!==o?o:e.h,this.url=e.url,this.configUrl=e.configUrl,this.extraUrl=null!==(i=e.extraUrl)&&void 0!==i?i:new Map}getTitle(e){return e?this.title.get(e):this.title.get(this.lang)}getDescription(e){return e?this.description.get(e):this.description.get(this.lang)}toJSON(){return{name:this.name,title:Object.fromEntries(this.title),description:Object.fromEntries(this.description),keywords:this.keywords,lang:this.lang,w:this.w,h:this.h,maxW:this.maxW,maxH:this.maxH,minW:this.minW,minH:this.minH,url:this.url,configUrl:this.configUrl,extraUrl:Object.fromEntries(this.extraUrl)}}static parse(e){const t=JSON.parse(e);return new n({configUrl:t.configUrl,description:new Map(Object.entries(t.description)),extraUrl:new Map(Object.entries(t.extraUrl)),h:t.h,keywords:t.keywords,lang:t.lang,maxH:t.maxH,maxW:t.maxW,minH:t.minH,minW:t.minW,name:t.name,title:new Map(Object.entries(t.title)),url:t.url,w:t.w})}}var r;t.Widget=n,(r=t.WidgetKeyword||(t.WidgetKeyword={})).RECOMMEND="recommend",r.TOOLS="tools",r.EFFICIENCY="efficiency",r.PICTURE="picture",r.LIFE="life",r.SHORTCUT="shortcut",r.COUNTDOWN="countdown",r.TIMER="timer",r.INFO="info",r.DASHBOARD="dashboard"},791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetData=void 0,t.WidgetData=class{constructor(e,t){this.id=t,this.name=e}parseJSON(e){Object.assign(this,e)}}},387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetHostMode=t.ThemeMode=t.WidgetParams=void 0;const r=n(470);class o{toUrlParams(){const e=new URLSearchParams,t=Object.getOwnPropertyNames(this);for(let n of t){const t=this[n];t&&e.append(o.PARAM_PREFIX+n,t.toString())}return e}getPersistKey(){return`${this.name}-${this.id}`}static fromCurrentLocation(){let e=window.location.href.split("?")[1];return this.fromObject((0,r.parseQuery)(e))}static setValue(e,t,n){const r=t.replace(this.PARAM_PREFIX,"");r==o.PARAM_ID?e.id=n:r==o.PARAM_X?e.x=parseInt(n):r==o.PARAM_Y?e.y=parseInt(n):r==o.PARAM_H?e.h=parseInt(n):r==o.PARAM_W?e.w=parseInt(n):r==o.PARAM_LANG?e.lang=n:r==o.PARAM_THEME?e.theme=n:r==o.PARAM_MODE?e.mode=parseInt(n):r==o.PARAM_RADIUS?e.radius=parseInt(n):r==o.PARAM_WIDTH?e.width=parseInt(n):r==o.PARAM_HEIGHT?e.height=parseInt(n):r==o.PARAM_NAME?e.name=n:r==o.PARAM_TITLE?e.title=n:r==o.PARAM_PREVIEW&&(e.preview="true"===n)}static fromObject(e){const t=new o,n=Object.getOwnPropertyNames(e);for(let r of n){const n=r,o=e[n];this.setValue(t,n,o)}return t}}var i,a;t.WidgetParams=o,o.PARAM_PREFIX="w_",o.PARAM_ID="id",o.PARAM_W="w",o.PARAM_H="h",o.PARAM_WIDTH="width",o.PARAM_HEIGHT="height",o.PARAM_X="x",o.PARAM_Y="y",o.PARAM_LANG="lang",o.PARAM_THEME="theme",o.PARAM_MODE="mode",o.PARAM_RADIUS="radius",o.PARAM_NAME="name",o.PARAM_TITLE="title",o.PARAM_PREVIEW="preview",o.PARAMS=[o.PARAM_ID,o.PARAM_W,o.PARAM_H,o.PARAM_X,o.PARAM_Y,o.PARAM_LANG,o.PARAM_THEME,o.PARAM_MODE,o.PARAM_WIDTH,o.PARAM_HEIGHT,o.PARAM_NAME,o.PARAM_TITLE,o.PARAM_PREVIEW],(a=t.ThemeMode||(t.ThemeMode={})).AUTO="auto",a.LIGHT="LIGHT",a.DARK="DARK",(i=t.WidgetHostMode||(t.WidgetHostMode={}))[i.DEFAULT=0]="DEFAULT",i[i.OVERLAP=1]="OVERLAP"},865:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WidgetDataRepository=void 0;const o=r(n(483)),i=n(982),a=n(991);class c{static async save(e){let t=this.getStore(e.name);const n=await t.setItem(this.getKey(e.name,e.id),JSON.stringify(e)),r=new i.BroadcastEvent(i.BroadcastEvent.TYPE_WIDGET_UPDATED,"",e);return await a.ElectronApi.sendBroadcastEvent(r),n}static getStore(e){if(this.stores.has(e))return this.stores.get(e);const t=o.default.createInstance({name:e});return this.stores.set(e,t),t}static async saveByName(e){const t=this.getStore(e.name),n=JSON.stringify(e),r=await t.setItem(e.name,n),o=new i.BroadcastEvent(i.BroadcastEvent.TYPE_WIDGET_UPDATED,"",{name:e.name,json:n});return await a.ElectronApi.sendBroadcastEvent(o),r}static async findByName(e,t){let n=this.getStore(e),r=await n.getItem(e);if(r){const n=new t(e);return n.parseJSON(JSON.parse(r)),n}}static async find(e,t,n){let r=this.getStore(e),o=await r.getItem(this.getKey(e,t));if(o){const r=new n(e,t);return r.parseJSON(JSON.parse(o)),r}}static getKey(e,t){return`${e}@${t}`}}t.WidgetDataRepository=c,c.stores=new Map},194:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encodeParam=t.encodePath=t.encodeQueryKey=t.encodeQueryValue=t.encodeHash=t.PLUS_RE=void 0;const n=/#/g,r=/&/g,o=/\//g,i=/=/g,a=/\?/g;t.PLUS_RE=/\+/g;const c=/%5B/g,s=/%5D/g,u=/%5E/g,f=/%60/g,l=/%7B/g,d=/%7C/g,h=/%7D/g,v=/%20/g;function p(e){return encodeURI(""+e).replace(d,"|").replace(c,"[").replace(s,"]")}function y(e){return p(e).replace(t.PLUS_RE,"%2B").replace(v,"+").replace(n,"%23").replace(r,"%26").replace(f,"`").replace(l,"{").replace(h,"}").replace(u,"^")}function g(e){return p(e).replace(n,"%23").replace(a,"%3F")}t.encodeHash=function(e){return p(e).replace(l,"{").replace(h,"}").replace(u,"^")},t.encodeQueryValue=y,t.encodeQueryKey=function(e){return y(e).replace(i,"%3D")},t.encodePath=g,t.encodeParam=function(e){return null==e?"":g(e).replace(o,"%2F")},t.decode=function(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}},470:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeQuery=t.stringifyQuery=t.parseQuery=void 0;const r=n(194),o=Array.isArray;t.parseQuery=function(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;e<n.length;++e){const i=n[e].replace(r.PLUS_RE," "),a=i.indexOf("="),c=(0,r.decode)(a<0?i:i.slice(0,a)),s=a<0?null:(0,r.decode)(i.slice(a+1));if(c in t){let e=t[c];o(e)||(e=t[c]=[e]),e.push(s)}else t[c]=s}return t},t.stringifyQuery=function(e){let t="";for(let n in e){const i=e[n];(n=(0,r.encodeQueryKey)(n),null!=i)?(o(i)?i.map((e=>e&&(0,r.encodeQueryValue)(e))):[i&&(0,r.encodeQueryValue)(i)]).forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))})):void 0!==i&&(t+=(t.length?"&":"")+n)}return t},t.normalizeQuery=function(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=o(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}},823:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ElectronUtils=void 0,t.ElectronUtils=class{static hasElectronApi(){return Reflect.has(window,"electronAPI")}static getAPI(){return Reflect.has(window,"electronAPI")?window.electronAPI:Reflect.has(window.parent,"electronAPI")?window.parent.electronAPI:null}}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n(432)})()));
|