clickgo 3.11.34 → 3.12.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.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/dist/app/demo/config.json +7 -1
  3. package/dist/app/demo/form/control/page/page.js +2 -0
  4. package/dist/app/demo/form/control/page/page.xml +6 -1
  5. package/dist/app/demo/form/control/select/select.xml +1 -1
  6. package/dist/app/demo/form/control/tuiviewer/tuiviewer.js +35 -0
  7. package/dist/app/demo/form/control/tuiviewer/tuiviewer.xml +14 -0
  8. package/dist/app/demo/form/control/weditor/weditor.js +69 -0
  9. package/dist/app/demo/form/control/weditor/weditor.xml +22 -0
  10. package/dist/app/demo/form/main.js +10 -0
  11. package/dist/app/demo/form/main.xml +2 -0
  12. package/dist/app/demo/form/method/aform/aform.xml +1 -1
  13. package/dist/app/demo/form/method/core/core.xml +1 -1
  14. package/dist/app/demo/form/method/dom/dom.js +12 -0
  15. package/dist/app/demo/form/method/dom/dom.xml +4 -0
  16. package/dist/app/demo/form/method/form/form.xml +7 -1
  17. package/dist/clickgo.js +1 -1
  18. package/dist/clickgo.ts +1 -1
  19. package/dist/control/arteditor.cgc +0 -0
  20. package/dist/control/box.cgc +0 -0
  21. package/dist/control/common.cgc +0 -0
  22. package/dist/control/desc.cgc +0 -0
  23. package/dist/control/drawer.cgc +0 -0
  24. package/dist/control/echarts.cgc +0 -0
  25. package/dist/control/form.cgc +0 -0
  26. package/dist/control/iconview.cgc +0 -0
  27. package/dist/control/map.cgc +0 -0
  28. package/dist/control/monaco.cgc +0 -0
  29. package/dist/control/nav.cgc +0 -0
  30. package/dist/control/page.cgc +0 -0
  31. package/dist/control/property.cgc +0 -0
  32. package/dist/control/table.cgc +0 -0
  33. package/dist/control/task.cgc +0 -0
  34. package/dist/control/tuieditor.cgc +0 -0
  35. package/dist/control/tuiviewer.cgc +0 -0
  36. package/dist/control/weditor.cgc +0 -0
  37. package/dist/control/xterm.cgc +0 -0
  38. package/dist/lib/control.js +5 -0
  39. package/dist/lib/control.ts +5 -0
  40. package/dist/lib/core.js +17 -0
  41. package/dist/lib/core.ts +15 -0
  42. package/dist/lib/dom.js +163 -6
  43. package/dist/lib/dom.ts +222 -6
  44. package/dist/lib/form.js +78 -15
  45. package/dist/lib/form.ts +93 -17
  46. package/dist/lib/fs.js +1 -1
  47. package/dist/lib/fs.ts +1 -1
  48. package/dist/lib/task.js +13 -0
  49. package/dist/lib/task.ts +19 -0
  50. package/dist/lib/tool.js +6 -11
  51. package/dist/lib/tool.ts +8 -10
  52. package/dist/theme/byterun.cgt +0 -0
  53. package/dist/theme/familiar.cgt +0 -0
  54. package/dist/theme/light.cgt +0 -0
  55. package/package.json +2 -2
  56. package/types/index.d.ts +17 -1
package/dist/lib/form.js CHANGED
@@ -32,8 +32,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
32
32
  });
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.flash = exports.prompt = exports.confirm = exports.dialog = exports.create = exports.createPanel = exports.removePanel = exports.remove = exports.doFocusAndPopEvent = exports.hidePop = exports.showPop = exports.removeFromPop = exports.appendToPop = exports.hideNotify = exports.notifyProgress = exports.notify = exports.hideDrag = exports.moveDrag = exports.showDrag = exports.hideRectangle = exports.showRectangle = exports.moveRectangle = exports.showCircular = exports.getRectByBorder = exports.getMaxZIndexID = exports.changeFocus = exports.hashBack = exports.getHash = exports.hash = exports.setActivePanel = exports.removeActivePanel = exports.getActivePanel = exports.activePanels = exports.getFocus = exports.getList = exports.send = exports.get = exports.getTaskId = exports.refreshMaxPosition = exports.bindDrag = exports.bindResize = exports.close = exports.max = exports.min = exports.superConfirm = exports.elements = exports.launcherRoot = exports.simpleSystemTaskRoot = exports.AbstractForm = exports.AbstractPanel = void 0;
36
- exports.hideLauncher = exports.showLauncher = void 0;
35
+ exports.prompt = exports.confirm = exports.dialog = exports.create = exports.createPanel = exports.removePanel = exports.remove = exports.doFocusAndPopEvent = exports.isJustPop = exports.hidePop = exports.showPop = exports.removeFromPop = exports.appendToPop = exports.hideNotify = exports.notifyProgress = exports.notify = exports.hideDrag = exports.moveDrag = exports.showDrag = exports.hideRectangle = exports.showRectangle = exports.moveRectangle = exports.showCircular = exports.getRectByBorder = exports.getMaxZIndexID = exports.changeFocus = exports.hashBack = exports.getHash = exports.hash = exports.setActivePanel = exports.removeActivePanel = exports.getActivePanel = exports.activePanels = exports.getFocus = exports.getList = exports.send = exports.get = exports.getTaskId = exports.refreshMaxPosition = exports.bindDrag = exports.bindResize = exports.close = exports.max = exports.min = exports.superConfirm = exports.elements = exports.launcherRoot = exports.simpleSystemTaskRoot = exports.AbstractForm = exports.AbstractPanel = void 0;
36
+ exports.hideLauncher = exports.showLauncher = exports.flash = void 0;
37
37
  const clickgo = __importStar(require("../clickgo"));
