clickgo 3.11.1 → 3.11.3

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 CHANGED
@@ -28,7 +28,7 @@ Load the module loader first, and then load it using the module loader.
28
28
  **index.html**
29
29
 
30
30
  ```html
31
- <script src="https://cdn.jsdelivr.net/npm/@litert/loader@3.5.1/dist/loader.min.js?path=index&npm={'clickgo':'3.11.1'}"></script>
31
+ <script src="https://cdn.jsdelivr.net/npm/@litert/loader@3.5.1/dist/loader.min.js?path=index&npm={'clickgo':'3.11.3'}"></script>
32
32
  ```
33
33
 
34
34
  **index.js**
@@ -108,6 +108,7 @@
108
108
  "/form/control/tag/tag.xml",
109
109
  "/form/control/text/text.js",
110
110
  "/form/control/text/text.xml",
111
+ "/form/control/tip/tip.xml",
111
112
  "/form/control/tuieditor/tuieditor.js",
112
113
  "/form/control/tuieditor/tuieditor.xml",
113
114
  "/form/control/vflow/vflow.css",
@@ -5,6 +5,7 @@
5
5
  <layout gutter="10">
6
6
  <button v-if="selected[0] !== './test1'" style="flex: 1;" @click="go">Go test1 with {'type': 'show'}</button>
7
7
  <button style="flex: 1;" @click="ssend">send {'type': 'send'}</button>
8
+ <button style="flex: 1;" @click="sendToPanel(refs.panel, {'type': 's2p'})">sendToPanel {'type': 's2p'}</button>
8
9
  </layout>
9
10
  <layout gutter="10">
10
11
  <button style="flex: 1;" @click="plain = !plain">{{plain ? '' : '!'}}plain</button>
@@ -5,7 +5,8 @@
5
5
  <label>Parent data: {{rootForm.parentData}}</label>
6
6
  <label>Qs: {{qs}}</label>
7
7
  <label>rootMountData: {{rootMountData}}</label>
8
- <button @click="click" style="height: 30px;">Hi</button>
8
+ <button @click="click">Hi</button>
9
+ <button @click="sendToRootPanel({'a':1})" style="height: 30px;">sendToRootPanel({'a':1})</button>
9
10
  <layout>
10
11
  <button style="padding: 15px 30px;" area="split">
11
12
  Padding 10px 20px with pop
@@ -5,20 +5,20 @@
5
5
  <svg :layout="layout" :src="file" style="width: 64px; height: 64px;" />
6
6
  </layout>
7
7
  <layout gutter="10" style="margin-top: 10px;">
8
- <button @click="color = undefined" style="padding: 0 10px; flex: 1; width: 0;">Default</button>
9
- <button @click="color = 'green'" style="padding: 0 10px; flex: 1; width: 0;">Green</button>
10
- <button @click="color = 'red'" style="padding: 0 10px; flex: 1; width: 0;">Red</button>
8
+ <button @click="color = undefined" style="flex: 1; width: 0;">Default</button>
9
+ <button @click="color = 'green'" style="flex: 1; width: 0;">Green</button>
10
+ <button @click="color = 'red'" style="flex: 1; width: 0;">Red</button>
11
11
  </layout>
12
12
  <layout gutter="10" style="margin-top: 10px;">
13
- <button @click="i = 0" style="padding: 0 10px; flex: 1; width: 0;">Shape 0</button>
14
- <button @click="i = 1" style="padding: 0 10px; flex: 1; width: 0;">1</button>
15
- <button @click="i = 2" style="padding: 0 10px; flex: 1; width: 0;">2</button>
16
- <button @click="i = 3" style="padding: 0 10px; flex: 1; width: 0;">None</button>
13
+ <button @click="i = 0" style="flex: 1; width: 0;">Shape 0</button>
14
+ <button @click="i = 1" style="flex: 1; width: 0;">1</button>
15
+ <button @click="i = 2" style="flex: 1; width: 0;">2</button>
16
+ <button @click="i = 3" style="flex: 1; width: 0;">None</button>
17
17
  </layout>
18
18
  <layout gutter="10" style="margin-top: 10px;">
19
- <button @click="f = 0" style="padding: 0 10px; flex: 1; width: 0;">File 0</button>
20
- <button @click="f = 1" style="padding: 0 10px; flex: 1; width: 0;">1</button>
21
- <button @click="f = 2" style="padding: 0 10px; flex: 1; width: 0;">2</button>
22
- <button @click="f = 3" style="padding: 0 10px; flex: 1; width: 0;">None</button>
19
+ <button @click="f = 0" style="flex: 1; width: 0;">File 0</button>
20
+ <button @click="f = 1" style="flex: 1; width: 0;">1</button>
21
+ <button @click="f = 2" style="flex: 1; width: 0;">2</button>
22
+ <button @click="f = 3" style="flex: 1; width: 0;">None</button>
23
23
  </layout>
24
24
  </form>
@@ -0,0 +1,13 @@
1
+ <form width="300" height="500" title="Tip">
2
+ <layout direction="v" gutter="10" style="flex: 1; padding: 10px;">
3
+ <tip label="ok">
4
+ <button>123</button>
5
+ </tip>
6
+ <tip label="Click me">
7
+ <button>456</button>
8
+ </tip>
9
+ <tip label="This is a select">
10
+ <select :data="[1,2,3,4]"></select>
11
+ </tip>
12
+ </layout>
13
+ </form>
@@ -172,6 +172,10 @@ class default_1 extends clickgo.form.AbstractForm {
172
172
  frm = yield clickgo.form.create('/form/control/tag/tag');
173
173
  break;
174
174
  }
175
+ case 'ctip': {
176
+ frm = yield clickgo.form.create('/form/control/tip/tip');
177
+ break;
178
+ }
175
179
  case 'cxterm': {
176
180
  frm = yield clickgo.form.create(xterm_1.default);
177
181
  break;
@@ -75,6 +75,9 @@
75
75
  <button @click="openForm('cstep')">Step</button>
76
76
  <button @click="openForm('ctag')">Tag</button>
77
77
  </layout>
78
+ <layout gutter="10">
79
+ <button @click="openForm('ctip')">Tip</button>
80
+ </layout>
78
81
  <layout gutter="10">
79
82
  <button @click="openForm('cmonaco')">Monaco</button>
80
83
  <button @click="openForm('cxterm')">Xterm</button>
@@ -66,6 +66,8 @@ class default_1 extends clickgo.form.AbstractForm {
66
66
  this.url = 'HtTp://uSer:pAss@sUBDom.TopdOm23.CoM:29819/Admxw2Ksiz/dszas?Mdi=KdiMs1&a=JDd#hehHe';
67
67
  this.url1 = '/abc/def/hehe';
68
68
  this.url2 = '../bb.index';
69
+ this.second = '4531';
70
+ this.qs = 'a=1&b=2&c=3';
69
71
  }
70
72
  sleep() {
71
73
  return __awaiter(this, void 0, void 0, function* () {
@@ -98,5 +100,20 @@ class default_1 extends clickgo.form.AbstractForm {
98
100
  urlResolve() {
99
101
  clickgo.form.dialog(clickgo.tool.urlResolve(this.url1, this.url2)).catch((e) => { throw e; });
100
102
  }
103
+ formatSecond() {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ yield clickgo.form.dialog(clickgo.tool.formatSecond(parseInt(this.second) || 0));
106
+ });
107
+ }
108
+ queryParse() {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ yield clickgo.form.dialog(JSON.stringify(clickgo.tool.queryParse(this.qs)));
111
+ });
112
+ }
113
+ queryStringify() {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ yield clickgo.form.dialog(clickgo.tool.queryStringify({ 'a': 1, 'b': 'c' }));
116
+ });
117
+ }
101
118
  }
102
119
  exports.default = default_1;
@@ -1,4 +1,4 @@
1
- <form width="350" height="400" title="Library tool">
1
+ <form width="350" height="500" title="Library tool">
2
2
  <flow direction="v" style="flex: 1; padding: 10px;">
3
3
  <layout direction="v" gutter="10">
4
4
  <button @click="sleep">{{sleeping ? 'Waiting...' : 'sleep(1000)'}}</button>
@@ -7,12 +7,12 @@
7
7
  <layout gutter="10">
8
8
  <text v-model="min" style="flex: 1;"></text>
9
9
  <text v-model="max" style="flex: 1;"></text>
10
- <button @click="rand" style="padding: 0 10px;">rand({{min}}, {{max}})</button>
10
+ <button @click="rand">rand({{min}}, {{max}})</button>
11
11
  </layout>
12
12
  <layout gutter="10">
13
13
  <text v-model="length" style="width: 30px;"></text>
14
14
  <text v-model="block" style="flex: 1;"></text>
15
- <button @click="random" style="padding: 0 10px;">random({{length}}, RANDOM_LN, '{{block}}')</button>
15
+ <button @click="random">random({{length}}, RANDOM_LN, '{{block}}')</button>
16
16
  </layout>
17
17
  <button @click="escapeHTML">escapeHTML('{{purifyTxt.slice(0, 5).replace("'", "\\'")}}...')</button>
18
18
  <button @click="rgb2hsl">rgb2hsl('9,105,218')</button>
@@ -22,6 +22,15 @@
22
22
  <text v-model="url1"></text>
23
23
  <text v-model="url2"></text>
24
24
  <button @click="urlResolve">urlResolve('{{url1.slice(0, 5)}}...', '{{url2.slice(0, 5)}}...')</button>
25
+ <layout gutter="10">
26
+ <text v-model="second" style="flex: 1;"></text>
27
+ <button @click="formatSecond">formatSecond({{second}})</button>
28
+ </layout>
29
+ <layout gutter="10">
30
+ <text v-model="qs" style="flex: 1;"></text>
31
+ <button @click="queryParse">queryParse('{{qs.slice(0, 5)}}...')</button>
32
+ </layout>
33
+ <button @click="queryStringify">queryStringify({'a':1,'b':'c'})</button>
25
34
  </layout>
26
35
  </flow>
27
36
  </form>
