clickgo 3.1.2-dev11 → 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.
Files changed (103) hide show
  1. package/dist/app/demo/app.js +0 -73
  2. package/dist/app/demo/config.json +109 -0
  3. package/dist/app/demo/form/control/button/button.js +12 -11
  4. package/dist/app/demo/form/control/button/button.xml +6 -6
  5. package/dist/app/demo/form/control/check/check.js +14 -10
  6. package/dist/app/demo/form/control/file/file.js +15 -13
  7. package/dist/app/demo/form/control/{overflow/overflow.css → flow/flow.css} +0 -0
  8. package/dist/app/demo/form/control/flow/flow.js +64 -0
  9. package/dist/app/demo/form/control/{overflow/overflow.scss → flow/flow.scss} +0 -0
  10. package/dist/app/demo/form/control/flow/flow.xml +101 -0
  11. package/dist/app/demo/form/control/form/form.js +1 -1
  12. package/dist/app/demo/form/control/form/form.xml +3 -3
  13. package/dist/app/demo/form/control/img/img.xml +2 -2
  14. package/dist/app/demo/form/control/list/list.js +95 -75
  15. package/dist/app/demo/form/control/list/list.xml +15 -11
  16. package/dist/app/demo/form/control/marquee/marquee.js +12 -10
  17. package/dist/app/demo/form/control/menu/menu.js +10 -6
  18. package/dist/app/demo/form/control/monaco/monaco.js +50 -60
  19. package/dist/app/demo/form/control/monaco/monaco.xml +6 -5
  20. package/dist/app/demo/form/control/property/property.js +131 -127
  21. package/dist/app/demo/form/control/radio/radio.js +9 -5
  22. package/dist/app/demo/form/control/scroll/scroll.js +16 -12
  23. package/dist/app/demo/form/control/scroll/scroll.xml +10 -10
  24. package/dist/app/demo/form/control/select/select.js +132 -71
  25. package/dist/app/demo/form/control/select/select.xml +69 -67
  26. package/dist/app/demo/form/control/tab/tab.js +21 -20
  27. package/dist/app/demo/form/control/tab/tab.xml +2 -2
  28. package/dist/app/demo/form/control/text/text.js +53 -45
  29. package/dist/app/demo/form/control/text/text.xml +3 -3
  30. package/dist/app/demo/form/control/{greatview/greatview.css → vflow/vflow.css} +0 -0
  31. package/dist/app/demo/form/control/vflow/vflow.js +79 -0
  32. package/dist/app/demo/form/control/{greatview/greatview.scss → vflow/vflow.scss} +0 -0
  33. package/dist/app/demo/form/control/{greatview/greatview.xml → vflow/vflow.xml} +25 -25
  34. package/dist/app/demo/form/event/form/form.js +58 -56
  35. package/dist/app/demo/form/event/form/form.xml +3 -3
  36. package/dist/app/demo/form/event/screen/screen.js +30 -28
  37. package/dist/app/demo/form/event/screen/screen.xml +2 -2
  38. package/dist/app/demo/form/event/task/task.js +31 -31
  39. package/dist/app/demo/form/event/task/task.xml +3 -3
  40. package/dist/app/demo/form/main.js +161 -5
  41. package/dist/app/demo/form/main.xml +36 -35
  42. package/dist/app/demo/form/method/aform/aform.xml +3 -2
  43. package/dist/app/demo/form/method/core/core.js +11 -8
  44. package/dist/app/demo/form/method/core/core.xml +2 -1
  45. package/dist/app/demo/form/method/dom/dom.js +91 -99
  46. package/dist/app/demo/form/method/dom/dom.xml +6 -7
  47. package/dist/app/demo/form/method/form/form.js +8 -8
  48. package/dist/app/demo/form/method/form/form.xml +4 -4
  49. package/dist/app/demo/form/method/fs/fs.js +34 -33
  50. package/dist/app/demo/form/method/fs/fs.xml +1 -1
  51. package/dist/app/demo/form/method/fs/text.js +12 -12
  52. package/dist/app/demo/form/method/native/native.js +50 -0
  53. package/dist/app/demo/form/method/native/native.xml +12 -0
  54. package/dist/app/demo/form/method/system/system.js +50 -0
  55. package/dist/app/demo/form/method/system/system.xml +11 -0
  56. package/dist/app/demo/form/method/task/task.js +59 -61
  57. package/dist/app/demo/form/method/task/task.xml +4 -6
  58. package/dist/app/demo/form/method/theme/theme.js +14 -14
  59. package/dist/app/demo/form/method/tool/tool.js +29 -28
  60. package/dist/app/demo/form/method/tool/tool.xml +3 -3
  61. package/dist/app/demo/form/method/zip/zip.js +46 -41
  62. package/dist/app/demo/form/method/zip/zip.xml +1 -1
  63. package/dist/app/task/app.js +0 -25
  64. package/dist/app/task/config.json +29 -0
  65. package/dist/app/task/form/bar/bar.js +1 -1
  66. package/dist/app/task/form/bar/bar.xml +1 -1
  67. package/dist/clickgo.js +1 -1
  68. package/dist/clickgo.ts +1 -1
  69. package/dist/control/common.cgc +0 -0
  70. package/dist/control/form.cgc +0 -0
  71. package/dist/control/monaco.cgc +0 -0
  72. package/dist/control/property.cgc +0 -0
  73. package/dist/control/task.cgc +0 -0
  74. package/dist/global.css +1 -1
  75. package/dist/index.js +3 -3
  76. package/dist/index.ts +3 -3
  77. package/dist/lib/control.js +70 -104
  78. package/dist/lib/control.ts +97 -123
  79. package/dist/lib/core.js +108 -252
  80. package/dist/lib/core.ts +122 -268
  81. package/dist/lib/dom.js +564 -483
  82. package/dist/lib/dom.ts +703 -546
  83. package/dist/lib/form.js +146 -138
  84. package/dist/lib/form.ts +108 -86
  85. package/dist/lib/fs.js +1 -1
  86. package/dist/lib/fs.ts +1 -1
  87. package/dist/lib/native.js +135 -8
  88. package/dist/lib/native.ts +175 -11
  89. package/dist/lib/task.js +294 -158
  90. package/dist/lib/task.ts +326 -172
  91. package/dist/lib/tool.js +48 -1
  92. package/dist/lib/tool.ts +61 -0
  93. package/dist/lib/zip.ts +2 -0
  94. package/dist/theme/familiar.cgt +0 -0
  95. package/package.json +1 -1
  96. package/types/index.d.ts +23 -24
  97. package/dist/app/demo/form/control/greatview/greatview.js +0 -92
  98. package/dist/app/demo/form/control/overflow/overflow.js +0 -70
  99. package/dist/app/demo/form/control/overflow/overflow.xml +0 -98
  100. package/dist/app/demo/form/control/view/view.css +0 -1
  101. package/dist/app/demo/form/control/view/view.js +0 -73
  102. package/dist/app/demo/form/control/view/view.scss +0 -18
  103. package/dist/app/demo/form/control/view/view.xml +0 -94
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;
@@ -392,6 +403,13 @@ export class AbstractForm {
392
403
  v.$refs.form.$data.isShow = false;
393
404
  }