38
38
  const core = __importStar(require("./core"));
39
39
  const task = __importStar(require("./task"));
@@ -567,6 +567,8 @@ exports.AbstractForm = AbstractForm;
567
567
  const popInfo = {
568
568
  'list': [],
569
569
  'elList': [],
570
+ 'wayList': [],
571
+ 'time': [],
570
572
  'lastZIndex': 0
571
573
  };
572
574
  let superConfirmHandler = undefined;
@@ -586,6 +588,9 @@ exports.elements = {
586
588
  this.wrap.id = 'cg-wrap';
587
589
  document.getElementsByTagName('body')[0].appendChild(this.wrap);
588
590
  this.wrap.addEventListener('touchmove', function (e) {
591
+ if (e.target && dom.findParentByData(e.target, 'cg-scroll')) {
592
+ return;
593
+ }
589
594
  if (e.cancelable) {
590
595
  e.preventDefault();
591
596
  }
@@ -593,6 +598,9 @@ exports.elements = {
593
598
  'passive': false
594
599
  });
595
600
  this.wrap.addEventListener('wheel', function (e) {
601
+ if (e.target && (e.target.dataset.cgScroll !== undefined) || dom.findParentByData(e.target, 'cg-scroll')) {
602
+ return;
603
+ }
596
604
  e.preventDefault();
597
605
  }, {
598
606
  'passive': false
@@ -1648,6 +1656,19 @@ function refreshPopPosition(el, pop, direction, size = {}) {
1648
1656
  }
1649
1657
  let lastShowPopTime = 0;
1650
1658
  function showPop(el, pop, direction, opt = {}) {
1659
+ var _a;
1660
+ if (!(el instanceof HTMLElement)) {
1661
+ if (!el.$el) {
1662
+ return;
1663
+ }
1664
+ el = el.$el;
1665
+ }
1666
+ if (pop && !(pop instanceof HTMLElement)) {
1667
+ if (!pop.$el) {
1668
+ return;
1669
+ }
1670
+ pop = pop.$el;
1671
+ }
1651
1672
  if (opt.null === undefined) {
1652
1673
  opt.null = false;
1653
1674
  }
@@ -1681,15 +1702,10 @@ function showPop(el, pop, direction, opt = {}) {
1681
1702
  return;
1682
1703
  }
1683
1704
  const parentPop = dom.findParentByData(el, 'cg-pop');
1684
- if (parentPop) {
1685
- for (let i = 0; i < popInfo.list.length; ++i) {
1686
- if (popInfo.list[i] !== parentPop) {
1687
- continue;
1688
- }
1689
- if (!popInfo.elList[i + 1]) {
1690
- continue;
1691
- }
1692
- hidePop(popInfo.elList[i + 1]);
1705
+ if (parentPop && parentPop.dataset.cgLevel !== undefined) {
1706
+ const nextlevel = parseInt(parentPop.dataset.cgLevel) + 1;
1707
+ if (popInfo.elList[nextlevel]) {
1708
+ hidePop(popInfo.elList[nextlevel]);
1693
1709
  }
1694
1710
  }
1695
1711
  else {
@@ -1707,8 +1723,15 @@ function showPop(el, pop, direction, opt = {}) {
1707
1723
  refreshPopPosition(el, pop, direction, opt.size);
1708
1724
  });
1709
1725
  }
1726
+ if (opt.autoScroll && typeof direction === 'string') {
1727
+ clickgo.dom.watchPosition(el, () => {
1728
+ refreshPopPosition(el, pop, direction, opt.size);
1729
+ });
1730
+ }
1710
1731
  popInfo.list.push(pop);
1711
1732
  popInfo.elList.push(el);
1733
+ popInfo.wayList.push((_a = opt.way) !== null && _a !== void 0 ? _a : 'normal');
1734
+ popInfo.time.push(Date.now());
1712
1735
  pop.dataset.cgOpen = '';
1713
1736
  pop.dataset.cgLevel = (popInfo.list.length - 1).toString();
1714
1737
  el.dataset.cgPopOpen = '';
@@ -1716,6 +1739,12 @@ function showPop(el, pop, direction, opt = {}) {
1716
1739
  }
1717
1740
  exports.showPop = showPop;
1718
1741
  function hidePop(pop) {
1742
+ if (pop && !(pop instanceof HTMLElement)) {
1743
+ if (!pop.$el) {
1744
+ return;
1745
+ }
1746
+ pop = pop.$el;
1747
+ }
1719
1748
  if (!pop) {
1720
1749
  if (popInfo.elList.length === 0) {
1721
1750
  return;
@@ -1749,6 +1778,7 @@ function hidePop(pop) {
1749
1778
  pop.removeAttribute('data-cg-open');
1750
1779
  pop.removeAttribute('data-cg-level');
1751
1780
  clickgo.dom.unwatchSize(pop);
1781
+ clickgo.dom.unwatchPosition(popInfo.elList[level]);
1752
1782
  popInfo.elList[level].removeAttribute('data-cg-pop-open');
1753
1783
  popInfo.elList[level].removeAttribute('data-cg-level');
1754
1784
  }
@@ -1757,14 +1787,32 @@ function hidePop(pop) {
1757
1787
  popInfo.list[level].removeAttribute('data-cg-open');
1758
1788
  popInfo.list[level].removeAttribute('data-cg-level');
1759
1789
  clickgo.dom.unwatchSize(popInfo.list[level]);
1790
+ clickgo.dom.unwatchPosition(pop);
1760
1791
  }
1761
1792
  pop.removeAttribute('data-cg-pop-open');
1762
1793
  pop.removeAttribute('data-cg-level');
1763
1794
  }
1764
1795
  popInfo.list.splice(level);
1765
1796
  popInfo.elList.splice(level);
1797
+ popInfo.wayList.splice(level);
1798
+ popInfo.time.splice(level);
1766
1799
  }
1767
1800
  exports.hidePop = hidePop;
1801
+ function isJustPop(el) {
1802
+ if (el instanceof HTMLElement) {
1803
+ const level = el.dataset.cgLevel;
1804
+ if (!level) {
1805
+ return false;
1806
+ }
1807
+ el = parseInt(level);
1808
+ }
1809
+ const time = popInfo.time[el];
1810
+ if (Date.now() - time >= 100) {
1811
+ return false;
1812
+ }
1813
+ return true;
1814
+ }
1815
+ exports.isJustPop = isJustPop;
1768
1816
  function doFocusAndPopEvent(e) {
1769
1817
  var _a, _b;
1770
1818
  if (dom.hasTouchButMouse(e)) {
@@ -1775,19 +1823,24 @@ function doFocusAndPopEvent(e) {
1775
1823
  return;
1776
1824
  }
1777
1825
  const paths = (_a = e.path) !== null && _a !== void 0 ? _a : (e.composedPath ? e.composedPath() : []);
1778
- let isCgPopOpen = false;
1826
+ let isCgPopOpen = null;
1779
1827
  for (const item of paths) {
1780
1828
  if (!item.tagName) {
1781
1829
  continue;
1782
1830
  }
1783
1831
  if (item.dataset.cgPopOpen !== undefined) {
1784
- isCgPopOpen = true;
1832
+ isCgPopOpen = item;
1785
1833
  continue;
1786
1834
  }
1787
1835
  if (item.classList.contains('cg-form-wrap')) {
1788
1836
  const formId = parseInt((_b = item.getAttribute('data-form-id')) !== null && _b !== void 0 ? _b : '0');
1789
1837
  changeFocus(formId);
1790
- if (!isCgPopOpen) {
1838
+ if (isCgPopOpen) {
1839
+ if (!isJustPop(isCgPopOpen)) {
1840
+ hidePop();
1841
+ }
1842
+ }
1843
+ else {
1791
1844
  hidePop();
1792
1845
  }
1793
1846
  return;
@@ -1803,7 +1856,13 @@ function doFocusAndPopEvent(e) {
1803
1856
  if (item.tagName.toLowerCase() === 'body') {
1804
1857
  break;
1805
1858
  }
1806
- if (item.id === 'cg-pop-list') {
1859
+ if (item.dataset.cgPop !== undefined) {
1860
+ if (item.dataset.cgLevel) {
1861
+ const nextlevel = parseInt(item.dataset.cgLevel) + 1;
1862
+ if (popInfo.wayList[nextlevel] === 'click' && !isJustPop(nextlevel)) {
1863
+ clickgo.form.hidePop(popInfo.list[nextlevel]);
1864
+ }
1865
+ }
1807
1866
  return;
1808
1867
  }
1809
1868
  }
@@ -1856,6 +1915,7 @@ function remove(formId) {
1856
1915
  core.trigger('formRemoved', taskId, formId, title, icon);
1857
1916
  dom.clearWatchStyle(formId);
1858
1917
  dom.clearWatchProperty(formId);
1918
+ dom.clearWatchPosition(formId);
1859
1919
  native.clear(formId, taskId);
1860
1920
  delete exports.activePanels[formId];
1861
1921
  if (Object.keys(task.list[taskId].forms).length === 0) {
@@ -1886,6 +1946,7 @@ function removePanel(id, vapp, el) {
1886
1946
  dom.removeStyle(tid, 'form', formId, id);
1887
1947
  dom.clearWatchStyle(formId, id);
1888
1948
  dom.clearWatchProperty(formId, id);
1949
+ dom.clearWatchPosition(formId, id);
1889
1950
  if (exports.activePanels[formId]) {
1890
1951
  const io = exports.activePanels[formId].indexOf(id);
1891
1952
  if (io >= 0) {
@@ -2206,6 +2267,7 @@ function createPanel(rootPanel_1, cls_1) {
2206
2267
  rtn.vapp._container.remove();
2207
2268
  dom.clearWatchStyle(rtn.vroot.formId, panelId);
2208
2269
  dom.clearWatchProperty(rtn.vroot.formId, panelId);
2270
+ dom.clearWatchPosition(rtn.vroot.formId, panelId);
2209
2271
  dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId, panelId);
2210
2272
  throw err;
2211
2273
  }
@@ -2594,6 +2656,7 @@ function create(cls_1, data_1) {
2594
2656
  (_b = exports.elements.popList.querySelector('[data-form-id="' + rtn.vroot.formId + '"]')) === null || _b === void 0 ? void 0 : _b.remove();
2595
2657
  dom.clearWatchStyle(rtn.vroot.formId);
2596
2658
  dom.clearWatchProperty(rtn.vroot.formId);
2659
+ dom.clearWatchPosition(rtn.vroot.formId);
2597
2660
  native.clear(formId, t.id);
2598
2661
  dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId);
2599
2662
  throw err;
package/dist/lib/form.ts CHANGED
@@ -838,11 +838,17 @@ const popInfo: {
838
838
  'list': HTMLElement[];
839
839
  /** --- 当前显示的 pop 的母标签 --- */
840
840
  'elList': HTMLElement[];
841
+ /** --- 当前展示的 pop 托管方式(normal、click、hover) --- */
842
+ 'wayList': Array<'normal' | 'click' | 'hover'>;
843
+ /** --- 每个层弹出时的时间戳 --- */
844
+ 'time': number[];
841
845
  /** --- pop 最后一个层级 --- */
842
846
  'lastZIndex': number;
843
847
  } = {
844
848
  'list': [],
845
849
  'elList': [],
850
+ 'wayList': [],
851
+ 'time': [],
846
852
  'lastZIndex': 0
847
853
  };
848
854
 
@@ -883,6 +889,9 @@ export const elements: {
883
889
  document.getElementsByTagName('body')[0].appendChild(this.wrap);
884
890
  this.wrap.addEventListener('touchmove', function(e): void {
885
891
  // --- 防止拖动时整个网页跟着动 ---
892
+ if (e.target && dom.findParentByData(e.target as HTMLElement, 'cg-scroll')) {
893
+ return;
894
+ }
886
895
  if (e.cancelable) {
887
896
  e.preventDefault();
888
897
  }
@@ -892,6 +901,9 @@ export const elements: {
892
901
  });
893
902
  this.wrap.addEventListener('wheel', function(e): void {
894
903
  // --- 防止不小心前进后退,或上下缓动滚动(Mac、触摸板) ---
904
+ if (e.target && ((e.target as HTMLElement).dataset.cgScroll !== undefined) || dom.findParentByData(e.target as HTMLElement, 'cg-scroll')) {
905
+ return;
906
+ }
895
907
  e.preventDefault();
896
908
  }, {
897
909
  'passive': false
@@ -2162,19 +2174,35 @@ function refreshPopPosition(el: HTMLElement, pop: HTMLElement, direction: 'h' |
2162
2174
 
2163
2175
  /** --- 最后一次 touchstart 的时间戳 */
2164
2176
  let lastShowPopTime: number = 0;
2177
+
2165
2178
  /**
2166
2179
  * --- 获取 pop 显示出来的坐标并报系统全局记录 ---
2167
2180
  * @param el 响应的元素
2168
2181
  * @param pop 要显示 pop 元素
2169
2182
  * @param direction 要显示方向(以 $el 为准的 h 水平 v 垂直 t 垂直水平居中)或坐标
2170
- * @param opt width / height 显示的 pop 定义自定义宽/高度,可省略;null,true 代表为空也会显示,默认为 false; autoPosition, 自动更新 pop 位置,默认 false,true 为原元素位置变更,pop 位置也会变更,pop 大小变更,位置也会变更, flow: 是否加入 pop 流,默认加入,不加入的话将不会自动隐藏
2183
+ * @param opt width / height 显示的 pop 定义自定义宽/高度,可省略;null,true 代表为空也会显示,默认为 false; autoPosition, pop 内部内容变动导致的自动更新 pop 位置,默认 false,autoScroll,因原元素位置变更导致 pop 位置变更,默认 false,flow: 是否加入 pop 流,默认加入,不加入的话将不会自动隐藏
2171
2184
  */
2172
- export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction: 'h' | 'v' | 't' | MouseEvent | TouchEvent | { x: number; y: number; }, opt: {
2185
+ export function showPop(el: HTMLElement | types.IVue, pop: HTMLElement | types.IVue | undefined, direction: 'h' | 'v' | 't' | MouseEvent | TouchEvent | { x: number; y: number; }, opt: {
2173
2186
  'size'?: { width?: number; height?: number; };
2174
2187
  'null'?: boolean;
2175
2188
  'autoPosition'?: boolean;
2189
+ 'autoScroll'?: boolean;
2176
2190
  'flow'?: boolean;
2191
+ /** --- 展示托管方式 --- */
2192
+ 'way'?: 'normal' | 'click' | 'hover';
2177
2193
  } = {}): void {
2194
+ if (!(el instanceof HTMLElement)) {
2195
+ if (!el.$el) {
2196
+ return;
2197
+ }
2198
+ el = el.$el;
2199
+ }
2200
+ if (pop && !(pop instanceof HTMLElement)) {
2201
+ if (!pop.$el) {
2202
+ return;
2203
+ }
2204
+ pop = pop.$el;
2205
+ }
2178
2206
  // --- opt.null 为 true 代表可为空,为空也会被显示,默认为 false ---
2179
2207
  if (opt.null === undefined) {
2180
2208
  opt.null = false;
@@ -2214,15 +2242,10 @@ export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction
2214
2242
  }
2215
2243
  /** --- 要不要隐藏别的 pop --- */
2216
2244
  const parentPop = dom.findParentByData(el, 'cg-pop');
2217
- if (parentPop) {
2218
- for (let i = 0; i < popInfo.list.length; ++i) {
2219
- if (popInfo.list[i] !== parentPop) {
2220
- continue;
2221
- }
2222
- if (!popInfo.elList[i + 1]) {
2223
- continue;
2224
- }
2225
- hidePop(popInfo.elList[i + 1]);
2245
+ if (parentPop && parentPop.dataset.cgLevel !== undefined) {
2246
+ const nextlevel = parseInt(parentPop.dataset.cgLevel) + 1;
2247
+ if (popInfo.elList[nextlevel]) {
2248
+ hidePop(popInfo.elList[nextlevel]);
2226
2249
  }
2227
2250
  }
2228
2251
  else {
@@ -2244,8 +2267,16 @@ export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction
2244
2267
  refreshPopPosition(el, pop, direction, opt.size);
2245
2268
  });
2246
2269
  }
2270
+ if (opt.autoScroll && typeof direction === 'string') {
2271
+ // --- 可能根据原元素重置 pop 位置 ---
2272
+ clickgo.dom.watchPosition(el, () => {
2273
+ refreshPopPosition(el, pop, direction, opt.size);
2274
+ });
2275
+ }
2247
2276
  popInfo.list.push(pop);
2248
2277
  popInfo.elList.push(el);
2278
+ popInfo.wayList.push(opt.way ?? 'normal');
2279
+ popInfo.time.push(Date.now());
2249
2280
  pop.dataset.cgOpen = '';
2250
2281
  pop.dataset.cgLevel = (popInfo.list.length - 1).toString();
2251
2282
  el.dataset.cgPopOpen = '';
@@ -2255,7 +2286,13 @@ export function showPop(el: HTMLElement, pop: HTMLElement | undefined, direction
2255
2286
  /**
2256
2287
  * --- 隐藏正在显示中的所有 pop,或指定 pop/el ---
2257
2288
  */
2258
- export function hidePop(pop?: HTMLElement): void {
2289
+ export function hidePop(pop?: HTMLElement | types.IVue): void {
2290
+ if (pop && !(pop instanceof HTMLElement)) {
2291
+ if (!pop.$el) {
2292
+ return;
2293
+ }
2294
+ pop = pop.$el;
2295
+ }
2259
2296
  if (!pop) {
2260
2297
  if (popInfo.elList.length === 0) {
2261
2298
  return;
@@ -2291,6 +2328,7 @@ export function hidePop(pop?: HTMLElement): void {
2291
2328
  pop.removeAttribute('data-cg-open');
2292
2329
  pop.removeAttribute('data-cg-level');
2293
2330
  clickgo.dom.unwatchSize(pop);
2331
+ clickgo.dom.unwatchPosition(popInfo.elList[level]);
2294
2332
  popInfo.elList[level].removeAttribute('data-cg-pop-open');
2295
2333
  popInfo.elList[level].removeAttribute('data-cg-level');
2296
2334
  }
@@ -2299,12 +2337,31 @@ export function hidePop(pop?: HTMLElement): void {
2299
2337
  popInfo.list[level].removeAttribute('data-cg-open');
2300
2338
  popInfo.list[level].removeAttribute('data-cg-level');
2301
2339
  clickgo.dom.unwatchSize(popInfo.list[level]);
2340
+ clickgo.dom.unwatchPosition(pop);
2302
2341
  }
2303
2342
  pop.removeAttribute('data-cg-pop-open');
2304
2343
  pop.removeAttribute('data-cg-level');
2305
2344
  }
2306
2345
  popInfo.list.splice(level);
2307
2346
  popInfo.elList.splice(level);
2347
+ popInfo.wayList.splice(level);
2348
+ popInfo.time.splice(level);
2349
+ }
2350
+
2351
+ /** --- 检测 pop 是不是刚刚显示的 --- */
2352
+ export function isJustPop(el: HTMLElement | number): boolean {
2353
+ if (el instanceof HTMLElement) {
2354
+ const level = el.dataset.cgLevel;
2355
+ if (!level) {
2356
+ return false;
2357
+ }
2358
+ el = parseInt(level);
2359
+ }
2360
+ const time = popInfo.time[el];
2361
+ if (Date.now() - time >= 100) {
2362
+ return false;
2363
+ }
2364
+ return true;
2308
2365
  }
2309
2366
 
2310
2367
  /**
@@ -2321,20 +2378,26 @@ export function doFocusAndPopEvent(e: MouseEvent | TouchEvent): void {
2321
2378
  }
2322
2379
  const paths: HTMLElement[] = (e as any).path ?? (e.composedPath ? e.composedPath() : []);
2323
2380
  // --- 检测是不是窗体内部点击 ---
2324
- let isCgPopOpen = false;
2381
+ /** --- 当前点在了触发弹出层的原元素上 --- */
2382
+ let isCgPopOpen: HTMLElement | null = null;
2325
2383
  for (const item of paths) {
2326
2384
  if (!item.tagName) {
2327
2385
  continue;
2328
2386
  }
2329
2387
  if (item.dataset.cgPopOpen !== undefined) {
2330
- isCgPopOpen = true;
2388
+ isCgPopOpen = item;
2331
2389
  continue;
2332
2390
  }
2333
2391
  if (item.classList.contains('cg-form-wrap')) {
2334
2392
  // --- 窗体内部点击,转换焦点到当前窗体,但触发隐藏 pop ---
2335
2393
  const formId = parseInt(item.getAttribute('data-form-id') ?? '0');
2336
2394
  changeFocus(formId);
2337
- if (!isCgPopOpen) {
2395
+ if (isCgPopOpen) {
2396
+ if (!isJustPop(isCgPopOpen)) {
2397
+ hidePop();
2398
+ }
2399
+ }
2400
+ else {
2338
2401
  hidePop();
2339
2402
  }
2340
2403
  return;
@@ -2351,8 +2414,17 @@ export function doFocusAndPopEvent(e: MouseEvent | TouchEvent): void {
2351
2414
  if (item.tagName.toLowerCase() === 'body') {
2352
2415
  break;
2353
2416
  }
2354
- if (item.id === 'cg-pop-list') {
2355
- // --- 弹出层点击,不触发丢失焦点,也不触发隐藏 pop,是否隐藏请自行处理 ---
2417
+ if (item.dataset.cgPop !== undefined) {
2418
+ // --- 弹出层内点击,不触发丢失焦点
2419
+ // --- normal: 不触发隐藏 pop,是否隐藏请自行处理 ---
2420
+ // --- click: 自动隐藏下一层 pop,若有 ---
2421
+ if (item.dataset.cgLevel) {
2422
+ const nextlevel = parseInt(item.dataset.cgLevel) + 1;
2423
+ if (popInfo.wayList[nextlevel] === 'click' && !isJustPop(nextlevel)) {
2424
+ // --- 隐藏 ---
2425
+ clickgo.form.hidePop(popInfo.list[nextlevel]);
2426
+ }
2427
+ }
2356
2428
  return;
2357
2429
  }
2358
2430
  }
@@ -2416,6 +2488,7 @@ export function remove(formId: number): boolean {
2416
2488
  core.trigger('formRemoved', taskId, formId, title, icon);
2417
2489
  dom.clearWatchStyle(formId);
2418
2490
  dom.clearWatchProperty(formId);
2491
+ dom.clearWatchPosition(formId);
2419
2492
  native.clear(formId, taskId);
2420
2493
  delete activePanels[formId];
2421
2494
  // --- 检测是否已经没有窗体了,如果没有了的话就要结束任务了 ---
@@ -2453,6 +2526,7 @@ export function removePanel(id: number, vapp: types.IVApp, el: HTMLElement): boo
2453
2526
  dom.removeStyle(tid, 'form', formId, id);
2454
2527
  dom.clearWatchStyle(formId, id);
2455
2528
  dom.clearWatchProperty(formId, id);
2529
+ dom.clearWatchPosition(formId, id);
2456
2530
  if (activePanels[formId]) {
2457
2531
  const io = activePanels[formId].indexOf(id);
2458
2532
  if (io >= 0) {
@@ -2836,6 +2910,7 @@ export async function createPanel<T extends AbstractPanel>(
2836
2910
  rtn.vapp._container.remove();
2837
2911
  dom.clearWatchStyle(rtn.vroot.formId, panelId);
2838
2912
  dom.clearWatchProperty(rtn.vroot.formId, panelId);
2913
+ dom.clearWatchPosition(rtn.vroot.formId, panelId);
2839
2914
  // --- 移除 style ---
2840
2915
  dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId, panelId);
2841
2916
  throw err;
@@ -3300,6 +3375,7 @@ export async function create<T extends AbstractForm>(
3300
3375
  elements.popList.querySelector('[data-form-id="' + rtn.vroot.formId + '"]')?.remove();
3301
3376
  dom.clearWatchStyle(rtn.vroot.formId);
3302
3377
  dom.clearWatchProperty(rtn.vroot.formId);
3378
+ dom.clearWatchPosition(rtn.vroot.formId);
3303
3379
  native.clear(formId, t.id);
3304
3380
  // --- 移除 style ---
3305
3381
  dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId);
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/drawer/', '/app/demo/form/control/drawer/drawer.js', '/app/demo/form/control/drawer/drawer.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/group/', '/app/demo/form/control/group/group.js', '/app/demo/form/control/group/group.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/sgroup/', '/app/demo/form/control/sgroup/sgroup.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/switch/', '/app/demo/form/control/switch/switch.js', '/app/demo/form/control/switch/switch.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tip/', '/app/demo/form/control/tip/tip.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/vflow/', '/app/demo/form/control/vflow/vflow.css', '/app/demo/form/control/vflow/vflow.js', '/app/demo/form/control/vflow/vflow.xml', '/app/demo/form/control/video/', '/app/demo/form/control/video/video.js', '/app/demo/form/control/video/video.xml', '/app/demo/form/control/xterm/', '/app/demo/form/control/xterm/xterm.js', '/app/demo/form/control/xterm/xterm.xml', '/app/demo/form/event/', '/app/demo/form/event/form/', '/app/demo/form/event/form/form.css', '/app/demo/form/event/form/form.js', '/app/demo/form/event/form/form.xml', '/app/demo/form/event/other/', '/app/demo/form/event/other/other.js', '/app/demo/form/event/other/other.xml', '/app/demo/form/event/screen/', '/app/demo/form/event/screen/screen.js', '/app/demo/form/event/screen/screen.xml', '/app/demo/form/event/task/', '/app/demo/form/event/task/task.js', '/app/demo/form/event/task/task.xml', '/app/demo/form/main.css', '/app/demo/form/main.js', '/app/demo/form/main.xml', '/app/demo/form/method/', '/app/demo/form/method/acontrol/', '/app/demo/form/method/acontrol/acontrol.js', '/app/demo/form/method/acontrol/acontrol.xml', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/custombtn.cgc', '/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/drawer.cgc', '/control/echarts.cgc', '/control/form.cgc', '/control/iconview.cgc', '/control/map.cgc', '/control/markdownit.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/drawer/', '/app/demo/form/control/drawer/drawer.js', '/app/demo/form/control/drawer/drawer.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/group/', '/app/demo/form/control/group/group.js', '/app/demo/form/control/group/group.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/sgroup/', '/app/demo/form/control/sgroup/sgroup.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/switch/', '/app/demo/form/control/switch/switch.js', '/app/demo/form/control/switch/switch.xml', '/app/demo/form/control/tab/', '/app/demo/form/control/tab/tab.js', '/app/demo/form/control/tab/tab.xml', '/app/demo/form/control/table/', '/app/demo/form/control/table/table.js', '/app/demo/form/control/table/table.xml', '/app/demo/form/control/tag/', '/app/demo/form/control/tag/tag.xml', '/app/demo/form/control/text/', '/app/demo/form/control/text/text.js', '/app/demo/form/control/text/text.xml', '/app/demo/form/control/tip/', '/app/demo/form/control/tip/tip.xml', '/app/demo/form/control/tuieditor/', '/app/demo/form/control/tuieditor/tuieditor.js', '/app/demo/form/control/tuieditor/tuieditor.xml', '/app/demo/form/control/tuiviewer/', '/app/demo/form/control/tuiviewer/tuiviewer.js', '/app/demo/form/control/tuiviewer/tuiviewer.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/weditor/', '/app/demo/form/control/weditor/weditor.js', '/app/demo/form/control/weditor/weditor.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/acontrol/', '/app/demo/form/method/acontrol/acontrol.js', '/app/demo/form/method/acontrol/acontrol.xml', '/app/demo/form/method/aform/', '/app/demo/form/method/aform/aform.js', '/app/demo/form/method/aform/aform.xml', '/app/demo/form/method/aform/sd.js', '/app/demo/form/method/aform/sd.xml', '/app/demo/form/method/core/', '/app/demo/form/method/core/core.js', '/app/demo/form/method/core/core.xml', '/app/demo/form/method/dom/', '/app/demo/form/method/dom/dom.css', '/app/demo/form/method/dom/dom.js', '/app/demo/form/method/dom/dom.xml', '/app/demo/form/method/form/', '/app/demo/form/method/form/form.js', '/app/demo/form/method/form/form.xml', '/app/demo/form/method/form/test.xml', '/app/demo/form/method/fs/', '/app/demo/form/method/fs/fs.js', '/app/demo/form/method/fs/fs.xml', '/app/demo/form/method/fs/text.js', '/app/demo/form/method/fs/text.xml', '/app/demo/form/method/native/', '/app/demo/form/method/native/native.js', '/app/demo/form/method/native/native.xml', '/app/demo/form/method/storage/', '/app/demo/form/method/storage/storage.js', '/app/demo/form/method/storage/storage.xml', '/app/demo/form/method/system/', '/app/demo/form/method/system/system.js', '/app/demo/form/method/system/system.xml', '/app/demo/form/method/task/', '/app/demo/form/method/task/locale1.json', '/app/demo/form/method/task/locale2.json', '/app/demo/form/method/task/task.js', '/app/demo/form/method/task/task.xml', '/app/demo/form/method/theme/', '/app/demo/form/method/theme/theme.js', '/app/demo/form/method/theme/theme.xml', '/app/demo/form/method/tool/', '/app/demo/form/method/tool/tool.js', '/app/demo/form/method/tool/tool.xml', '/app/demo/form/method/zip/', '/app/demo/form/method/zip/zip.js', '/app/demo/form/method/zip/zip.xml', '/app/demo/form/solution/', '/app/demo/form/solution/backpanel/', '/app/demo/form/solution/backpanel/backpanel.js', '/app/demo/form/solution/backpanel/backpanel.xml', '/app/demo/global.css', '/app/demo/res/', '/app/demo/res/custombtn.cgc', '/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/drawer.cgc', '/control/echarts.cgc', '/control/form.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/tuiviewer.cgc', '/control/weditor.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?',