@@ -1,5 +1,5 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" stroke="none">
3
- <path opacity="0.4" d="M2 12.8799V11.1199C2 10.0799 2.85 9.21994 3.9 9.21994C5.71 9.21994 6.45 7.93994 5.54 6.36994C5.02 5.46994 5.33 4.29994 6.24 3.77994L7.97 2.78994C8.76 2.31994 9.78 2.59994 10.25 3.38994L10.36 3.57994C11.26 5.14994 12.74 5.14994 13.65 3.57994L13.76 3.38994C14.23 2.59994 15.25 2.31994 16.04 2.78994L17.77 3.77994C18.68 4.29994 18.99 5.46994 18.47 6.36994C17.56 7.93994 18.3 9.21994 20.11 9.21994C21.15 9.21994 22.01 10.0699 22.01 11.1199V12.8799C22.01 13.9199 21.16 14.7799 20.11 14.7799C18.3 14.7799 17.56 16.0599 18.47 17.6299C18.99 18.5399 18.68 19.6999 17.77 20.2199L16.04 21.2099C15.25 21.6799 14.23 21.3999 13.76 20.6099L13.65 20.4199C12.75 18.8499 11.27 18.8499 10.36 20.4199L10.25 20.6099C9.78 21.3999 8.76 21.6799 7.97 21.2099L6.24 20.2199C5.33 19.6999 5.02 18.5299 5.54 17.6299C6.45 16.0599 5.71 14.7799 3.9 14.7799C2.85 14.7799 2 13.9199 2 12.8799Z" fill="#292D32"/>
4
- <path d="M12 15.25C13.7949 15.25 15.25 13.7949 15.25 12C15.25 10.2051 13.7949 8.75 12 8.75C10.2051 8.75 8.75 10.2051 8.75 12C8.75 13.7949 10.2051 15.25 12 15.25Z" fill="#292D32"/>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" stroke="none">
3
+ <path opacity="0.4" d="M2 12.8799V11.1199C2 10.0799 2.85 9.21994 3.9 9.21994C5.71 9.21994 6.45 7.93994 5.54 6.36994C5.02 5.46994 5.33 4.29994 6.24 3.77994L7.97 2.78994C8.76 2.31994 9.78 2.59994 10.25 3.38994L10.36 3.57994C11.26 5.14994 12.74 5.14994 13.65 3.57994L13.76 3.38994C14.23 2.59994 15.25 2.31994 16.04 2.78994L17.77 3.77994C18.68 4.29994 18.99 5.46994 18.47 6.36994C17.56 7.93994 18.3 9.21994 20.11 9.21994C21.15 9.21994 22.01 10.0699 22.01 11.1199V12.8799C22.01 13.9199 21.16 14.7799 20.11 14.7799C18.3 14.7799 17.56 16.0599 18.47 17.6299C18.99 18.5399 18.68 19.6999 17.77 20.2199L16.04 21.2099C15.25 21.6799 14.23 21.3999 13.76 20.6099L13.65 20.4199C12.75 18.8499 11.27 18.8499 10.36 20.4199L10.25 20.6099C9.78 21.3999 8.76 21.6799 7.97 21.2099L6.24 20.2199C5.33 19.6999 5.02 18.5299 5.54 17.6299C6.45 16.0599 5.71 14.7799 3.9 14.7799C2.85 14.7799 2 13.9199 2 12.8799Z" fill="#292D32"/>
4
+ <path d="M12 15.25C13.7949 15.25 15.25 13.7949 15.25 12C15.25 10.2051 13.7949 8.75 12 8.75C10.2051 8.75 8.75 10.2051 8.75 12C8.75 13.7949 10.2051 15.25 12 15.25Z" fill="#292D32"/>
5
5
  </svg>
@@ -1,32 +1,32 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 297 297" xml:space="preserve" stroke="none">
5
- <g>
6
- <g>
7
- <g>
8
- <circle style="fill:#345065;" cx="148.5" cy="148.5" r="148.5"/>
9
- </g>
10
- </g>
11
- <path style="fill:#2C3E50;" d="M216.895,109.734l-174.216,84.12l103.112,103.112c0.902,0.016,1.804,0.034,2.709,0.034
12
- c69.329,0,127.557-47.51,143.913-111.748L216.895,109.734z"/>
13
- <g>
14
- <path style="fill:#CDD1D3;" d="M49,182c0-54.952,44.548-99.5,99.5-99.5S248,127.048,248,182H49z"/>
15
- </g>
16
- <g>
17
- <path style="fill:#A3A7A8;" d="M148.5,82.5V182H248C248,127.048,203.452,82.5,148.5,82.5z"/>
18
- </g>
19
- <g>
20
- <path style="fill:#99ABD5;" d="M54.5,198.5h188c9.941,0,18-8.059,18-18l0,0h-224l0,0C36.5,190.441,44.559,198.5,54.5,198.5z"/>
21
- </g>
22
- <g>
23
- <circle style="fill:#99ABD5;" cx="148.5" cy="74.5" r="8.5"/>
24
- </g>
25
- <g>
26
- <path style="fill:#8092B7;" d="M148.5,180.5v18h94c9.941,0,18-8.059,18-18H148.5z"/>
27
- </g>
28
- <g>
29
- <path style="fill:#8092B7;" d="M157,74.5c0-4.694-3.806-8.5-8.5-8.5v17C153.194,83,157,79.194,157,74.5z"/>
30
- </g>
31
- </g>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 297 297" xml:space="preserve" stroke="none">
5
+ <g>
6
+ <g>
7
+ <g>
8
+ <circle style="fill:#345065;" cx="148.5" cy="148.5" r="148.5"/>
9
+ </g>
10
+ </g>
11
+ <path style="fill:#2C3E50;" d="M216.895,109.734l-174.216,84.12l103.112,103.112c0.902,0.016,1.804,0.034,2.709,0.034
12
+ c69.329,0,127.557-47.51,143.913-111.748L216.895,109.734z"/>
13
+ <g>
14
+ <path style="fill:#CDD1D3;" d="M49,182c0-54.952,44.548-99.5,99.5-99.5S248,127.048,248,182H49z"/>
15
+ </g>
16
+ <g>
17
+ <path style="fill:#A3A7A8;" d="M148.5,82.5V182H248C248,127.048,203.452,82.5,148.5,82.5z"/>
18
+ </g>
19
+ <g>
20
+ <path style="fill:#99ABD5;" d="M54.5,198.5h188c9.941,0,18-8.059,18-18l0,0h-224l0,0C36.5,190.441,44.559,198.5,54.5,198.5z"/>
21
+ </g>
22
+ <g>
23
+ <circle style="fill:#99ABD5;" cx="148.5" cy="74.5" r="8.5"/>
24
+ </g>
25
+ <g>
26
+ <path style="fill:#8092B7;" d="M148.5,180.5v18h94c9.941,0,18-8.059,18-18H148.5z"/>
27
+ </g>
28
+ <g>
29
+ <path style="fill:#8092B7;" d="M157,74.5c0-4.694-3.806-8.5-8.5-8.5v17C153.194,83,157,79.194,157,74.5z"/>
30
+ </g>
31
+ </g>
32
32
  </svg>
@@ -1,38 +1,38 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 297 297" xml:space="preserve" stroke="none">
5
- <g>
6
- <g>
7
- <g>
8
- <circle style="fill:#0EA6CB;" cx="148.5" cy="148.5" r="148.5"/>
9
- </g>
10
- </g>
11
- <path style="fill:#3A6F81;" d="M296.89,143.057L231,77.167L93.736,251.474l45.212,45.212c3.159,0.201,6.342,0.314,9.552,0.314
12
- c82.014,0,148.5-66.486,148.5-148.5C297,146.677,296.956,144.864,296.89,143.057z"/>
13
- <g>
14
- <path style="fill:#ECF0F1;" d="M105.916,256.5h86.39c8.693,0,16.039-6.446,17.168-15.065L231,77.167H66L88.765,241.56
15
- C89.951,250.123,97.271,256.5,105.916,256.5z"/>
16
- </g>
17
- <g>
18
- <path style="fill:#D2D7D8;" d="M149.667,77.167V256.5h42.639c8.693,0,16.039-6.446,17.168-15.065L231,77.167H149.667z"/>
19
- </g>
20
- <g>
21
- <path style="fill:#CBE3E3;" d="M86.575,146l11.602,83.785c0.999,7.214,7.166,12.586,14.449,12.586h72.777
22
- c7.323,0,13.511-5.43,14.463-12.691L210.832,146H86.575z"/>
23
- </g>
24
- <g>
25
- <path style="fill:#B4CCCB;" d="M149.667,146v96.371h35.736c7.323,0,13.511-5.43,14.463-12.691L210.832,146H149.667z"/>
26
- </g>
27
- <g>
28
- <path style="fill:#99ABD5;" d="M183.952,162.27l-19.299,4.571c-3.538,0.838-7.086-1.351-7.924-4.889l-4.571-19.299
29
- c-0.838-3.538,1.351-7.086,4.889-7.924l19.299-4.571c3.538-0.838,7.086,1.351,7.924,4.889l4.571,19.299
30
- C189.679,157.885,187.49,161.432,183.952,162.27z"/>
31
- </g>
32
- <g>
33
- <path style="fill:#99ABD5;" d="M116.556,171.636l-14.412-13.626c-2.642-2.498-2.759-6.665-0.261-9.307l13.626-14.412
34
- c2.498-2.642,6.665-2.759,9.307-0.261l14.412,13.626c2.642,2.498,2.759,6.665,0.261,9.307l-13.626,14.412
35
- C123.365,174.017,119.198,174.134,116.556,171.636z"/>
36
- </g>
37
- </g>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 297 297" xml:space="preserve" stroke="none">
5
+ <g>
6
+ <g>
7
+ <g>
8
+ <circle style="fill:#0EA6CB;" cx="148.5" cy="148.5" r="148.5"/>
9
+ </g>
10
+ </g>
11
+ <path style="fill:#3A6F81;" d="M296.89,143.057L231,77.167L93.736,251.474l45.212,45.212c3.159,0.201,6.342,0.314,9.552,0.314
12
+ c82.014,0,148.5-66.486,148.5-148.5C297,146.677,296.956,144.864,296.89,143.057z"/>
13
+ <g>
14
+ <path style="fill:#ECF0F1;" d="M105.916,256.5h86.39c8.693,0,16.039-6.446,17.168-15.065L231,77.167H66L88.765,241.56
15
+ C89.951,250.123,97.271,256.5,105.916,256.5z"/>
16
+ </g>
17
+ <g>
18
+ <path style="fill:#D2D7D8;" d="M149.667,77.167V256.5h42.639c8.693,0,16.039-6.446,17.168-15.065L231,77.167H149.667z"/>
19
+ </g>
20
+ <g>
21
+ <path style="fill:#CBE3E3;" d="M86.575,146l11.602,83.785c0.999,7.214,7.166,12.586,14.449,12.586h72.777
22
+ c7.323,0,13.511-5.43,14.463-12.691L210.832,146H86.575z"/>
23
+ </g>
24
+ <g>
25
+ <path style="fill:#B4CCCB;" d="M149.667,146v96.371h35.736c7.323,0,13.511-5.43,14.463-12.691L210.832,146H149.667z"/>
26
+ </g>
27
+ <g>
28
+ <path style="fill:#99ABD5;" d="M183.952,162.27l-19.299,4.571c-3.538,0.838-7.086-1.351-7.924-4.889l-4.571-19.299
29
+ c-0.838-3.538,1.351-7.086,4.889-7.924l19.299-4.571c3.538-0.838,7.086,1.351,7.924,4.889l4.571,19.299
30
+ C189.679,157.885,187.49,161.432,183.952,162.27z"/>
31
+ </g>
32
+ <g>
33
+ <path style="fill:#99ABD5;" d="M116.556,171.636l-14.412-13.626c-2.642-2.498-2.759-6.665-0.261-9.307l13.626-14.412
34
+ c2.498-2.642,6.665-2.759,9.307-0.261l14.412,13.626c2.642,2.498,2.759,6.665,0.261,9.307l-13.626,14.412
35
+ C123.365,174.017,119.198,174.134,116.556,171.636z"/>
36
+ </g>
37
+ </g>
38
38
  </svg>
