clickgo 3.9.0 → 3.9.1

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.0/dist/loader.min.js?path=index&npm={'clickgo':'3.9.0'}"></script>
31
+ <script src="https://cdn.jsdelivr.net/npm/@litert/loader@3.5.0/dist/loader.min.js?path=index&npm={'clickgo':'3.9.1'}"></script>
32
32
  ```
33
33
 
34
34
  **index.js**
@@ -114,7 +114,8 @@ This library is published under [Apache-2.0](./LICENSE) license.
114
114
 
115
115
  [Play SVG Vector](https://www.svgrepo.com/svg/447035/play)
116
116
  [Pause SVG Vector](https://www.svgrepo.com/svg/447033/pause)
117
- [Border Radius SVG Vector](https://www.svgrepo.com/svg/446973/border-radius)
117
+ [Border Radius SVG Vector](https://www.svgrepo.com/svg/446973/border-radius)
118
+ [Copy SVG Vector](https://www.svgrepo.com/svg/446994/copy)
118
119
 
119
120
  ### **LICENSE:** MIT License **AUTHOR:** developmentseed
120
121
 
@@ -97,6 +97,8 @@
97
97
  "/form/control/scroll/scroll.xml",
98
98
  "/form/control/select/select.js",
99
99
  "/form/control/select/select.xml",
100
+ "/form/control/step/step.js",
101
+ "/form/control/step/step.xml",
100
102
  "/form/control/svg/svg.js",
101
103
  "/form/control/svg/svg.xml",
102
104
  "/form/control/tab/tab.js",
@@ -29,6 +29,42 @@ class default_1 extends clickgo.form.AbstractForm {
29
29
  super(...arguments);
30
30
  this.border = true;
31
31
  this.collapse = true;
32
+ this.data = [
33
+ {
34
+ 'name': 'name1',
35
+ 'child': ['val1', 'val2']
36
+ },
37
+ {
38
+ 'name': 'name2',
39
+ 'child': ['val1', 'val2', 'val3']
40
+ },
41
+ {
42
+ 'name': 'name3',
43
+ 'child': ['val1', 'val2', 'val3', 'val4']
44
+ }
45
+ ];
46
+ }
47
+ get maxLine() {
48
+ let len = 0;
49
+ for (const item of this.data) {
50
+ if (!len) {
51
+ len = item.child.length;
52
+ continue;
53
+ }
54
+ len *= item.child.length;
55
+ }
56
+ return len;
57
+ }
58
+ get cols() {
59
+ const cols = [];
60
+ for (let i = 0; i < this.data.length; ++i) {
61
+ if (i === 0) {
62
+ cols.push(this.maxLine / this.data[i].child.length);
63
+ continue;
64
+ }
65
+ cols.push(cols[i - 1] / this.data[i].child.length);
66
+ }
67
+ return cols;
32
68
  }
33
69
  }
34
70
  exports.default = default_1;
@@ -1,4 +1,4 @@
1
- <form title="Desc" width="300" height="300" padding="10">
1
+ <form title="Desc" width="500" height="500" padding="10">
2
2
  <layout gutter="10" direction="v" style="flex: 1;">
3
3
  <desc :border="border" :collapse="collapse">
4
4
  <desc-row>
@@ -22,5 +22,21 @@
22
22
  <button @click="border = !border" style="flex: 1; padding: 10px 0;">border: {{border ? 'true' : 'false'}}</button>
23
23
  <button @click="collapse = !collapse" style="flex: 1; padding: 10px 0;">collapse: {{collapse ? 'true' : 'false'}}</button>
24
24
  </layout>
25
+ <label>Test: {{cols}}</label>
26
+ <flow style="flex: 1;">
27
+ <desc :border="border" :collapse="collapse" style="flex: 1;">
28
+ <desc-row v-for="line of maxLine">
29
+ <!-- 行 1 - max -->
30
+ <template v-for="col of data.length">
31
+ <!-- 列 1 - max -->
32
+ <desc-cell v-if="col===data.length">{{data[col-1].child[(line-1)%cols[col-2]]}}</desc-cell>
33
+ <desc-cell v-else-if="line%cols[col-1]===1" :rowspan="cols[col-1]">{{data[col-1].child[Math.floor((line-1)/cols[col-1])%data[col-1].child.length]}}</desc-cell>
34
+ </template>
35
+ <desc-cell>LINE-{{line}}</desc-cell>
36
+ <desc-cell>DATA1</desc-cell>
37
+ <desc-cell>DATA2</desc-cell>
38
+ </desc-row>
39
+ </desc>
40
+ </flow>
25
41
  </layout>
26
42
  </form>
@@ -37,6 +37,8 @@
37
37
  </nav-item>
38
38
  <nav-item label="Root1"></nav-item>
39
39
  <nav-item label="Root2"></nav-item>
40
+ <nav-item label="Root3" name="root?id=1"></nav-item>
41
+ <nav-item label="Root4" name="root?id=2"></nav-item>
40
42
  <nav-item label="Event" @select="onSelect"></nav-item>
41
43
  <nav-item label="Root3" icon="/package/res/icon.svg"></nav-item>
42
44
  <nav-item label="Root4" icon="/package/res/marker.svg"></nav-item>
@@ -92,7 +92,6 @@ class default_1 extends clickgo.form.AbstractForm {
92
92
  'children': ['xixi', 'xixida', 'gogogo']
93
93
  }
94
94
  ];
95
- this.slist2r = [];
96
95
  this.addRemoveList = [];
97
96
  this.select2 = ['haha2'];
98
97
  this.aemodel = [];
@@ -45,13 +45,13 @@
45
45
  <layout gutter="10" direction="v" style="padding: 10px;">
46
46
  <label>Now select value is {{select2}}</label>
47
47
  <label>Label: {{label2}}</label>
48
- <select v-model="select2" @label="label2 = $event" :data="remote ? slist2r : slist2" :disabled="disabled" :editable="editable" :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" @load="onLoad" @remote="onRemote" @add="onAdd" @remove="onRemove" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
48
+ <select v-model="select2" @label="label2 = $event" :data="slist2" :disabled="disabled" :editable="editable" :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" @load="onLoad" @remote="onRemote" @add="onAdd" @remove="onRemove" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
49
49
  <list :data="addRemoveList" style="height: 100px;"></list>
50
50
  <label>Custom height:</label>
51
- <select :data="remote ? slist2r : ['1','2','3','4','5']" :disabled="disabled" :editable="editable" :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" style="height: 60px;" @load="onLoad" @remote="onRemote" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
51
+ <select :data="['1','2','3','4','5']" :disabled="disabled" :editable="editable" :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" style="height: 60px;" @load="onLoad" @remote="onRemote" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
52
52
  <label>Always editable: {{aemodel}}</label>
53
53
  <layout gutter="10">
54
- <select v-model="aemodel" :data="remote ? slist2r : ['1','2','3','4','5']" :disabled="disabled" editable :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" placeholder="Please enter" @load="onLoad" @remote="onRemote" style="flex: 1;" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
54
+ <select v-model="aemodel" :data="['1','2','3','4','5']" :disabled="disabled" editable :multi="multi" :tree="tree" :async="async" :search="search" :remote="remote" :remote-delay="remoteDelay[0]" :icon="icon" icon-default="../../../res/txt.svg" placeholder="Please enter" @load="onLoad" @remote="onRemote" style="flex: 1;" :style="{'font-size': fontSize ? '16px' : undefined, 'padding': padding ? '15px' : undefined, 'background': background ? 'red' : undefined, 'color': background ? '#FFF' : undefined}"></select>
55
55
  <button @click="aemodel.length=0">clear</button>
56
56
  <button @click="aemodel[0] = '4'">4</button>
57
57
  </layout>
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const clickgo = __importStar(require("clickgo"));
27
+ class default_1 extends clickgo.form.AbstractForm {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.data = [
31
+ {
32
+ 'label': 'step1'
33
+ },
34
+ {
35
+ 'value': 'step2'
36
+ },
37
+ {
38
+ 'icon': '/package/res/marker.svg',
39
+ 'value': 'icon'
40
+ },
41
+ {
42
+ 'label': 'successful',
43
+ 'value': 'step3',
44
+ 'desc': 'qq'
45
+ }
46
+ ];
47
+ this.plain = false;
48
+ this.step1 = '';
49
+ }
50
+ }
51
+ exports.default = default_1;
@@ -0,0 +1,16 @@
1
+ <form title="Step" width="500" height="500" min-width="300" min-height="400" padding="10">
2
+ <layout direction="v" gutter="10" style="flex: 1;">
3
+ <label>value: {{step1}}</label>
4
+ <step :data="data" :plain="plain" v-model="step1"></step>
5
+ <layout gutter="10">
6
+ <button style="flex: 1;" @click="step1 = 'step1'">step1</button>
7
+ <button style="flex: 1;" @click="step1 = 'step2'">step2</button>
8
+ <button style="flex: 1;" @click="step1 = 'icon'">icon</button>
9
+ </layout>
10
+ <layout gutter="10">
11
+ <button style="flex: 1;" @click="step1 = 'step3'">step3</button>
12
+ <button style="flex: 1;" @click="step1 = '#'">done</button>
13
+ <button style="flex: 1;" @click="plain = !plain">{{plain ? '' : '!'}}plain</button>
14
+ </layout>
15
+ </layout>
16
+ </form>
@@ -3,7 +3,7 @@
3
3
  <label>volume: {{volume}}</label>
4
4
  <video src="/package/res/video.mp4" :controls="controls" :loop="loop" :muted="muted" v-model:volume="volume" v-model:play="play" style="flex: 1; height: 0;"></video>
5
5
  <layout gutter="10">
6
- <!--<button @click="controls = !controls" style="flex: 1;">{{controls ? '' : '!'}}controls</button>-->
6
+ <button @click="controls = !controls" style="flex: 1;">{{controls ? '' : '!'}}controls</button>
7
7
  <button @click="loop = !loop" style="flex: 1;">{{loop ? '' : '!'}}loop</button>
8
8
  <button @click="muted = !muted" style="flex: 1;">{{muted ? '' : '!'}}muted</button>
9
9
  </layout>
@@ -69,6 +69,7 @@ const table_1 = __importDefault(require("./control/table/table"));
69
69
  const text_1 = __importDefault(require("./control/text/text"));
70
70
  const vflow_1 = __importDefault(require("./control/vflow/vflow"));
71
71
  const video_1 = __importDefault(require("./control/video/video"));
72
+ const step_1 = __importDefault(require("./control/step/step"));
72
73
  const xterm_1 = __importDefault(require("./control/xterm/xterm"));
73
74
  const echarts_1 = __importDefault(require("./control/echarts/echarts"));
74
75
  const tuieditor_1 = __importDefault(require("./control/tuieditor/tuieditor"));
@@ -161,6 +162,10 @@ class default_1 extends clickgo.form.AbstractForm {
161
162
  frm = yield clickgo.form.create(video_1.default);
162
163
  break;
163
164
  }
165
+ case 'cstep': {
166
+ frm = yield clickgo.form.create(step_1.default);
167
+ break;
168
+ }
164
169
  case 'cxterm': {
165
170
  frm = yield clickgo.form.create(xterm_1.default);
166
171
  break;
@@ -69,7 +69,10 @@
69
69
  </layout>
70
70
  <layout gutter="10">
71
71
  <button @click="openForm('ciconview')">Iconview</button>
72
- <button @click="openForm('cvideo')">Video (Beta)</button>
72
+ <button @click="openForm('cvideo')">Video</button>
73
+ </layout>
74
+ <layout gutter="10">
75
+ <button @click="openForm('cstep')">Step</button>
73
76
  </layout>
74
77
  <layout gutter="10">
75
78
  <button @click="openForm('cmonaco')">Monaco</button>
@@ -60,6 +60,12 @@ class default_1 extends clickgo.form.AbstractForm {
60
60
  get isCtrl() {
61
61
  return clickgo.dom.is.ctrl;
62
62
  }
63
+ get isMeta() {
64
+ return clickgo.dom.is.meta;
65
+ }
66
+ get isFull() {
67
+ return clickgo.dom.is.full;
68
+ }
63
69
  setGlobalCursor(type) {
64
70
  clickgo.dom.setGlobalCursor(type);
65
71
  }
@@ -196,7 +202,9 @@ class default_1 extends clickgo.form.AbstractForm {
196
202
  });
197
203
  }
198
204
  fullscreen() {
199
- clickgo.dom.fullscreen();
205
+ return __awaiter(this, void 0, void 0, function* () {
206
+ yield clickgo.dom.fullscreen();
207
+ });
200
208
  }
201
209
  onMounted() {
202
210
  clickgo.dom.watchStyle(this.refs.watchStyle.$el, 'font-size', (n, v) => {
@@ -60,6 +60,8 @@
60
60
  <label>clickgo.dom.is.move: {{isMove ? 'true' : 'false'}}</label>
61
61
  <label>clickgo.dom.is.shift: {{isShift ? 'true' : 'false'}}</label>
62
62
  <label>clickgo.dom.is.ctrl: {{isCtrl ? 'true' : 'false'}}</label>
63
+ <label>clickgo.dom.is.meta: {{isMeta ? 'true' : 'false'}}</label>
64
+ <label>clickgo.dom.is.full: {{isFull ? 'true' : 'false'}}</label>
63
65
  </layout>
64
66
  </flow>
65
67
  </form>
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.9.0';
27
+ const version = '3.9.1';
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.9.0';
16
+ const version = '3.9.1';
17
17
  export function getVersion(): string {
18
18
  return version;
19
19
  }
Binary file
Binary file
package/dist/lib/dom.js CHANGED
@@ -32,7 +32,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.fullscreen = exports.siblingsData = exports.siblings = exports.findParentByTag = exports.findParentByClass = exports.findParentByData = exports.bindResize = exports.bindMove = exports.is = exports.bindDrag = exports.setDragData = exports.bindLong = exports.allowEvent = exports.bindGesture = exports.bindDown = exports.bindDblClick = exports.bindClick = exports.getWatchInfo = exports.clearWatchProperty = exports.isWatchProperty = exports.watchProperty = exports.clearWatchStyle = exports.isWatchStyle = exports.watchStyle = exports.clearWatch = exports.isWatch = exports.unwatch = exports.watch = exports.getWatchCount = exports.clearWatchSize = exports.isWatchSize = exports.unwatchSize = exports.watchSize = exports.getWatchSizeCount = exports.getStyleCount = exports.removeStyle = exports.pushStyle = exports.removeFromStyleList = exports.createToStyleList = exports.hasTouchButMouse = exports.setGlobalCursor = exports.inPage = void 0;
35
+ exports.exitFullscreen = exports.fullscreen = exports.siblingsData = exports.siblings = exports.findParentByTag = exports.findParentByClass = exports.findParentByData = exports.bindResize = exports.bindMove = exports.is = exports.bindDrag = exports.setDragData = exports.bindLong = exports.allowEvent = exports.bindGesture = exports.bindDown = exports.bindDblClick = exports.bindClick = exports.getWatchInfo = exports.clearWatchProperty = exports.isWatchProperty = exports.watchProperty = exports.clearWatchStyle = exports.isWatchStyle = exports.watchStyle = exports.clearWatch = exports.isWatch = exports.unwatch = exports.watch = exports.getWatchCount = exports.clearWatchSize = exports.isWatchSize = exports.unwatchSize = exports.watchSize = exports.getWatchSizeCount = exports.getStyleCount = exports.removeStyle = exports.pushStyle = exports.removeFromStyleList = exports.createToStyleList = exports.hasTouchButMouse = exports.setGlobalCursor = exports.inPage = void 0;
36
36
  const clickgo = __importStar(require("../clickgo"));
37
37
  const form = __importStar(require("./form"));
38
38
  const core = __importStar(require("./core"));
@@ -1344,7 +1344,8 @@ exports.is = clickgo.vue.reactive({
1344
1344
  'move': false,
1345
1345
  'shift': false,
1346
1346
  'ctrl': false,
1347
- 'meta': false
1347
+ 'meta': false,
1348
+ 'full': false
1348
1349
  });
1349
1350
  window.addEventListener('keydown', function (e) {
1350
1351
  switch (e.key) {
@@ -1841,20 +1842,39 @@ function siblingsData(el, name) {
1841
1842
  }
1842
1843
  exports.siblingsData = siblingsData;
1843
1844
  function fullscreen() {
1844
- const he = document.getElementsByTagName('html')[0];
1845
- if (he.webkitRequestFullscreen) {
1846
- he.webkitRequestFullscreen();
1847
- return true;
1848
- }
1849
- else if (he.requestFullscreen) {
1850
- he.requestFullscreen();
1851
- return true;
1852
- }
1853
- else {
1854
- return false;
1855
- }
1845
+ return __awaiter(this, void 0, void 0, function* () {
1846
+ const he = document.getElementsByTagName('html')[0];
1847
+ if (he.webkitRequestFullscreen) {
1848
+ yield he.webkitRequestFullscreen();
1849
+ return true;
1850
+ }
1851
+ else if (he.requestFullscreen) {
1852
+ yield he.requestFullscreen();
1853
+ return true;
1854
+ }
1855
+ else {
1856
+ return false;
1857
+ }
1858
+ });
1856
1859
  }
1857
1860
  exports.fullscreen = fullscreen;
1861
+ function exitFullscreen() {
1862
+ return __awaiter(this, void 0, void 0, function* () {
1863
+ const d = document;
1864
+ if (d.webkitExitFullscreen) {
1865
+ yield d.webkitExitFullscreen();
1866
+ return true;
1867
+ }
1868
+ else if (d.exitFullscreen) {
1869
+ yield d.exitFullscreen();
1870
+ return true;
1871
+ }
1872
+ else {
1873
+ return false;
1874
+ }
1875
+ });
1876
+ }
1877
+ exports.exitFullscreen = exitFullscreen;
1858
1878
  document.addEventListener('visibilitychange', function () {
1859
1879
  if (document.hidden) {
1860
1880
  cancelAnimationFrame(watchTimer);
@@ -1863,3 +1883,14 @@ document.addEventListener('visibilitychange', function () {
1863
1883
  watchTimer = requestAnimationFrame(watchTimerHandler);
1864
1884
  }
1865
1885
  });
1886
+ document.addEventListener('fullscreenchange', function () {
1887
+ if (document.webkitFullscreenElement) {
1888
+ exports.is.full = true;
1889
+ return;
1890
+ }
1891
+ if (document.fullscreenElement) {
1892
+ exports.is.full = true;
1893
+ return;
1894
+ }
1895
+ exports.is.full = false;
1896
+ });
package/dist/lib/dom.ts CHANGED
@@ -1061,7 +1061,7 @@ export function bindDblClick(
1061
1061
  * @param oe MouseEvent | TouchEvent
1062
1062
  * @param opt 回调选项
1063
1063
  */
1064
- export function bindDown(oe: MouseEvent | TouchEvent, opt: types.IBindDownOptions): void {
1064
+ export function bindDown<T extends MouseEvent | TouchEvent>(oe: T, opt: types.IBindDownOptions<T>): void {
1065
1065
  if (hasTouchButMouse(oe)) {
1066
1066
  return;
1067
1067
  }
@@ -1079,8 +1079,8 @@ export function bindDown(oe: MouseEvent | TouchEvent, opt: types.IBindDownOption
1079
1079
  /** --- 是否是第一次执行 move --- */
1080
1080
  let isStart: boolean = false;
1081
1081
 
1082
- let end: ((e: MouseEvent | TouchEvent) => void) | undefined = undefined;
1083
- const move = function(e: MouseEvent | TouchEvent): void {
1082
+ let end: (<TU extends T>(e: TU) => void) | undefined = undefined;
1083
+ const move = function<TU extends T>(e: TU): void {
1084
1084
  // --- 虽然上层已经有 preventDefault 了,但是有可能 e.target 会被注销,这样就响应不到上层的 preventDefault 事件,所以要在这里再加一个 ---
1085
1085
  if (!e.target || !document.body.contains(e.target as HTMLElement) && e.cancelable) {
1086
1086
  e.preventDefault();
@@ -1123,42 +1123,42 @@ export function bindDown(oe: MouseEvent | TouchEvent, opt: types.IBindDownOption
1123
1123
  isStart = true;
1124
1124
  if (opt.start && (opt.start(e) === false)) {
1125
1125
  if (e instanceof MouseEvent) {
1126
- window.removeEventListener('mousemove', move);
1127
- window.removeEventListener('mouseup', end!);
1126
+ window.removeEventListener('mousemove', move as EventListener);
1127
+ window.removeEventListener('mouseup', end as EventListener);
1128
1128
  }
1129
1129
  else {
1130
- (oe.target as HTMLElement).removeEventListener('touchmove', move);
1131
- (oe.target as HTMLElement).removeEventListener('touchend', end!);
1132
- (oe.target as HTMLElement).removeEventListener('touchcancel', end!);
1130
+ (oe.target as HTMLElement).removeEventListener('touchmove', move as EventListener);
1131
+ (oe.target as HTMLElement).removeEventListener('touchend', end as EventListener);
1132
+ (oe.target as HTMLElement).removeEventListener('touchcancel', end as EventListener);
1133
1133
  }
1134
1134
  return;
1135
1135
  }
1136
1136
  }
1137
1137
  if (opt.move && (opt.move(e, dir) === false)) {
1138
1138
  if (e instanceof MouseEvent) {
1139
- window.removeEventListener('mousemove', move);
1140
- window.removeEventListener('mouseup', end!);
1139
+ window.removeEventListener('mousemove', move as EventListener);
1140
+ window.removeEventListener('mouseup', end as EventListener);
1141
1141
  }
1142
1142
  else {
1143
1143
  if (oe.target) {
1144
- (oe.target as HTMLElement).removeEventListener('touchmove', move);
1145
- (oe.target as HTMLElement).removeEventListener('touchend', end!);
1146
- (oe.target as HTMLElement).removeEventListener('touchcancel', end!);
1144
+ (oe.target as HTMLElement).removeEventListener('touchmove', move as EventListener);
1145
+ (oe.target as HTMLElement).removeEventListener('touchend', end as EventListener);
1146
+ (oe.target as HTMLElement).removeEventListener('touchcancel', end as EventListener);
1147
1147
  }
1148
1148
  }
1149
1149
  return;
1150
1150
  }
1151
1151
  };
1152
- end = function(e: MouseEvent | TouchEvent): void {
1152
+ end = function<TU extends T>(e: TU): void {
1153
1153
  if (e instanceof MouseEvent) {
1154
- window.removeEventListener('mousemove', move);
1155
- window.removeEventListener('mouseup', end!);
1154
+ window.removeEventListener('mousemove', move as EventListener);
1155
+ window.removeEventListener('mouseup', end as EventListener);
1156
1156
  }
1157
1157
  else {
1158
1158
  if (oe.target) {
1159
- (oe.target as HTMLElement).removeEventListener('touchmove', move);
1160
- (oe.target as HTMLElement).removeEventListener('touchend', end!);
1161
- (oe.target as HTMLElement).removeEventListener('touchcancel', end!);
1159
+ (oe.target as HTMLElement).removeEventListener('touchmove', move as EventListener);
1160
+ (oe.target as HTMLElement).removeEventListener('touchend', end as EventListener);
1161
+ (oe.target as HTMLElement).removeEventListener('touchcancel', end as EventListener);
1162
1162
  }
1163
1163
  }
1164
1164
  opt.up?.(e);
@@ -1167,17 +1167,17 @@ export function bindDown(oe: MouseEvent | TouchEvent, opt: types.IBindDownOption
1167
1167
  }
1168
1168
  };
1169
1169
  if (oe instanceof MouseEvent) {
1170
- window.addEventListener('mousemove', move, {
1170
+ window.addEventListener('mousemove', move as (e: MouseEvent) => void, {
1171
1171
  'passive': false
1172
1172
  });
1173
- window.addEventListener('mouseup', end);
1173
+ window.addEventListener('mouseup', end as (e: MouseEvent) => void);
1174
1174
  }
1175
1175
  else {
1176
- (oe.target as HTMLElement).addEventListener('touchmove', move, {
1176
+ (oe.target as HTMLElement).addEventListener('touchmove', move as (e: TouchEvent) => void, {
1177
1177
  'passive': false
1178
1178
  });
1179
- (oe.target as HTMLElement).addEventListener('touchend', end);
1180
- (oe.target as HTMLElement).addEventListener('touchcancel', end);
1179
+ (oe.target as HTMLElement).addEventListener('touchend', end as (e: TouchEvent) => void);
1180
+ (oe.target as HTMLElement).addEventListener('touchcancel', end as (e: TouchEvent) => void);
1181
1181
  }
1182
1182
  opt.down?.(oe);
1183
1183
  }
@@ -1709,7 +1709,8 @@ export const is = clickgo.vue.reactive({
1709
1709
  'move': false,
1710
1710
  'shift': false,
1711
1711
  'ctrl': false,
1712
- 'meta': false
1712
+ 'meta': false,
1713
+ 'full': false
1713
1714
  });
1714
1715
 
1715
1716
  window.addEventListener('keydown', function(e: KeyboardEvent) {
@@ -2308,14 +2309,30 @@ export function siblingsData(el: HTMLElement, name: string): HTMLElement[] {
2308
2309
  }
2309
2310
 
2310
2311
  // --- 全屏 ---
2311
- export function fullscreen(): boolean {
2312
+ export async function fullscreen(): Promise<boolean> {
2312
2313
  const he = document.getElementsByTagName('html')[0] as any;
2313
2314
  if (he.webkitRequestFullscreen) {
2314
- he.webkitRequestFullscreen();
2315
+ await he.webkitRequestFullscreen();
2315
2316
  return true;
2316
2317
  }
2317
2318
  else if (he.requestFullscreen) {
2318
- he.requestFullscreen();
2319
+ await he.requestFullscreen();
2320
+ return true;
2321
+ }
2322
+ else {
2323
+ return false;
2324
+ }
2325
+ }
2326
+
2327
+ // --- 退出全屏 ---
2328
+ export async function exitFullscreen(): Promise<boolean> {
2329
+ const d = document as any;
2330
+ if (d.webkitExitFullscreen) {
2331
+ await d.webkitExitFullscreen();
2332
+ return true;
2333
+ }
2334
+ else if (d.exitFullscreen) {
2335
+ await d.exitFullscreen();
2319
2336
  return true;
2320
2337
  }
2321
2338
  else {
@@ -2334,3 +2351,16 @@ document.addEventListener('visibilitychange', function() {
2334
2351
  watchTimer = requestAnimationFrame(watchTimerHandler);
2335
2352
  }
2336
2353
  });
2354
+
2355
+ // --- 监听 fullscreen 情况的变动 ---
2356
+ document.addEventListener('fullscreenchange', function() {
2357
+ if ((document as any).webkitFullscreenElement) {
2358
+ is.full = true;
2359
+ return;
2360
+ }
2361
+ if (document.fullscreenElement) {
2362
+ is.full = true;
2363
+ return;
2364
+ }
2365
+ is.full = false;
2366
+ });
package/dist/lib/form.js CHANGED
@@ -272,6 +272,7 @@ class AbstractForm extends AbstractCommon {
272
272
  constructor() {
273
273
  super(...arguments);
274
274
  this.isNativeSync = false;
275
+ this._inStep = false;
275
276
  this._firstShow = true;
276
277
  this.dialogResult = '';
277
278
  }
@@ -318,6 +319,19 @@ class AbstractForm extends AbstractCommon {
318
319
  v.$data._historyHash.splice(-1);
319
320
  core.trigger('formHashChange', this.taskId, this.formId, parent);
320
321
  }
322
+ get inStep() {
323
+ return this._inStep;
324
+ }
325
+ enterStep(opt) {
326
+ if (this._inStep) {
327
+ return false;
328
+ }
329
+ if (opt.list[0].hash !== this.formHash) {
330
+ return false;
331
+ }
332
+ this._inStep = true;
333
+ return false;
334
+ }
321
335
  show() {
322
336
  const v = this;
323
337
  if (this._firstShow) {
package/dist/lib/form.ts CHANGED
@@ -447,6 +447,38 @@ export abstract class AbstractForm extends AbstractCommon {
447
447
  core.trigger('formHashChange', this.taskId, this.formId, parent);
448
448
  }
449
449
 
450
+ // --- step 相关 ---
451
+
452
+ private _inStep: boolean = false;
453
+
454
+ /** --- 当前是否在 step 环节中 --- */
455
+ public get inStep(): boolean {
456
+ return this._inStep;
457
+ }
458
+
459
+ /** --- 进入 form hash 为源的步进条(Dev 版) --- */
460
+ public enterStep(opt: {
461
+ /** --- 当前的步骤名 --- */
462
+ 'name'?: string;
463
+ /** --- hash list,第一个必须为当前的 formHash --- */
464
+ 'list': Array<{
465
+ /** --- 子步骤名 --- */
466
+ 'name': string;
467
+ /** --- 步骤 hash --- */
468
+ 'hash': string;
469
+ }>;
470
+ }): boolean {
471
+ if (this._inStep) {
472
+ return false;
473
+ }
474
+ if (opt.list[0].hash !== this.formHash) {
475
+ return false;
476
+ }
477
+ // --- 进入当前页面步骤 ---
478
+ this._inStep = true;
479
+ return false;
480
+ }
481
+
450
482
  /** --- 当前是不是初次显示 --- */
451
483
  private _firstShow: boolean = true;
452
484
 
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/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/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/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/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/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/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/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/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/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/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
@@ -563,6 +563,9 @@ function run(url, opt = {}, ntid) {
563
563
  },
564
564
  fullscreen: function () {
565
565
  return dom.fullscreen();
566
+ },
567
+ exitFullscreen: function () {
568
+ return dom.exitFullscreen();
566
569
  }
567
570
  },
568
571
  'form': {
@@ -1048,8 +1051,11 @@ function run(url, opt = {}, ntid) {
1048
1051
  execCommand: function (ac) {
1049
1052
  tool.execCommand(ac);
1050
1053
  },
1051
- compar(before, after) {
1054
+ compar: function (before, after) {
1052
1055
  return tool.compar(before, after);
1056
+ },
1057
+ formatSecond: function (second) {
1058
+ return tool.formatSecond(second);
1053
1059
  }
1054
1060
  },
1055
1061
  'zip': {
package/dist/lib/task.ts CHANGED
@@ -602,7 +602,7 @@ export async function run(url: string | types.IApp, opt: types.ITaskRunOptions =
602
602
  ): void {
603
603
  dom.bindDblClick(e, handler);
604
604
  },
605
- bindDown: function(oe: MouseEvent | TouchEvent, opt: types.IBindDownOptions) {
605
+ bindDown: function<T extends MouseEvent | TouchEvent>(oe: T, opt: types.IBindDownOptions<T>) {
606
606
  dom.bindDown(oe, opt);
607
607
  },
608
608
  bindGesture: function(oe: MouseEvent | TouchEvent | WheelEvent, before: (e: MouseEvent | TouchEvent | WheelEvent, dir: 'top' | 'right' | 'bottom' | 'left') => number, handler: (dir: 'top' | 'right' | 'bottom' | 'left') => void): void {
@@ -649,8 +649,11 @@ export async function run(url: string | types.IApp, opt: types.ITaskRunOptions =
649
649
  siblingsData: function(el: HTMLElement, name: string): HTMLElement[] {
650
650
  return dom.siblingsData(el, name);
651
651
  },
652
- fullscreen: function(): boolean {
652
+ fullscreen: function() {
653
653
  return dom.fullscreen();
654
+ },
655
+ exitFullscreen: function() {
656
+ return dom.exitFullscreen();
654
657
  }
655
658
  },
656
659
  'form': {
@@ -1167,7 +1170,7 @@ export async function run(url: string | types.IApp, opt: types.ITaskRunOptions =
1167
1170
  execCommand: function(ac: string): void {
1168
1171
  tool.execCommand(ac);
1169
1172
  },
1170
- compar(before: string[], after: string[]): {
1173
+ compar: function(before: string[], after: string[]): {
1171
1174
  'remove': Record<string, number>;
1172
1175
  'add': Record<string, number>;
1173
1176
  'length': {
@@ -1176,6 +1179,9 @@ export async function run(url: string | types.IApp, opt: types.ITaskRunOptions =
1176
1179
  };
1177
1180
  } {
1178
1181
  return tool.compar(before, after);
1182
+ },
1183
+ formatSecond: function(second: number): string {
1184
+ return tool.formatSecond(second);
1179
1185
  }
1180
1186
  },
1181
1187
  '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.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.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);
@@ -271,8 +271,8 @@ function layoutClassPrepend(layout, preps) {
271
271
  }
272
272
  }
273
273
  return ` class="${resultList.join(' ')}"`;
274
- }).replace(/ :class=(["']).+?>/gi, function (t, sp) {
275
- return t.replace(new RegExp(` :class=${sp}(.+?)${sp}`, 'gi'), function (t, t1) {
274
+ }).replace(/ :class=(["']).+?["'](\s+[a-zA-Z0-9-_:@]+=|\s*>)/gi, function (t, sp) {
275
+ return t.replace(new RegExp(` :class=${sp}(.+?)${sp}(\\s+[a-zA-Z0-9-_:@]+=|\\s*>)`, 'gi'), function (t, t1, t2) {
276
276
  t1 = t1.trim();
277
277
  if (t1.startsWith('[')) {
278
278
  t1 = t1.slice(1, -1);
@@ -291,7 +291,7 @@ function layoutClassPrepend(layout, preps) {
291
291
  else {
292
292
  t1 = layoutClassPrependObject(t1);
293
293
  }
294
- return ` :class="${t1}"`;
294
+ return ` :class="${t1}"${t2}`;
295
295
  });
296
296
  }).replace(/ id=(["'])/gi, ' id=$1' + preps[0]);
297
297
  }
@@ -664,3 +664,11 @@ function compar(before, after) {
664
664
  return rtn;
665
665
  }
666
666
  exports.compar = compar;
667
+ function formatSecond(second) {
668
+ const h = Math.floor(second / 3600);
669
+ second = second - h * 3600;
670
+ const m = Math.floor(second / 60);
671
+ const s = Math.floor(second - m * 60);
672
+ return (h ? h.toString().padStart(2, '0') + ':' : '') + m.toString().padStart(2, '0') + ':' + s.toString().padStart(2, '0');
673
+ }
674
+ exports.formatSecond = formatSecond;
package/dist/lib/tool.ts CHANGED
@@ -357,8 +357,9 @@ export function layoutClassPrepend(layout: string, preps: string[]): string {
357
357
  }
358
358
  }
359
359
  return ` class="${resultList.join(' ')}"`;
360
- }).replace(/ :class=(["']).+?>/gi, function(t, sp) {
361
- return t.replace(new RegExp(` :class=${sp}(.+?)${sp}`, 'gi'), function(t, t1: string) {
360
+ //}).replace(/ :class=(["']).+?>/gi, function(t, sp) {
361
+ }).replace(/ :class=(["']).+?["'](\s+[a-zA-Z0-9-_:@]+=|\s*>)/gi, function(t, sp) {
362
+ return t.replace(new RegExp(` :class=${sp}(.+?)${sp}(\\s+[a-zA-Z0-9-_:@]+=|\\s*>)`, 'gi'), function(t, t1: string, t2: string) {
362
363
  // --- t1 为 [] 或 {} ---
363
364
  t1 = t1.trim();
364
365
  if (t1.startsWith('[')) {
@@ -380,7 +381,7 @@ export function layoutClassPrepend(layout: string, preps: string[]): string {
380
381
  else {
381
382
  t1 = layoutClassPrependObject(t1);
382
383
  }
383
- return ` :class="${t1}"`;
384
+ return ` :class="${t1}"${t2}`;
384
385
  });
385
386
  }).replace(/ id=(["'])/gi, ' id=$1' + preps[0]);
386
387
  }
@@ -837,3 +838,12 @@ export function compar(before: string[], after: string[]): {
837
838
  }
838
839
  return rtn;
839
840
  }
841
+
842
+ /** --- 将秒数格式化为 0:0:0 的字符串 --- */
843
+ export function formatSecond(second: number): string {
844
+ const h = Math.floor(second / 3600);
845
+ second = second - h * 3600;
846
+ const m = Math.floor(second / 60);
847
+ const s = Math.floor(second - m * 60);
848
+ return (h ? h.toString().padStart(2, '0') + ':' : '') + m.toString().padStart(2, '0') + ':' + s.toString().padStart(2, '0');
849
+ }
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clickgo",
3
- "version": "3.9.0",
3
+ "version": "3.9.1",
4
4
  "description": "Background interface, software interface, mobile phone APP interface operation library.",
5
5
  "keywords": [
6
6
  "deskrt",
package/types/index.d.ts CHANGED
@@ -173,15 +173,15 @@ export interface IDomSize {
173
173
  }
174
174
 
175
175
  /** --- 绑定鼠标事件选项 --- */
176
- export interface IBindDownOptions {
177
- 'down'?: (e: MouseEvent | TouchEvent) => void;
178
- 'start'?: (e: MouseEvent | TouchEvent) => any;
176
+ export interface IBindDownOptions<T extends MouseEvent | TouchEvent> {
177
+ 'down'?: (e: T) => void;
178
+ 'start'?: (e: T) => any;
179
179
  'move'?: (
180
- e: MouseEvent | TouchEvent,
180
+ e: T,
181
181
  dir: 'top' | 'right' | 'bottom' | 'left'
182
182
  ) => any;
183
- 'up'?: (e: MouseEvent | TouchEvent) => void;
184
- 'end'?: (e: MouseEvent | TouchEvent) => void;
183
+ 'up'?: (e: T) => void;
184
+ 'end'?: (e: T) => void;
185
185
  }
186
186
 
187
187
  /** --- 绑定拖动选项 move 回调的回调参数 --- */