clickgo 3.1.3-dev12 → 3.1.4-dev13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/app/demo/config.json +4 -0
- package/dist/app/demo/form/event/other/other.js +29 -0
- package/dist/app/demo/form/event/other/other.xml +5 -0
- package/dist/app/demo/form/main.js +5 -0
- package/dist/app/demo/form/main.xml +1 -0
- package/dist/app/demo/form/method/aform/aform.js +2 -1
- package/dist/app/demo/form/method/aform/sd.js +28 -0
- package/dist/app/demo/form/method/aform/sd.xml +7 -0
- package/dist/app/demo/form/method/aform/test.xml +4 -5
- package/dist/app/demo/form/method/core/core.js +12 -0
- package/dist/app/demo/form/method/core/core.xml +4 -0
- package/dist/app/demo/form/method/task/task.js +9 -1
- package/dist/app/demo/form/method/task/task.xml +1 -0
- package/dist/control/common.cgc +0 -0
- package/dist/control/form.cgc +0 -0
- package/dist/control/monaco.cgc +0 -0
- package/dist/control/property.cgc +0 -0
- package/dist/control/task.cgc +0 -0
- package/dist/global.css +1 -1
- package/dist/index.js +3 -0
- package/dist/index.ts +6 -0
- package/dist/lib/core.js +59 -5
- package/dist/lib/core.ts +66 -3
- package/dist/lib/dom.js +3 -3
- package/dist/lib/dom.ts +4 -4
- package/dist/lib/form.js +77 -33
- package/dist/lib/form.ts +90 -37
- package/dist/lib/fs.js +107 -12
- package/dist/lib/fs.ts +111 -20
- package/dist/lib/native.js +8 -1
- package/dist/lib/native.ts +6 -0
- package/dist/lib/task.js +237 -11
- package/dist/lib/task.ts +274 -9
- package/dist/theme/familiar.cgt +0 -0
- package/package.json +2 -2
- package/types/index.d.ts +61 -16
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ Load the module loader first, and then load it using the module loader.
|
|
|
19
19
|
**index.html**
|
|
20
20
|
|
|
21
21
|
```html
|
|
22
|
-
<script src="https://cdn.jsdelivr.net/npm/@litert/loader@3.4.
|
|
22
|
+
<script src="https://cdn.jsdelivr.net/npm/@litert/loader@3.4.3/dist/loader.min.js?path=index&npm={'clickgo':'3.1.4-dev13'}"></script>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
**index.js**
|
|
@@ -60,12 +60,16 @@
|
|
|
60
60
|
"/form/event/form/form.css",
|
|
61
61
|
"/form/event/form/form.js",
|
|
62
62
|
"/form/event/form/form.xml",
|
|
63
|
+
"/form/event/other/other.js",
|
|
64
|
+
"/form/event/other/other.xml",
|
|
63
65
|
"/form/event/screen/screen.js",
|
|
64
66
|
"/form/event/screen/screen.xml",
|
|
65
67
|
"/form/event/task/task.js",
|
|
66
68
|
"/form/event/task/task.xml",
|
|
67
69
|
"/form/method/aform/aform.js",
|
|
68
70
|
"/form/method/aform/aform.xml",
|
|
71
|
+
"/form/method/aform/sd.js",
|
|
72
|
+
"/form/method/aform/sd.xml",
|
|
69
73
|
"/form/method/aform/test.xml",
|
|
70
74
|
"/form/method/core/core.js",
|
|
71
75
|
"/form/method/core/core.xml",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const clickgo = require("clickgo");
|
|
4
|
+
class default_1 extends clickgo.form.AbstractForm {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.list = [];
|
|
8
|
+
}
|
|
9
|
+
onLauncherFolderNameChanged(id, name) {
|
|
10
|
+
const date = new Date();
|
|
11
|
+
this.list.unshift({
|
|
12
|
+
'time': date.getHours().toString() + ':' + date.getMinutes().toString() + ':' + date.getSeconds().toString(),
|
|
13
|
+
'name': 'launcherFolderNameChanged',
|
|
14
|
+
'content': JSON.stringify({
|
|
15
|
+
'id': id,
|
|
16
|
+
'name': name
|
|
17
|
+
})
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
onHashChanged(hash) {
|
|
21
|
+
const date = new Date();
|
|
22
|
+
this.list.unshift({
|
|
23
|
+
'time': date.getHours().toString() + ':' + date.getMinutes().toString() + ':' + date.getSeconds().toString(),
|
|
24
|
+
'name': 'hashChanged',
|
|
25
|
+
'content': hash
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.default = default_1;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<form width="500" height="550" title="About other" padding="10">
|
|
2
|
+
<vflow v-slot="data" :data="list" direction="v" style="color: #FFF; background: hsl(0, 0%, 20%); line-height: 1.5; padding: 10px; flex: 1;">
|
|
3
|
+
<label>[{{data.row.time}}] {{data.row.name}}, {{data.row.content}}.</label>
|
|
4
|
+
</vflow>
|
|
5
|
+
</form>
|
|
@@ -28,6 +28,7 @@ const tab_1 = require("./control/tab/tab");
|
|
|
28
28
|
const text_1 = require("./control/text/text");
|
|
29
29
|
const vflow_1 = require("./control/vflow/vflow");
|
|
30
30
|
const form_2 = require("./event/form/form");
|
|
31
|
+
const other_1 = require("./event/other/other");
|
|
31
32
|
const screen_1 = require("./event/screen/screen");
|
|
32
33
|
const task_1 = require("./event/task/task");
|
|
33
34
|
const aform_1 = require("./method/aform/aform");
|
|
@@ -147,6 +148,10 @@ class default_1 extends clickgo.form.AbstractForm {
|
|
|
147
148
|
frm = yield form_2.default.create();
|
|
148
149
|
break;
|
|
149
150
|
}
|
|
151
|
+
case 'eother': {
|
|
152
|
+
frm = yield other_1.default.create();
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
150
155
|
case 'escreen': {
|
|
151
156
|
frm = yield screen_1.default.create();
|
|
152
157
|
break;
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
<button @click="openForm('escreen')">About screen</button>
|
|
46
46
|
<button @click="openForm('eform')">About form</button>
|
|
47
47
|
<button @click="openForm('etask')">About task</button>
|
|
48
|
+
<button @click="openForm('eother')">About other</button>
|
|
48
49
|
</layout>
|
|
49
50
|
</flow>
|
|
50
51
|
</tab>
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const clickgo = require("clickgo");
|
|
13
|
+
const sd_1 = require("./sd");
|
|
13
14
|
class default_1 extends clickgo.form.AbstractForm {
|
|
14
15
|
constructor() {
|
|
15
16
|
super(...arguments);
|
|
@@ -41,7 +42,7 @@ class default_1 extends clickgo.form.AbstractForm {
|
|
|
41
42
|
}
|
|
42
43
|
sshowDialog() {
|
|
43
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const frm = yield
|
|
45
|
+
const frm = yield sd_1.default.create();
|
|
45
46
|
if (typeof frm === 'number') {
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const clickgo = require("clickgo");
|
|
13
|
+
class Sd extends clickgo.form.AbstractForm {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.dr = '';
|
|
17
|
+
}
|
|
18
|
+
newDialog() {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const frm = yield Sd.create();
|
|
21
|
+
if (typeof frm === 'number') {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.dr = yield frm.showDialog();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = Sd;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<form width="200" height="200" title="dialog">
|
|
2
|
+
<layout align-v="center" align-h="center" direction="v" gutter="10" style="flex: 1; width: 0;">
|
|
3
|
+
<label>Haha! Result: {{dr}}</label>
|
|
4
|
+
<button @click="dialogResult = dialogResult ? '' : 'Done'" style="padding: 10px;">{{dialogResult ? 'Remove' : 'Set'}} dialogResult</button>
|
|
5
|
+
<button @click="newDialog"style="padding: 10px;">showDialog()</button>
|
|
6
|
+
</layout>
|
|
7
|
+
</form>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
<form width="200" height="200" title="From path">
|
|
2
|
-
<layout align-v="center" align-h="center"
|
|
3
|
-
<label>
|
|
4
|
-
|
|
5
|
-
</layout>
|
|
1
|
+
<form width="200" height="200" title="From path">
|
|
2
|
+
<layout align-v="center" align-h="center" style="flex: 1; width: 0;">
|
|
3
|
+
<label>Create form path</label>
|
|
4
|
+
</layout>
|
|
6
5
|
</form>
|
|
@@ -11,6 +11,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const clickgo = require("clickgo");
|
|
13
13
|
class default_1 extends clickgo.form.AbstractForm {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.hash = 'test';
|
|
17
|
+
}
|
|
14
18
|
get config() {
|
|
15
19
|
return JSON.stringify(clickgo.core.config, null, 4).replace(/"icon": "([\s\S]+?)"/g, '"icon": "data:image/..."');
|
|
16
20
|
}
|
|
@@ -24,5 +28,13 @@ class default_1 extends clickgo.form.AbstractForm {
|
|
|
24
28
|
yield clickgo.form.dialog(JSON.stringify(clickgo.core.getAvailArea()));
|
|
25
29
|
});
|
|
26
30
|
}
|
|
31
|
+
hashe() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
if (clickgo.core.hash(this.hash)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
yield clickgo.form.dialog('No permission.');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
exports.default = default_1;
|
|
@@ -4,5 +4,9 @@
|
|
|
4
4
|
<text v-model="config" readonly multi style="flex: 1;"></text>
|
|
5
5
|
<button @click="getCdn" style="height: 30px;">getCdn()</button>
|
|
6
6
|
<button @click="getAvailArea" style="height: 30px;">getAvailArea()</button>
|
|
7
|
+
<layout gutter="10" align-v="center">
|
|
8
|
+
<text v-model="hash" style="flex: 1;" />
|
|
9
|
+
<button @click="hashe" style="height: 30px; padding: 0 10px;">hash('{{hash}}')</button>
|
|
10
|
+
</layout>
|
|
7
11
|
</layout>
|
|
8
12
|
</form>
|
|
@@ -91,7 +91,9 @@ class default_1 extends clickgo.form.AbstractForm {
|
|
|
91
91
|
clickgo.form.dialog(r ? JSON.stringify(r) : 'null').catch((e) => { throw e; });
|
|
92
92
|
}
|
|
93
93
|
getList() {
|
|
94
|
-
|
|
94
|
+
let msg = JSON.stringify(clickgo.task.getList());
|
|
95
|
+
msg = msg.replace(/(data:image\/).+?"/g, '$1..."');
|
|
96
|
+
clickgo.form.dialog(msg).catch((e) => { throw e; });
|
|
95
97
|
}
|
|
96
98
|
run() {
|
|
97
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -99,6 +101,12 @@ class default_1 extends clickgo.form.AbstractForm {
|
|
|
99
101
|
yield clickgo.form.dialog('Task ID: ' + tid.toString());
|
|
100
102
|
});
|
|
101
103
|
}
|
|
104
|
+
checkPermission() {
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
const rtn = yield clickgo.task.checkPermission('hash', true);
|
|
107
|
+
yield clickgo.form.dialog(rtn[0] ? 'Succeed' : 'Failed');
|
|
108
|
+
});
|
|
109
|
+
}
|
|
102
110
|
end() {
|
|
103
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
112
|
yield clickgo.form.dialog('Result: ' + (clickgo.task.end(parseInt(this.tid)) ? 'true' : 'false'));
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
</layout>
|
|
31
31
|
<button @click="getList" style="height: 30px;">getList()</button>
|
|
32
32
|
<button @click="run" style="height: 30px;">run('/clickgo/app/demo/')</button>
|
|
33
|
+
<button @click="checkPermission" style="height: 30px;">checkPermission('hash')</button>
|
|
33
34
|
<button @click="end" style="height: 30px;">end('{{tid}}')</button>
|
|
34
35
|
<label>Now locale: {{locale}}, Global locale: {{globalLocale}}</label>
|
|
35
36
|
<label>l('File name'): {{l('File name')}}</label>
|
package/dist/control/common.cgc
CHANGED
|
Binary file
|
package/dist/control/form.cgc
CHANGED
|
Binary file
|
package/dist/control/monaco.cgc
CHANGED
|
Binary file
|
|
Binary file
|
package/dist/control/task.cgc
CHANGED
|
Binary file
|
package/dist/global.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
#cg-wrap{position:fixed;left:0;top:0;--cg:hsl(20, 100%, 65%);--success:hsl(150, 100%, 40%);--success-hover:hsl(150, 100%, 45%);--success-active:hsl(150, 100%, 30%);--success-focus:hsl(150, 100%, 35%);--success-disabled:hsl(150, 0%, 40%);--info:hsl(210, 100%, 50%);--info-hover:hsl(210, 100%, 60%);--info-active:hsl(210, 100%, 40%);--info-focus:hsl(210, 100%, 45%);--info-disabled:hsl(210, 0%, 50%);--warning:hsl(20, 100%, 70%);--warning-hover:hsl(20, 100%, 80%);--warning-active:hsl(20, 100%, 60%);--warning-focus:hsl(20, 100%, 65%);--warning-disabled:hsl(20, 0%, 70%);--danger:hsl(350, 100%, 50%);--danger-hover:hsl(350, 100%, 70%);--danger-active:hsl(350, 100%, 40%);--danger-focus:hsl(350, 100%, 45%);--danger-disabled:hsl(350, 0%, 50%);--system-color:hsl(0, 0%, 95%);--system-background:hsla(0, 0%, 0%, .5);--system-border-color:hsla(0, 0%, 100%, .2);--face:hsl(0, 0%, 95%);--g-color:hsl(0, 0%, 20%);--g-color-hover:hsl(0, 0%, 30%);--g-color-active:hsl(0, 0%, 10%);--g-color-focus:hsl(0, 0%, 15%);--g-color-disabled:hsl(0, 0%, 60%);--g-background:hsl(0, 0%, 95%);--g-background-hover:hsl(0, 0%, 100%);--g-background-active:hsl(0, 0%, 85%);--g-background-kp:hsl(0, 0%, 80%);--g-background-opacity:hsl(0, 0%, 50%, .2);--g-background-focus:hsl(0, 0%, 97.5%);--g-background-disabled:hsl(0, 0%, 75%);--g-border-color:hsl(0, 0%, 40%);--g-border-color-hover:hsl(0, 0%, 50%);--g-border-color-active:hsl(0, 0%, 30%);--g-border-color-focus:hsl(0, 0%, 35%);--g-border-color-disabled:hsl(0, 0%, 60%);--g-plain-color:var(--g-color);--g-plain-color-hover:var(--g-color-hover);--g-plain-color-active:var(--g-color-active);--g-plain-color-focus:var(--g-color-focus);--g-plain-color-disabled:var(--g-color-disabled);--g-plain-background:hsl(0, 0%, 100%);--g-plain-background-hover:hsl(0, 0%, 98%);--g-plain-background-active:hsl(0, 0%, 95%);--g-plain-background-focus:var(--g-plain-background);--g-plain-background-disabled:hsl(0, 0%, 95%);--g-plain-border-color:hsl(0, 0%, 70%);--g-plain-border-color-hover:hsl(0, 0%, 80%);--g-plain-border-color-active:hsl(0, 0%, 60%);--g-plain-border-color-focus:hsl(0, 0%, 65%);--g-plain-border-color-disabled:hsl(0, 0%, 60%)}#cg-form-list{z-index:20020000}#cg-pop-list{z-index:20020001}#cg-simpletask{z-index:20020002}#cg-rectangle{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.25);background:rgba(255,255,255,.05);pointer-events:none;opacity:0}#cg-circular{z-index:20020003;box-sizing:border-box;position:absolute;border:solid 3px var(--cg);border-radius:50%;filter:drop-shadow(0 0 3px var(--cg));pointer-events:none;opacity:0}#cg-gesture{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:50%;pointer-events:none;opacity:0;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);transform:scale(0);width:20px;height:20px}#cg-gesture.done{background:rgba(255,255,255,.3);border:solid 3px rgba(0,0,0,.3)}#cg-gesture.ani{transition:all .1s ease-out;transition-property:left,top,transform}#cg-drag{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;pointer-events:none;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);opacity:0;display:flex;justify-content:center;align-items:center}#cg-launcher{z-index:20020004;box-sizing:border-box;position:fixed;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);width:100%;height:100%;left:0;top:0;color:var(--system-color);display:none;flex-direction:column;transition:all .1s linear;transform:scale(1.2);opacity:0}#cg-launcher:not(.cg-show){pointer-events:none}#cg-launcher.cg-show{transform:scale(1);opacity:1}.cg-launcher-search{text-align:center;padding:50px}.cg-launcher-sinput{-webkit-appearance:none;appearance:none;padding:10px;height:38px;border:solid 1px var(--system-border-color);background:rgba(0,0,0,0);width:50%;border-radius:3px;color:var(--system-color)}.cg-launcher-sinput::placeholder{color:var(--system-border-color)}.cg-launcher-sinput::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-sinput:focus{outline:none;border-color:var(--system-color)}.cg-launcher-foldername{-webkit-appearance:none;appearance:none;height:38px;font-size:28px !important;border:none;background:rgba(0,0,0,0);width:50%;color:var(--system-color);text-align:center}.cg-launcher-foldername::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-foldername:focus{outline:none}.cg-launcher-item{width:190px;display:inline-flex;vertical-align:middle;margin-bottom:50px}.cg-launcher-inner{flex:1;width:0}.cg-launcher-icon{background-position:center;background-size:80px;height:80px;background-repeat:no-repeat}.cg-launcher-icon:active{filter:brightness(0.6)}.cg-launcher-name{font-size:13px;font-weight:bold;text-shadow:0 0 3px rgba(0,0,0,.6);text-align:center;margin-top:20px}.cg-launcher-icon,.cg-launcher-name{transition:all .1s linear;transition-property:opacity}.cg-launcher-space{width:50px}.cg-launcher-folder{display:flex;justify-content:center;height:80px}.cg-launcher-folder>div{height:80px;width:80px;background:rgba(255,255,255,.3);border-radius:20px;padding:10px 4px 4px 10px;transition:all .1s linear;transition-property:left,top,width,height,opacity;overflow-y:auto}.cg-launcher-folder>div::-webkit-scrollbar{display:none}.cg-launcher-folder>div .cg-launcher-item,.cg-launcher-folder>div .cg-launcher-space{transition:all .1s linear}.cg-launcher-folder>div.cg-show{padding:50px 0 0 50px}.cg-launcher-folder>div:not(.cg-show):active{filter:brightness(0.6)}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-item{width:22px;margin-bottom:6px}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-icon{background-size:16px;height:16px;pointer-events:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-name{display:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-space{width:6px}.cg-launcher-list{flex:1;height:0;overflow-y:auto;padding:0 0 0 50px}.cg-launcher-list::-webkit-scrollbar{display:none}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-icon,.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-name{opacity:0}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-folder>div:not(.cg-show){opacity:0}[data-cg-pop]{position:absolute;box-shadow:0px 5px 20px rgba(0,0,0,.25);transition:.1s ease-out;transition-property:transform,opacity;transform:translateY(-10px);opacity:0}[data-cg-pop]:not([data-cg-open]){pointer-events:none}[data-cg-pop][data-cg-open]{transform:translateY(0px);opacity:1}#cg-
|
|
1
|
+
#cg-wrap{position:fixed;left:0;top:0;--cg:hsl(20, 100%, 65%);--success:hsl(150, 100%, 40%);--success-hover:hsl(150, 100%, 45%);--success-active:hsl(150, 100%, 30%);--success-focus:hsl(150, 100%, 35%);--success-disabled:hsl(150, 0%, 40%);--info:hsl(210, 100%, 50%);--info-hover:hsl(210, 100%, 60%);--info-active:hsl(210, 100%, 40%);--info-focus:hsl(210, 100%, 45%);--info-disabled:hsl(210, 0%, 50%);--warning:hsl(20, 100%, 70%);--warning-hover:hsl(20, 100%, 80%);--warning-active:hsl(20, 100%, 60%);--warning-focus:hsl(20, 100%, 65%);--warning-disabled:hsl(20, 0%, 70%);--danger:hsl(350, 100%, 50%);--danger-hover:hsl(350, 100%, 70%);--danger-active:hsl(350, 100%, 40%);--danger-focus:hsl(350, 100%, 45%);--danger-disabled:hsl(350, 0%, 50%);--system-color:hsl(0, 0%, 95%);--system-background:hsla(0, 0%, 0%, .5);--system-background-hover:hsla(0, 0%, 100%, .05);--system-background-active:hsla(0, 0%, 0%, .2);--system-border-color:hsla(0, 0%, 100%, .2);--face:hsl(0, 0%, 95%);--g-color:hsl(0, 0%, 20%);--g-color-hover:hsl(0, 0%, 30%);--g-color-active:hsl(0, 0%, 10%);--g-color-focus:hsl(0, 0%, 15%);--g-color-disabled:hsl(0, 0%, 60%);--g-background:hsl(0, 0%, 95%);--g-background-hover:hsl(0, 0%, 100%);--g-background-active:hsl(0, 0%, 85%);--g-background-kp:hsl(0, 0%, 80%);--g-background-opacity:hsl(0, 0%, 50%, .2);--g-background-focus:hsl(0, 0%, 97.5%);--g-background-disabled:hsl(0, 0%, 75%);--g-border-color:hsl(0, 0%, 40%);--g-border-color-hover:hsl(0, 0%, 50%);--g-border-color-active:hsl(0, 0%, 30%);--g-border-color-focus:hsl(0, 0%, 35%);--g-border-color-disabled:hsl(0, 0%, 60%);--g-plain-color:var(--g-color);--g-plain-color-hover:var(--g-color-hover);--g-plain-color-active:var(--g-color-active);--g-plain-color-focus:var(--g-color-focus);--g-plain-color-disabled:var(--g-color-disabled);--g-plain-background:hsl(0, 0%, 100%);--g-plain-background-hover:hsl(0, 0%, 98%);--g-plain-background-active:hsl(0, 0%, 95%);--g-plain-background-focus:var(--g-plain-background);--g-plain-background-disabled:hsl(0, 0%, 95%);--g-plain-border-color:hsl(0, 0%, 70%);--g-plain-border-color-hover:hsl(0, 0%, 80%);--g-plain-border-color-active:hsl(0, 0%, 60%);--g-plain-border-color-focus:hsl(0, 0%, 65%);--g-plain-border-color-disabled:hsl(0, 0%, 60%)}#cg-form-list{z-index:20020000}#cg-pop-list{z-index:20020001}#cg-simpletask{z-index:20020002}#cg-rectangle{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.25);background:rgba(255,255,255,.05);pointer-events:none;opacity:0}#cg-circular{z-index:20020003;box-sizing:border-box;position:absolute;border:solid 3px var(--cg);border-radius:50%;filter:drop-shadow(0 0 3px var(--cg));pointer-events:none;opacity:0}#cg-gesture{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:50%;pointer-events:none;opacity:0;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);transform:scale(0);width:20px;height:20px}#cg-gesture.done{background:rgba(255,255,255,.3);border:solid 3px rgba(0,0,0,.3)}#cg-gesture.ani{transition:all .1s ease-out;transition-property:left,top,transform}#cg-drag{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;pointer-events:none;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);opacity:0;display:flex;justify-content:center;align-items:center}#cg-launcher{z-index:20020004;box-sizing:border-box;position:fixed;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);width:100%;height:100%;left:0;top:0;color:var(--system-color);display:none;flex-direction:column;transition:all .1s linear;transform:scale(1.2);opacity:0}#cg-launcher:not(.cg-show){pointer-events:none}#cg-launcher.cg-show{transform:scale(1);opacity:1}.cg-launcher-search{text-align:center;padding:50px}.cg-launcher-sinput{-webkit-appearance:none;appearance:none;padding:10px;height:38px;border:solid 1px var(--system-border-color);background:rgba(0,0,0,0);width:50%;border-radius:3px;color:var(--system-color)}.cg-launcher-sinput::placeholder{color:var(--system-border-color)}.cg-launcher-sinput::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-sinput:focus{outline:none;border-color:var(--system-color)}.cg-launcher-foldername{-webkit-appearance:none;appearance:none;height:38px;font-size:28px !important;border:none;background:rgba(0,0,0,0);width:50%;color:var(--system-color);text-align:center}.cg-launcher-foldername::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-foldername:focus{outline:none}.cg-launcher-item{width:190px;display:inline-flex;vertical-align:middle;margin-bottom:50px}.cg-launcher-inner{flex:1;width:0}.cg-launcher-icon{background-position:center;background-size:80px;height:80px;background-repeat:no-repeat}.cg-launcher-icon:active{filter:brightness(0.6)}.cg-launcher-name{font-size:13px;font-weight:bold;text-shadow:0 0 3px rgba(0,0,0,.6);text-align:center;margin-top:20px}.cg-launcher-icon,.cg-launcher-name{transition:all .1s linear;transition-property:opacity}.cg-launcher-space{width:50px}.cg-launcher-folder{display:flex;justify-content:center;height:80px}.cg-launcher-folder>div{height:80px;width:80px;background:rgba(255,255,255,.3);border-radius:20px;padding:10px 4px 4px 10px;transition:all .1s linear;transition-property:left,top,width,height,opacity;overflow-y:auto}.cg-launcher-folder>div::-webkit-scrollbar{display:none}.cg-launcher-folder>div .cg-launcher-item,.cg-launcher-folder>div .cg-launcher-space{transition:all .1s linear}.cg-launcher-folder>div.cg-show{padding:50px 0 0 50px}.cg-launcher-folder>div:not(.cg-show):active{filter:brightness(0.6)}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-item{width:22px;margin-bottom:6px}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-icon{background-size:16px;height:16px;pointer-events:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-name{display:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-space{width:6px}.cg-launcher-list{flex:1;height:0;overflow-y:auto;padding:0 0 0 50px}.cg-launcher-list::-webkit-scrollbar{display:none}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-icon,.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-name{opacity:0}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-folder>div:not(.cg-show){opacity:0}[data-cg-pop]{position:absolute;box-shadow:0px 5px 20px rgba(0,0,0,.25);transition:.1s ease-out;transition-property:transform,opacity;transform:translateY(-10px);opacity:0}[data-cg-pop]:not([data-cg-open]){pointer-events:none}[data-cg-pop][data-cg-open]{transform:translateY(0px);opacity:1}#cg-notify{z-index:20020005}.cg-notify-wrap{background:var(--system-background);position:fixed;padding:15px;border-radius:3px;right:0;top:0;width:280px;font-size:14px;display:flex;transition:.1s ease-out;transition-property:transform,opacity;overflow:hidden;color:var(--system-color);box-shadow:0 5px 20px rgba(0,0,0,.25);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2)}.cg-notify-icon{margin-right:10px;width:16px;height:16px;border-radius:50%}.cg-notify-icon.cg-primary{background:var(--success)}.cg-notify-icon.cg-info{background:var(--info)}.cg-notify-icon.cg-warning{background:var(--warning)}.cg-notify-icon.cg-danger{background:var(--danger)}.cg-notify-icon.cg-progress{background:var(--cg)}.cg-notify-title{font-size:16px;font-weight:bold;padding-bottom:10px}.cg-notify-content{line-height:1.5;word-break:break-word}.cg-notify-progress{position:absolute;bottom:0;left:0;border-radius:1px;background:var(--cg);transition:width 1s ease-out;width:0%;height:2px}#cg-simpletask{left:0;bottom:-46px;width:100%;height:46px;top:initial;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);padding:5px 0 5px 5px;display:flex;color:var(--system-color);transition:bottom .1s ease-out;overflow-x:auto;position:fixed}#cg-simpletask::-webkit-scrollbar{display:none}.cg-simpletask-item{background:rgba(0,0,0,.05);border-radius:3px;padding:10px;display:flex;align-items:center;margin-right:5px}.cg-simpletask-item:hover{background:rgba(0,0,0,.1)}.cg-simpletask-item:active{background:rgba(0,0,0,.2)}.cg-simpletask-icon{margin-right:5px;background-size:cover;width:16px;height:16px}#cg-confirm{z-index:20020006;position:fixed;left:0;top:0;width:100%;height:100%;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);justify-content:center;align-items:center}#cg-confirm .cg-confirm-box{background:var(--system-background);width:60%;box-shadow:0 5px 20px rgba(0,0,0,.25);font-size:14px;border-radius:3px;overflow:hidden;color:var(--system-color)}#cg-confirm .cg-confirm-box #cg-confirm-content{padding:25px}#cg-confirm .cg-confirm-box .cg-confirm-controls{border-top:solid .5px var(--system-border-color);display:flex}#cg-confirm .cg-confirm-box .cg-confirm-controls>div{padding:20px;flex:1;text-align:center}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:last-child{border-left:solid .5px var(--system-border-color)}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:hover{background:var(--system-background-hover)}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:active{background:var(--system-background-active)}
|
package/dist/index.js
CHANGED
package/dist/index.ts
CHANGED
|
@@ -137,6 +137,12 @@ export abstract class AbstractBoot {
|
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
+
/** --- location hash 改变事件 --- */
|
|
141
|
+
public onHashChanged(hash: string): void | Promise<void>;
|
|
142
|
+
public onHashChanged(): void {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
140
146
|
/** --- 环境文件准备加载时的事件 --- */
|
|
141
147
|
public onRuntimeFileLoad(url: string): void | Promise<void>;
|
|
142
148
|
public onRuntimeFileLoad(): void {
|
package/dist/lib/core.js
CHANGED
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getAvailArea = exports.fetchApp = exports.readApp = exports.trigger = exports.getModule = exports.regModule = exports.boot = exports.getCdn = exports.AbstractApp = exports.config = void 0;
|
|
12
|
+
exports.hash = exports.getAvailArea = exports.fetchApp = exports.readApp = exports.trigger = exports.getModule = exports.regModule = exports.boot = exports.getCdn = exports.AbstractApp = exports.config = void 0;
|
|
13
13
|
const clickgo = require("../clickgo");
|
|
14
14
|
const fs = require("./fs");
|
|
15
15
|
const form = require("./form");
|
|
@@ -106,6 +106,9 @@ class AbstractApp {
|
|
|
106
106
|
onLauncherFolderNameChanged() {
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
|
+
onHashChanged() {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
109
112
|
}
|
|
110
113
|
exports.AbstractApp = AbstractApp;
|
|
111
114
|
function getCdn() {
|
|
@@ -282,7 +285,7 @@ const globalEvents = {
|
|
|
282
285
|
}
|
|
283
286
|
};
|
|
284
287
|
function trigger(name, taskId = 0, formId = 0, param1 = '', param2 = '') {
|
|
285
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12;
|
|
288
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15;
|
|
286
289
|
const eventName = 'on' + name[0].toUpperCase() + name.slice(1);
|
|
287
290
|
switch (name) {
|
|
288
291
|
case 'error': {
|
|
@@ -396,7 +399,7 @@ function trigger(name, taskId = 0, formId = 0, param1 = '', param2 = '') {
|
|
|
396
399
|
if (typeof formId !== 'string') {
|
|
397
400
|
break;
|
|
398
401
|
}
|
|
399
|
-
if (typeof taskId
|
|
402
|
+
if (typeof taskId !== 'string') {
|
|
400
403
|
taskId = taskId.toString();
|
|
401
404
|
}
|
|
402
405
|
exports.boot[eventName](taskId, formId);
|
|
@@ -409,6 +412,20 @@ function trigger(name, taskId = 0, formId = 0, param1 = '', param2 = '') {
|
|
|
409
412
|
}
|
|
410
413
|
break;
|
|
411
414
|
}
|
|
415
|
+
case 'hashChanged': {
|
|
416
|
+
if (typeof taskId !== 'string') {
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
exports.boot[eventName](taskId);
|
|
420
|
+
for (const tid in task.list) {
|
|
421
|
+
const t = task.list[tid];
|
|
422
|
+
(_13 = t.class) === null || _13 === void 0 ? void 0 : _13[eventName](taskId);
|
|
423
|
+
for (const fid in t.forms) {
|
|
424
|
+
(_15 = (_14 = t.forms[fid].vroot)[eventName]) === null || _15 === void 0 ? void 0 : _15.call(_14, taskId);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
412
429
|
}
|
|
413
430
|
}
|
|
414
431
|
exports.trigger = trigger;
|
|
@@ -525,6 +542,9 @@ function fetchApp(url, opt = {}) {
|
|
|
525
542
|
}
|
|
526
543
|
const total = config.files.length;
|
|
527
544
|
let loaded = 0;
|
|
545
|
+
if (opt.progress) {
|
|
546
|
+
opt.progress(loaded + 1, total + 1);
|
|
547
|
+
}
|
|
528
548
|
for (const file of config.files) {
|
|
529
549
|
fs.getContent(url + file.slice(1), {
|
|
530
550
|
'current': current
|
|
@@ -549,6 +569,9 @@ function fetchApp(url, opt = {}) {
|
|
|
549
569
|
if (opt.notifyId) {
|
|
550
570
|
form.notifyProgress(opt.notifyId, loaded / total);
|
|
551
571
|
}
|
|
572
|
+
if (opt.progress) {
|
|
573
|
+
opt.progress(loaded + 1, total + 1);
|
|
574
|
+
}
|
|
552
575
|
if (loaded < total) {
|
|
553
576
|
return;
|
|
554
577
|
}
|
|
@@ -559,6 +582,9 @@ function fetchApp(url, opt = {}) {
|
|
|
559
582
|
if (opt.notifyId) {
|
|
560
583
|
form.notifyProgress(opt.notifyId, loaded / total);
|
|
561
584
|
}
|
|
585
|
+
if (opt.progress) {
|
|
586
|
+
opt.progress(loaded + 1, total + 1);
|
|
587
|
+
}
|
|
562
588
|
if (loaded < total) {
|
|
563
589
|
return;
|
|
564
590
|
}
|
|
@@ -567,13 +593,23 @@ function fetchApp(url, opt = {}) {
|
|
|
567
593
|
}
|
|
568
594
|
});
|
|
569
595
|
}
|
|
570
|
-
catch (
|
|
596
|
+
catch (e) {
|
|
597
|
+
console.log('core.fetchApp', e);
|
|
598
|
+
trigger('error', 0, 0, e, e.message);
|
|
571
599
|
return null;
|
|
572
600
|
}
|
|
573
|
-
let icon = '
|
|
601
|
+
let icon = '';
|
|
574
602
|
if (config.icon && (files[config.icon] instanceof Blob)) {
|
|
575
603
|
icon = yield tool.blob2DataUrl(files[config.icon]);
|
|
576
604
|
}
|
|
605
|
+
if (icon === '') {
|
|
606
|
+
const iconBlob = yield fs.getContent('/clickgo/icon.png', {
|
|
607
|
+
'current': current
|
|
608
|
+
});
|
|
609
|
+
if (iconBlob instanceof Blob) {
|
|
610
|
+
icon = yield tool.blob2DataUrl(iconBlob);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
577
613
|
return {
|
|
578
614
|
'type': 'app',
|
|
579
615
|
'config': config,
|
|
@@ -635,3 +671,21 @@ function getAvailArea() {
|
|
|
635
671
|
}
|
|
636
672
|
}
|
|
637
673
|
exports.getAvailArea = getAvailArea;
|
|
674
|
+
function hash(hash, taskId) {
|
|
675
|
+
if (!taskId) {
|
|
676
|
+
return false;
|
|
677
|
+
}
|
|
678
|
+
const t = task.list[taskId];
|
|
679
|
+
if (!t) {
|
|
680
|
+
return false;
|
|
681
|
+
}
|
|
682
|
+
if (!t.runtime.permissions.includes('root') && !t.runtime.permissions.includes('hash')) {
|
|
683
|
+
return false;
|
|
684
|
+
}
|
|
685
|
+
window.location.hash = hash;
|
|
686
|
+
return true;
|
|
687
|
+
}
|
|
688
|
+
exports.hash = hash;
|
|
689
|
+
window.addEventListener('hashchange', function () {
|
|
690
|
+
trigger('hashChanged', window.location.hash ? window.location.hash.slice(1) : '');
|
|
691
|
+
});
|
package/dist/lib/core.ts
CHANGED
|
@@ -179,6 +179,12 @@ export abstract class AbstractApp {
|
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
/** --- location hash 改变事件 --- */
|
|
183
|
+
public onHashChanged(hash: string): void | Promise<void>;
|
|
184
|
+
public onHashChanged(): void {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
/** --- CDN 地址 --- */
|
|
@@ -498,7 +504,7 @@ export function trigger(name: types.TGlobalEvent, taskId: number | string | bool
|
|
|
498
504
|
if (typeof formId !== 'string') {
|
|
499
505
|
break;
|
|
500
506
|
}
|
|
501
|
-
if (typeof taskId
|
|
507
|
+
if (typeof taskId !== 'string') {
|
|
502
508
|
taskId = taskId.toString();
|
|
503
509
|
}
|
|
504
510
|
(boot as any)[eventName](taskId, formId);
|
|
@@ -511,6 +517,20 @@ export function trigger(name: types.TGlobalEvent, taskId: number | string | bool
|
|
|
511
517
|
}
|
|
512
518
|
break;
|
|
513
519
|
}
|
|
520
|
+
case 'hashChanged': {
|
|
521
|
+
if (typeof taskId !== 'string') {
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
(boot as any)[eventName](taskId);
|
|
525
|
+
for (const tid in task.list) {
|
|
526
|
+
const t = task.list[tid];
|
|
527
|
+
(t.class as any)?.[eventName](taskId);
|
|
528
|
+
for (const fid in t.forms) {
|
|
529
|
+
t.forms[fid].vroot[eventName]?.(taskId);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
break;
|
|
533
|
+
}
|
|
514
534
|
}
|
|
515
535
|
}
|
|
516
536
|
|
|
@@ -645,6 +665,9 @@ export async function fetchApp(
|
|
|
645
665
|
}
|
|
646
666
|
const total = config.files.length;
|
|
647
667
|
let loaded = 0;
|
|
668
|
+
if (opt.progress) {
|
|
669
|
+
opt.progress(loaded + 1, total + 1) as unknown;
|
|
670
|
+
}
|
|
648
671
|
for (const file of config.files) {
|
|
649
672
|
fs.getContent(url + file.slice(1), {
|
|
650
673
|
'current': current
|
|
@@ -668,6 +691,9 @@ export async function fetchApp(
|
|
|
668
691
|
if (opt.notifyId) {
|
|
669
692
|
form.notifyProgress(opt.notifyId, loaded / total);
|
|
670
693
|
}
|
|
694
|
+
if (opt.progress) {
|
|
695
|
+
opt.progress(loaded + 1, total + 1) as unknown;
|
|
696
|
+
}
|
|
671
697
|
if (loaded < total) {
|
|
672
698
|
return;
|
|
673
699
|
}
|
|
@@ -677,6 +703,9 @@ export async function fetchApp(
|
|
|
677
703
|
if (opt.notifyId) {
|
|
678
704
|
form.notifyProgress(opt.notifyId, loaded / total);
|
|
679
705
|
}
|
|
706
|
+
if (opt.progress) {
|
|
707
|
+
opt.progress(loaded + 1, total + 1) as unknown;
|
|
708
|
+
}
|
|
680
709
|
if (loaded < total) {
|
|
681
710
|
return;
|
|
682
711
|
}
|
|
@@ -685,14 +714,24 @@ export async function fetchApp(
|
|
|
685
714
|
}
|
|
686
715
|
});
|
|
687
716
|
}
|
|
688
|
-
catch {
|
|
717
|
+
catch (e: any) {
|
|
718
|
+
console.log('core.fetchApp', e);
|
|
719
|
+
trigger('error', 0, 0, e, e.message);
|
|
689
720
|
return null;
|
|
690
721
|
}
|
|
691
722
|
|
|
692
|
-
let icon = '
|
|
723
|
+
let icon = '';
|
|
693
724
|
if (config.icon && (files[config.icon] instanceof Blob)) {
|
|
694
725
|
icon = await tool.blob2DataUrl(files[config.icon] as Blob);
|
|
695
726
|
}
|
|
727
|
+
if (icon === '') {
|
|
728
|
+
const iconBlob = await fs.getContent('/clickgo/icon.png', {
|
|
729
|
+
'current': current
|
|
730
|
+
});
|
|
731
|
+
if (iconBlob instanceof Blob) {
|
|
732
|
+
icon = await tool.blob2DataUrl(iconBlob);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
696
735
|
|
|
697
736
|
return {
|
|
698
737
|
'type': 'app',
|
|
@@ -756,3 +795,27 @@ export function getAvailArea(): types.IAvailArea {
|
|
|
756
795
|
};
|
|
757
796
|
}
|
|
758
797
|
}
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* --- 修改浏览器 hash ---
|
|
801
|
+
* @param hash 修改的值,不含 #
|
|
802
|
+
* @param taskId 基任务,App 模式下无效
|
|
803
|
+
*/
|
|
804
|
+
export function hash(hash: string, taskId?: number): boolean {
|
|
805
|
+
if (!taskId) {
|
|
806
|
+
return false;
|
|
807
|
+
}
|
|
808
|
+
const t = task.list[taskId];
|
|
809
|
+
if (!t) {
|
|
810
|
+
return false;
|
|
811
|
+
}
|
|
812
|
+
if (!t.runtime.permissions.includes('root') && !t.runtime.permissions.includes('hash')) {
|
|
813
|
+
return false;
|
|
814
|
+
}
|
|
815
|
+
window.location.hash = hash;
|
|
816
|
+
return true;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
window.addEventListener('hashchange', function() {
|
|
820
|
+
trigger('hashChanged', window.location.hash ? window.location.hash.slice(1) : '');
|
|
821
|
+
});
|
package/dist/lib/dom.js
CHANGED
|
@@ -14,7 +14,7 @@ const clickgo = require("../clickgo");
|
|
|
14
14
|
const form = require("./form");
|
|
15
15
|
const core = require("./core");
|
|
16
16
|
const tool = require("./tool");
|
|
17
|
-
const topClass = ['#cg-form-list', '#cg-pop-list', '#cg-
|
|
17
|
+
const topClass = ['#cg-form-list', '#cg-pop-list', '#cg-notify', '#cg-simpletask', '#cg-launcher'];
|
|
18
18
|
function classUnfold(after, out = []) {
|
|
19
19
|
const arr = [];
|
|
20
20
|
for (const name of topClass) {
|
|
@@ -784,7 +784,7 @@ function bindGesture(oe, before, handler) {
|
|
|
784
784
|
if (offset < 90) {
|
|
785
785
|
return;
|
|
786
786
|
}
|
|
787
|
-
handler(dir);
|
|
787
|
+
handler === null || handler === void 0 ? void 0 : handler(dir);
|
|
788
788
|
}
|
|
789
789
|
});
|
|
790
790
|
}
|
|
@@ -911,7 +911,7 @@ function bindGesture(oe, before, handler) {
|
|
|
911
911
|
return;
|
|
912
912
|
}
|
|
913
913
|
gestureWheel.done = true;
|
|
914
|
-
handler(gestureWheel.dir);
|
|
914
|
+
handler === null || handler === void 0 ? void 0 : handler(gestureWheel.dir);
|
|
915
915
|
yield tool.sleep(500);
|
|
916
916
|
form.elements.gesture.style.opacity = '0';
|
|
917
917
|
form.elements.gesture.classList.remove('ani');
|
package/dist/lib/dom.ts
CHANGED
|
@@ -20,7 +20,7 @@ import * as core from './core';
|
|
|
20
20
|
import * as tool from './tool';
|
|
21
21
|
|
|
22
22
|
/** --- style list 的 div --- */
|
|
23
|
-
const topClass: string[] = ['#cg-form-list', '#cg-pop-list', '#cg-
|
|
23
|
+
const topClass: string[] = ['#cg-form-list', '#cg-pop-list', '#cg-notify', '#cg-simpletask', '#cg-launcher'];
|
|
24
24
|
function classUnfold(after?: string, out: string[] = []): string {
|
|
25
25
|
const arr: string[] = [];
|
|
26
26
|
for (const name of topClass) {
|
|
@@ -902,7 +902,7 @@ const gestureWheel = {
|
|
|
902
902
|
* @param before before 事件,返回 true 则显示 gesture
|
|
903
903
|
* @param handler 执行完毕的话才会回调
|
|
904
904
|
*/
|
|
905
|
-
export function bindGesture(oe: MouseEvent | TouchEvent | WheelEvent, before: (e: MouseEvent | TouchEvent | WheelEvent, dir: 'top' | 'right' | 'bottom' | 'left') => boolean, handler
|
|
905
|
+
export function bindGesture(oe: MouseEvent | TouchEvent | WheelEvent, before: (e: MouseEvent | TouchEvent | WheelEvent, dir: 'top' | 'right' | 'bottom' | 'left') => boolean, handler?: (dir: 'top' | 'right' | 'bottom' | 'left') => void | Promise<void>): void {
|
|
906
906
|
const el = oe.currentTarget as HTMLElement | null;
|
|
907
907
|
if (!el) {
|
|
908
908
|
return;
|
|
@@ -1034,7 +1034,7 @@ export function bindGesture(oe: MouseEvent | TouchEvent | WheelEvent, before: (e
|
|
|
1034
1034
|
if (offset < 90) {
|
|
1035
1035
|
return;
|
|
1036
1036
|
}
|
|
1037
|
-
handler(dir) as any;
|
|
1037
|
+
handler?.(dir) as any;
|
|
1038
1038
|
}
|
|
1039
1039
|
});
|
|
1040
1040
|
}
|
|
@@ -1182,7 +1182,7 @@ export function bindGesture(oe: MouseEvent | TouchEvent | WheelEvent, before: (e
|
|
|
1182
1182
|
return;
|
|
1183
1183
|
}
|
|
1184
1184
|
gestureWheel.done = true;
|
|
1185
|
-
handler(gestureWheel.dir as any) as any;
|
|
1185
|
+
handler?.(gestureWheel.dir as any) as any;
|
|
1186
1186
|
await tool.sleep(500);
|
|
1187
1187
|
form.elements.gesture.style.opacity = '0';
|
|
1188
1188
|
form.elements.gesture.classList.remove('ani');
|