clickgo 3.1.1-dev10 → 3.1.3-dev12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/demo/app.js +0 -72
- package/dist/app/demo/config.json +109 -0
- package/dist/app/demo/form/control/button/button.js +12 -11
- package/dist/app/demo/form/control/button/button.xml +6 -6
- package/dist/app/demo/form/control/check/check.js +14 -10
- package/dist/app/demo/form/control/file/file.js +15 -13
- package/dist/app/demo/form/control/{overflow/overflow.css → flow/flow.css} +0 -0
- package/dist/app/demo/form/control/flow/flow.js +64 -0
- package/dist/app/demo/form/control/{overflow/overflow.scss → flow/flow.scss} +0 -0
- package/dist/app/demo/form/control/flow/flow.xml +101 -0
- package/dist/app/demo/form/control/form/form.js +1 -1
- package/dist/app/demo/form/control/form/form.xml +3 -3
- package/dist/app/demo/form/control/img/img.xml +2 -2
- package/dist/app/demo/form/control/list/list.js +95 -75
- package/dist/app/demo/form/control/list/list.xml +15 -11
- package/dist/app/demo/form/control/marquee/marquee.js +12 -10
- package/dist/app/demo/form/control/menu/menu.js +10 -6
- package/dist/app/demo/form/control/monaco/monaco.js +50 -60
- package/dist/app/demo/form/control/monaco/monaco.xml +6 -5
- package/dist/app/demo/form/control/property/property.js +131 -127
- package/dist/app/demo/form/control/radio/radio.js +9 -5
- package/dist/app/demo/form/control/scroll/scroll.js +16 -12
- package/dist/app/demo/form/control/scroll/scroll.xml +10 -10
- package/dist/app/demo/form/control/select/select.js +132 -71
- package/dist/app/demo/form/control/select/select.xml +69 -67
- package/dist/app/demo/form/control/tab/tab.js +21 -20
- package/dist/app/demo/form/control/tab/tab.xml +2 -2
- package/dist/app/demo/form/control/text/text.js +53 -45
- package/dist/app/demo/form/control/text/text.xml +3 -3
- package/dist/app/demo/form/control/{greatview/greatview.css → vflow/vflow.css} +0 -0
- package/dist/app/demo/form/control/vflow/vflow.js +79 -0
- package/dist/app/demo/form/control/{greatview/greatview.scss → vflow/vflow.scss} +0 -0
- package/dist/app/demo/form/control/{greatview/greatview.xml → vflow/vflow.xml} +25 -25
- package/dist/app/demo/form/event/form/form.js +58 -56
- package/dist/app/demo/form/event/form/form.xml +3 -3
- package/dist/app/demo/form/event/screen/screen.js +30 -28
- package/dist/app/demo/form/event/screen/screen.xml +2 -2
- package/dist/app/demo/form/event/task/task.js +31 -31
- package/dist/app/demo/form/event/task/task.xml +3 -3
- package/dist/app/demo/form/main.js +166 -5
- package/dist/app/demo/form/main.xml +37 -35
- package/dist/app/demo/form/method/aform/aform.js +57 -0
- package/dist/app/demo/form/method/aform/aform.xml +35 -0
- package/dist/app/demo/form/method/aform/test.xml +6 -0
- package/dist/app/demo/form/method/core/core.js +11 -8
- package/dist/app/demo/form/method/core/core.xml +2 -1
- package/dist/app/demo/form/method/dom/dom.js +91 -99
- package/dist/app/demo/form/method/dom/dom.xml +6 -7
- package/dist/app/demo/form/method/form/form.js +10 -28
- package/dist/app/demo/form/method/form/form.xml +8 -15
- package/dist/app/demo/form/method/fs/fs.js +34 -33
- package/dist/app/demo/form/method/fs/fs.xml +1 -1
- package/dist/app/demo/form/method/fs/text.js +12 -12
- package/dist/app/demo/form/method/native/native.js +50 -0
- package/dist/app/demo/form/method/native/native.xml +12 -0
- package/dist/app/demo/form/method/system/system.js +50 -0
- package/dist/app/demo/form/method/system/system.xml +11 -0
- package/dist/app/demo/form/method/task/task.js +59 -61
- package/dist/app/demo/form/method/task/task.xml +4 -6
- package/dist/app/demo/form/method/theme/theme.js +14 -14
- package/dist/app/demo/form/method/tool/tool.js +29 -28
- package/dist/app/demo/form/method/tool/tool.xml +3 -3
- package/dist/app/demo/form/method/zip/zip.js +46 -41
- package/dist/app/demo/form/method/zip/zip.xml +1 -1
- package/dist/app/task/app.js +0 -25
- package/dist/app/task/config.json +29 -0
- package/dist/app/task/form/bar/bar.js +2 -2
- package/dist/app/task/form/bar/bar.xml +1 -1
- package/dist/clickgo.js +17 -5
- package/dist/clickgo.ts +22 -3
- package/dist/control/common.cgc +0 -0
- package/dist/control/form.cgc +0 -0
- package/dist/control/monaco.cgc +0 -0
- package/dist/control/property.cgc +0 -0
- package/dist/control/task.cgc +0 -0
- package/dist/global.css +1 -1
- package/dist/index.js +28 -8
- package/dist/index.ts +33 -7
- package/dist/lib/control.js +75 -105
- package/dist/lib/control.ts +102 -124
- package/dist/lib/core.js +108 -252
- package/dist/lib/core.ts +122 -268
- package/dist/lib/dom.js +564 -483
- package/dist/lib/dom.ts +703 -546
- package/dist/lib/form.js +170 -153
- package/dist/lib/form.ts +132 -99
- package/dist/lib/fs.js +1 -1
- package/dist/lib/fs.ts +1 -1
- package/dist/lib/native.js +135 -8
- package/dist/lib/native.ts +176 -12
- package/dist/lib/task.js +301 -175
- package/dist/lib/task.ts +330 -207
- package/dist/lib/tool.js +48 -1
- package/dist/lib/tool.ts +61 -0
- package/dist/lib/zip.ts +2 -0
- package/dist/theme/familiar.cgt +0 -0
- package/package.json +1 -1
- package/types/index.d.ts +26 -29
- package/dist/app/demo/form/control/greatview/greatview.js +0 -92
- package/dist/app/demo/form/control/overflow/overflow.js +0 -70
- package/dist/app/demo/form/control/overflow/overflow.xml +0 -98
- package/dist/app/demo/form/control/view/view.css +0 -1
- package/dist/app/demo/form/control/view/view.js +0 -73
- package/dist/app/demo/form/control/view/view.scss +0 -18
- package/dist/app/demo/form/control/view/view.xml +0 -94
- package/dist/app/demo/form/method/form/test.xml +0 -5
package/dist/lib/form.ts
CHANGED
|
@@ -23,6 +23,9 @@ import * as control from './control';
|
|
|
23
23
|
import * as fs from './fs';
|
|
24
24
|
import * as native from './native';
|
|
25
25
|
|
|
26
|
+
/** --- 当前有焦点的窗体 id --- */
|
|
27
|
+
let focusId: number | null = null;
|
|
28
|
+
|
|
26
29
|
/** --- form 相关信息 --- */
|
|
27
30
|
const info: {
|
|
28
31
|
/** --- 最后一个窗体 id --- */
|
|
@@ -76,7 +79,7 @@ const info: {
|
|
|
76
79
|
};
|
|
77
80
|
|
|
78
81
|
/** --- 窗体的抽象类 --- */
|
|
79
|
-
export class AbstractForm {
|
|
82
|
+
export abstract class AbstractForm {
|
|
80
83
|
|
|
81
84
|
/**
|
|
82
85
|
* --- 创建窗体工厂函数 ---
|
|
@@ -84,7 +87,7 @@ export class AbstractForm {
|
|
|
84
87
|
* @param layout 是否使用此参数替换 layout 值
|
|
85
88
|
*/
|
|
86
89
|
public static async create(data?: Record<string, any>, layout?: string): Promise<AbstractForm | number> {
|
|
87
|
-
const frm = new this();
|
|
90
|
+
const frm: AbstractForm = new (this as any)();
|
|
88
91
|
/** --- 要挂载的 vue 参数 --- */
|
|
89
92
|
const code: types.IFormCreateCode = {
|
|
90
93
|
'data': {},
|
|
@@ -121,6 +124,11 @@ export class AbstractForm {
|
|
|
121
124
|
/** --- class 对象类的属性列表 --- */
|
|
122
125
|
const cdata = Object.entries(frm);
|
|
123
126
|
for (const item of cdata) {
|
|
127
|
+
if (item[0] === 'access') {
|
|
128
|
+
// --- access 属性不放在 data 当中 ---
|
|
129
|
+
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
124
132
|
code.data![item[0]] = item[1];
|
|
125
133
|
}
|
|
126
134
|
if (!layout) {
|
|
@@ -229,7 +237,7 @@ export class AbstractForm {
|
|
|
229
237
|
}
|
|
230
238
|
|
|
231
239
|
/** --- layout 中 :class 的转义 --- */
|
|
232
|
-
public classPrepend(): (cla: any) => string {
|
|
240
|
+
public get classPrepend(): (cla: any) => string {
|
|
233
241
|
return (cla: any): string => {
|
|
234
242
|
if (typeof cla !== 'string') {
|
|
235
243
|
return cla;
|
|
@@ -239,15 +247,18 @@ export class AbstractForm {
|
|
|
239
247
|
};
|
|
240
248
|
}
|
|
241
249
|
|
|
250
|
+
/** --- 当前窗体是否和 native 的实体窗体大小、状态同步 --- */
|
|
251
|
+
public isNativeSync: boolean = false;
|
|
252
|
+
|
|
242
253
|
/**
|
|
243
254
|
* --- 监视变动 ---
|
|
244
255
|
* @param name 监视的属性
|
|
245
256
|
* @param cb 回调
|
|
246
257
|
* @param opt 参数
|
|
247
258
|
*/
|
|
248
|
-
public watch<T extends this, TK extends keyof T>(
|
|
249
|
-
name: TK,
|
|
250
|
-
cb: (val: T[TK], old: T[TK]) => void | Promise<void>,
|
|
259
|
+
public watch<T extends this, TK extends keyof T, TR>(
|
|
260
|
+
name: TK | (() => TR),
|
|
261
|
+
cb: (val: T[TK] & TR, old: T[TK] & TR) => void | Promise<void>,
|
|
251
262
|
opt: {
|
|
252
263
|
'immediate'?: boolean;
|
|
253
264
|
'deep'?: boolean;
|
|
@@ -352,7 +363,7 @@ export class AbstractForm {
|
|
|
352
363
|
public show(): void {
|
|
353
364
|
// --- 创建成功的窗体,可以直接显示 ---
|
|
354
365
|
const v = this as any;
|
|
355
|
-
v.$refs.form.$data.
|
|
366
|
+
v.$refs.form.$data.isShow = true;
|
|
356
367
|
if (this._firstShow) {
|
|
357
368
|
this._firstShow = false;
|
|
358
369
|
// --- 将窗体居中 ---
|
|
@@ -365,7 +376,7 @@ export class AbstractForm {
|
|
|
365
376
|
v.$refs.form.setPropData('top', (area.height - v.$el.offsetHeight) / 2);
|
|
366
377
|
}
|
|
367
378
|
}
|
|
368
|
-
v.$refs.form.$data.
|
|
379
|
+
v.$refs.form.$data.isShow = true;
|
|
369
380
|
changeFocus(this.formId);
|
|
370
381
|
}
|
|
371
382
|
}
|
|
@@ -374,6 +385,7 @@ export class AbstractForm {
|
|
|
374
385
|
* --- 显示独占的窗体 ---
|
|
375
386
|
*/
|
|
376
387
|
public async showDialog(): Promise<string> {
|
|
388
|
+
this.topMost = true;
|
|
377
389
|
this.show();
|
|
378
390
|
task.list[this.taskId].runtime.dialogFormIds.push(this.formId);
|
|
379
391
|
return new Promise((resolve) => {
|
|
@@ -388,7 +400,14 @@ export class AbstractForm {
|
|
|
388
400
|
*/
|
|
389
401
|
public hide(): void {
|
|
390
402
|
const v = this as any;
|
|
391
|
-
v.$refs.form.$data.
|
|
403
|
+
v.$refs.form.$data.isShow = false;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* --- 关闭当前窗体 ---
|
|
408
|
+
*/
|
|
409
|
+
public close(): void {
|
|
410
|
+
close(this.formId);
|
|
392
411
|
}
|
|
393
412
|
|
|
394
413
|
/**
|
|
@@ -410,6 +429,7 @@ export class AbstractForm {
|
|
|
410
429
|
return;
|
|
411
430
|
}
|
|
412
431
|
|
|
432
|
+
public onMounted(obj: Record<string, any>): void | Promise<void>;
|
|
413
433
|
public onMounted(): void | Promise<void> {
|
|
414
434
|
return;
|
|
415
435
|
}
|
|
@@ -546,7 +566,8 @@ const popInfo: {
|
|
|
546
566
|
|
|
547
567
|
export let simpleSystemTaskRoot: types.IVue;
|
|
548
568
|
export let launcherRoot: types.IVue;
|
|
549
|
-
|
|
569
|
+
|
|
570
|
+
export const elements: {
|
|
550
571
|
'wrap': HTMLDivElement;
|
|
551
572
|
'list': HTMLDivElement;
|
|
552
573
|
'popList': HTMLDivElement;
|
|
@@ -575,19 +596,7 @@ const elements: {
|
|
|
575
596
|
/** --- clickgo 所有的 div wrap --- */
|
|
576
597
|
this.wrap.id = 'cg-wrap';
|
|
577
598
|
document.getElementsByTagName('body')[0].appendChild(this.wrap);
|
|
578
|
-
|
|
579
|
-
this.wrap.addEventListener('mouseenter', function() {
|
|
580
|
-
native.invoke('cg-mouse-ignore', native.getToken(), false);
|
|
581
|
-
});
|
|
582
|
-
this.wrap.addEventListener('mouseleave', function() {
|
|
583
|
-
native.invoke('cg-mouse-ignore', native.getToken(), true);
|
|
584
|
-
});
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
/** --- form list 的 div --- */
|
|
588
|
-
this.list.id = 'cg-form-list';
|
|
589
|
-
this.wrap.appendChild(this.list);
|
|
590
|
-
this.list.addEventListener('touchmove', function(e): void {
|
|
599
|
+
this.wrap.addEventListener('touchmove', function(e): void {
|
|
591
600
|
// --- 防止拖动时整个网页跟着动 ---
|
|
592
601
|
if (e.cancelable) {
|
|
593
602
|
e.preventDefault();
|
|
@@ -596,28 +605,32 @@ const elements: {
|
|
|
596
605
|
}, {
|
|
597
606
|
'passive': false
|
|
598
607
|
});
|
|
599
|
-
this.
|
|
600
|
-
// --- 防止不小心前进后退,或上下缓动滚动(Mac
|
|
608
|
+
this.wrap.addEventListener('wheel', function(e): void {
|
|
609
|
+
// --- 防止不小心前进后退,或上下缓动滚动(Mac、触摸板) ---
|
|
601
610
|
e.preventDefault();
|
|
602
611
|
}, {
|
|
603
612
|
'passive': false
|
|
604
613
|
});
|
|
605
|
-
this.
|
|
614
|
+
this.wrap.addEventListener('contextmenu', function(e): void {
|
|
606
615
|
e.preventDefault();
|
|
607
616
|
});
|
|
617
|
+
if (clickgo.isImmersion()) {
|
|
618
|
+
// --- 只有沉浸式模式(Windows 下非 frame 的 native)才会绑定这个事件 ---
|
|
619
|
+
this.wrap.addEventListener('mouseenter', function() {
|
|
620
|
+
native.invoke('cg-mouse-ignore', native.getToken(), false);
|
|
621
|
+
});
|
|
622
|
+
this.wrap.addEventListener('mouseleave', function() {
|
|
623
|
+
native.invoke('cg-mouse-ignore', native.getToken(), true);
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/** --- form list 的 div --- */
|
|
628
|
+
this.list.id = 'cg-form-list';
|
|
629
|
+
this.wrap.appendChild(this.list);
|
|
608
630
|
|
|
609
631
|
/** --- pop list 的 div --- */
|
|
610
632
|
this.popList.id = 'cg-pop-list';
|
|
611
|
-
this.popList.addEventListener('contextmenu', function(e): void {
|
|
612
|
-
e.preventDefault();
|
|
613
|
-
});
|
|
614
633
|
this.wrap.appendChild(this.popList);
|
|
615
|
-
this.popList.addEventListener('touchmove', function(e): void {
|
|
616
|
-
// --- 防止拖动时整个网页跟着动 ---
|
|
617
|
-
e.preventDefault();
|
|
618
|
-
}, {
|
|
619
|
-
'passive': false
|
|
620
|
-
});
|
|
621
634
|
|
|
622
635
|
// --- 从鼠标指针处从小到大缩放然后淡化的圆圈动画特效对象 ---=
|
|
623
636
|
this.circular.id = 'cg-circular';
|
|
@@ -640,29 +653,11 @@ const elements: {
|
|
|
640
653
|
|
|
641
654
|
// --- 添加 cg-system 的 dom ---
|
|
642
655
|
this.system.id = 'cg-system';
|
|
643
|
-
this.system.addEventListener('contextmenu', function(e): void {
|
|
644
|
-
e.preventDefault();
|
|
645
|
-
});
|
|
646
656
|
this.wrap.appendChild(this.system);
|
|
647
|
-
this.system.addEventListener('touchmove', function(e): void {
|
|
648
|
-
// --- 防止拖动时整个网页跟着动 ---
|
|
649
|
-
e.preventDefault();
|
|
650
|
-
}, {
|
|
651
|
-
'passive': false
|
|
652
|
-
});
|
|
653
657
|
|
|
654
658
|
// --- 添加 cg-simpletask 的 dom ---
|
|
655
659
|
this.simpleSystemtask.id = 'cg-simpletask';
|
|
656
|
-
this.simpleSystemtask.addEventListener('contextmenu', function(e): void {
|
|
657
|
-
e.preventDefault();
|
|
658
|
-
});
|
|
659
660
|
this.wrap.appendChild(this.simpleSystemtask);
|
|
660
|
-
this.simpleSystemtask.addEventListener('touchmove', function(e): void {
|
|
661
|
-
// --- 防止拖动时整个网页跟着动 ---
|
|
662
|
-
e.preventDefault();
|
|
663
|
-
}, {
|
|
664
|
-
'passive': false
|
|
665
|
-
});
|
|
666
661
|
const simpletaskApp = clickgo.vue.createApp({
|
|
667
662
|
'template': '<div v-for="(item, formId) of forms" class="cg-simpletask-item" @click="click(parseInt(formId))"><div v-if="item.icon" class="cg-simpletask-icon" :style="{\'background-image\': \'url(\' + item.icon + \')\'}"></div><div>{{item.title}}</div></div>',
|
|
668
663
|
'data': function() {
|
|
@@ -703,23 +698,14 @@ const elements: {
|
|
|
703
698
|
|
|
704
699
|
// --- cg-launcher ---
|
|
705
700
|
this.launcher.id = 'cg-launcher';
|
|
706
|
-
this.launcher.addEventListener('contextmenu', function(e): void {
|
|
707
|
-
e.preventDefault();
|
|
708
|
-
});
|
|
709
701
|
this.wrap.appendChild(this.launcher);
|
|
710
|
-
this.launcher.addEventListener('touchmove', function(e): void {
|
|
711
|
-
// --- 防止拖动时整个网页跟着动 ---
|
|
712
|
-
e.preventDefault();
|
|
713
|
-
}, {
|
|
714
|
-
'passive': false
|
|
715
|
-
});
|
|
716
702
|
// --- Vue 挂载在这里 ---
|
|
717
703
|
const waiting = function(): void {
|
|
718
704
|
// --- 必须在这里执行,要不然 computed 无法更新,因为 core 还没加载进来 ---
|
|
719
705
|
if (!core.config) {
|
|
720
706
|
setTimeout(function() {
|
|
721
707
|
waiting();
|
|
722
|
-
},
|
|
708
|
+
}, 150);
|
|
723
709
|
return;
|
|
724
710
|
}
|
|
725
711
|
const launcherApp = clickgo.vue.createApp({
|
|
@@ -1040,10 +1026,10 @@ export function get(formId: number): types.IFormInfo | null {
|
|
|
1040
1026
|
return {
|
|
1041
1027
|
'taskId': taskId,
|
|
1042
1028
|
'title': item.vroot.$refs.form.title,
|
|
1043
|
-
'icon': item.vroot.$refs.form.
|
|
1029
|
+
'icon': item.vroot.$refs.form.iconDataUrl,
|
|
1044
1030
|
'stateMax': item.vroot.$refs.form.stateMaxData,
|
|
1045
1031
|
'stateMin': item.vroot.$refs.form.stateMinData,
|
|
1046
|
-
'show': item.vroot.$refs.form.
|
|
1032
|
+
'show': item.vroot.$refs.form.isShow,
|
|
1047
1033
|
'focus': item.vroot.formFocus
|
|
1048
1034
|
};
|
|
1049
1035
|
}
|
|
@@ -1076,16 +1062,23 @@ export function getList(taskId: number): Record<string, types.IFormInfo> {
|
|
|
1076
1062
|
list[fid] = {
|
|
1077
1063
|
'taskId': taskId,
|
|
1078
1064
|
'title': item.vroot.$refs.form.title,
|
|
1079
|
-
'icon': item.vroot.$refs.form.
|
|
1065
|
+
'icon': item.vroot.$refs.form.iconDataUrl,
|
|
1080
1066
|
'stateMax': item.vroot.$refs.form.stateMaxData,
|
|
1081
1067
|
'stateMin': item.vroot.$refs.form.stateMinData,
|
|
1082
|
-
'show': item.vroot.$refs.form.
|
|
1068
|
+
'show': item.vroot.$refs.form.isShow,
|
|
1083
1069
|
'focus': item.vroot.formFocus
|
|
1084
1070
|
};
|
|
1085
1071
|
}
|
|
1086
1072
|
return list;
|
|
1087
1073
|
}
|
|
1088
1074
|
|
|
1075
|
+
/**
|
|
1076
|
+
* --- 获取当前有焦点的窗体 form id ---
|
|
1077
|
+
*/
|
|
1078
|
+
export function getFocus(): number | null {
|
|
1079
|
+
return focusId;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1089
1082
|
/**
|
|
1090
1083
|
* --- 改变 form 的焦点 class ---
|
|
1091
1084
|
* @param formId 变更后的 form id
|
|
@@ -1099,31 +1092,25 @@ export function changeFocus(formId: number = 0): void {
|
|
|
1099
1092
|
});
|
|
1100
1093
|
return;
|
|
1101
1094
|
}
|
|
1102
|
-
const
|
|
1103
|
-
if (
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
const dataFormIdNumber = parseInt(dataFormId);
|
|
1107
|
-
if (dataFormIdNumber === formId) {
|
|
1108
|
-
return;
|
|
1109
|
-
}
|
|
1110
|
-
else {
|
|
1111
|
-
const taskId = parseInt(focusElement.getAttribute('data-task-id') ?? '0');
|
|
1112
|
-
const t = task.list[taskId];
|
|
1113
|
-
t.forms[dataFormIdNumber].vapp._container.removeAttribute('data-form-focus');
|
|
1114
|
-
t.forms[dataFormIdNumber].vroot._formFocus = false;
|
|
1115
|
-
// --- 触发 formBlurred 事件 ---
|
|
1116
|
-
core.trigger('formBlurred', taskId, dataFormIdNumber);
|
|
1117
|
-
}
|
|
1095
|
+
const dataFormId = getFocus();
|
|
1096
|
+
if (dataFormId) {
|
|
1097
|
+
if (dataFormId === formId) {
|
|
1098
|
+
return;
|
|
1118
1099
|
}
|
|
1119
1100
|
else {
|
|
1120
|
-
|
|
1101
|
+
const t = task.list[task.getFocus()!];
|
|
1102
|
+
t.forms[dataFormId].vapp._container.removeAttribute('data-form-focus');
|
|
1103
|
+
t.forms[dataFormId].vroot._formFocus = false;
|
|
1104
|
+
// --- 触发 formBlurred 事件 ---
|
|
1105
|
+
core.trigger('formBlurred', t.id, dataFormId);
|
|
1121
1106
|
}
|
|
1122
1107
|
}
|
|
1108
|
+
focusId = null;
|
|
1109
|
+
task.setFocus();
|
|
1123
1110
|
if (formId === 0) {
|
|
1124
1111
|
return;
|
|
1125
1112
|
}
|
|
1126
|
-
const el =
|
|
1113
|
+
const el = elements.list.querySelector(`.cg-form-wrap[data-form-id='${formId}']`);
|
|
1127
1114
|
if (!el) {
|
|
1128
1115
|
return;
|
|
1129
1116
|
}
|
|
@@ -1143,14 +1130,16 @@ export function changeFocus(formId: number = 0): void {
|
|
|
1143
1130
|
min(dialogFormId);
|
|
1144
1131
|
}
|
|
1145
1132
|
if (t.forms[dialogFormId].vroot._topMost) {
|
|
1146
|
-
t.forms[dialogFormId].vroot.$refs.form.$data.
|
|
1133
|
+
t.forms[dialogFormId].vroot.$refs.form.$data.zIndex = ++info.topLastZIndex;
|
|
1147
1134
|
}
|
|
1148
1135
|
else {
|
|
1149
|
-
t.forms[dialogFormId].vroot.$refs.form.$data.
|
|
1136
|
+
t.forms[dialogFormId].vroot.$refs.form.$data.zIndex = ++info.lastZIndex;
|
|
1150
1137
|
}
|
|
1151
1138
|
// --- 开启 focus ---
|
|
1152
1139
|
t.forms[dialogFormId].vapp._container.dataset.formFocus = '';
|
|
1153
1140
|
t.forms[dialogFormId].vroot._formFocus = true;
|
|
1141
|
+
focusId = dialogFormId;
|
|
1142
|
+
task.setFocus(t.id);
|
|
1154
1143
|
// --- 触发 formFocused 事件 ---
|
|
1155
1144
|
core.trigger('formFocused', taskId, dialogFormId);
|
|
1156
1145
|
// --- 判断点击的窗体是不是就是 dialog mask 窗体本身 ---
|
|
@@ -1162,14 +1151,16 @@ export function changeFocus(formId: number = 0): void {
|
|
|
1162
1151
|
else {
|
|
1163
1152
|
// --- 没有 dialog,才修改 zindex ---
|
|
1164
1153
|
if (t.forms[formId].vroot._topMost) {
|
|
1165
|
-
t.forms[formId].vroot.$refs.form.$data.
|
|
1154
|
+
t.forms[formId].vroot.$refs.form.$data.zIndex = ++info.topLastZIndex;
|
|
1166
1155
|
}
|
|
1167
1156
|
else {
|
|
1168
|
-
t.forms[formId].vroot.$refs.form.$data.
|
|
1157
|
+
t.forms[formId].vroot.$refs.form.$data.zIndex = ++info.lastZIndex;
|
|
1169
1158
|
}
|
|
1170
1159
|
// --- 正常开启 focus ---
|
|
1171
1160
|
t.forms[formId].vapp._container.dataset.formFocus = '';
|
|
1172
1161
|
t.forms[formId].vroot._formFocus = true;
|
|
1162
|
+
focusId = formId;
|
|
1163
|
+
task.setFocus(t.id);
|
|
1173
1164
|
// --- 触发 formFocused 事件 ---
|
|
1174
1165
|
core.trigger('formFocused', taskId, formId);
|
|
1175
1166
|
}
|
|
@@ -1824,13 +1815,13 @@ export function remove(formId: number): boolean {
|
|
|
1824
1815
|
let icon = '';
|
|
1825
1816
|
if (task.list[taskId].forms[formId]) {
|
|
1826
1817
|
title = task.list[taskId].forms[formId].vroot.$refs.form.title;
|
|
1827
|
-
icon = task.list[taskId].forms[formId].vroot.$refs.form.
|
|
1818
|
+
icon = task.list[taskId].forms[formId].vroot.$refs.form.iconDataUrl;
|
|
1828
1819
|
const io = task.list[taskId].runtime.dialogFormIds.indexOf(formId);
|
|
1829
1820
|
if (io > -1) {
|
|
1830
1821
|
// --- 取消 dialog mask 记录 ---
|
|
1831
1822
|
task.list[taskId].runtime.dialogFormIds.splice(io, 1);
|
|
1832
1823
|
}
|
|
1833
|
-
task.list[taskId].forms[formId].vroot.$refs.form.$data.
|
|
1824
|
+
task.list[taskId].forms[formId].vroot.$refs.form.$data.isShow = false;
|
|
1834
1825
|
setTimeout(function() {
|
|
1835
1826
|
// --- 获取最大的 z index 窗体,并让他获取焦点 ---
|
|
1836
1827
|
const fid = getMaxZIndexID({
|
|
@@ -1849,6 +1840,7 @@ export function remove(formId: number): boolean {
|
|
|
1849
1840
|
}
|
|
1850
1841
|
task.list[taskId].forms[formId].vapp.unmount();
|
|
1851
1842
|
task.list[taskId].forms[formId].vapp._container.remove();
|
|
1843
|
+
elements.popList.querySelector('[data-form-id="' + formId.toString() + '"]')?.remove();
|
|
1852
1844
|
if (io > -1) {
|
|
1853
1845
|
// --- 如果是 dialog 则要执行回调 ---
|
|
1854
1846
|
task.list[taskId].forms[formId].vroot.cgDialogCallback();
|
|
@@ -1858,6 +1850,9 @@ export function remove(formId: number): boolean {
|
|
|
1858
1850
|
dom.removeStyle(taskId, 'form', formId);
|
|
1859
1851
|
// --- 触发 formRemoved 事件 ---
|
|
1860
1852
|
core.trigger('formRemoved', taskId, formId, title, icon);
|
|
1853
|
+
dom.clearWatchStyle(formId);
|
|
1854
|
+
dom.clearWatchProperty(formId);
|
|
1855
|
+
native.clear(formId, taskId);
|
|
1861
1856
|
// --- 检测是否已经没有窗体了,如果没有了的话就要结束任务了 ---
|
|
1862
1857
|
if (Object.keys(task.list[taskId].forms).length === 0) {
|
|
1863
1858
|
task.end(taskId);
|
|
@@ -1910,6 +1905,7 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
1910
1905
|
}
|
|
1911
1906
|
// --- 准备相关变量 ---
|
|
1912
1907
|
let data: Record<string, any> = {};
|
|
1908
|
+
let access: Record<string, any> = {};
|
|
1913
1909
|
let methods: Record<string, any> | undefined = undefined;
|
|
1914
1910
|
let computed: Record<string, any> = {};
|
|
1915
1911
|
let beforeCreate: (() => void) | undefined = undefined;
|
|
@@ -1922,6 +1918,7 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
1922
1918
|
let unmounted: (() => void) | undefined = undefined;
|
|
1923
1919
|
if (opt.code) {
|
|
1924
1920
|
data = opt.code.data ?? {};
|
|
1921
|
+
access = opt.code.access ?? {};
|
|
1925
1922
|
methods = opt.code.methods;
|
|
1926
1923
|
computed = opt.code.computed ?? {};
|
|
1927
1924
|
beforeCreate = opt.code.beforeCreate;
|
|
@@ -1963,8 +1960,13 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
1963
1960
|
layout = layout.replace(/@(touchstart|touchmove|wheel)=/g, '@$1.passive=');
|
|
1964
1961
|
layout = layout.replace(/@(touchstart|touchmove|wheel)\.not=/g, '@$1=');
|
|
1965
1962
|
*/
|
|
1963
|
+
// --- 给 teleport 做处理 ---
|
|
1964
|
+
if (layout.includes('<teleport')) {
|
|
1965
|
+
layout = tool.teleportGlue(layout, formId);
|
|
1966
|
+
}
|
|
1966
1967
|
// --- 插入 HTML 到 Element ---
|
|
1967
1968
|
elements.list.insertAdjacentHTML('beforeend', `<div class="cg-form-wrap" data-form-id="${formId.toString()}" data-task-id="${opt.taskId.toString()}"></div>`);
|
|
1969
|
+
elements.popList.insertAdjacentHTML('beforeend', `<div data-form-id="${formId.toString()}" data-task-id="${opt.taskId.toString()}"></div>`);
|
|
1968
1970
|
// --- 获取刚才的 form wrap element 对象 ---
|
|
1969
1971
|
const el: HTMLElement = elements.list.children.item(elements.list.children.length - 1) as HTMLElement;
|
|
1970
1972
|
// --- 创建窗体对象 ---
|
|
@@ -2026,17 +2028,21 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
2026
2028
|
changeFocus(form.id);
|
|
2027
2029
|
}
|
|
2028
2030
|
else {
|
|
2029
|
-
form.vroot.$refs.form.$data.
|
|
2031
|
+
form.vroot.$refs.form.$data.zIndex = ++info.topLastZIndex;
|
|
2030
2032
|
}
|
|
2031
2033
|
}
|
|
2032
2034
|
else {
|
|
2033
2035
|
// --- 取消置顶 ---
|
|
2034
2036
|
form.vroot.$data._topMost = false;
|
|
2035
|
-
form.vroot.$refs.form.$data.
|
|
2037
|
+
form.vroot.$refs.form.$data.zIndex = ++info.lastZIndex;
|
|
2036
2038
|
}
|
|
2037
2039
|
return;
|
|
2038
2040
|
}
|
|
2039
2041
|
};
|
|
2042
|
+
// --- 判断是否要与 native 实体窗体大小同步 ---
|
|
2043
|
+
if (clickgo.isNative() && (formId === 1) && !clickgo.isImmersion() && !clickgo.hasFrame()) {
|
|
2044
|
+
data.isNativeSync = true;
|
|
2045
|
+
}
|
|
2040
2046
|
// --- 挂载 style ---
|
|
2041
2047
|
if (style) {
|
|
2042
2048
|
// --- 窗体的 style ---
|
|
@@ -2056,7 +2062,10 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
2056
2062
|
'computed': computed,
|
|
2057
2063
|
|
|
2058
2064
|
'beforeCreate': beforeCreate,
|
|
2059
|
-
'created':
|
|
2065
|
+
'created': function(this: types.IVue) {
|
|
2066
|
+
this.access = tool.clone(access);
|
|
2067
|
+
created?.call(this);
|
|
2068
|
+
},
|
|
2060
2069
|
'beforeMount': beforeMount,
|
|
2061
2070
|
'mounted': async function(this: types.IVue) {
|
|
2062
2071
|
await this.$nextTick();
|
|
@@ -2068,7 +2077,7 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
2068
2077
|
'current': t.current,
|
|
2069
2078
|
'files': t.app.files
|
|
2070
2079
|
});
|
|
2071
|
-
this.$refs.form.
|
|
2080
|
+
this.$refs.form.iconDataUrl = (icon instanceof Blob) ? await tool.blob2DataUrl(icon) : '';
|
|
2072
2081
|
}
|
|
2073
2082
|
// --- 完成 ---
|
|
2074
2083
|
resolve({
|
|
@@ -2120,17 +2129,41 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
|
|
|
2120
2129
|
await mounted.call(rtn.vroot, opt.data);
|
|
2121
2130
|
}
|
|
2122
2131
|
catch (err: any) {
|
|
2132
|
+
// --- 窗体创建失败,做垃圾回收 ---
|
|
2123
2133
|
core.trigger('error', rtn.vroot.taskId, rtn.vroot.formId, err, 'Create form mounted error.');
|
|
2124
|
-
t.forms[formId] = undefined as any;
|
|
2125
2134
|
delete t.forms[formId];
|
|
2126
|
-
|
|
2135
|
+
try {
|
|
2136
|
+
rtn.vapp.unmount();
|
|
2137
|
+
}
|
|
2138
|
+
catch (err: any) {
|
|
2139
|
+
const msg = `Message: ${err.message}\nTask id: ${opt.taskId}\nForm id: ${formId}\nFunction: form.create, unmount.`;
|
|
2140
|
+
notify({
|
|
2141
|
+
'title': 'Form Unmount Error',
|
|
2142
|
+
'content': msg,
|
|
2143
|
+
'type': 'danger'
|
|
2144
|
+
});
|
|
2145
|
+
console.log('Form Unmount Error', msg, err);
|
|
2146
|
+
}
|
|
2127
2147
|
rtn.vapp._container.remove();
|
|
2148
|
+
elements.popList.querySelector('[data-form-id="' + rtn.vroot.formId + '"]')?.remove();
|
|
2149
|
+
dom.clearWatchStyle(rtn.vroot.formId);
|
|
2150
|
+
dom.clearWatchProperty(rtn.vroot.formId);
|
|
2151
|
+
native.clear(formId, t.id);
|
|
2152
|
+
// --- 移除 style ---
|
|
2128
2153
|
dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId);
|
|
2129
2154
|
return -8;
|
|
2130
2155
|
}
|
|
2131
2156
|
}
|
|
2132
2157
|
// --- 触发 formCreated 事件 ---
|
|
2133
|
-
core.trigger('formCreated', opt.taskId, formId, rtn.vroot.$refs.form.title, rtn.vroot.$refs.form.
|
|
2158
|
+
core.trigger('formCreated', opt.taskId, formId, rtn.vroot.$refs.form.title, rtn.vroot.$refs.form.iconDataUrl);
|
|
2159
|
+
// --- 同步的窗体先进行同步一下 ---
|
|
2160
|
+
if (rtn.vroot.isNativeSync) {
|
|
2161
|
+
native.invoke('cg-set-size', native.getToken(), rtn.vroot.$refs.form.$el.offsetWidth, rtn.vroot.$refs.form.$el.offsetHeight);
|
|
2162
|
+
window.addEventListener('resize', function(): void {
|
|
2163
|
+
rtn.vroot.$refs.form.setPropData('width', window.innerWidth);
|
|
2164
|
+
rtn.vroot.$refs.form.setPropData('height', window.innerHeight);
|
|
2165
|
+
});
|
|
2166
|
+
}
|
|
2134
2167
|
return formId;
|
|
2135
2168
|
}
|
|
2136
2169
|
|
|
@@ -2181,7 +2214,7 @@ export function dialog(opt: string | types.IFormDialogOptions): Promise<string>
|
|
|
2181
2214
|
}
|
|
2182
2215
|
}
|
|
2183
2216
|
};
|
|
2184
|
-
cls.create(undefined, `<form title="${nopt.title ?? 'dialog'}" min="false" max="false" resize="false" height="0" border="${nopt.title ? 'normal' : 'plain'}" direction="v"><dialog :buttons="buttons" @select="select"${nopt.direction ? ` direction="${nopt.direction}"` : ''}>${nopt.content}</dialog></form>`).then((frm) => {
|
|
2217
|
+
cls.create(undefined, `<form title="${nopt.title ?? 'dialog'}" min="false" max="false" resize="false" height="0" width="0" border="${nopt.title ? 'normal' : 'plain'}" direction="v"><dialog :buttons="buttons" @select="select"${nopt.direction ? ` direction="${nopt.direction}"` : ''}>${nopt.content}</dialog></form>`).then((frm) => {
|
|
2185
2218
|
if (typeof frm === 'number') {
|
|
2186
2219
|
resolve('');
|
|
2187
2220
|
return;
|
package/dist/lib/fs.js
CHANGED
|
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.copyFile = exports.copyFolder = exports.readDir = exports.rename = exports.chmod = exports.rmdirDeep = exports.rmdir = exports.mkdir = exports.isFile = exports.isDir = exports.stats = exports.unlink = exports.symlink = exports.readLink = exports.putContent = exports.getContent = void 0;
|
|
13
13
|
const tool = require("./tool");
|
|
14
|
-
const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.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/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/
|
|
14
|
+
const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.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/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.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/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.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/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/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/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.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/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/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/test.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.css', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.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/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/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/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/common.cgc', '/control/form.cgc', '/control/monaco.cgc', '/control/property.cgc', '/control/task.cgc', '/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/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/familiar.cgt'];
|
|
15
15
|
function getContent(path, options) {
|
|
16
16
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
17
|
path = tool.urlResolve('/', path);
|
package/dist/lib/fs.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import * as types from '../../types';
|
|
9
9
|
import * as tool from './tool';
|
|
10
10
|
|
|
11
|
-
const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.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/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.xml', '/app/demo/form/control/file/', '/app/demo/form/control/file/file.js', '/app/demo/form/control/file/file.xml', '/app/demo/form/control/
|
|
11
|
+
const clickgoFiles = ['/app/', '/app/demo/', '/app/demo/app.js', '/app/demo/config.json', '/app/demo/form/', '/app/demo/form/control/', '/app/demo/form/control/block/', '/app/demo/form/control/block/block.css', '/app/demo/form/control/block/block.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/dialog/', '/app/demo/form/control/dialog/dialog.js', '/app/demo/form/control/dialog/dialog.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/img/', '/app/demo/form/control/img/img.xml', '/app/demo/form/control/label/', '/app/demo/form/control/label/label.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/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/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/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.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/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/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/test.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.css', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.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/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/r-1.svg', '/app/demo/res/r-2.svg', '/app/demo/res/sql.svg', '/app/demo/res/txt.svg', '/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/common.cgc', '/control/form.cgc', '/control/monaco.cgc', '/control/property.cgc', '/control/task.cgc', '/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/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/familiar.cgt'];
|
|
12
12
|
|
|
13
13
|
export async function getContent(path: string, options?: {
|
|
14
14
|
'start'?: number;
|