@@ -1,25 +1,25 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
- <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
- <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
- <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
- <path style="fill:#F15642;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
- V416z"/>
10
- <g>
11
- <path style="fill:#FFFFFF;" d="M98.128,314.672c2.944-24.832,40.416-29.296,58.064-15.728c8.704,7.024-0.496,18.16-8.192,12.528
12
- c-9.456-6-30.96-8.816-33.648,4.464c-3.456,20.992,52.208,8.976,51.296,43.008c-0.896,32.496-47.968,33.248-65.632,18.672
13
- c-4.224-3.456-4.096-9.072-1.776-12.544c3.312-3.312,7.024-4.464,11.376-0.88c10.496,7.152,37.488,12.528,39.408-5.648
14
- C147.376,339.632,94.16,351.008,98.128,314.672z"/>
15
- <path style="fill:#FFFFFF;" d="M265.488,369.424l2.048,2.416c8.432,7.68-2.56,20.224-11.136,12.16l-4.336-3.44
16
- c-6.656,4.592-14.448,6.784-24.816,6.784c-22.512,0-48.24-15.504-48.24-46.976s25.584-47.456,48.24-47.456
17
- c23.776,0,47.072,15.984,47.072,47.456C274.32,352.528,271.232,361.504,265.488,369.424z M257.792,340.368
18
- c0-20.336-15.984-30.688-30.56-30.688c-15.728,0-31.216,10.336-31.216,30.688c0,15.504,13.168,30.208,31.216,30.208
19
- c4.592,0,9.072-1.152,13.552-2.304l-14.576-13.44c-6.784-8.192,3.968-19.84,12.528-12.288l14.464,14.448
20
- C256.384,352.528,257.792,347.024,257.792,340.368z"/>
21
- <path style="fill:#FFFFFF;" d="M293.168,303.152c0-4.224,3.584-7.808,8.064-7.808c4.096,0,7.552,3.6,7.552,7.808v64.096h34.8
22
- c12.528,0,12.8,16.752,0,16.752h-42.336c-4.48,0-8.064-3.184-8.064-7.792v-73.056H293.168z"/>
23
- </g>
24
- <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
+ <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
+ <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
+ <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
+ <path style="fill:#F15642;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
+ V416z"/>
10
+ <g>
11
+ <path style="fill:#FFFFFF;" d="M98.128,314.672c2.944-24.832,40.416-29.296,58.064-15.728c8.704,7.024-0.496,18.16-8.192,12.528
12
+ c-9.456-6-30.96-8.816-33.648,4.464c-3.456,20.992,52.208,8.976,51.296,43.008c-0.896,32.496-47.968,33.248-65.632,18.672
13
+ c-4.224-3.456-4.096-9.072-1.776-12.544c3.312-3.312,7.024-4.464,11.376-0.88c10.496,7.152,37.488,12.528,39.408-5.648
14
+ C147.376,339.632,94.16,351.008,98.128,314.672z"/>
15
+ <path style="fill:#FFFFFF;" d="M265.488,369.424l2.048,2.416c8.432,7.68-2.56,20.224-11.136,12.16l-4.336-3.44
16
+ c-6.656,4.592-14.448,6.784-24.816,6.784c-22.512,0-48.24-15.504-48.24-46.976s25.584-47.456,48.24-47.456
17
+ c23.776,0,47.072,15.984,47.072,47.456C274.32,352.528,271.232,361.504,265.488,369.424z M257.792,340.368
18
+ c0-20.336-15.984-30.688-30.56-30.688c-15.728,0-31.216,10.336-31.216,30.688c0,15.504,13.168,30.208,31.216,30.208
19
+ c4.592,0,9.072-1.152,13.552-2.304l-14.576-13.44c-6.784-8.192,3.968-19.84,12.528-12.288l14.464,14.448
20
+ C256.384,352.528,257.792,347.024,257.792,340.368z"/>
21
+ <path style="fill:#FFFFFF;" d="M293.168,303.152c0-4.224,3.584-7.808,8.064-7.808c4.096,0,7.552,3.6,7.552,7.808v64.096h34.8
22
+ c12.528,0,12.8,16.752,0,16.752h-42.336c-4.48,0-8.064-3.184-8.064-7.792v-73.056H293.168z"/>
23
+ </g>
24
+ <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
25
25
  </svg>
@@ -1,21 +1,21 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
- <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
- <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
- <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
- <path style="fill:#576D7E;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
- V416z"/>
10
- <g>
11
- <path style="fill:#FFFFFF;" d="M132.784,311.472H110.4c-11.136,0-11.136-16.368,0-16.368h60.512c11.392,0,11.392,16.368,0,16.368
12
- h-21.248v64.592c0,11.12-16.896,11.392-16.896,0v-64.592H132.784z"/>
13
- <path style="fill:#FFFFFF;" d="M224.416,326.176l22.272-27.888c6.656-8.688,19.568,2.432,12.288,10.752
14
- c-7.68,9.088-15.728,18.944-23.424,29.024l26.112,32.496c7.024,9.6-7.04,18.816-13.952,9.344l-23.536-30.192l-23.152,30.832
15
- c-6.528,9.328-20.992-1.152-13.68-9.856l25.696-32.624c-8.048-10.096-15.856-19.936-23.664-29.024
16
- c-8.064-9.6,6.912-19.44,12.784-10.48L224.416,326.176z"/>
17
- <path style="fill:#FFFFFF;" d="M298.288,311.472H275.92c-11.136,0-11.136-16.368,0-16.368h60.496c11.392,0,11.392,16.368,0,16.368
18
- h-21.232v64.592c0,11.12-16.896,11.392-16.896,0V311.472z"/>
19
- </g>
20
- <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
+ <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
+ <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
+ <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
+ <path style="fill:#576D7E;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
+ V416z"/>
10
+ <g>
11
+ <path style="fill:#FFFFFF;" d="M132.784,311.472H110.4c-11.136,0-11.136-16.368,0-16.368h60.512c11.392,0,11.392,16.368,0,16.368
12
+ h-21.248v64.592c0,11.12-16.896,11.392-16.896,0v-64.592H132.784z"/>
13
+ <path style="fill:#FFFFFF;" d="M224.416,326.176l22.272-27.888c6.656-8.688,19.568,2.432,12.288,10.752
14
+ c-7.68,9.088-15.728,18.944-23.424,29.024l26.112,32.496c7.024,9.6-7.04,18.816-13.952,9.344l-23.536-30.192l-23.152,30.832
15
+ c-6.528,9.328-20.992-1.152-13.68-9.856l25.696-32.624c-8.048-10.096-15.856-19.936-23.664-29.024
16
+ c-8.064-9.6,6.912-19.44,12.784-10.48L224.416,326.176z"/>
17
+ <path style="fill:#FFFFFF;" d="M298.288,311.472H275.92c-11.136,0-11.136-16.368,0-16.368h60.496c11.392,0,11.392,16.368,0,16.368
18
+ h-21.232v64.592c0,11.12-16.896,11.392-16.896,0V311.472z"/>
19
+ </g>
20
+ <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
21
21
  </svg>