394
405
 
406
+ /**
407
+ * --- 关闭当前窗体 ---
408
+ */
409
+ public close(): void {
410
+ close(this.formId);
411
+ }
412
+
395
413
  /**
396
414
  * --- dialog mask 窗体返回值,在 close 之后会进行传导 ---
397
415
  */
@@ -411,6 +429,7 @@ export class AbstractForm {
411
429
  return;
412
430
  }
413
431
 
432
+ public onMounted(obj: Record<string, any>): void | Promise<void>;
414
433
  public onMounted(): void | Promise<void> {
415
434
  return;
416
435
  }
@@ -547,7 +566,8 @@ const popInfo: {
547
566
 
548
567
  export let simpleSystemTaskRoot: types.IVue;
549
568
  export let launcherRoot: types.IVue;
550
- const elements: {
569
+
570
+ export const elements: {
551
571
  'wrap': HTMLDivElement;
552
572
  'list': HTMLDivElement;
553
573
  'popList': HTMLDivElement;
@@ -576,20 +596,7 @@ const elements: {
576
596
  /** --- clickgo 所有的 div wrap --- */
577
597
  this.wrap.id = 'cg-wrap';
578
598
  document.getElementsByTagName('body')[0].appendChild(this.wrap);
579
- if (clickgo.isImmersion()) {
580
- // --- 只有沉浸式模式(Windows 下非 frame 的 native)才会绑定这个事件 ---
581
- this.wrap.addEventListener('mouseenter', function() {
582
- native.invoke('cg-mouse-ignore', native.getToken(), false);
583
- });
584
- this.wrap.addEventListener('mouseleave', function() {
585
- native.invoke('cg-mouse-ignore', native.getToken(), true);
586
- });
587
- }
588
-
589
- /** --- form list 的 div --- */
590
- this.list.id = 'cg-form-list';
591
- this.wrap.appendChild(this.list);
592
- this.list.addEventListener('touchmove', function(e): void {
599
+ this.wrap.addEventListener('touchmove', function(e): void {
593
600
  // --- 防止拖动时整个网页跟着动 ---
594
601
  if (e.cancelable) {
595
602
  e.preventDefault();
@@ -598,28 +605,32 @@ const elements: {
598
605
  }, {
599
606
  'passive': false
600
607
  });
601
- this.list.addEventListener('wheel', function(e): void {
602
- // --- 防止不小心前进后退,或上下缓动滚动(Mac ---
608
+ this.wrap.addEventListener('wheel', function(e): void {
609
+ // --- 防止不小心前进后退,或上下缓动滚动(Mac、触摸板) ---
603
610
  e.preventDefault();
604
611
  }, {
605
612
  'passive': false
606
613
  });
607
- this.list.addEventListener('contextmenu', function(e): void {
614
+ this.wrap.addEventListener('contextmenu', function(e): void {
608
615
  e.preventDefault();
609
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);
610
630
 
611
631
  /** --- pop list 的 div --- */
612
632
  this.popList.id = 'cg-pop-list';
613
- this.popList.addEventListener('contextmenu', function(e): void {
614
- e.preventDefault();
615
- });
616
633
  this.wrap.appendChild(this.popList);
617
- this.popList.addEventListener('touchmove', function(e): void {
618
- // --- 防止拖动时整个网页跟着动 ---
619
- e.preventDefault();
620
- }, {
621
- 'passive': false
622
- });
623
634
 
624
635
  // --- 从鼠标指针处从小到大缩放然后淡化的圆圈动画特效对象 ---=
625
636
  this.circular.id = 'cg-circular';
@@ -642,29 +653,11 @@ const elements: {
642
653
 
643
654
  // --- 添加 cg-system 的 dom ---
644
655
  this.system.id = 'cg-system';
645
- this.system.addEventListener('contextmenu', function(e): void {
646
- e.preventDefault();
647
- });
648
656
  this.wrap.appendChild(this.system);
649
- this.system.addEventListener('touchmove', function(e): void {
650
- // --- 防止拖动时整个网页跟着动 ---
651
- e.preventDefault();
652
- }, {
653
- 'passive': false
654
- });
655
657
 
656
658
  // --- 添加 cg-simpletask 的 dom ---
657
659
  this.simpleSystemtask.id = 'cg-simpletask';
658
- this.simpleSystemtask.addEventListener('contextmenu', function(e): void {
659
- e.preventDefault();
660
- });
661
660
  this.wrap.appendChild(this.simpleSystemtask);
662
- this.simpleSystemtask.addEventListener('touchmove', function(e): void {
663
- // --- 防止拖动时整个网页跟着动 ---
664
- e.preventDefault();
665
- }, {
666
- 'passive': false
667
- });
668
661
  const simpletaskApp = clickgo.vue.createApp({
669
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>',
670
663
  'data': function() {
@@ -705,23 +698,14 @@ const elements: {
705
698
 
706
699
  // --- cg-launcher ---
707
700
  this.launcher.id = 'cg-launcher';
708
- this.launcher.addEventListener('contextmenu', function(e): void {
709
- e.preventDefault();
710
- });
711
701
  this.wrap.appendChild(this.launcher);
712
- this.launcher.addEventListener('touchmove', function(e): void {
713
- // --- 防止拖动时整个网页跟着动 ---
714
- e.preventDefault();
715
- }, {
716
- 'passive': false
717
- });
718
702
  // --- Vue 挂载在这里 ---
719
703
  const waiting = function(): void {
720
704
  // --- 必须在这里执行,要不然 computed 无法更新,因为 core 还没加载进来 ---
721
705
  if (!core.config) {
722
706
  setTimeout(function() {
723
707
  waiting();
724
- }, 2000);
708
+ }, 150);
725
709
  return;
726
710
  }
727
711
  const launcherApp = clickgo.vue.createApp({
@@ -1088,6 +1072,13 @@ export function getList(taskId: number): Record<string, types.IFormInfo> {
1088
1072
  return list;
1089
1073
  }
1090
1074
 
1075
+ /**
1076
+ * --- 获取当前有焦点的窗体 form id ---
1077
+ */
1078
+ export function getFocus(): number | null {
1079
+ return focusId;
1080
+ }
1081
+
1091
1082
  /**
1092
1083
  * --- 改变 form 的焦点 class ---
1093
1084
  * @param formId 变更后的 form id
@@ -1101,31 +1092,25 @@ export function changeFocus(formId: number = 0): void {
1101
1092
  });
1102
1093
  return;
1103
1094
  }
1104
- const focusElement = document.querySelector('#cg-form-list > [data-form-focus]');
1105
- if (focusElement) {
1106
- const dataFormId = focusElement.getAttribute('data-form-id');
1107
- if (dataFormId) {
1108
- const dataFormIdNumber = parseInt(dataFormId);
1109
- if (dataFormIdNumber === formId) {
1110
- return;
1111
- }
1112
- else {
1113
- const taskId = parseInt(focusElement.getAttribute('data-task-id') ?? '0');
1114
- const t = task.list[taskId];
1115
- t.forms[dataFormIdNumber].vapp._container.removeAttribute('data-form-focus');
1116
- t.forms[dataFormIdNumber].vroot._formFocus = false;
1117
- // --- 触发 formBlurred 事件 ---
1118
- core.trigger('formBlurred', taskId, dataFormIdNumber);
1119
- }
1095
+ const dataFormId = getFocus();
1096
+ if (dataFormId) {
1097
+ if (dataFormId === formId) {
1098
+ return;
1120
1099
  }
1121
1100
  else {
1122
- return;
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);
1123
1106
  }
1124
1107
  }
1108
+ focusId = null;
1109
+ task.setFocus();
1125
1110
  if (formId === 0) {
1126
1111
  return;
1127
1112
  }
1128
- const el = document.querySelector(`#cg-form-list > [data-form-id='${formId}']`);
1113
+ const el = elements.list.querySelector(`.cg-form-wrap[data-form-id='${formId}']`);
1129
1114
  if (!el) {
1130
1115
  return;
1131
1116
  }
@@ -1153,6 +1138,8 @@ export function changeFocus(formId: number = 0): void {
1153
1138
  // --- 开启 focus ---
1154
1139
  t.forms[dialogFormId].vapp._container.dataset.formFocus = '';
1155
1140
  t.forms[dialogFormId].vroot._formFocus = true;
1141
+ focusId = dialogFormId;
1142
+ task.setFocus(t.id);
1156
1143
  // --- 触发 formFocused 事件 ---
1157
1144
  core.trigger('formFocused', taskId, dialogFormId);
1158
1145
  // --- 判断点击的窗体是不是就是 dialog mask 窗体本身 ---
@@ -1172,6 +1159,8 @@ export function changeFocus(formId: number = 0): void {
1172
1159
  // --- 正常开启 focus ---
1173
1160
  t.forms[formId].vapp._container.dataset.formFocus = '';
1174
1161
  t.forms[formId].vroot._formFocus = true;
1162
+ focusId = formId;
1163
+ task.setFocus(t.id);
1175
1164
  // --- 触发 formFocused 事件 ---
1176
1165
  core.trigger('formFocused', taskId, formId);
1177
1166
  }
@@ -1851,6 +1840,7 @@ export function remove(formId: number): boolean {
1851
1840
  }
1852
1841
  task.list[taskId].forms[formId].vapp.unmount();
1853
1842
  task.list[taskId].forms[formId].vapp._container.remove();
1843
+ elements.popList.querySelector('[data-form-id="' + formId.toString() + '"]')?.remove();
1854
1844
  if (io > -1) {
1855
1845
  // --- 如果是 dialog 则要执行回调 ---
1856
1846
  task.list[taskId].forms[formId].vroot.cgDialogCallback();
@@ -1860,6 +1850,9 @@ export function remove(formId: number): boolean {
1860
1850
  dom.removeStyle(taskId, 'form', formId);
1861
1851
  // --- 触发 formRemoved 事件 ---
1862
1852
  core.trigger('formRemoved', taskId, formId, title, icon);
1853
+ dom.clearWatchStyle(formId);
1854
+ dom.clearWatchProperty(formId);
1855
+ native.clear(formId, taskId);
1863
1856
  // --- 检测是否已经没有窗体了,如果没有了的话就要结束任务了 ---
1864
1857
  if (Object.keys(task.list[taskId].forms).length === 0) {
1865
1858
  task.end(taskId);
@@ -1912,6 +1905,7 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
1912
1905
  }
1913
1906
  // --- 准备相关变量 ---
1914
1907
  let data: Record<string, any> = {};
1908
+ let access: Record<string, any> = {};
1915
1909
  let methods: Record<string, any> | undefined = undefined;
1916
1910
  let computed: Record<string, any> = {};
1917
1911
  let beforeCreate: (() => void) | undefined = undefined;
@@ -1924,6 +1918,7 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
1924
1918
  let unmounted: (() => void) | undefined = undefined;
1925
1919
  if (opt.code) {
1926
1920
  data = opt.code.data ?? {};
1921
+ access = opt.code.access ?? {};
1927
1922
  methods = opt.code.methods;
1928
1923
  computed = opt.code.computed ?? {};
1929
1924
  beforeCreate = opt.code.beforeCreate;
@@ -1965,8 +1960,13 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
1965
1960
  layout = layout.replace(/@(touchstart|touchmove|wheel)=/g, '@$1.passive=');
1966
1961
  layout = layout.replace(/@(touchstart|touchmove|wheel)\.not=/g, '@$1=');
1967
1962
  */
1963
+ // --- 给 teleport 做处理 ---
1964
+ if (layout.includes('<teleport')) {
1965
+ layout = tool.teleportGlue(layout, formId);
1966
+ }
1968
1967
  // --- 插入 HTML 到 Element ---
1969
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>`);
1970
1970
  // --- 获取刚才的 form wrap element 对象 ---
1971
1971
  const el: HTMLElement = elements.list.children.item(elements.list.children.length - 1) as HTMLElement;
1972
1972
  // --- 创建窗体对象 ---
@@ -2039,6 +2039,10 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
2039
2039
  return;
2040
2040
  }
2041
2041
  };
2042
+ // --- 判断是否要与 native 实体窗体大小同步 ---
2043
+ if (clickgo.isNative() && (formId === 1) && !clickgo.isImmersion() && !clickgo.hasFrame()) {
2044
+ data.isNativeSync = true;
2045
+ }
2042
2046
  // --- 挂载 style ---
2043
2047
  if (style) {
2044
2048
  // --- 窗体的 style ---
@@ -2058,7 +2062,10 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
2058
2062
  'computed': computed,
2059
2063
 
2060
2064
  'beforeCreate': beforeCreate,
2061
- 'created': created,
2065
+ 'created': function(this: types.IVue) {
2066
+ this.access = tool.clone(access);
2067
+ created?.call(this);
2068
+ },
2062
2069
  'beforeMount': beforeMount,
2063
2070
  'mounted': async function(this: types.IVue) {
2064
2071
  await this.$nextTick();
@@ -2122,20 +2129,35 @@ export async function create(opt: types.IFormCreateOptions): Promise<number> {
2122
2129
  await mounted.call(rtn.vroot, opt.data);
2123
2130
  }
2124
2131
  catch (err: any) {
2132
+ // --- 窗体创建失败,做垃圾回收 ---
2125
2133
  core.trigger('error', rtn.vroot.taskId, rtn.vroot.formId, err, 'Create form mounted error.');
2126
- t.forms[formId] = undefined as any;
2127
2134
  delete t.forms[formId];
2128
- rtn.vapp.unmount();
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
+ }
2129
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 ---
2130
2153
  dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId);
2131
2154
  return -8;
2132
2155
  }
2133
2156
  }
2134
2157
  // --- 触发 formCreated 事件 ---
2135
2158
  core.trigger('formCreated', opt.taskId, formId, rtn.vroot.$refs.form.title, rtn.vroot.$refs.form.iconDataUrl);
2136
- // --- 判断是否要与 native 实体窗体大小同步 ---
2137
- if (clickgo.isNative() && (formId === 1) && !clickgo.isImmersion() && !clickgo.hasFrame()) {
2138
- rtn.vroot.$refs.form.isNativeSync = true;
2159
+ // --- 同步的窗体先进行同步一下 ---
2160
+ if (rtn.vroot.isNativeSync) {
2139
2161
  native.invoke('cg-set-size', native.getToken(), rtn.vroot.$refs.form.$el.offsetWidth, rtn.vroot.$refs.form.$el.offsetHeight);
2140
2162
  window.addEventListener('resize', function(): void {
2141
2163
  rtn.vroot.$refs.form.setPropData('width', window.innerWidth);
@@ -2192,7 +2214,7 @@ export function dialog(opt: string | types.IFormDialogOptions): Promise<string>
2192
2214
  }
2193
2215
  }
2194
2216
  };
2195
- 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) => {
2196
2218
  if (typeof frm === 'number') {
2197
2219
  resolve('');
2198
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/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/greatview/', '/app/demo/form/control/greatview/greatview.css', '/app/demo/form/control/greatview/greatview.js', '/app/demo/form/control/greatview/greatview.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/overflow/', '/app/demo/form/control/overflow/overflow.css', '/app/demo/form/control/overflow/overflow.js', '/app/demo/form/control/overflow/overflow.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/view/', '/app/demo/form/control/view/view.css', '/app/demo/form/control/view/view.js', '/app/demo/form/control/view/view.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/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/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'];
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/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/greatview/', '/app/demo/form/control/greatview/greatview.css', '/app/demo/form/control/greatview/greatview.js', '/app/demo/form/control/greatview/greatview.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/overflow/', '/app/demo/form/control/overflow/overflow.css', '/app/demo/form/control/overflow/overflow.js', '/app/demo/form/control/overflow/overflow.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/view/', '/app/demo/form/control/view/view.css', '/app/demo/form/control/view/view.js', '/app/demo/form/control/view/view.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/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/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'];
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;