@@ -1,21 +1,21 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
- <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
- viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
- <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
- <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
- <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
- <path style="fill:#84BD5A;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
- V416z"/>
10
- <g>
11
- <path style="fill:#FFFFFF;" d="M132.64,384c-8.064,0-11.264-7.792-6.656-13.296l45.552-60.512h-37.76
12
- c-11.12,0-10.224-15.712,0-15.712h51.568c9.712,0,12.528,9.184,5.632,16.624l-43.632,56.656h41.584
13
- c10.24,0,11.52,16.256-1.008,16.256h-55.28V384z"/>
14
- <path style="fill:#FFFFFF;" d="M212.048,303.152c0-10.496,16.896-10.88,16.896,0v73.04c0,10.608-16.896,10.88-16.896,0V303.152z"/>
15
- <path style="fill:#FFFFFF;" d="M251.616,303.152c0-4.224,3.328-8.832,8.704-8.832h29.552c16.64,0,31.616,11.136,31.616,32.48
16
- c0,20.224-14.976,31.488-31.616,31.488h-21.36v16.896c0,5.632-3.584,8.816-8.192,8.816c-4.224,0-8.704-3.184-8.704-8.816
17
- L251.616,303.152L251.616,303.152z M268.496,310.432v31.872h21.36c8.576,0,15.36-7.568,15.36-15.504
18
- c0-8.944-6.784-16.368-15.36-16.368H268.496z"/>
19
- </g>
20
- <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ viewBox="0 0 512 512" xml:space="preserve" stroke="none">
5
+ <path style="fill:#E2E5E7;" d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z"/>
6
+ <path style="fill:#B0B7BD;" d="M384,128h96L352,0v96C352,113.6,366.4,128,384,128z"/>
7
+ <polygon style="fill:#CAD1D8;" points="480,224 384,128 480,128 "/>
8
+ <path style="fill:#84BD5A;" d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16
9
+ V416z"/>
10
+ <g>
11
+ <path style="fill:#FFFFFF;" d="M132.64,384c-8.064,0-11.264-7.792-6.656-13.296l45.552-60.512h-37.76
12
+ c-11.12,0-10.224-15.712,0-15.712h51.568c9.712,0,12.528,9.184,5.632,16.624l-43.632,56.656h41.584
13
+ c10.24,0,11.52,16.256-1.008,16.256h-55.28V384z"/>
14
+ <path style="fill:#FFFFFF;" d="M212.048,303.152c0-10.496,16.896-10.88,16.896,0v73.04c0,10.608-16.896,10.88-16.896,0V303.152z"/>
15
+ <path style="fill:#FFFFFF;" d="M251.616,303.152c0-4.224,3.328-8.832,8.704-8.832h29.552c16.64,0,31.616,11.136,31.616,32.48
16
+ c0,20.224-14.976,31.488-31.616,31.488h-21.36v16.896c0,5.632-3.584,8.816-8.192,8.816c-4.224,0-8.704-3.184-8.704-8.816
17
+ L251.616,303.152L251.616,303.152z M268.496,310.432v31.872h21.36c8.576,0,15.36-7.568,15.36-15.504
18
+ c0-8.944-6.784-16.368-15.36-16.368H268.496z"/>
19
+ </g>
20
+ <path style="fill:#CAD1D8;" d="M400,432H96v16h304c8.8,0,16-7.2,16-16v-16C416,424.8,408.8,432,400,432z"/>
21
21
  </svg>
package/dist/clickgo.js CHANGED
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.zip = exports.tool = exports.theme = exports.task = exports.storage = exports.native = exports.fs = exports.form = exports.dom = exports.core = exports.control = exports.vue = exports.hasFrame = exports.isImmersion = exports.getPlatform = exports.isNative = exports.getVersion = void 0;
27
- const version = '3.11.1';
27
+ const version = '3.11.3';
28
28
  function getVersion() {
29
29
  return version;
30
30
  }
package/dist/clickgo.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- const version = '3.11.1';
16
+ const version = '3.11.3';
17
17
  export function getVersion(): string {
18
18
  return version;
19
19
  }
Binary file
@@ -186,7 +186,7 @@ export abstract class AbstractControl {
186
186
  public readonly emits: Record<string, null | ((payload: any) => boolean)> = {};
187
187
 
188
188
  /** --- 组件的子插槽 --- */
189
- public readonly slots: Record<string, any> = {};
189
+ public readonly slots: Record<string, () => any[]> = {};
190
190
 
191
191
  /** --- 获取某插槽所有子类 --- */
192
192
  public get slotsAll() {
package/dist/lib/form.js CHANGED
@@ -269,6 +269,25 @@ class AbstractPanel extends AbstractCommon {
269
269
  get rootPanel() {
270
270
  return {};
271
271
  }
272
+ get formHash() {
273
+ return this.rootForm.formHash;
274
+ }
275
+ set formHash(fh) {
276
+ this.rootForm.formHash = fh;
277
+ }
278
+ sendToRootPanel(data) {
279
+ this.rootPanel.send(data);
280
+ }
281
+ enterStep(list) {
282
+ return __awaiter(this, void 0, void 0, function* () {
283
+ return this.rootForm.enterStep(list);
284
+ });
285
+ }
286
+ doneStep() {
287
+ return __awaiter(this, void 0, void 0, function* () {
288
+ yield this.rootForm.doneStep();
289
+ });
290
+ }
272
291
  get formFocus() {
273
292
  var _a;
274
293
  return (_a = this.rootForm.formFocus) !== null && _a !== void 0 ? _a : false;
@@ -374,6 +393,9 @@ class AbstractForm extends AbstractCommon {
374
393
  core.trigger('formHashChange', this.taskId, this.formId, parent);
375
394
  });
376
395
  }
396
+ sendToPanel(panel, data) {
397
+ panel.send(data);
398
+ }
377
399
  get inStep() {
378
400
  return this._inStep;
379
401
  }
@@ -1492,25 +1514,38 @@ function refreshPopPosition(el, pop, direction, size = {}) {
1492
1514
  left = bcr.left;
1493
1515
  top = bcr.top + bcr.height;
1494
1516
  }
1495
- else {
1517
+ else if (direction === 'h') {
1496
1518
  left = bcr.left + bcr.width - 2;
1497
1519
  top = bcr.top - 2;
1498
1520
  }
1521
+ else {
1522
+ pop.removeAttribute('data-pop-t-bottom');
1523
+ left = bcr.left + bcr.width / 2 - width / 2;
1524
+ top = bcr.top - height - 10;
1525
+ }
1499
1526
  if (width + left > window.innerWidth) {
1500
1527
  if (direction === 'v') {
1501
1528
  left = bcr.left + bcr.width - width;
1502
1529
  }
1503
- else {
1530
+ else if (direction === 'h') {
1504
1531
  left = bcr.left - width + 2;
1505
1532
  }
1533
+ else {
1534
+ }
1506
1535
  }
1507
1536
  if (height + top > window.innerHeight) {
1508
1537
  if (direction === 'v') {
1509
1538
  top = bcr.top - height;
1510
1539
  }
1511
- else {
1540
+ else if (direction === 'h') {
1512
1541
  top = bcr.top + bcr.height - height + 2;
1513
1542
  }
1543
+ else {
1544
+ }
1545
+ }
1546
+ else if (top < 0 && direction === 't') {
1547
+ top = bcr.top + bcr.height + 10;
1548
+ pop.dataset.popTBottom = '';
1514
1549
  }
1515
1550
  }
1516
1551
  else {
@@ -1555,6 +1590,17 @@ function refreshPopPosition(el, pop, direction, size = {}) {
1555
1590
  }
1556
1591
  let lastShowPopTime = 0;
1557
1592
  function showPop(el, pop, direction, opt = {}) {
1593
+ if (pop && direction === 't') {
1594
+ refreshPopPosition(el, pop, 't', opt.size);
1595
+ if (opt.autoPosition) {
1596
+ clickgo.dom.watchSize(pop, () => {
1597
+ refreshPopPosition(el, pop, 't', opt.size);
1598
+ });
1599
+ }
1600
+ pop.dataset.cgOpen = '';
1601
+ pop.dataset.cgT = '';
1602
+ return;
1603
+ }
1558
1604
  if (opt.null === undefined) {
1559
1605
  opt.null = false;
1560
1606
  }
@@ -1595,7 +1641,7 @@ function showPop(el, pop, direction, opt = {}) {
1595
1641
  return;
1596
1642
  }
1597
1643
  refreshPopPosition(el, pop, direction, opt.size);
1598
- if (opt.autoPosition && typeof direction === 'string' && ['h', 'v'].includes(direction)) {
1644
+ if (opt.autoPosition && typeof direction === 'string') {
1599
1645
  clickgo.dom.watchSize(pop, () => {
1600
1646
  refreshPopPosition(el, pop, direction, opt.size);
1601
1647
  });
@@ -1616,6 +1662,12 @@ function hidePop(pop) {
1616
1662
  hidePop(popInfo.elList[0]);
1617
1663
  return;
1618
1664
  }
1665
+ if (pop.dataset.cgT !== undefined) {
1666
+ pop.removeAttribute('data-cg-t');
1667
+ pop.removeAttribute('data-cg-open');
1668
+ clickgo.dom.unwatchSize(pop);
1669
+ return;
1670
+ }
1619
1671
  let isPop = false;
1620
1672
  if (pop.dataset.cgPopOpen !== undefined) {
1621
1673
  }
package/dist/lib/form.ts CHANGED
@@ -358,6 +358,37 @@ export abstract class AbstractPanel extends AbstractCommon {
358
358
  return {} as any;
359
359
  }
360
360
 
361
+ /** --- 获取母窗体的 formHash --- */
362
+ public get formHash(): string {
363
+ return this.rootForm.formHash;
364
+ }
365
+
366
+ /** --- 设置母窗体的 formHash --- */
367
+ public set formHash(fh: string) {
368
+ this.rootForm.formHash = fh;
369
+ }
370
+
371
+ /** --- 发送一段数据到自己这个 panel 控件,本质上也是调用的 panel 控件的 send 方法,主要用来实现发送给跳转后的 panel --- */
372
+ public sendToRootPanel(data: Record<string, any>): void {
373
+ this.rootPanel.send(data);
374
+ }
375
+
376
+ /** --- 母窗体进入 form hash 为源的步进条 --- */
377
+ public async enterStep(list: Array<{
378
+ /** --- 步骤 hash,第一个必须为当前 hash --- */
379
+ 'value': string;
380
+ 'label'?: string;
381
+ 'icon'?: string;
382
+ 'desc'?: string;
383
+ }>): Promise<boolean> {
384
+ return this.rootForm.enterStep(list);
385
+ }
386
+
387
+ /** --- 目窗体完成当前步骤 --- */
388
+ public async doneStep(): Promise<void> {
389
+ await this.rootForm.doneStep();
390
+ }
391
+
361
392
  /** --- 当前的 nav(若有)传递过来的 qs --- */
362
393
  public qs: Record<string, string> = {};
363
394
 
@@ -507,6 +538,11 @@ export abstract class AbstractForm extends AbstractCommon {
507
538
  core.trigger('formHashChange', this.taskId, this.formId, parent);
508
539
  }
509
540
 
541
+ /** --- 发送一段数据到 panel 控件,本质上也是调用的 panel 控件的 send 方法 --- */
542
+ public sendToPanel(panel: control.AbstractControl & Record<string, any>, data: Record<string, any>): void {
543
+ panel.send(data);
544
+ }
545
+
510
546
  /** --- 覆盖整个窗体的 loading --- */
511
547
  public loading: boolean = false;
512
548
 
@@ -1949,43 +1985,61 @@ export function removeFromPop(el: HTMLElement): void {
1949
1985
  }
1950
1986
 
1951
1987
  /** --- 重新调整 pop 的位置 --- */
1952
- function refreshPopPosition(el: HTMLElement, pop: HTMLElement, direction: 'h' | 'v' | MouseEvent | TouchEvent | { x: number; y: number; }, size: { width?: number; height?: number; } = {}): void {
1988
+ function refreshPopPosition(el: HTMLElement, pop: HTMLElement, direction: 'h' | 'v' | 't' | MouseEvent | TouchEvent | { x: number; y: number; }, size: { width?: number; height?: number; } = {}): void {
1953
1989
  // --- 最终 pop 的大小 ---
1954
1990
  const width = size.width ?? pop.offsetWidth;
1955
1991
  const height = size.height ?? pop.offsetHeight;
1956
1992
  // --- 最终显示位置 ---
1957
1993
  let left: number, top: number;
1958
1994
  if (typeof direction === 'string') {
1995
+ /** --- 母对象的位置 --- */
1959
1996
  const bcr = el.getBoundingClientRect();
1960
1997
  if (direction === 'v') {
1961
1998
  // --- 垂直弹出 ---
1962
1999
  left = bcr.left;
1963
2000
  top = bcr.top + bcr.height;
1964
2001
  }
1965
- else {
2002
+ else if (direction === 'h') {
1966
2003
  // --- 水平弹出 ---
1967
2004
  left = bcr.left + bcr.width - 2;
1968
2005
  top = bcr.top - 2;
1969
2006
  }
2007
+ else {
2008
+ // --- 垂直水平居中 ---
2009
+ pop.removeAttribute('data-pop-t-bottom');
2010
+ left = bcr.left + bcr.width / 2 - width / 2;
2011
+ top = bcr.top - height - 10;
2012
+ }
1970
2013
  // --- 检查水平是否出框 ---
1971
2014
  if (width + left > window.innerWidth) {
1972
2015
  if (direction === 'v') {
1973
2016
  // --- 垂直弹出 ---
1974
2017
  left = bcr.left + bcr.width - width;
1975
2018
  }
1976
- else {
2019
+ else if (direction === 'h') {
1977
2020
  // --- 水平弹出,右边位置不够弹到左边 ---
1978
2021
  left = bcr.left - width + 2;
1979
2022
  }
2023
+ else {
2024
+ // --- 垂直水平居中,水平超出不管 ---
2025
+ }
1980
2026
  }
1981
- // --- 检测垂直是否出框 ---
2027
+ // --- 检测垂直是否下侧出框 ---
1982
2028
  if (height + top > window.innerHeight) {
1983
2029
  if (direction === 'v') {
1984
2030
  top = bcr.top - height;
1985
2031
  }
1986
- else {
2032
+ else if (direction === 'h') {
1987
2033
  top = bcr.top + bcr.height - height + 2;
1988
2034
  }
2035
+ else {
2036
+ // --- 垂直水平居中,下侧出框不管 ---
2037
+ }
2038
+ }
2039
+ else if (top < 0 && direction === 't') {
2040
+ // --- 垂直水平居中,上侧出框 ---
2041
+ top = bcr.top + bcr.height + 10;
2042
+ pop.dataset.popTBottom = '';
1989
2043
  }
1990
2044
  }
1991
2045
  else {
@@ -2037,10 +2091,25 @@ let lastShowPopTime: number = 0;
2037
2091
  * --- 获取 pop 显示出来的坐标并报系统全局记录 ---
2038
2092
  * @param el 响应的元素
2039
2093
  * @param pop 要显示 pop 元素
2040
- * @param direction 要显示方向(以 $el 为准的 h 水平和 v 垂直)或坐标
2094
+ * @param direction 要显示方向(以 $el 为准的 h 水平 v 垂直 t 垂直水平居中)或坐标
2041
2095
  * @param opt width / height 显示的 pop 定义自定义宽/高度,可省略;null,true 代表为空也会显示,默认为 false; autoPosition, 自动更新 pop 位置,默认 false,true 为原元素位置变更,pop 位置也会变更,pop 大小变更,位置也会变更
2042
2096
  */
2043
- export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction: 'h' | 'v' | MouseEvent | TouchEvent | { x: number; y: number; }, opt: { 'size'?: { width?: number; height?: number; }; 'null'?: boolean; 'autoPosition'?: boolean; } = {}): void {
2097
+ export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction: 'h' | 'v' | 't' | MouseEvent | TouchEvent | { x: number; y: number; }, opt: {
2098
+ 'size'?: { width?: number; height?: number; };
2099
+ 'null'?: boolean;
2100
+ 'autoPosition'?: boolean;
2101
+ } = {}): void {
2102
+ if (pop && direction === 't') {
2103
+ refreshPopPosition(el, pop, 't', opt.size);
2104
+ if (opt.autoPosition) {
2105
+ clickgo.dom.watchSize(pop, () => {
2106
+ refreshPopPosition(el, pop, 't', opt.size);
2107
+ });
2108
+ }
2109
+ pop.dataset.cgOpen = '';
2110
+ pop.dataset.cgT = '';
2111
+ return;
2112
+ }
2044
2113
  // --- opt.null 为 true 代表可为空,为空也会被显示,默认为 false ---
2045
2114
  if (opt.null === undefined) {
2046
2115
  opt.null = false;
@@ -2089,7 +2158,7 @@ export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction
2089
2158
  }
2090
2159
  // --- 设定 pop 位置 ---
2091
2160
  refreshPopPosition(el, pop, direction, opt.size);
2092
- if (opt.autoPosition && typeof direction === 'string' && ['h', 'v'].includes(direction)) {
2161
+ if (opt.autoPosition && typeof direction === 'string') {
2093
2162
  // --- 可能要重置 pop 位置 ---
2094
2163
  clickgo.dom.watchSize(pop, () => {
2095
2164
  refreshPopPosition(el, pop, direction, opt.size);
@@ -2114,6 +2183,12 @@ export function hidePop(pop?: HTMLElement): void {
2114
2183
  hidePop(popInfo.elList[0]);
2115
2184
  return;
2116
2185
  }
2186
+ if (pop.dataset.cgT !== undefined) {
2187
+ pop.removeAttribute('data-cg-t');
2188
+ pop.removeAttribute('data-cg-open');
2189
+ clickgo.dom.unwatchSize(pop);
2190
+ return;
2191
+ }
2117
2192
  let isPop: boolean = false;
2118
2193
  if (pop.dataset.cgPopOpen !== undefined) {
2119
2194
  // --- el ---
package/dist/lib/fs.js CHANGED
@@ -38,7 +38,7 @@ const task = __importStar(require("./task"));
38
38
  const form = __importStar(require("./form"));
39
39
  const core = __importStar(require("./core"));
40
40
  const native = __importStar(require("./native"));
41
- const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/alayout/', '/app/demo/form/control/alayout/alayout.css', '/app/demo/form/control/alayout/alayout.js', '/app/demo/form/control/alayout/alayout.xml', '/app/demo/form/control/arteditor/', '/app/demo/form/control/arteditor/arteditor.js', '/app/demo/form/control/arteditor/arteditor.xml', '/app/demo/form/control/arteditor/img.js', '/app/demo/form/control/arteditor/img.xml', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.xml', '/app/demo/form/control/box/', '/app/demo/form/control/box/box.js', '/app/demo/form/control/box/box.xml', '/app/demo/form/control/button/', '/app/demo/form/control/button/button.css', '/app/demo/form/control/button/button.js', '/app/demo/form/control/button/button.xml', '/app/demo/form/control/check/', '/app/demo/form/control/check/check.js', '/app/demo/form/control/check/check.xml', '/app/demo/form/control/date/', '/app/demo/form/control/date/date.js', '/app/demo/form/control/date/date.xml', '/app/demo/form/control/desc/', '/app/demo/form/control/desc/desc.js', '/app/demo/form/control/desc/desc.xml', '/app/demo/form/control/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/echarts/', '/app/demo/form/control/echarts/echarts.js', '/app/demo/form/control/echarts/echarts.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/flow/', '/app/demo/form/control/flow/flow.css', '/app/demo/form/control/flow/flow.js', '/app/demo/form/control/flow/flow.xml', '/app/demo/form/control/form/', '/app/demo/form/control/form/form.css', '/app/demo/form/control/form/form.js', '/app/demo/form/control/form/form.xml', '/app/demo/form/control/html/', '/app/demo/form/control/html/html.js', '/app/demo/form/control/html/html.xml', '/app/demo/form/control/iconview/', '/app/demo/form/control/iconview/iconview.js', '/app/demo/form/control/iconview/iconview.xml', '/app/demo/form/control/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.js', '/app/demo/form/control/label/label.xml', '/app/demo/form/control/layout/', '/app/demo/form/control/layout/layout.js', '/app/demo/form/control/layout/layout.xml', '/app/demo/form/control/link/', '/app/demo/form/control/link/link.js', '/app/demo/form/control/link/link.xml', '/app/demo/form/control/list/', '/app/demo/form/control/list/list.css', '/app/demo/form/control/list/list.js', '/app/demo/form/control/list/list.xml', '/app/demo/form/control/loading/', '/app/demo/form/control/loading/loading.xml', '/app/demo/form/control/map/', '/app/demo/form/control/map/map.js', '/app/demo/form/control/map/map.xml', '/app/demo/form/control/marquee/', '/app/demo/form/control/marquee/marquee.js', '/app/demo/form/control/marquee/marquee.xml', '/app/demo/form/control/menu/', '/app/demo/form/control/menu/menu.js', '/app/demo/form/control/menu/menu.xml', '/app/demo/form/control/monaco/', '/app/demo/form/control/monaco/monaco.js', '/app/demo/form/control/monaco/monaco.xml', '/app/demo/form/control/nav/', '/app/demo/form/control/nav/nav.js', '/app/demo/form/control/nav/nav.xml', '/app/demo/form/control/page/', '/app/demo/form/control/page/page.js', '/app/demo/form/control/page/page.xml', '/app/demo/form/control/panel/', '/app/demo/form/control/panel/panel.js', '/app/demo/form/control/panel/panel.xml', '/app/demo/form/control/panel/test1.js', '/app/demo/form/control/panel/test1.xml', '/app/demo/form/control/panel/test2.xml', '/app/demo/form/control/property/', '/app/demo/form/control/property/property.js', '/app/demo/form/control/property/property.xml', '/app/demo/form/control/radio/', '/app/demo/form/control/radio/radio.js', '/app/demo/form/control/radio/radio.xml', '/app/demo/form/control/scroll/', '/app/demo/form/control/scroll/scroll.js', '/app/demo/form/control/scroll/scroll.xml', '/app/demo/form/control/select/', '/app/demo/form/control/select/select.js', '/app/demo/form/control/select/select.xml', '/app/demo/form/control/step/', '/app/demo/form/control/step/step.js', '/app/demo/form/control/step/step.xml', '/app/demo/form/control/svg/', '/app/demo/form/control/svg/svg.js', '/app/demo/form/control/svg/svg.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/icon.svg', '/app/demo/res/img.jpg', '/app/demo/res/marker.svg', '/app/demo/res/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/app/demo/res/video.mp4', '/app/demo/res/zip.svg', '/app/task/', '/app/task/app.js', '/app/task/config.json', '/app/task/form/', '/app/task/form/bar/', '/app/task/form/bar/bar.js', '/app/task/form/bar/bar.xml', '/app/task/form/desktop/', '/app/task/form/desktop/desktop.xml', '/app/task/locale/', '/app/task/locale/en.json', '/app/task/locale/ja.json', '/app/task/locale/sc.json', '/app/task/locale/tc.json', '/clickgo.js', '/clickgo.ts', '/control/', '/control/arteditor.cgc', '/control/box.cgc', '/control/common.cgc', '/control/desc.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/html.cgc', '/control/iconview.cgc', '/control/map.cgc', '/control/monaco.cgc', '/control/nav.cgc', '/control/page.cgc', '/control/property.cgc', '/control/table.cgc', '/control/task.cgc', '/control/tuieditor.cgc', '/control/xterm.cgc', '/ext/', '/ext/toastui-editor-all.min.js', '/global.css', '/icon.png', '/index.js', '/index.ts', '/lib/', '/lib/control.js', '/lib/control.ts', '/lib/core.js', '/lib/core.ts', '/lib/dom.js', '/lib/dom.ts', '/lib/form.js', '/lib/form.ts', '/lib/fs.js', '/lib/fs.ts', '/lib/native.js', '/lib/native.ts', '/lib/storage.js', '/lib/storage.ts', '/lib/task.js', '/lib/task.ts', '/lib/theme.js', '/lib/theme.ts', '/lib/tool.js', '/lib/tool.ts', '/lib/zip.js', '/lib/zip.ts', '/theme/', '/theme/byterun.cgt', '/theme/familiar.cgt', '/theme/light.cgt'];
41
+ const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/alayout/', '/app/demo/form/control/alayout/alayout.css', '/app/demo/form/control/alayout/alayout.js', '/app/demo/form/control/alayout/alayout.xml', '/app/demo/form/control/arteditor/', '/app/demo/form/control/arteditor/arteditor.js', '/app/demo/form/control/arteditor/arteditor.xml', '/app/demo/form/control/arteditor/img.js', '/app/demo/form/control/arteditor/img.xml', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.xml', '/app/demo/form/control/box/', '/app/demo/form/control/box/box.js', '/app/demo/form/control/box/box.xml', '/app/demo/form/control/button/', '/app/demo/form/control/button/button.css', '/app/demo/form/control/button/button.js', '/app/demo/form/control/button/button.xml', '/app/demo/form/control/check/', '/app/demo/form/control/check/check.js', '/app/demo/form/control/check/check.xml', '/app/demo/form/control/date/', '/app/demo/form/control/date/date.js', '/app/demo/form/control/date/date.xml', '/app/demo/form/control/desc/', '/app/demo/form/control/desc/desc.js', '/app/demo/form/control/desc/desc.xml', '/app/demo/form/control/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/echarts/', '/app/demo/form/control/echarts/echarts.js', '/app/demo/form/control/echarts/echarts.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/flow/', '/app/demo/form/control/flow/flow.css', '/app/demo/form/control/flow/flow.js', '/app/demo/form/control/flow/flow.xml', '/app/demo/form/control/form/', '/app/demo/form/control/form/form.css', '/app/demo/form/control/form/form.js', '/app/demo/form/control/form/form.xml', '/app/demo/form/control/html/', '/app/demo/form/control/html/html.js', '/app/demo/form/control/html/html.xml', '/app/demo/form/control/iconview/', '/app/demo/form/control/iconview/iconview.js', '/app/demo/form/control/iconview/iconview.xml', '/app/demo/form/control/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.js', '/app/demo/form/control/label/label.xml', '/app/demo/form/control/layout/', '/app/demo/form/control/layout/layout.js', '/app/demo/form/control/layout/layout.xml', '/app/demo/form/control/link/', '/app/demo/form/control/link/link.js', '/app/demo/form/control/link/link.xml', '/app/demo/form/control/list/', '/app/demo/form/control/list/list.css', '/app/demo/form/control/list/list.js', '/app/demo/form/control/list/list.xml', '/app/demo/form/control/loading/', '/app/demo/form/control/loading/loading.xml', '/app/demo/form/control/map/', '/app/demo/form/control/map/map.js', '/app/demo/form/control/map/map.xml', '/app/demo/form/control/marquee/', '/app/demo/form/control/marquee/marquee.js', '/app/demo/form/control/marquee/marquee.xml', '/app/demo/form/control/menu/', '/app/demo/form/control/menu/menu.js', '/app/demo/form/control/menu/menu.xml', '/app/demo/form/control/monaco/', '/app/demo/form/control/monaco/monaco.js', '/app/demo/form/control/monaco/monaco.xml', '/app/demo/form/control/nav/', '/app/demo/form/control/nav/nav.js', '/app/demo/form/control/nav/nav.xml', '/app/demo/form/control/page/', '/app/demo/form/control/page/page.js', '/app/demo/form/control/page/page.xml', '/app/demo/form/control/panel/', '/app/demo/form/control/panel/panel.js', '/app/demo/form/control/panel/panel.xml', '/app/demo/form/control/panel/test1.js', '/app/demo/form/control/panel/test1.xml', '/app/demo/form/control/panel/test2.xml', '/app/demo/form/control/property/', '/app/demo/form/control/property/property.js', '/app/demo/form/control/property/property.xml', '/app/demo/form/control/radio/', '/app/demo/form/control/radio/radio.js', '/app/demo/form/control/radio/radio.xml', '/app/demo/form/control/scroll/', '/app/demo/form/control/scroll/scroll.js', '/app/demo/form/control/scroll/scroll.xml', '/app/demo/form/control/select/', '/app/demo/form/control/select/select.js', '/app/demo/form/control/select/select.xml', '/app/demo/form/control/step/', '/app/demo/form/control/step/step.js', '/app/demo/form/control/step/step.xml', '/app/demo/form/control/svg/', '/app/demo/form/control/svg/svg.js', '/app/demo/form/control/svg/svg.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tip/', '/app/demo/form/control/tip/tip.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/icon.svg', '/app/demo/res/img.jpg', '/app/demo/res/marker.svg', '/app/demo/res/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/app/demo/res/video.mp4', '/app/demo/res/zip.svg', '/app/task/', '/app/task/app.js', '/app/task/config.json', '/app/task/form/', '/app/task/form/bar/', '/app/task/form/bar/bar.js', '/app/task/form/bar/bar.xml', '/app/task/form/desktop/', '/app/task/form/desktop/desktop.xml', '/app/task/locale/', '/app/task/locale/en.json', '/app/task/locale/ja.json', '/app/task/locale/sc.json', '/app/task/locale/tc.json', '/clickgo.js', '/clickgo.ts', '/control/', '/control/arteditor.cgc', '/control/box.cgc', '/control/common.cgc', '/control/desc.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/html.cgc', '/control/iconview.cgc', '/control/map.cgc', '/control/monaco.cgc', '/control/nav.cgc', '/control/page.cgc', '/control/property.cgc', '/control/table.cgc', '/control/task.cgc', '/control/tuieditor.cgc', '/control/xterm.cgc', '/ext/', '/ext/toastui-editor-all.min.js', '/global.css', '/icon.png', '/index.js', '/index.ts', '/lib/', '/lib/control.js', '/lib/control.ts', '/lib/core.js', '/lib/core.ts', '/lib/dom.js', '/lib/dom.ts', '/lib/form.js', '/lib/form.ts', '/lib/fs.js', '/lib/fs.ts', '/lib/native.js', '/lib/native.ts', '/lib/storage.js', '/lib/storage.ts', '/lib/task.js', '/lib/task.ts', '/lib/theme.js', '/lib/theme.ts', '/lib/tool.js', '/lib/tool.ts', '/lib/zip.js', '/lib/zip.ts', '/theme/', '/theme/byterun.cgt', '/theme/familiar.cgt', '/theme/light.cgt'];
42
42
  const localeData = {
43
43
  'en': {
44
44
  'apply-unmount': 'Are you sure to unmount the "?" mount point?',
package/dist/lib/fs.ts CHANGED
@@ -12,7 +12,7 @@ import * as form from './form';
12
12
  import * as core from './core';
13
13
  import * as native from './native';
14
14
 
15
- const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/alayout/', '/app/demo/form/control/alayout/alayout.css', '/app/demo/form/control/alayout/alayout.js', '/app/demo/form/control/alayout/alayout.xml', '/app/demo/form/control/arteditor/', '/app/demo/form/control/arteditor/arteditor.js', '/app/demo/form/control/arteditor/arteditor.xml', '/app/demo/form/control/arteditor/img.js', '/app/demo/form/control/arteditor/img.xml', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.xml', '/app/demo/form/control/box/', '/app/demo/form/control/box/box.js', '/app/demo/form/control/box/box.xml', '/app/demo/form/control/button/', '/app/demo/form/control/button/button.css', '/app/demo/form/control/button/button.js', '/app/demo/form/control/button/button.xml', '/app/demo/form/control/check/', '/app/demo/form/control/check/check.js', '/app/demo/form/control/check/check.xml', '/app/demo/form/control/date/', '/app/demo/form/control/date/date.js', '/app/demo/form/control/date/date.xml', '/app/demo/form/control/desc/', '/app/demo/form/control/desc/desc.js', '/app/demo/form/control/desc/desc.xml', '/app/demo/form/control/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/echarts/', '/app/demo/form/control/echarts/echarts.js', '/app/demo/form/control/echarts/echarts.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/flow/', '/app/demo/form/control/flow/flow.css', '/app/demo/form/control/flow/flow.js', '/app/demo/form/control/flow/flow.xml', '/app/demo/form/control/form/', '/app/demo/form/control/form/form.css', '/app/demo/form/control/form/form.js', '/app/demo/form/control/form/form.xml', '/app/demo/form/control/html/', '/app/demo/form/control/html/html.js', '/app/demo/form/control/html/html.xml', '/app/demo/form/control/iconview/', '/app/demo/form/control/iconview/iconview.js', '/app/demo/form/control/iconview/iconview.xml', '/app/demo/form/control/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.js', '/app/demo/form/control/label/label.xml', '/app/demo/form/control/layout/', '/app/demo/form/control/layout/layout.js', '/app/demo/form/control/layout/layout.xml', '/app/demo/form/control/link/', '/app/demo/form/control/link/link.js', '/app/demo/form/control/link/link.xml', '/app/demo/form/control/list/', '/app/demo/form/control/list/list.css', '/app/demo/form/control/list/list.js', '/app/demo/form/control/list/list.xml', '/app/demo/form/control/loading/', '/app/demo/form/control/loading/loading.xml', '/app/demo/form/control/map/', '/app/demo/form/control/map/map.js', '/app/demo/form/control/map/map.xml', '/app/demo/form/control/marquee/', '/app/demo/form/control/marquee/marquee.js', '/app/demo/form/control/marquee/marquee.xml', '/app/demo/form/control/menu/', '/app/demo/form/control/menu/menu.js', '/app/demo/form/control/menu/menu.xml', '/app/demo/form/control/monaco/', '/app/demo/form/control/monaco/monaco.js', '/app/demo/form/control/monaco/monaco.xml', '/app/demo/form/control/nav/', '/app/demo/form/control/nav/nav.js', '/app/demo/form/control/nav/nav.xml', '/app/demo/form/control/page/', '/app/demo/form/control/page/page.js', '/app/demo/form/control/page/page.xml', '/app/demo/form/control/panel/', '/app/demo/form/control/panel/panel.js', '/app/demo/form/control/panel/panel.xml', '/app/demo/form/control/panel/test1.js', '/app/demo/form/control/panel/test1.xml', '/app/demo/form/control/panel/test2.xml', '/app/demo/form/control/property/', '/app/demo/form/control/property/property.js', '/app/demo/form/control/property/property.xml', '/app/demo/form/control/radio/', '/app/demo/form/control/radio/radio.js', '/app/demo/form/control/radio/radio.xml', '/app/demo/form/control/scroll/', '/app/demo/form/control/scroll/scroll.js', '/app/demo/form/control/scroll/scroll.xml', '/app/demo/form/control/select/', '/app/demo/form/control/select/select.js', '/app/demo/form/control/select/select.xml', '/app/demo/form/control/step/', '/app/demo/form/control/step/step.js', '/app/demo/form/control/step/step.xml', '/app/demo/form/control/svg/', '/app/demo/form/control/svg/svg.js', '/app/demo/form/control/svg/svg.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/icon.svg', '/app/demo/res/img.jpg', '/app/demo/res/marker.svg', '/app/demo/res/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/app/demo/res/video.mp4', '/app/demo/res/zip.svg', '/app/task/', '/app/task/app.js', '/app/task/config.json', '/app/task/form/', '/app/task/form/bar/', '/app/task/form/bar/bar.js', '/app/task/form/bar/bar.xml', '/app/task/form/desktop/', '/app/task/form/desktop/desktop.xml', '/app/task/locale/', '/app/task/locale/en.json', '/app/task/locale/ja.json', '/app/task/locale/sc.json', '/app/task/locale/tc.json', '/clickgo.js', '/clickgo.ts', '/control/', '/control/arteditor.cgc', '/control/box.cgc', '/control/common.cgc', '/control/desc.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/html.cgc', '/control/iconview.cgc', '/control/map.cgc', '/control/monaco.cgc', '/control/nav.cgc', '/control/page.cgc', '/control/property.cgc', '/control/table.cgc', '/control/task.cgc', '/control/tuieditor.cgc', '/control/xterm.cgc', '/ext/', '/ext/toastui-editor-all.min.js', '/global.css', '/icon.png', '/index.js', '/index.ts', '/lib/', '/lib/control.js', '/lib/control.ts', '/lib/core.js', '/lib/core.ts', '/lib/dom.js', '/lib/dom.ts', '/lib/form.js', '/lib/form.ts', '/lib/fs.js', '/lib/fs.ts', '/lib/native.js', '/lib/native.ts', '/lib/storage.js', '/lib/storage.ts', '/lib/task.js', '/lib/task.ts', '/lib/theme.js', '/lib/theme.ts', '/lib/tool.js', '/lib/tool.ts', '/lib/zip.js', '/lib/zip.ts', '/theme/', '/theme/byterun.cgt', '/theme/familiar.cgt', '/theme/light.cgt'];
15
+ const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/alayout/', '/app/demo/form/control/alayout/alayout.css', '/app/demo/form/control/alayout/alayout.js', '/app/demo/form/control/alayout/alayout.xml', '/app/demo/form/control/arteditor/', '/app/demo/form/control/arteditor/arteditor.js', '/app/demo/form/control/arteditor/arteditor.xml', '/app/demo/form/control/arteditor/img.js', '/app/demo/form/control/arteditor/img.xml', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.xml', '/app/demo/form/control/box/', '/app/demo/form/control/box/box.js', '/app/demo/form/control/box/box.xml', '/app/demo/form/control/button/', '/app/demo/form/control/button/button.css', '/app/demo/form/control/button/button.js', '/app/demo/form/control/button/button.xml', '/app/demo/form/control/check/', '/app/demo/form/control/check/check.js', '/app/demo/form/control/check/check.xml', '/app/demo/form/control/date/', '/app/demo/form/control/date/date.js', '/app/demo/form/control/date/date.xml', '/app/demo/form/control/desc/', '/app/demo/form/control/desc/desc.js', '/app/demo/form/control/desc/desc.xml', '/app/demo/form/control/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/echarts/', '/app/demo/form/control/echarts/echarts.js', '/app/demo/form/control/echarts/echarts.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/flow/', '/app/demo/form/control/flow/flow.css', '/app/demo/form/control/flow/flow.js', '/app/demo/form/control/flow/flow.xml', '/app/demo/form/control/form/', '/app/demo/form/control/form/form.css', '/app/demo/form/control/form/form.js', '/app/demo/form/control/form/form.xml', '/app/demo/form/control/html/', '/app/demo/form/control/html/html.js', '/app/demo/form/control/html/html.xml', '/app/demo/form/control/iconview/', '/app/demo/form/control/iconview/iconview.js', '/app/demo/form/control/iconview/iconview.xml', '/app/demo/form/control/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.js', '/app/demo/form/control/label/label.xml', '/app/demo/form/control/layout/', '/app/demo/form/control/layout/layout.js', '/app/demo/form/control/layout/layout.xml', '/app/demo/form/control/link/', '/app/demo/form/control/link/link.js', '/app/demo/form/control/link/link.xml', '/app/demo/form/control/list/', '/app/demo/form/control/list/list.css', '/app/demo/form/control/list/list.js', '/app/demo/form/control/list/list.xml', '/app/demo/form/control/loading/', '/app/demo/form/control/loading/loading.xml', '/app/demo/form/control/map/', '/app/demo/form/control/map/map.js', '/app/demo/form/control/map/map.xml', '/app/demo/form/control/marquee/', '/app/demo/form/control/marquee/marquee.js', '/app/demo/form/control/marquee/marquee.xml', '/app/demo/form/control/menu/', '/app/demo/form/control/menu/menu.js', '/app/demo/form/control/menu/menu.xml', '/app/demo/form/control/monaco/', '/app/demo/form/control/monaco/monaco.js', '/app/demo/form/control/monaco/monaco.xml', '/app/demo/form/control/nav/', '/app/demo/form/control/nav/nav.js', '/app/demo/form/control/nav/nav.xml', '/app/demo/form/control/page/', '/app/demo/form/control/page/page.js', '/app/demo/form/control/page/page.xml', '/app/demo/form/control/panel/', '/app/demo/form/control/panel/panel.js', '/app/demo/form/control/panel/panel.xml', '/app/demo/form/control/panel/test1.js', '/app/demo/form/control/panel/test1.xml', '/app/demo/form/control/panel/test2.xml', '/app/demo/form/control/property/', '/app/demo/form/control/property/property.js', '/app/demo/form/control/property/property.xml', '/app/demo/form/control/radio/', '/app/demo/form/control/radio/radio.js', '/app/demo/form/control/radio/radio.xml', '/app/demo/form/control/scroll/', '/app/demo/form/control/scroll/scroll.js', '/app/demo/form/control/scroll/scroll.xml', '/app/demo/form/control/select/', '/app/demo/form/control/select/select.js', '/app/demo/form/control/select/select.xml', '/app/demo/form/control/step/', '/app/demo/form/control/step/step.js', '/app/demo/form/control/step/step.xml', '/app/demo/form/control/svg/', '/app/demo/form/control/svg/svg.js', '/app/demo/form/control/svg/svg.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tip/', '/app/demo/form/control/tip/tip.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/icon.svg', '/app/demo/res/img.jpg', '/app/demo/res/marker.svg', '/app/demo/res/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/app/demo/res/video.mp4', '/app/demo/res/zip.svg', '/app/task/', '/app/task/app.js', '/app/task/config.json', '/app/task/form/', '/app/task/form/bar/', '/app/task/form/bar/bar.js', '/app/task/form/bar/bar.xml', '/app/task/form/desktop/', '/app/task/form/desktop/desktop.xml', '/app/task/locale/', '/app/task/locale/en.json', '/app/task/locale/ja.json', '/app/task/locale/sc.json', '/app/task/locale/tc.json', '/clickgo.js', '/clickgo.ts', '/control/', '/control/arteditor.cgc', '/control/box.cgc', '/control/common.cgc', '/control/desc.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/html.cgc', '/control/iconview.cgc', '/control/map.cgc', '/control/monaco.cgc', '/control/nav.cgc', '/control/page.cgc', '/control/property.cgc', '/control/table.cgc', '/control/task.cgc', '/control/tuieditor.cgc', '/control/xterm.cgc', '/ext/', '/ext/toastui-editor-all.min.js', '/global.css', '/icon.png', '/index.js', '/index.ts', '/lib/', '/lib/control.js', '/lib/control.ts', '/lib/core.js', '/lib/core.ts', '/lib/dom.js', '/lib/dom.ts', '/lib/form.js', '/lib/form.ts', '/lib/fs.js', '/lib/fs.ts', '/lib/native.js', '/lib/native.ts', '/lib/storage.js', '/lib/storage.ts', '/lib/task.js', '/lib/task.ts', '/lib/theme.js', '/lib/theme.ts', '/lib/tool.js', '/lib/tool.ts', '/lib/zip.js', '/lib/zip.ts', '/theme/', '/theme/byterun.cgt', '/theme/familiar.cgt', '/theme/light.cgt'];
16
16
 
17
17
  /** --- fs lib 用到的语言包 --- */
18
18
  const localeData: Record<string, {
package/dist/lib/task.js CHANGED
@@ -1057,6 +1057,12 @@ function run(url, opt = {}, ntid) {
1057
1057
  },
1058
1058
  formatSecond: function (second) {
1059
1059
  return tool.formatSecond(second);
1060
+ },
1061
+ queryStringify: function (query) {
1062
+ return tool.queryStringify(query);
1063
+ },
1064
+ queryParse: function (query) {
1065
+ return tool.queryParse(query);
1060
1066
  }
1061
1067
  },
1062
1068
  'zip': {
package/dist/lib/task.ts CHANGED
@@ -1187,6 +1187,12 @@ export async function run(url: string | types.IApp, opt: types.ITaskRunOptions =
1187
1187
  },
1188
1188
  formatSecond: function(second: number): string {
1189
1189
  return tool.formatSecond(second);
1190
+ },
1191
+ queryStringify: function(query: Record<string, any>): string {
1192
+ return tool.queryStringify(query);
1193
+ },
1194
+ queryParse: function(query: string): Record<string, string | string[]> {
1195
+ return tool.queryParse(query);
1190
1196
  }
1191
1197
  },
1192
1198
  'zip': {
package/dist/lib/tool.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.formatSecond = exports.compar = exports.execCommand = exports.blob2DataUrl = exports.blob2Text = exports.urlAtom = exports.urlResolve = exports.parseUrl = exports.post = exports.fetch = exports.request = exports.rgb2hsl = exports.escapeHTML = exports.getArray = exports.getNumber = exports.getBoolean = exports.random = exports.RANDOM_LUNS = exports.RANDOM_V = exports.RANDOM_LUN = exports.RANDOM_LU = exports.RANDOM_LN = exports.RANDOM_UN = exports.RANDOM_L = exports.RANDOM_U = exports.RANDOM_N = exports.rand = exports.getMimeByPath = exports.stylePrepend = exports.teleportGlue = exports.eventsAttrWrap = exports.layoutClassPrepend = exports.layoutInsertAttr = exports.layoutAddTagClassAndReTagName = exports.styleUrl2DataUrl = exports.match = exports.purify = exports.sleepFrame = exports.nextFrame = exports.sleep = exports.clone = exports.blob2ArrayBuffer = exports.getClassPrototype = void 0;
12
+ exports.queryParse = exports.queryStringify = exports.formatSecond = exports.compar = exports.execCommand = exports.blob2DataUrl = exports.blob2Text = exports.urlAtom = exports.urlResolve = exports.parseUrl = exports.post = exports.fetch = exports.request = exports.rgb2hsl = exports.escapeHTML = exports.getArray = exports.getNumber = exports.getBoolean = exports.random = exports.RANDOM_LUNS = exports.RANDOM_V = exports.RANDOM_LUN = exports.RANDOM_LU = exports.RANDOM_LN = exports.RANDOM_UN = exports.RANDOM_L = exports.RANDOM_U = exports.RANDOM_N = exports.rand = exports.getMimeByPath = exports.stylePrepend = exports.teleportGlue = exports.eventsAttrWrap = exports.layoutClassPrepend = exports.layoutInsertAttr = exports.layoutAddTagClassAndReTagName = exports.styleUrl2DataUrl = exports.match = exports.purify = exports.sleepFrame = exports.nextFrame = exports.sleep = exports.clone = exports.blob2ArrayBuffer = exports.getClassPrototype = void 0;
13
13
  function getClassPrototype(obj, over = [], level = 0) {
14
14
  if (level === 0) {
15
15
  return getClassPrototype(Object.getPrototypeOf(obj), over, level + 1);
@@ -692,3 +692,36 @@ function formatSecond(second) {
692
692
  return (h ? h.toString().padStart(2, '0') + ':' : '') + m.toString().padStart(2, '0') + ':' + s.toString().padStart(2, '0');
693
693
  }
694
694
  exports.formatSecond = formatSecond;
695
+ function queryStringify(query) {
696
+ return Object.entries(query).map(([k, v]) => {
697
+ if (Array.isArray(v)) {
698
+ return v.map((i) => `${encodeURIComponent(k)}=${encodeURIComponent(`${i}`)}`).join('&');
699
+ }
700
+ return `${encodeURIComponent(k)}=${encodeURIComponent(`${v}`)}`;
701
+ }).join('&');
702
+ }
703
+ exports.queryStringify = queryStringify;
704
+ function queryParse(query) {
705
+ const ret = {};
706
+ const arrayKeys = {};
707
+ for (const i of query.split('&')) {
708
+ if (!i.length) {
709
+ continue;
710
+ }
711
+ const pos = i.indexOf('=');
712
+ const key = decodeURIComponent(pos === -1 ? i : i.slice(0, pos));
713
+ const value = pos === -1 ? '' : decodeURIComponent(i.slice(pos + 1));
714
+ if (arrayKeys[key]) {
715
+ ret[key].push(value);
716
+ }
717
+ else if (undefined === ret[key]) {
718
+ ret[key] = value;
719
+ }
720
+ else {
721
+ ret[key] = [ret[key], value];
722
+ arrayKeys[key] = true;
723
+ }
724
+ }
725
+ return ret;
726
+ }
727
+ exports.queryParse = queryParse;
package/dist/lib/tool.ts CHANGED
@@ -867,3 +867,47 @@ export function formatSecond(second: number): string {
867
867
  const s = Math.floor(second - m * 60);
868
868
  return (h ? h.toString().padStart(2, '0') + ':' : '') + m.toString().padStart(2, '0') + ':' + s.toString().padStart(2, '0');
869
869
  }
870
+
871
+ /**
872
+ * --- 将对象转换为 query string ---
873
+ * @param query 要转换的对象
874
+ */
875
+ export function queryStringify(query: Record<string, any>): string {
876
+ return Object.entries(query).map(([k, v]) => {
877
+ if (Array.isArray(v)) {
878
+ return v.map((i) => `${encodeURIComponent(k)}=${encodeURIComponent(`${i}`)}`).join('&');
879
+ }
880
+ return `${encodeURIComponent(k)}=${encodeURIComponent(`${v}`)}`;
881
+ }).join('&');
882
+ }
883
+
884
+ /**
885
+ * --- 将 query string 转换为对象 ---
886
+ * @param query 要转换的字符串
887
+ */
888
+ export function queryParse(query: string): Record<string, string | string[]> {
889
+ const ret: Record<string, string | string[]> = {};
890
+ const arrayKeys: Record<string, boolean> = {};
891
+ for (const i of query.split('&')) {
892
+ if (!i.length) {
893
+ continue;
894
+ }
895
+
896
+ const pos = i.indexOf('=');
897
+
898
+ const key = decodeURIComponent(pos === -1 ? i : i.slice(0, pos));
899
+ const value = pos === -1 ? '' : decodeURIComponent(i.slice(pos + 1));
900
+
901
+ if (arrayKeys[key]) {
902
+ (ret[key] as string[]).push(value);
903
+ }
904
+ else if (undefined === ret[key]) {
905
+ ret[key] = value;
906
+ }
907
+ else {
908
+ ret[key] = [ret[key] as string, value];
909
+ arrayKeys[key] = true;
910
+ }
911
+ }
912
+ return ret;
913
+ }
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clickgo",
3
- "version": "3.11.1",
3
+ "version": "3.11.3",
4
4
  "description": "Background interface, software interface, mobile phone APP interface operation library.",
5
5
  "keywords": [
6
6
  "deskrt",
@@ -20,8 +20,8 @@
20
20
  "devDependencies": {
21
21
  "@litert/eslint-plugin-rules": "^0.1.6",
22
22
  "@litert/loader": "^3.5.1",
23
- "@types/node": "^20.11.6",
24
- "electron": "^28.1.4",
23
+ "@types/node": "^20.11.16",
24
+ "npm": "^28.2.1",
25
25
  "jszip": "^3.10.1",
26
26
  "terser": "^5.27.0",
27
27
  "typescript": "^5.3.3"