clickgo 3.16.28 → 4.0.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 (301) hide show
  1. package/README.md +19 -8
  2. package/dist/app/{demo/res/video.mp4 → demo.cga} +0 -0
  3. package/dist/app/task.cga +0 -0
  4. package/dist/clickgo.d.ts +119 -13
  5. package/dist/control/arteditor.cgc +0 -0
  6. package/dist/control/box.cgc +0 -0
  7. package/dist/control/captcha.cgc +0 -0
  8. package/dist/control/common.cgc +0 -0
  9. package/dist/control/desc.cgc +0 -0
  10. package/dist/control/drawer.cgc +0 -0
  11. package/dist/control/echarts.cgc +0 -0
  12. package/dist/control/form.cgc +0 -0
  13. package/dist/control/iconview.cgc +0 -0
  14. package/dist/control/jodit.cgc +0 -0
  15. package/dist/control/map.cgc +0 -0
  16. package/dist/control/monaco.cgc +0 -0
  17. package/dist/control/mpegts.cgc +0 -0
  18. package/dist/control/nav.cgc +0 -0
  19. package/dist/control/novnc.cgc +0 -0
  20. package/dist/control/page.cgc +0 -0
  21. package/dist/control/pdf.cgc +0 -0
  22. package/dist/control/property.cgc +0 -0
  23. package/dist/control/qrcode.cgc +0 -0
  24. package/dist/control/table.cgc +0 -0
  25. package/dist/control/task.cgc +0 -0
  26. package/dist/control/tplink.cgc +0 -0
  27. package/dist/control/tuieditor.cgc +0 -0
  28. package/dist/control/tuiviewer.cgc +0 -0
  29. package/dist/control/tums.cgc +0 -0
  30. package/dist/control/xterm.cgc +0 -0
  31. package/dist/ext/tums-player/audio.wasm +0 -0
  32. package/dist/ext/tums-player/decoder.worker.js +129 -0
  33. package/dist/ext/tums-player/libaudio.js +1 -0
  34. package/dist/ext/tums-player/libaudio.wasm +0 -0
  35. package/dist/ext/tums-player/libffmpeg.js +1 -0
  36. package/dist/ext/tums-player/libffmpeg.wasm +0 -0
  37. package/dist/ext/tums-player/libs.worker.js +92 -0
  38. package/dist/ext/tums-player/tums-player.umd.min.js +35 -0
  39. package/dist/ext/tums-player/webgl.js +2 -0
  40. package/dist/ext/tums-player/webgl.worker.js +42 -0
  41. package/dist/global.css +1 -1
  42. package/dist/index.js +1 -175
  43. package/dist/theme/dark.cgt +0 -0
  44. package/dist/theme/light.cgt +0 -0
  45. package/package.json +16 -10
  46. package/dist/app/demo/app.js +0 -48
  47. package/dist/app/demo/config.json +0 -252
  48. package/dist/app/demo/form/control/alayout2/alayout2.js +0 -43
  49. package/dist/app/demo/form/control/alayout2/alayout2.xml +0 -16
  50. package/dist/app/demo/form/control/alert/alert.js +0 -43
  51. package/dist/app/demo/form/control/alert/alert.xml +0 -32
  52. package/dist/app/demo/form/control/arteditor/arteditor.js +0 -64
  53. package/dist/app/demo/form/control/arteditor/arteditor.xml +0 -12
  54. package/dist/app/demo/form/control/arteditor/img.js +0 -61
  55. package/dist/app/demo/form/control/arteditor/img.xml +0 -6
  56. package/dist/app/demo/form/control/block/block.css +0 -1
  57. package/dist/app/demo/form/control/block/block.scss +0 -17
  58. package/dist/app/demo/form/control/block/block.xml +0 -7
  59. package/dist/app/demo/form/control/box/box.js +0 -87
  60. package/dist/app/demo/form/control/box/box.xml +0 -23
  61. package/dist/app/demo/form/control/button/button.css +0 -1
  62. package/dist/app/demo/form/control/button/button.js +0 -51
  63. package/dist/app/demo/form/control/button/button.scss +0 -18
  64. package/dist/app/demo/form/control/button/button.xml +0 -133
  65. package/dist/app/demo/form/control/calendar/calendar.js +0 -62
  66. package/dist/app/demo/form/control/calendar/calendar.xml +0 -34
  67. package/dist/app/demo/form/control/captcha/captcha.js +0 -60
  68. package/dist/app/demo/form/control/captcha/captcha.xml +0 -10
  69. package/dist/app/demo/form/control/check/check.js +0 -54
  70. package/dist/app/demo/form/control/check/check.xml +0 -17
  71. package/dist/app/demo/form/control/circle/circle.xml +0 -36
  72. package/dist/app/demo/form/control/content/content.js +0 -47
  73. package/dist/app/demo/form/control/content/content.xml +0 -16
  74. package/dist/app/demo/form/control/date/date.js +0 -56
  75. package/dist/app/demo/form/control/date/date.xml +0 -28
  76. package/dist/app/demo/form/control/datepanel/datepanel.js +0 -63
  77. package/dist/app/demo/form/control/datepanel/datepanel.xml +0 -32
  78. package/dist/app/demo/form/control/daterange/daterange.js +0 -54
  79. package/dist/app/demo/form/control/daterange/daterange.xml +0 -22
  80. package/dist/app/demo/form/control/delete/delete.js +0 -47
  81. package/dist/app/demo/form/control/delete/delete.xml +0 -20
  82. package/dist/app/demo/form/control/desc/desc.js +0 -82
  83. package/dist/app/demo/form/control/desc/desc.xml +0 -44
  84. package/dist/app/demo/form/control/dialog/dialog.js +0 -49
  85. package/dist/app/demo/form/control/dialog/dialog.xml +0 -46
  86. package/dist/app/demo/form/control/drawer/drawer.js +0 -45
  87. package/dist/app/demo/form/control/drawer/drawer.xml +0 -34
  88. package/dist/app/demo/form/control/echarts/echarts.js +0 -137
  89. package/dist/app/demo/form/control/echarts/echarts.xml +0 -12
  90. package/dist/app/demo/form/control/empty/empty.js +0 -44
  91. package/dist/app/demo/form/control/empty/empty.xml +0 -9
  92. package/dist/app/demo/form/control/file/file.js +0 -60
  93. package/dist/app/demo/form/control/file/file.xml +0 -25
  94. package/dist/app/demo/form/control/flow/flow.css +0 -1
  95. package/dist/app/demo/form/control/flow/flow.js +0 -86
  96. package/dist/app/demo/form/control/flow/flow.scss +0 -18
  97. package/dist/app/demo/form/control/flow/flow.xml +0 -101
  98. package/dist/app/demo/form/control/form/form.css +0 -1
  99. package/dist/app/demo/form/control/form/form.js +0 -66
  100. package/dist/app/demo/form/control/form/form.scss +0 -5
  101. package/dist/app/demo/form/control/form/form.xml +0 -29
  102. package/dist/app/demo/form/control/grid/grid.js +0 -45
  103. package/dist/app/demo/form/control/grid/grid.xml +0 -27
  104. package/dist/app/demo/form/control/group/group.js +0 -50
  105. package/dist/app/demo/form/control/group/group.xml +0 -46
  106. package/dist/app/demo/form/control/hske/hske.js +0 -44
  107. package/dist/app/demo/form/control/hske/hske.xml +0 -19
  108. package/dist/app/demo/form/control/html/html.js +0 -70
  109. package/dist/app/demo/form/control/html/html.xml +0 -18
  110. package/dist/app/demo/form/control/icon/icon.xml +0 -49
  111. package/dist/app/demo/form/control/iconview/iconview.js +0 -174
  112. package/dist/app/demo/form/control/iconview/iconview.xml +0 -45
  113. package/dist/app/demo/form/control/img/img.xml +0 -26
  114. package/dist/app/demo/form/control/imgviewer/imgviewer.js +0 -46
  115. package/dist/app/demo/form/control/imgviewer/imgviewer.xml +0 -9
  116. package/dist/app/demo/form/control/jodit/jodit.js +0 -64
  117. package/dist/app/demo/form/control/jodit/jodit.xml +0 -24
  118. package/dist/app/demo/form/control/label/label.js +0 -51
  119. package/dist/app/demo/form/control/label/label.xml +0 -34
  120. package/dist/app/demo/form/control/layout/layout.js +0 -45
  121. package/dist/app/demo/form/control/layout/layout.xml +0 -18
  122. package/dist/app/demo/form/control/link/link.js +0 -42
  123. package/dist/app/demo/form/control/link/link.xml +0 -30
  124. package/dist/app/demo/form/control/list/list.css +0 -1
  125. package/dist/app/demo/form/control/list/list.js +0 -375
  126. package/dist/app/demo/form/control/list/list.scss +0 -7
  127. package/dist/app/demo/form/control/list/list.xml +0 -150
  128. package/dist/app/demo/form/control/loading/loading.xml +0 -8
  129. package/dist/app/demo/form/control/map/map.js +0 -206
  130. package/dist/app/demo/form/control/map/map.xml +0 -44
  131. package/dist/app/demo/form/control/marquee/marquee.js +0 -64
  132. package/dist/app/demo/form/control/marquee/marquee.xml +0 -33
  133. package/dist/app/demo/form/control/menu/menu.js +0 -56
  134. package/dist/app/demo/form/control/menu/menu.xml +0 -125
  135. package/dist/app/demo/form/control/monaco/monaco.js +0 -136
  136. package/dist/app/demo/form/control/monaco/monaco.xml +0 -28
  137. package/dist/app/demo/form/control/mpegts/mpegts.js +0 -70
  138. package/dist/app/demo/form/control/mpegts/mpegts.xml +0 -11
  139. package/dist/app/demo/form/control/nav/nav.js +0 -60
  140. package/dist/app/demo/form/control/nav/nav.xml +0 -106
  141. package/dist/app/demo/form/control/novnc/novnc.js +0 -75
  142. package/dist/app/demo/form/control/novnc/novnc.xml +0 -13
  143. package/dist/app/demo/form/control/page/page.js +0 -51
  144. package/dist/app/demo/form/control/page/page.xml +0 -22
  145. package/dist/app/demo/form/control/palette/palette.js +0 -46
  146. package/dist/app/demo/form/control/palette/palette.xml +0 -16
  147. package/dist/app/demo/form/control/panel/panel.js +0 -106
  148. package/dist/app/demo/form/control/panel/panel.xml +0 -16
  149. package/dist/app/demo/form/control/panel/test1.js +0 -84
  150. package/dist/app/demo/form/control/panel/test1.xml +0 -22
  151. package/dist/app/demo/form/control/panel/test2.xml +0 -4
  152. package/dist/app/demo/form/control/pdf/pdf.js +0 -65
  153. package/dist/app/demo/form/control/pdf/pdf.xml +0 -12
  154. package/dist/app/demo/form/control/pdf/test.pdf +0 -0
  155. package/dist/app/demo/form/control/progress/progress.js +0 -54
  156. package/dist/app/demo/form/control/progress/progress.xml +0 -9
  157. package/dist/app/demo/form/control/property/property.js +0 -166
  158. package/dist/app/demo/form/control/property/property.xml +0 -6
  159. package/dist/app/demo/form/control/qrcode/qrcode.js +0 -45
  160. package/dist/app/demo/form/control/qrcode/qrcode.xml +0 -13
  161. package/dist/app/demo/form/control/radio/radio.js +0 -51
  162. package/dist/app/demo/form/control/radio/radio.xml +0 -15
  163. package/dist/app/demo/form/control/scroll/scroll.js +0 -52
  164. package/dist/app/demo/form/control/scroll/scroll.xml +0 -38
  165. package/dist/app/demo/form/control/select/select.js +0 -273
  166. package/dist/app/demo/form/control/select/select.xml +0 -141
  167. package/dist/app/demo/form/control/setting/setting.xml +0 -11
  168. package/dist/app/demo/form/control/sgroup/sgroup.xml +0 -28
  169. package/dist/app/demo/form/control/step/step.js +0 -61
  170. package/dist/app/demo/form/control/step/step.xml +0 -16
  171. package/dist/app/demo/form/control/svg/svg.js +0 -61
  172. package/dist/app/demo/form/control/svg/svg.xml +0 -24
  173. package/dist/app/demo/form/control/switch/switch.js +0 -53
  174. package/dist/app/demo/form/control/switch/switch.xml +0 -29
  175. package/dist/app/demo/form/control/tab/tab.js +0 -102
  176. package/dist/app/demo/form/control/tab/tab.xml +0 -22
  177. package/dist/app/demo/form/control/table/table.js +0 -218
  178. package/dist/app/demo/form/control/table/table.xml +0 -97
  179. package/dist/app/demo/form/control/tag/tag.js +0 -44
  180. package/dist/app/demo/form/control/tag/tag.xml +0 -52
  181. package/dist/app/demo/form/control/text/text.js +0 -116
  182. package/dist/app/demo/form/control/text/text.xml +0 -70
  183. package/dist/app/demo/form/control/timeline/timeline.js +0 -43
  184. package/dist/app/demo/form/control/timeline/timeline.xml +0 -19
  185. package/dist/app/demo/form/control/tip/tip.js +0 -43
  186. package/dist/app/demo/form/control/tip/tip.xml +0 -42
  187. package/dist/app/demo/form/control/tplink/tplink.js +0 -74
  188. package/dist/app/demo/form/control/tplink/tplink.xml +0 -13
  189. package/dist/app/demo/form/control/tuieditor/tuieditor.js +0 -62
  190. package/dist/app/demo/form/control/tuieditor/tuieditor.xml +0 -22
  191. package/dist/app/demo/form/control/tuiviewer/tuiviewer.js +0 -45
  192. package/dist/app/demo/form/control/tuiviewer/tuiviewer.xml +0 -14
  193. package/dist/app/demo/form/control/uploader/uploader.js +0 -80
  194. package/dist/app/demo/form/control/uploader/uploader.xml +0 -15
  195. package/dist/app/demo/form/control/vflow/vflow.css +0 -1
  196. package/dist/app/demo/form/control/vflow/vflow.js +0 -101
  197. package/dist/app/demo/form/control/vflow/vflow.scss +0 -22
  198. package/dist/app/demo/form/control/vflow/vflow.xml +0 -89
  199. package/dist/app/demo/form/control/video/video.js +0 -47
  200. package/dist/app/demo/form/control/video/video.xml +0 -14
  201. package/dist/app/demo/form/control/web/web.js +0 -43
  202. package/dist/app/demo/form/control/web/web.xml +0 -4
  203. package/dist/app/demo/form/control/xterm/xterm.js +0 -100
  204. package/dist/app/demo/form/control/xterm/xterm.xml +0 -6
  205. package/dist/app/demo/form/event/form/form.css +0 -1
  206. package/dist/app/demo/form/event/form/form.js +0 -169
  207. package/dist/app/demo/form/event/form/form.scss +0 -24
  208. package/dist/app/demo/form/event/form/form.xml +0 -16
  209. package/dist/app/demo/form/event/other/other.js +0 -78
  210. package/dist/app/demo/form/event/other/other.xml +0 -5
  211. package/dist/app/demo/form/event/screen/screen.js +0 -86
  212. package/dist/app/demo/form/event/screen/screen.xml +0 -9
  213. package/dist/app/demo/form/event/task/task.js +0 -96
  214. package/dist/app/demo/form/event/task/task.xml +0 -20
  215. package/dist/app/demo/form/main.css +0 -1
  216. package/dist/app/demo/form/main.js +0 -515
  217. package/dist/app/demo/form/main.scss +0 -9
  218. package/dist/app/demo/form/main.xml +0 -163
  219. package/dist/app/demo/form/method/acontrol/acontrol.js +0 -42
  220. package/dist/app/demo/form/method/acontrol/acontrol.xml +0 -5
  221. package/dist/app/demo/form/method/aform/aform.js +0 -104
  222. package/dist/app/demo/form/method/aform/aform.xml +0 -60
  223. package/dist/app/demo/form/method/aform/sd.js +0 -47
  224. package/dist/app/demo/form/method/aform/sd.xml +0 -7
  225. package/dist/app/demo/form/method/core/core.js +0 -86
  226. package/dist/app/demo/form/method/core/core.xml +0 -23
  227. package/dist/app/demo/form/method/dom/dom.css +0 -1
  228. package/dist/app/demo/form/method/dom/dom.js +0 -228
  229. package/dist/app/demo/form/method/dom/dom.scss +0 -10
  230. package/dist/app/demo/form/method/dom/dom.xml +0 -76
  231. package/dist/app/demo/form/method/form/form.js +0 -244
  232. package/dist/app/demo/form/method/form/form.xml +0 -74
  233. package/dist/app/demo/form/method/form/test.xml +0 -5
  234. package/dist/app/demo/form/method/fs/fs.js +0 -209
  235. package/dist/app/demo/form/method/fs/fs.xml +0 -18
  236. package/dist/app/demo/form/method/fs/text.js +0 -48
  237. package/dist/app/demo/form/method/fs/text.xml +0 -3
  238. package/dist/app/demo/form/method/native/native.js +0 -100
  239. package/dist/app/demo/form/method/native/native.xml +0 -22
  240. package/dist/app/demo/form/method/storage/storage.js +0 -77
  241. package/dist/app/demo/form/method/storage/storage.xml +0 -18
  242. package/dist/app/demo/form/method/system/system.js +0 -63
  243. package/dist/app/demo/form/method/system/system.xml +0 -14
  244. package/dist/app/demo/form/method/task/locale1.json +0 -3
  245. package/dist/app/demo/form/method/task/locale2.json +0 -3
  246. package/dist/app/demo/form/method/task/task.js +0 -177
  247. package/dist/app/demo/form/method/task/task.xml +0 -61
  248. package/dist/app/demo/form/method/theme/theme.js +0 -92
  249. package/dist/app/demo/form/method/theme/theme.xml +0 -12
  250. package/dist/app/demo/form/method/tool/tool.js +0 -122
  251. package/dist/app/demo/form/method/tool/tool.xml +0 -40
  252. package/dist/app/demo/form/method/zip/zip.js +0 -126
  253. package/dist/app/demo/form/method/zip/zip.xml +0 -12
  254. package/dist/app/demo/form/solution/backpanel/backpanel.js +0 -76
  255. package/dist/app/demo/form/solution/backpanel/backpanel.xml +0 -31
  256. package/dist/app/demo/global.css +0 -3
  257. package/dist/app/demo/res/custombtn.cgc +0 -0
  258. package/dist/app/demo/res/icon.svg +0 -5
  259. package/dist/app/demo/res/img.jpg +0 -0
  260. package/dist/app/demo/res/marker.svg +0 -5
  261. package/dist/app/demo/res/r-1.svg +0 -32
  262. package/dist/app/demo/res/r-2.svg +0 -38
  263. package/dist/app/demo/res/sql.svg +0 -25
  264. package/dist/app/demo/res/txt.svg +0 -21
  265. package/dist/app/demo/res/zip.svg +0 -21
  266. package/dist/app/task/app.js +0 -46
  267. package/dist/app/task/config.json +0 -29
  268. package/dist/app/task/form/bar/bar.js +0 -406
  269. package/dist/app/task/form/bar/bar.xml +0 -46
  270. package/dist/app/task/form/desktop/desktop.xml +0 -1
  271. package/dist/app/task/locale/en.json +0 -11
  272. package/dist/app/task/locale/ja.json +0 -11
  273. package/dist/app/task/locale/sc.json +0 -11
  274. package/dist/app/task/locale/tc.json +0 -11
  275. package/dist/clickgo.js +0 -109
  276. package/dist/index.d.ts +0 -55
  277. package/dist/lib/control.d.ts +0 -53
  278. package/dist/lib/control.js +0 -584
  279. package/dist/lib/core.d.ts +0 -47
  280. package/dist/lib/core.js +0 -1005
  281. package/dist/lib/dom.d.ts +0 -75
  282. package/dist/lib/dom.js +0 -2147
  283. package/dist/lib/form.d.ts +0 -222
  284. package/dist/lib/form.js +0 -2961
  285. package/dist/lib/fs.d.ts +0 -35
  286. package/dist/lib/fs.js +0 -1183
  287. package/dist/lib/native.d.ts +0 -43
  288. package/dist/lib/native.js +0 -197
  289. package/dist/lib/storage.d.ts +0 -6
  290. package/dist/lib/storage.js +0 -215
  291. package/dist/lib/task.d.ts +0 -32
  292. package/dist/lib/task.js +0 -1831
  293. package/dist/lib/theme.d.ts +0 -8
  294. package/dist/lib/theme.js +0 -176
  295. package/dist/lib/tool.d.ts +0 -122
  296. package/dist/lib/tool.js +0 -1021
  297. package/dist/lib/zip.d.ts +0 -40
  298. package/dist/lib/zip.js +0 -382
  299. package/dist/theme/blue.cgt +0 -0
  300. package/dist/theme/byterun.cgt +0 -0
  301. package/types/index.d.ts +0 -1374
package/dist/lib/form.js DELETED
@@ -1,2961 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.activePanels = exports.elements = exports.launcherRoot = exports.simpleSystemTaskRoot = exports.AbstractForm = exports.AbstractPanel = void 0;
37
- exports.superConfirm = superConfirm;
38
- exports.min = min;
39
- exports.max = max;
40
- exports.close = close;
41
- exports.bindResize = bindResize;
42
- exports.bindDrag = bindDrag;
43
- exports.refreshMaxPosition = refreshMaxPosition;
44
- exports.getTaskId = getTaskId;
45
- exports.get = get;
46
- exports.send = send;
47
- exports.getList = getList;
48
- exports.getFocus = getFocus;
49
- exports.getActivePanel = getActivePanel;
50
- exports.removeActivePanel = removeActivePanel;
51
- exports.setActivePanel = setActivePanel;
52
- exports.hash = hash;
53
- exports.getHash = getHash;
54
- exports.hashBack = hashBack;
55
- exports.changeFocus = changeFocus;
56
- exports.getMaxZIndexID = getMaxZIndexID;
57
- exports.getRectByBorder = getRectByBorder;
58
- exports.showCircular = showCircular;
59
- exports.moveRectangle = moveRectangle;
60
- exports.showRectangle = showRectangle;
61
- exports.hideRectangle = hideRectangle;
62
- exports.showDrag = showDrag;
63
- exports.moveDrag = moveDrag;
64
- exports.hideDrag = hideDrag;
65
- exports.alert = alert;
66
- exports.notify = notify;
67
- exports.notifyProgress = notifyProgress;
68
- exports.notifyContent = notifyContent;
69
- exports.hideNotify = hideNotify;
70
- exports.appendToPop = appendToPop;
71
- exports.removeFromPop = removeFromPop;
72
- exports.showPop = showPop;
73
- exports.hidePop = hidePop;
74
- exports.isJustPop = isJustPop;
75
- exports.doFocusAndPopEvent = doFocusAndPopEvent;
76
- exports.remove = remove;
77
- exports.removePanel = removePanel;
78
- exports.createPanel = createPanel;
79
- exports.create = create;
80
- exports.dialog = dialog;
81
- exports.confirm = confirm;
82
- exports.prompt = prompt;
83
- exports.flash = flash;
84
- exports.showLauncher = showLauncher;
85
- exports.hideLauncher = hideLauncher;
86
- const clickgo = __importStar(require("../clickgo"));
87
- const core = __importStar(require("./core"));
88
- const task = __importStar(require("./task"));
89
- const tool = __importStar(require("./tool"));
90
- const dom = __importStar(require("./dom"));
91
- const control = __importStar(require("./control"));
92
- const fs = __importStar(require("./fs"));
93
- const native = __importStar(require("./native"));
94
- let focusId = null;
95
- const info = {
96
- 'lastId': 0,
97
- 'lastPanelId': 0,
98
- 'bottomLastZIndex': 999,
99
- 'lastZIndex': 999999,
100
- 'topLastZIndex': 99999999,
101
- 'locale': {
102
- 'en': {
103
- 'ok': 'OK',
104
- 'yes': 'Yes',
105
- 'no': 'No',
106
- 'cancel': 'Cancel',
107
- 'search': 'Search',
108
- 'confirmExitStep': 'This operation will exit the current process. Are you sure you want to exit?'
109
- },
110
- 'sc': {
111
- 'ok': '好',
112
- 'yes': '是',
113
- 'no': '否',
114
- 'cancel': '取消',
115
- 'search': '搜索',
116
- 'confirmExitStep': '此操作将退出当前流程,确定退出吗?'
117
- },
118
- 'tc': {
119
- 'ok': '好',
120
- 'yes': '是',
121
- 'no': '否',
122
- 'cancel': '取消',
123
- 'search': '檢索',
124
- 'confirmExitStep': '此操作將結束目前的流程,確定退出嗎?'
125
- },
126
- 'ja': {
127
- 'ok': '好',
128
- 'yes': 'はい',
129
- 'no': 'いいえ',
130
- 'cancel': 'キャンセル',
131
- 'search': '検索',
132
- 'confirmExitStep': 'この操作は現在のプロセスを終了します。本当に終了しますか?'
133
- },
134
- 'ko': {
135
- 'ok': '확인',
136
- 'yes': '예',
137
- 'no': '아니오',
138
- 'cancel': '취소',
139
- 'search': '검색',
140
- 'confirmExitStep': '이 작업은 현재 프로세스를 종료합니다. 종료하시겠습니까?'
141
- },
142
- 'th': {
143
- 'ok': 'ตกลง',
144
- 'yes': 'ใช่',
145
- 'no': 'ไม่',
146
- 'cancel': 'ยกเลิก',
147
- 'search': 'ค้นหา',
148
- 'confirmExitStep': 'การดำเนินการนี้จะออกจากกระบวนการปัจจุบัน ยืนยันที่จะออกไหม?'
149
- },
150
- 'es': {
151
- 'ok': 'Aceptar',
152
- 'yes': 'Sí',
153
- 'no': 'No',
154
- 'cancel': 'Cancelar',
155
- 'search': 'Buscar',
156
- 'confirmExitStep': 'Esta operación cerrará el proceso actual. ¿Estás seguro de que quieres salir?'
157
- },
158
- 'de': {
159
- 'ok': 'OK',
160
- 'yes': 'Ja',
161
- 'no': 'Nein',
162
- 'cancel': 'Abbrechen',
163
- 'search': 'Suchen',
164
- 'confirmExitStep': 'Diese Aktion beendet den aktuellen Prozess. Möchten Sie wirklich beenden?'
165
- },
166
- 'fr': {
167
- 'ok': 'OK',
168
- 'yes': 'Oui',
169
- 'no': 'Non',
170
- 'cancel': 'Annuler',
171
- 'search': 'Rechercher',
172
- 'confirmExitStep': 'Cette opération va quitter le processus en cours. Êtes-vous sûr de vouloir quitter ?'
173
- },
174
- 'pt': {
175
- 'ok': 'OK',
176
- 'yes': 'Sim',
177
- 'no': 'Não',
178
- 'cancel': 'Cancelar',
179
- 'search': 'Buscar',
180
- 'confirmExitStep': 'Esta operação encerrará o processo atual. Você tem certeza de que deseja sair?'
181
- },
182
- 'ru': {
183
- 'ok': 'OK',
184
- 'yes': 'Да',
185
- 'no': 'Нет',
186
- 'cancel': 'Отмена',
187
- 'search': 'Поиск',
188
- 'confirmExitStep': 'Эта операция завершит текущий процесс. Вы уверены, что хотите выйти?'
189
- },
190
- 'vi': {
191
- 'ok': 'OK',
192
- 'yes': 'Có',
193
- 'no': 'Không',
194
- 'cancel': 'Hủy bỏ',
195
- 'search': 'Tìm kiếm',
196
- 'confirmExitStep': 'Thao tác này sẽ thoát khỏi quy trình hiện tại. Bạn có chắc chắn muốn thoát không?'
197
- }
198
- }
199
- };
200
- class AbstractCommon {
201
- get filename() {
202
- return '';
203
- }
204
- get controlName() {
205
- return 'root';
206
- }
207
- set controlName(v) {
208
- notify({
209
- 'title': 'Error',
210
- 'content': `The software tries to modify the system variable "controlName".\nPath: ${this.filename}`,
211
- 'type': 'danger'
212
- });
213
- return;
214
- }
215
- get taskId() {
216
- return 0;
217
- }
218
- get formId() {
219
- return 0;
220
- }
221
- set formFocus(b) {
222
- notify({
223
- 'title': 'Error',
224
- 'content': `The software tries to modify the system variable "formFocus".\nPath: ${this.filename}`,
225
- 'type': 'danger'
226
- });
227
- }
228
- get path() {
229
- return '';
230
- }
231
- get prep() {
232
- return '';
233
- }
234
- get locale() {
235
- return task.list[this.taskId].locale.lang || core.config.locale;
236
- }
237
- get l() {
238
- return (key, data) => {
239
- const loc = task.list[this.taskId].locale.data[this.locale]?.[key] ?? task.list[this.taskId].locale.data['en']?.[key] ?? '[LocaleError]' + key;
240
- if (!data) {
241
- return loc;
242
- }
243
- let i = -1;
244
- return loc.replace(/\?/g, function () {
245
- ++i;
246
- if (!data[i]) {
247
- return '';
248
- }
249
- return data[i];
250
- });
251
- };
252
- }
253
- get classPrepend() {
254
- return (cla) => {
255
- if (typeof cla !== 'string') {
256
- return cla;
257
- }
258
- return `cg-task${this.taskId}_${cla}${this.prep ? (' ' + this.prep + cla) : ''}`;
259
- };
260
- }
261
- watch(name, cb, opt = {}) {
262
- return this.$watch(name, cb, opt);
263
- }
264
- get refs() {
265
- return this.$refs;
266
- }
267
- get nextTick() {
268
- return this.$nextTick;
269
- }
270
- allowEvent(e) {
271
- return dom.allowEvent(e);
272
- }
273
- trigger(name, param1 = '', param2 = '') {
274
- if (!['formTitleChanged', 'formIconChanged', 'formStateMinChanged', 'formStateMaxChanged', 'formShowChanged'].includes(name)) {
275
- return;
276
- }
277
- core.trigger(name, this.taskId, this.formId, param1, param2);
278
- }
279
- send(fid, obj) {
280
- obj.taskId = this.taskId;
281
- obj.formId = this.formId;
282
- send(fid, obj);
283
- }
284
- onBeforeCreate() {
285
- return;
286
- }
287
- onCreated() {
288
- return;
289
- }
290
- onBeforeMount() {
291
- return;
292
- }
293
- onBeforeUpdate() {
294
- return;
295
- }
296
- onUpdated() {
297
- return;
298
- }
299
- onBeforeUnmount() {
300
- return;
301
- }
302
- onUnmounted() {
303
- return;
304
- }
305
- }
306
- class AbstractPanel extends AbstractCommon {
307
- constructor() {
308
- super(...arguments);
309
- this.qs = {};
310
- }
311
- get panelId() {
312
- return 0;
313
- }
314
- get rootForm() {
315
- return {};
316
- }
317
- get rootPanel() {
318
- return {};
319
- }
320
- get formHash() {
321
- return this.rootForm.formHash;
322
- }
323
- set formHash(fh) {
324
- this.rootForm.formHash = fh;
325
- }
326
- get formHashData() {
327
- return this.rootForm.formHashData;
328
- }
329
- set formHashData(v) {
330
- this.rootForm.formHashData = v;
331
- }
332
- async formHashBack() {
333
- await this.rootForm.formHashBack();
334
- }
335
- sendToRootPanel(data) {
336
- this.rootPanel.send(data);
337
- }
338
- async enterStep(list) {
339
- return this.rootForm.enterStep(list);
340
- }
341
- async doneStep() {
342
- await this.rootForm.doneStep();
343
- }
344
- clearQs() {
345
- this.qs = {};
346
- }
347
- get formFocus() {
348
- return this.rootForm.formFocus ?? false;
349
- }
350
- onShow() {
351
- return;
352
- }
353
- onShowed() {
354
- return;
355
- }
356
- onHide() {
357
- return;
358
- }
359
- onMounted() {
360
- return;
361
- }
362
- onReceive() {
363
- return;
364
- }
365
- onQsChange() {
366
- return;
367
- }
368
- onQsChangeShow() {
369
- return;
370
- }
371
- }
372
- exports.AbstractPanel = AbstractPanel;
373
- class AbstractForm extends AbstractCommon {
374
- constructor() {
375
- super(...arguments);
376
- this.isNativeSync = false;
377
- this.isReady = false;
378
- this._loading = false;
379
- this.lockLoading = false;
380
- this._inStep = false;
381
- this._stepValues = [];
382
- this._firstShow = true;
383
- this.dialogResult = '';
384
- }
385
- get formHash() {
386
- return '';
387
- }
388
- set formHash(v) {
389
- }
390
- get formHashData() {
391
- return {};
392
- }
393
- set formHashData(v) {
394
- }
395
- get topMost() {
396
- return false;
397
- }
398
- set topMost(v) {
399
- }
400
- get bottomMost() {
401
- return false;
402
- }
403
- set bottomMost(v) {
404
- }
405
- get isMask() {
406
- return !task.list[this.taskId].runtime.dialogFormIds.length ||
407
- task.list[this.taskId].runtime.dialogFormIds[task.list[this.taskId].runtime.dialogFormIds.length - 1]
408
- === this.formId ? false : true;
409
- }
410
- get formFocus() {
411
- return this._formFocus;
412
- }
413
- get showInSystemTask() {
414
- return false;
415
- }
416
- set showInSystemTask(v) {
417
- }
418
- ready(cb) {
419
- cb();
420
- }
421
- async formHashBack() {
422
- const v = this;
423
- if (Date.now() - v.$data._lastFormHashData > 300) {
424
- v.$data._formHashData = {};
425
- }
426
- if (!v.$data._historyHash.length) {
427
- if (v.$data._formHash) {
428
- if (this.inStep) {
429
- if (!await clickgo.form.confirm({
430
- 'taskId': this.taskId,
431
- 'content': info.locale[this.locale].confirmExitStep
432
- })) {
433
- return;
434
- }
435
- this._inStep = false;
436
- this.refs.form.stepHide();
437
- }
438
- v.$data._formHash = '';
439
- core.trigger('formHashChange', this.taskId, this.formId, '', v.$data._formHashData);
440
- return;
441
- }
442
- return;
443
- }
444
- const parent = v.$data._historyHash[v.$data._historyHash.length - 1];
445
- if (this.inStep) {
446
- if (this._stepValues.includes(parent)) {
447
- this.refs.form.stepValue = parent;
448
- }
449
- else {
450
- if (!await clickgo.form.confirm({
451
- 'taskId': this.taskId,
452
- 'content': info.locale[this.locale].confirmExitStep
453
- })) {
454
- return;
455
- }
456
- this._inStep = false;
457
- this.refs.form.stepHide();
458
- }
459
- }
460
- v.$data._formHash = parent;
461
- v.$data._historyHash.splice(-1);
462
- core.trigger('formHashChange', this.taskId, this.formId, parent, v.$data._formHashData);
463
- }
464
- sendToPanel(panel, data) {
465
- panel.send(data);
466
- }
467
- get loading() {
468
- return this._loading;
469
- }
470
- set loading(val) {
471
- if (this.lockLoading) {
472
- return;
473
- }
474
- this._loading = val;
475
- }
476
- get inStep() {
477
- return this._inStep;
478
- }
479
- async enterStep(list) {
480
- if (this._inStep) {
481
- return false;
482
- }
483
- if (list[0].value !== this.formHash) {
484
- return false;
485
- }
486
- this._inStep = true;
487
- this._stepValues.length = 0;
488
- for (const item of list) {
489
- this._stepValues.push(item.value);
490
- }
491
- this.refs.form.stepData = list;
492
- this.refs.form.stepValue = this.formHash;
493
- await this.nextTick();
494
- this.refs.form.stepShow();
495
- return true;
496
- }
497
- updateStep(index, value) {
498
- if (this._inStep) {
499
- return false;
500
- }
501
- if (this._stepValues[index] === undefined) {
502
- return false;
503
- }
504
- this._stepValues[index] = value;
505
- return true;
506
- }
507
- async doneStep() {
508
- if (!this._inStep) {
509
- return;
510
- }
511
- this._inStep = false;
512
- await this.refs.form.stepDone();
513
- }
514
- show() {
515
- const v = this;
516
- if (this._firstShow) {
517
- this._firstShow = false;
518
- const area = core.getAvailArea();
519
- if (!v.$refs.form.stateMaxData) {
520
- if (v.$refs.form.left === -1) {
521
- v.$refs.form.setPropData('left', (area.width - v.$el.offsetWidth) / 2);
522
- }
523
- if (v.$refs.form.top === -1) {
524
- v.$refs.form.setPropData('top', (area.height - v.$el.offsetHeight) / 2);
525
- }
526
- }
527
- v.$refs.form.$data.isShow = true;
528
- changeFocus(this.formId);
529
- }
530
- else {
531
- v.$refs.form.$data.isShow = true;
532
- }
533
- }
534
- async showDialog() {
535
- task.list[this.taskId].runtime.dialogFormIds.push(this.formId);
536
- this.show();
537
- this.topMost = true;
538
- return new Promise((resolve) => {
539
- this.cgDialogCallback = () => {
540
- resolve(this.dialogResult);
541
- };
542
- });
543
- }
544
- hide() {
545
- const v = this;
546
- v.$refs.form.$data.isShow = false;
547
- }
548
- close() {
549
- close(this.formId);
550
- }
551
- onMounted() {
552
- return;
553
- }
554
- onReceive() {
555
- return;
556
- }
557
- onScreenResize() {
558
- return;
559
- }
560
- onConfigChanged() {
561
- return;
562
- }
563
- onFormCreated() {
564
- return;
565
- }
566
- onFormRemoved() {
567
- return;
568
- }
569
- onFormTitleChanged() {
570
- return;
571
- }
572
- onFormIconChanged() {
573
- return;
574
- }
575
- onFormStateMinChanged() {
576
- return;
577
- }
578
- onFormStateMaxChanged() {
579
- return;
580
- }
581
- onFormShowChanged() {
582
- return;
583
- }
584
- onFormFocused() {
585
- return;
586
- }
587
- onFormBlurred() {
588
- return;
589
- }
590
- onFormFlash() {
591
- return;
592
- }
593
- onFormShowInSystemTaskChange() {
594
- return;
595
- }
596
- onFormHashChange() {
597
- return;
598
- }
599
- onTaskStarted() {
600
- return;
601
- }
602
- onTaskEnded() {
603
- return;
604
- }
605
- onLauncherFolderNameChanged() {
606
- return;
607
- }
608
- onHashChanged() {
609
- return;
610
- }
611
- onKeydown() {
612
- return;
613
- }
614
- onKeyup() {
615
- return;
616
- }
617
- }
618
- exports.AbstractForm = AbstractForm;
619
- const popInfo = {
620
- 'list': [],
621
- 'elList': [],
622
- 'wayList': [],
623
- 'time': [],
624
- 'lastZIndex': 0
625
- };
626
- let superConfirmHandler = undefined;
627
- exports.elements = {
628
- 'wrap': document.createElement('div'),
629
- 'list': document.createElement('div'),
630
- 'popList': document.createElement('div'),
631
- 'circular': document.createElement('div'),
632
- 'rectangle': document.createElement('div'),
633
- 'gesture': document.createElement('div'),
634
- 'drag': document.createElement('div'),
635
- 'notify': document.createElement('div'),
636
- 'alert': document.createElement('div'),
637
- 'simpletask': document.createElement('div'),
638
- 'launcher': document.createElement('div'),
639
- 'confirm': document.createElement('div'),
640
- 'init': function () {
641
- this.wrap.id = 'cg-wrap';
642
- document.getElementsByTagName('body')[0].appendChild(this.wrap);
643
- this.wrap.addEventListener('touchmove', function (e) {
644
- if (e.target && dom.findParentByData(e.target, 'cg-scroll')) {
645
- return;
646
- }
647
- if (e.cancelable) {
648
- e.preventDefault();
649
- }
650
- }, {
651
- 'passive': false
652
- });
653
- this.wrap.addEventListener('wheel', function (e) {
654
- if (e.target && ((e.target.dataset.cgScroll !== undefined) || dom.findParentByData(e.target, 'cg-scroll'))) {
655
- return;
656
- }
657
- e.preventDefault();
658
- }, {
659
- 'passive': false
660
- });
661
- this.wrap.addEventListener('contextmenu', function (e) {
662
- e.preventDefault();
663
- });
664
- if (clickgo.isImmersion()) {
665
- this.wrap.addEventListener('mouseenter', function () {
666
- native.invoke('cg-mouse-ignore', native.getToken(), false);
667
- });
668
- this.wrap.addEventListener('mouseleave', function () {
669
- native.invoke('cg-mouse-ignore', native.getToken(), true);
670
- });
671
- }
672
- this.list.id = 'cg-form-list';
673
- this.wrap.appendChild(this.list);
674
- this.popList.id = 'cg-pop-list';
675
- this.wrap.appendChild(this.popList);
676
- this.circular.id = 'cg-circular';
677
- this.wrap.appendChild(this.circular);
678
- this.rectangle.setAttribute('data-pos', '');
679
- this.rectangle.id = 'cg-rectangle';
680
- this.wrap.appendChild(this.rectangle);
681
- this.gesture.id = 'cg-gesture';
682
- this.wrap.appendChild(this.gesture);
683
- this.drag.id = 'cg-drag';
684
- this.drag.innerHTML = '<svg width="16" height="16" viewBox="0 0 48 48" fill="none" stroke="#FFF" xmlns="http://www.w3.org/2000/svg"><path d="M8 8L40 40" stroke-width="4" stroke-linecap="butt" stroke-linejoin="miter"/><path d="M8 40L40 8" stroke-width="4" stroke-linecap="butt" stroke-linejoin="miter"/></svg>';
685
- this.wrap.appendChild(this.drag);
686
- this.notify.id = 'cg-notify';
687
- this.wrap.appendChild(this.notify);
688
- this.alert.id = 'cg-alert';
689
- this.wrap.appendChild(this.alert);
690
- this.simpletask.id = 'cg-simpletask';
691
- this.wrap.appendChild(this.simpletask);
692
- const simpletaskApp = clickgo.vue.createApp({
693
- '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>',
694
- 'data': function () {
695
- return {
696
- 'forms': {}
697
- };
698
- },
699
- 'watch': {
700
- 'forms': {
701
- handler: function () {
702
- const length = Object.keys(this.forms).length;
703
- if (length > 0) {
704
- if (exports.elements.simpletask.style.bottom !== '0px') {
705
- exports.elements.simpletask.style.bottom = '0px';
706
- core.trigger('screenResize');
707
- }
708
- }
709
- else {
710
- if (exports.elements.simpletask.style.bottom === '0px') {
711
- exports.elements.simpletask.style.bottom = '-46px';
712
- core.trigger('screenResize');
713
- }
714
- }
715
- },
716
- 'deep': true
717
- }
718
- },
719
- 'methods': {
720
- click: function (formId) {
721
- changeFocus(formId);
722
- }
723
- },
724
- 'mounted': function () {
725
- exports.simpleSystemTaskRoot = this;
726
- }
727
- });
728
- simpletaskApp.mount('#cg-simpletask');
729
- this.launcher.id = 'cg-launcher';
730
- this.wrap.appendChild(this.launcher);
731
- const waiting = function () {
732
- if (!core.config) {
733
- setTimeout(function () {
734
- waiting();
735
- }, 150);
736
- return;
737
- }
738
- const launcherApp = clickgo.vue.createApp({
739
- 'template': `<div class="cg-launcher-search">` +
740
- `<input v-if="folderName === ''" class="cg-launcher-sinput" :placeholder="search" v-model="name">` +
741
- `<input v-else class="cg-launcher-foldername" :value="folderName" @change="folderNameChange">` +
742
- `</div>` +
743
- `<div class="cg-launcher-list" @mousedown="mousedown" @click="listClick" :class="[folderName === '' ? '' : 'cg-folder-open']">` +
744
- `<div v-for="item of list" class="cg-launcher-item">` +
745
- `<div class="cg-launcher-inner">` +
746
- `<div v-if="!item.list || item.list.length === 0" class="cg-launcher-icon" :style="{'background-image': 'url(' + item.icon + ')'}" @click="iconClick($event, item)"></div>` +
747
- `<div v-else class="cg-launcher-folder" @click="openFolder($event, item)">` +
748
- `<div>` +
749
- `<div v-for="sub of item.list" class="cg-launcher-item">` +
750
- `<div class="cg-launcher-inner">` +
751
- `<div class="cg-launcher-icon" :style="{'background-image': 'url(' + sub.icon + ')'}" @click="subIconClick($event, sub)"></div>` +
752
- `<div class="cg-launcher-name">{{sub.name}}</div>` +
753
- `</div>` +
754
- `<div class="cg-launcher-space"></div>` +
755
- `</div>` +
756
- `</div>` +
757
- `</div>` +
758
- `<div class="cg-launcher-name">{{item.name}}</div>` +
759
- `</div>` +
760
- `<div class="cg-launcher-space"></div>` +
761
- `</div>` +
762
- `</div>`,
763
- 'data': function () {
764
- return {
765
- 'name': '',
766
- 'folderName': '',
767
- 'folderItem': {}
768
- };
769
- },
770
- 'computed': {
771
- 'search': function () {
772
- return info.locale[core.config.locale]?.search ?? info.locale['en'].search;
773
- },
774
- 'list': function () {
775
- if (this.name === '') {
776
- return core.config['launcher.list'];
777
- }
778
- const list = [];
779
- for (const item of core.config['launcher.list']) {
780
- if (item.list && item.list.length > 0) {
781
- for (const sub of item.list) {
782
- if (sub.name.toLowerCase().includes(this.name.toLowerCase())) {
783
- list.push(sub);
784
- }
785
- }
786
- }
787
- else {
788
- if (item.name.toLowerCase().includes(this.name.toLowerCase())) {
789
- list.push(item);
790
- }
791
- }
792
- }
793
- return list;
794
- }
795
- },
796
- 'methods': {
797
- mousedown: function (e) {
798
- this.md = e.pageX + e.pageY;
799
- },
800
- listClick: function (e) {
801
- if (this.md !== e.pageX + e.pageY) {
802
- return;
803
- }
804
- if (e.currentTarget !== e.target) {
805
- return;
806
- }
807
- if (this.folderName === '') {
808
- hideLauncher();
809
- }
810
- else {
811
- this.closeFolder();
812
- }
813
- },
814
- iconClick: async function (e, item) {
815
- if (this.md !== e.pageX + e.pageY) {
816
- return;
817
- }
818
- hideLauncher();
819
- await clickgo.task.run(item.path, {
820
- 'icon': item.icon
821
- });
822
- },
823
- subIconClick: async function (e, item) {
824
- if (this.md !== e.pageX + e.pageY) {
825
- return;
826
- }
827
- hideLauncher();
828
- await clickgo.task.run(item.path, {
829
- 'icon': item.icon
830
- });
831
- },
832
- closeFolder: function () {
833
- this.folderName = '';
834
- const el = this.folderEl;
835
- const rect = el.parentNode.getBoundingClientRect();
836
- el.classList.remove('cg-show');
837
- el.style.left = (rect.left + 30).toString() + 'px';
838
- el.style.top = rect.top.toString() + 'px';
839
- el.style.width = '';
840
- el.style.height = '';
841
- setTimeout(() => {
842
- el.style.position = '';
843
- el.style.left = '';
844
- el.style.top = '';
845
- }, 150);
846
- },
847
- openFolder: function (e, item) {
848
- if (this.md !== e.pageX + e.pageY) {
849
- return;
850
- }
851
- if (e.currentTarget.childNodes[0] !== e.target) {
852
- return;
853
- }
854
- if (this.folderName !== '') {
855
- this.closeFolder();
856
- return;
857
- }
858
- this.folderName = item.name;
859
- this.folderItem = item;
860
- const el = e.currentTarget.childNodes.item(0);
861
- this.folderEl = el;
862
- const searchEl = document.getElementsByClassName('cg-launcher-search')[0];
863
- const rect = el.getBoundingClientRect();
864
- el.style.left = rect.left.toString() + 'px';
865
- el.style.top = rect.top.toString() + 'px';
866
- el.style.position = 'fixed';
867
- requestAnimationFrame(() => {
868
- el.classList.add('cg-show');
869
- el.style.left = '50px';
870
- el.style.top = searchEl.offsetHeight.toString() + 'px';
871
- el.style.width = 'calc(100% - 100px)';
872
- el.style.height = 'calc(100% - 50px - ' + searchEl.offsetHeight.toString() + 'px)';
873
- });
874
- },
875
- folderNameChange: function (e) {
876
- const input = e.target;
877
- const val = input.value.trim();
878
- if (val === '') {
879
- input.value = this.folderName;
880
- return;
881
- }
882
- this.folderName = val;
883
- core.trigger('launcherFolderNameChanged', this.folderItem.id ?? '', val);
884
- }
885
- },
886
- 'mounted': function () {
887
- exports.launcherRoot = this;
888
- }
889
- });
890
- launcherApp.mount('#cg-launcher');
891
- };
892
- waiting();
893
- this.confirm.id = 'cg-confirm';
894
- this.wrap.appendChild(this.confirm);
895
- this.confirm.innerHTML = `<div class="cg-confirm-box">` +
896
- `<div id="cg-confirm-content"></div>` +
897
- `<div class="cg-confirm-controls">` +
898
- `<div id="cg-confirm-cancel"></div>` +
899
- `<div id="cg-confirm-ok"></div>` +
900
- `</div>` +
901
- `</div>`;
902
- this.confirm.style.display = 'none';
903
- document.getElementById('cg-confirm-cancel').addEventListener('click', () => {
904
- superConfirmHandler?.(false);
905
- this.confirm.style.display = 'none';
906
- const fid = getMaxZIndexID();
907
- if (fid) {
908
- changeFocus(fid);
909
- }
910
- });
911
- document.getElementById('cg-confirm-ok').addEventListener('click', () => {
912
- superConfirmHandler?.(true);
913
- this.confirm.style.display = 'none';
914
- const fid = getMaxZIndexID();
915
- if (fid) {
916
- changeFocus(fid);
917
- }
918
- });
919
- }
920
- };
921
- exports.elements.init();
922
- function superConfirm(html) {
923
- return new Promise((resolve) => {
924
- if (superConfirmHandler !== undefined) {
925
- resolve(false);
926
- return;
927
- }
928
- exports.elements.confirm.style.display = 'flex';
929
- document.getElementById('cg-confirm-content').innerHTML = html;
930
- document.getElementById('cg-confirm-cancel').innerHTML = info.locale[core.config.locale]?.cancel ?? info.locale['en'].cancel;
931
- document.getElementById('cg-confirm-ok').innerHTML = info.locale[core.config.locale]?.ok ?? info.locale['en'].ok;
932
- superConfirmHandler = (result) => {
933
- superConfirmHandler = undefined;
934
- resolve(result);
935
- };
936
- });
937
- }
938
- function changeState(state, formId) {
939
- const tid = getTaskId(formId);
940
- const t = task.list[tid];
941
- if (!t) {
942
- return false;
943
- }
944
- switch (state) {
945
- case 'max': {
946
- t.forms[formId].vroot.$refs.form.maxMethod();
947
- break;
948
- }
949
- case 'min': {
950
- t.forms[formId].vroot.$refs.form.minMethod();
951
- break;
952
- }
953
- default: {
954
- remove(formId);
955
- }
956
- }
957
- return true;
958
- }
959
- function min(formId) {
960
- return changeState('min', formId);
961
- }
962
- function max(formId) {
963
- return changeState('max', formId);
964
- }
965
- function close(formId) {
966
- return changeState('close', formId);
967
- }
968
- function bindResize(e, border) {
969
- const formWrap = dom.findParentByClass(e.target, 'cg-form-wrap');
970
- if (!formWrap) {
971
- return;
972
- }
973
- const formId = formWrap.dataset.formId;
974
- if (!formId) {
975
- return;
976
- }
977
- const fid = parseInt(formId);
978
- const tid = getTaskId(fid);
979
- const t = task.list[tid];
980
- if (!t) {
981
- return;
982
- }
983
- t.forms[fid].vroot.$refs.form.resizeMethod(e, border);
984
- }
985
- function bindDrag(e) {
986
- const formWrap = dom.findParentByClass(e.target, 'cg-form-wrap');
987
- if (!formWrap) {
988
- return;
989
- }
990
- const formId = formWrap.dataset.formId;
991
- if (!formId) {
992
- return;
993
- }
994
- const fid = parseInt(formId);
995
- const tid = getTaskId(fid);
996
- const t = task.list[tid];
997
- if (!t) {
998
- return;
999
- }
1000
- t.forms[fid].vroot.$refs.form.moveMethod(e, true);
1001
- }
1002
- function refreshMaxPosition() {
1003
- const area = core.getAvailArea();
1004
- for (let i = 0; i < exports.elements.list.children.length; ++i) {
1005
- const el = exports.elements.list.children.item(i);
1006
- const ef = el.children.item(0);
1007
- if (ef.dataset.cgMax === undefined) {
1008
- continue;
1009
- }
1010
- const taskId = parseInt(el.getAttribute('data-task-id'));
1011
- const formId = parseInt(el.getAttribute('data-form-id'));
1012
- if (!task.list[taskId]) {
1013
- continue;
1014
- }
1015
- const vroot = task.list[taskId].forms[formId].vroot;
1016
- if (ef.dataset.cgBottomMost === undefined) {
1017
- vroot.$refs.form.setPropData('left', area.left);
1018
- vroot.$refs.form.setPropData('top', area.top);
1019
- vroot.$refs.form.setPropData('width', area.width);
1020
- vroot.$refs.form.setPropData('height', area.height);
1021
- }
1022
- else {
1023
- vroot.$refs.form.setPropData('width', area.owidth);
1024
- vroot.$refs.form.setPropData('height', area.oheight);
1025
- }
1026
- }
1027
- }
1028
- function getTaskId(formId) {
1029
- const formElement = exports.elements.list.querySelector(`[data-form-id='${formId}']`);
1030
- if (!formElement) {
1031
- return 0;
1032
- }
1033
- const taskIdAttr = formElement.getAttribute('data-task-id');
1034
- if (!taskIdAttr) {
1035
- return 0;
1036
- }
1037
- return parseInt(taskIdAttr);
1038
- }
1039
- function get(formId) {
1040
- const taskId = getTaskId(formId);
1041
- if (taskId === 0) {
1042
- return null;
1043
- }
1044
- if (!task.list[taskId].forms[formId]) {
1045
- return null;
1046
- }
1047
- const item = task.list[taskId].forms[formId];
1048
- return {
1049
- 'taskId': taskId,
1050
- 'title': item.vroot.$refs.form.title,
1051
- 'icon': item.vroot.$refs.form.iconDataUrl,
1052
- 'stateMax': item.vroot.$refs.form.stateMaxData,
1053
- 'stateMin': item.vroot.$refs.form.stateMinData,
1054
- 'show': item.vroot.$refs.form.isShow,
1055
- 'focus': item.vroot.formFocus,
1056
- 'showInSystemTask': item.vroot.showInSystemTask
1057
- };
1058
- }
1059
- function send(formId, obj) {
1060
- const taskId = getTaskId(formId);
1061
- if (taskId === 0) {
1062
- return;
1063
- }
1064
- const item = task.list[taskId].forms[formId];
1065
- item.vroot.onReceive(obj);
1066
- }
1067
- function getList(taskId) {
1068
- if (!task.list[taskId]) {
1069
- return {};
1070
- }
1071
- const list = {};
1072
- for (const fid in task.list[taskId].forms) {
1073
- const item = task.list[taskId].forms[fid];
1074
- list[fid] = {
1075
- 'taskId': taskId,
1076
- 'title': item.vroot.$refs.form.title,
1077
- 'icon': item.vroot.$refs.form.iconDataUrl,
1078
- 'stateMax': item.vroot.$refs.form.stateMaxData,
1079
- 'stateMin': item.vroot.$refs.form.stateMinData,
1080
- 'show': item.vroot.$refs.form.isShow,
1081
- 'focus': item.vroot.formFocus,
1082
- 'showInSystemTask': item.vroot.showInSystemTask
1083
- };
1084
- }
1085
- return list;
1086
- }
1087
- function getFocus() {
1088
- return focusId;
1089
- }
1090
- exports.activePanels = {};
1091
- function getActivePanel(formId) {
1092
- return exports.activePanels[formId] ?? [];
1093
- }
1094
- function removeActivePanel(panelId, formId, taskId) {
1095
- if (!taskId) {
1096
- return false;
1097
- }
1098
- if (!task.list[taskId]) {
1099
- return false;
1100
- }
1101
- if (!task.list[taskId].forms[formId]) {
1102
- return false;
1103
- }
1104
- if (!exports.activePanels[formId]) {
1105
- return true;
1106
- }
1107
- const io = exports.activePanels[formId].indexOf(panelId);
1108
- if (io === -1) {
1109
- return true;
1110
- }
1111
- exports.activePanels[formId].splice(io, 1);
1112
- if (!exports.activePanels[formId].length) {
1113
- delete exports.activePanels[formId];
1114
- }
1115
- return true;
1116
- }
1117
- function setActivePanel(panelId, formId, taskId) {
1118
- if (!taskId) {
1119
- return false;
1120
- }
1121
- if (!task.list[taskId]) {
1122
- return false;
1123
- }
1124
- if (!task.list[taskId].forms[formId]) {
1125
- return false;
1126
- }
1127
- if (!exports.activePanels[formId]) {
1128
- exports.activePanels[formId] = [];
1129
- }
1130
- const io = exports.activePanels[formId].indexOf(panelId);
1131
- if (io !== -1) {
1132
- return true;
1133
- }
1134
- exports.activePanels[formId].push(panelId);
1135
- return true;
1136
- }
1137
- function hash(hash, formId) {
1138
- const taskId = getTaskId(formId);
1139
- if (taskId === 0) {
1140
- return false;
1141
- }
1142
- const t = task.list[taskId];
1143
- if (!t) {
1144
- return false;
1145
- }
1146
- const item = task.list[taskId].forms[formId];
1147
- if (!item) {
1148
- return false;
1149
- }
1150
- item.vroot.formHash = hash;
1151
- return true;
1152
- }
1153
- function getHash(formId) {
1154
- const taskId = getTaskId(formId);
1155
- if (taskId === 0) {
1156
- return '';
1157
- }
1158
- const t = task.list[taskId];
1159
- if (!t) {
1160
- return '';
1161
- }
1162
- const item = task.list[taskId].forms[formId];
1163
- if (!item) {
1164
- return '';
1165
- }
1166
- return item.vroot.$data._formHash;
1167
- }
1168
- async function hashBack(formId) {
1169
- const taskId = getTaskId(formId);
1170
- if (taskId === 0) {
1171
- return false;
1172
- }
1173
- const t = task.list[taskId];
1174
- if (!t) {
1175
- return false;
1176
- }
1177
- const item = task.list[taskId].forms[formId];
1178
- if (!item) {
1179
- return false;
1180
- }
1181
- await item.vroot.formHashBack();
1182
- return true;
1183
- }
1184
- function changeFocus(formId = 0) {
1185
- if (typeof formId === 'string') {
1186
- formId = parseInt(formId);
1187
- }
1188
- const dataFormId = getFocus();
1189
- if (dataFormId) {
1190
- if (dataFormId === formId) {
1191
- return;
1192
- }
1193
- else {
1194
- const t = task.list[task.getFocus()];
1195
- t.forms[dataFormId].vapp._container.removeAttribute('data-form-focus');
1196
- t.forms[dataFormId].vroot._formFocus = false;
1197
- core.trigger('formBlurred', t.id, dataFormId);
1198
- }
1199
- }
1200
- focusId = null;
1201
- task.setFocus();
1202
- if (formId === 0) {
1203
- return;
1204
- }
1205
- const el = exports.elements.list.querySelector(`.cg-form-wrap[data-form-id='${formId}']`);
1206
- if (!el) {
1207
- return;
1208
- }
1209
- if (el.children.item(0).dataset.cgMin !== undefined) {
1210
- min(formId);
1211
- }
1212
- const taskId = parseInt(el.getAttribute('data-task-id') ?? '0');
1213
- const t = task.list[taskId];
1214
- if (t.runtime.dialogFormIds.length) {
1215
- const dialogFormId = t.runtime.dialogFormIds[t.runtime.dialogFormIds.length - 1];
1216
- if (get(dialogFormId).stateMin) {
1217
- min(dialogFormId);
1218
- }
1219
- if (t.forms[dialogFormId].vroot._topMost) {
1220
- t.forms[dialogFormId].vroot.$refs.form.$data.zIndex = ++info.topLastZIndex;
1221
- }
1222
- else if (t.forms[dialogFormId].vroot._bottomMost) {
1223
- t.forms[dialogFormId].vroot.$refs.form.$data.zIndex = ++info.bottomLastZIndex;
1224
- }
1225
- else {
1226
- t.forms[dialogFormId].vroot.$refs.form.$data.zIndex = ++info.lastZIndex;
1227
- }
1228
- t.forms[dialogFormId].vapp._container.dataset.formFocus = '';
1229
- t.forms[dialogFormId].vroot._formFocus = true;
1230
- focusId = dialogFormId;
1231
- task.setFocus(t.id);
1232
- core.trigger('formFocused', taskId, dialogFormId);
1233
- if (dialogFormId !== formId) {
1234
- clickgo.form.flash(dialogFormId, taskId);
1235
- }
1236
- }
1237
- else {
1238
- if (t.forms[formId].vroot._topMost) {
1239
- t.forms[formId].vroot.$refs.form.$data.zIndex = ++info.topLastZIndex;
1240
- }
1241
- else if (t.forms[formId].vroot._bottomMost) {
1242
- t.forms[formId].vroot.$refs.form.$data.zIndex = ++info.bottomLastZIndex;
1243
- }
1244
- else {
1245
- t.forms[formId].vroot.$refs.form.$data.zIndex = ++info.lastZIndex;
1246
- }
1247
- t.forms[formId].vapp._container.dataset.formFocus = '';
1248
- t.forms[formId].vroot._formFocus = true;
1249
- focusId = formId;
1250
- task.setFocus(t.id);
1251
- core.trigger('formFocused', taskId, formId);
1252
- }
1253
- }
1254
- function getMaxZIndexID(out = {}) {
1255
- let zIndex = 0;
1256
- let formId = null;
1257
- for (let i = 0; i < exports.elements.list.children.length; ++i) {
1258
- const formWrap = exports.elements.list.children.item(i);
1259
- const formInner = formWrap.children.item(0);
1260
- if (!formInner) {
1261
- continue;
1262
- }
1263
- const z = parseInt(formInner.style.zIndex);
1264
- if (z < 1000000) {
1265
- continue;
1266
- }
1267
- if (formInner.dataset.cgMin !== undefined) {
1268
- continue;
1269
- }
1270
- const tid = parseInt(formWrap.getAttribute('data-task-id'));
1271
- if (tid === task.systemTaskInfo.taskId) {
1272
- continue;
1273
- }
1274
- if (out.taskIds?.includes(tid)) {
1275
- continue;
1276
- }
1277
- const fid = parseInt(formWrap.getAttribute('data-form-id'));
1278
- if (out.formIds?.includes(fid)) {
1279
- continue;
1280
- }
1281
- if (z > zIndex) {
1282
- zIndex = z;
1283
- formId = fid;
1284
- }
1285
- }
1286
- return formId;
1287
- }
1288
- function getRectByBorder(border) {
1289
- const area = core.getAvailArea();
1290
- let width, height, left, top;
1291
- if (typeof border === 'string') {
1292
- switch (border) {
1293
- case 'lt': {
1294
- width = area.width / 2;
1295
- height = area.height / 2;
1296
- left = area.left;
1297
- top = area.top;
1298
- break;
1299
- }
1300
- case 't': {
1301
- width = area.width;
1302
- height = area.height;
1303
- left = area.left;
1304
- top = area.top;
1305
- break;
1306
- }
1307
- case 'tr': {
1308
- width = area.width / 2;
1309
- height = area.height / 2;
1310
- left = area.left + area.width / 2;
1311
- top = area.top;
1312
- break;
1313
- }
1314
- case 'r': {
1315
- width = area.width / 2;
1316
- height = area.height;
1317
- left = area.left + area.width / 2;
1318
- top = area.top;
1319
- break;
1320
- }
1321
- case 'rb': {
1322
- width = area.width / 2;
1323
- height = area.height / 2;
1324
- left = area.left + area.width / 2;
1325
- top = area.top + area.height / 2;
1326
- break;
1327
- }
1328
- case 'b': {
1329
- width = area.width;
1330
- height = area.height / 2;
1331
- left = area.left;
1332
- top = area.top + area.height / 2;
1333
- break;
1334
- }
1335
- case 'bl': {
1336
- width = area.width / 2;
1337
- height = area.height / 2;
1338
- left = area.left;
1339
- top = area.top + area.height / 2;
1340
- break;
1341
- }
1342
- case 'l': {
1343
- width = area.width / 2;
1344
- height = area.height;
1345
- left = area.left;
1346
- top = area.top;
1347
- break;
1348
- }
1349
- default: {
1350
- break;
1351
- }
1352
- }
1353
- }
1354
- else {
1355
- width = border.width ?? area.width;
1356
- height = border.height ?? area.height;
1357
- left = border.left ?? area.left;
1358
- top = border.top ?? area.top;
1359
- }
1360
- return {
1361
- 'width': width,
1362
- 'height': height,
1363
- 'left': left,
1364
- 'top': top
1365
- };
1366
- }
1367
- function showCircular(x, y) {
1368
- exports.elements.circular.style.transition = 'none';
1369
- requestAnimationFrame(function () {
1370
- exports.elements.circular.style.width = '6px';
1371
- exports.elements.circular.style.height = '6px';
1372
- exports.elements.circular.style.left = (x - 3).toString() + 'px';
1373
- exports.elements.circular.style.top = (y - 3).toString() + 'px';
1374
- exports.elements.circular.style.opacity = '1';
1375
- requestAnimationFrame(function () {
1376
- exports.elements.circular.style.transition = 'all .3s var(--g-cubic)';
1377
- requestAnimationFrame(function () {
1378
- exports.elements.circular.style.width = '60px';
1379
- exports.elements.circular.style.height = '60px';
1380
- exports.elements.circular.style.left = (x - 30).toString() + 'px';
1381
- exports.elements.circular.style.top = (y - 30).toString() + 'px';
1382
- exports.elements.circular.style.opacity = '0';
1383
- });
1384
- });
1385
- });
1386
- }
1387
- function moveRectangle(border) {
1388
- const dataReady = exports.elements.rectangle.getAttribute('data-ready') ?? '0';
1389
- if (dataReady === '0') {
1390
- return;
1391
- }
1392
- const dataBorder = exports.elements.rectangle.getAttribute('data-border') ?? '';
1393
- const setDataBorder = typeof border === 'string' ? border : `o-${border.left}-${border.top ?? 'n'}-${border.width}-${border.height ?? 'n'}`;
1394
- if (dataBorder === setDataBorder) {
1395
- return;
1396
- }
1397
- exports.elements.rectangle.setAttribute('data-dir', setDataBorder);
1398
- const pos = getRectByBorder(border);
1399
- const width = pos.width - 20;
1400
- const height = pos.height - 20;
1401
- const left = pos.left + 10;
1402
- const top = pos.top + 10;
1403
- if (width !== undefined && height !== undefined && left !== undefined && top !== undefined) {
1404
- exports.elements.rectangle.style.width = width.toString() + 'px';
1405
- exports.elements.rectangle.style.height = height.toString() + 'px';
1406
- exports.elements.rectangle.style.left = left.toString() + 'px';
1407
- exports.elements.rectangle.style.top = top.toString() + 'px';
1408
- }
1409
- }
1410
- function showRectangle(x, y, border) {
1411
- exports.elements.rectangle.style.transition = 'none';
1412
- requestAnimationFrame(function () {
1413
- exports.elements.rectangle.style.width = '5px';
1414
- exports.elements.rectangle.style.height = '5px';
1415
- exports.elements.rectangle.style.left = (x - 10).toString() + 'px';
1416
- exports.elements.rectangle.style.top = (y - 10).toString() + 'px';
1417
- exports.elements.rectangle.style.opacity = '1';
1418
- exports.elements.rectangle.setAttribute('data-ready', '0');
1419
- exports.elements.rectangle.setAttribute('data-dir', '');
1420
- requestAnimationFrame(function () {
1421
- exports.elements.rectangle.style.transition = 'all .3s var(--g-cubic)';
1422
- requestAnimationFrame(function () {
1423
- exports.elements.rectangle.setAttribute('data-ready', '1');
1424
- moveRectangle(border);
1425
- });
1426
- });
1427
- });
1428
- }
1429
- function hideRectangle() {
1430
- exports.elements.rectangle.style.opacity = '0';
1431
- }
1432
- let dragTimeOut = 0;
1433
- function showDrag() {
1434
- if (dragTimeOut) {
1435
- clearTimeout(dragTimeOut);
1436
- dragTimeOut = 0;
1437
- }
1438
- exports.elements.drag.style.opacity = '1';
1439
- exports.elements.drag.style.transform = 'perspective(100px) rotateX(15deg) translateZ(15px)';
1440
- exports.elements.drag.style.borderBottomWidth = '2px';
1441
- }
1442
- function moveDrag(opt) {
1443
- if (opt.top) {
1444
- exports.elements.drag.style.top = opt.top.toString() + 'px';
1445
- }
1446
- if (opt.left) {
1447
- exports.elements.drag.style.left = opt.left.toString() + 'px';
1448
- }
1449
- let perspective = 0;
1450
- if (opt.width) {
1451
- exports.elements.drag.style.width = opt.width.toString() + 'px';
1452
- if (perspective < opt.width) {
1453
- perspective = opt.width;
1454
- }
1455
- }
1456
- if (opt.height) {
1457
- exports.elements.drag.style.height = opt.height.toString() + 'px';
1458
- if (perspective < opt.height) {
1459
- perspective = opt.height;
1460
- }
1461
- }
1462
- if (perspective) {
1463
- exports.elements.drag.style.transform = 'perspective(' + (perspective + 50) + 'px) rotateX(15deg) translateZ(15px)';
1464
- }
1465
- if (opt.icon) {
1466
- exports.elements.drag.childNodes[0].style.display = 'block';
1467
- }
1468
- else {
1469
- exports.elements.drag.childNodes[0].style.display = 'none';
1470
- }
1471
- }
1472
- function hideDrag() {
1473
- exports.elements.drag.style.transform = 'initial';
1474
- exports.elements.drag.style.borderBottomWidth = '1px';
1475
- dragTimeOut = window.setTimeout(() => {
1476
- dragTimeOut = 0;
1477
- exports.elements.drag.style.opacity = '0';
1478
- }, 300);
1479
- }
1480
- let alertBottom = 0;
1481
- let alertId = 0;
1482
- function alert(content, type) {
1483
- const nid = ++alertId;
1484
- const timeout = 3000;
1485
- const el = document.createElement('div');
1486
- const y = alertBottom;
1487
- el.classList.add('cg-alert-wrap');
1488
- el.classList.add('cg-' + (type ?? 'default'));
1489
- el.setAttribute('data-alertid', nid.toString());
1490
- el.style.transform = `translateY(${y + 10}px)`;
1491
- el.style.opacity = '0';
1492
- el.innerHTML = `<div class="cg-alert-content">` +
1493
- `<div class="cg-alert-icon"></div>` +
1494
- `<div>${tool.escapeHTML(content)}</div>` +
1495
- '</div>';
1496
- exports.elements.alert.appendChild(el);
1497
- alertBottom -= el.offsetHeight + 10;
1498
- requestAnimationFrame(function () {
1499
- el.style.transform = `translateY(${y}px)`;
1500
- el.style.opacity = '1';
1501
- const timer = window.setTimeout(function () {
1502
- clearTimeout(timer);
1503
- const alertHeight = el.offsetHeight;
1504
- el.style.opacity = '0';
1505
- setTimeout(function () {
1506
- alertBottom += alertHeight + 10;
1507
- const alertElementList = document.getElementsByClassName('cg-alert-wrap');
1508
- let needSub = false;
1509
- for (const alertElement of alertElementList) {
1510
- if (alertElement === el) {
1511
- needSub = true;
1512
- continue;
1513
- }
1514
- if (needSub) {
1515
- alertElement.style.transform = alertElement.style.transform.replace(/translateY\(([-0-9]+)px\)/, function (t, t1) {
1516
- return `translateY(${parseInt(t1) + alertHeight + 10}px)`;
1517
- });
1518
- }
1519
- }
1520
- el.remove();
1521
- }, 100);
1522
- }, timeout);
1523
- });
1524
- return nid;
1525
- }
1526
- let notifyBottom = -10;
1527
- let notifyId = 0;
1528
- function notify(opt) {
1529
- const nid = ++notifyId;
1530
- let timeout = 5_000;
1531
- const maxTimeout = 60_000 * 10;
1532
- if (opt.timeout !== undefined) {
1533
- if (opt.timeout <= 0) {
1534
- timeout = 5_000;
1535
- }
1536
- else if (opt.timeout > maxTimeout) {
1537
- timeout = maxTimeout;
1538
- }
1539
- else {
1540
- timeout = opt.timeout;
1541
- }
1542
- }
1543
- if (opt.progress && !opt.type) {
1544
- opt.type = 'progress';
1545
- }
1546
- const el = document.createElement('div');
1547
- let y = notifyBottom;
1548
- let x = -10;
1549
- if (task.systemTaskInfo.taskId > 0) {
1550
- if (core.config['task.position'] === 'bottom') {
1551
- y -= task.systemTaskInfo.length;
1552
- }
1553
- else if (core.config['task.position'] === 'right') {
1554
- x -= task.systemTaskInfo.length;
1555
- }
1556
- }
1557
- el.classList.add('cg-notify-wrap');
1558
- el.setAttribute('data-notifyid', nid.toString());
1559
- el.style.transform = `translateY(${y}px) translateX(280px)`;
1560
- el.style.opacity = '0';
1561
- el.classList.add((opt.title && opt.content) ? 'cg-notify-full' : 'cg-notify-only');
1562
- el.innerHTML = `<div class="cg-notify-icon cg-${tool.escapeHTML(opt.type ?? 'primary')}"></div>` +
1563
- '<div style="flex: 1;">' +
1564
- (opt.title ? `<div class="cg-notify-title">${tool.escapeHTML(opt.title)}</div>` : '') +
1565
- (opt.content ? `<div class="cg-notify-content">${tool.escapeHTML(opt.content).replace(/\r\n/g, '\n').replace(/\r/g, '\n').replace(/\n/g, '<br>')}</div>` +
1566
- `${opt.progress ? '<div class="cg-notify-progress"></div>' : ''}` : '') +
1567
- '</div>';
1568
- if (opt.icon) {
1569
- el.childNodes.item(0).style.background = 'url(' + opt.icon + ')';
1570
- el.childNodes.item(0).style.backgroundSize = '14px';
1571
- }
1572
- exports.elements.notify.appendChild(el);
1573
- notifyBottom -= el.offsetHeight + 10;
1574
- requestAnimationFrame(function () {
1575
- el.style.transform = `translateY(${y}px) translateX(${x}px)`;
1576
- el.style.opacity = '1';
1577
- const timer = window.setTimeout(function () {
1578
- hideNotify(nid);
1579
- }, timeout);
1580
- el.setAttribute('data-timer', timer.toString());
1581
- });
1582
- return nid;
1583
- }
1584
- function notifyProgress(notifyId, per) {
1585
- const el = exports.elements.notify.querySelector(`[data-notifyid="${notifyId}"]`);
1586
- if (!el) {
1587
- return;
1588
- }
1589
- const progress = el.querySelector('.cg-notify-progress');
1590
- if (!progress) {
1591
- return;
1592
- }
1593
- if (per > 100) {
1594
- per = 100;
1595
- }
1596
- if (per === 1) {
1597
- const o = parseFloat(progress.style.width);
1598
- if (o > 1) {
1599
- per = 100;
1600
- }
1601
- }
1602
- if (per === 100) {
1603
- progress.style.transitionDelay = '.1s';
1604
- }
1605
- progress.style.width = (per < 1 ? per * 100 : per).toString() + '%';
1606
- }
1607
- function notifyContent(notifyId, opt) {
1608
- const el = exports.elements.notify.querySelector(`[data-notifyid="${notifyId}"]`);
1609
- if (!el) {
1610
- return;
1611
- }
1612
- if (opt.title) {
1613
- const title = el.querySelector('.cg-notify-title');
1614
- if (!title) {
1615
- return;
1616
- }
1617
- title.innerHTML = tool.escapeHTML(opt.title);
1618
- }
1619
- if (opt.content) {
1620
- const content = el.querySelector('.cg-notify-content');
1621
- if (!content) {
1622
- return;
1623
- }
1624
- content.innerHTML = tool.escapeHTML(opt.content);
1625
- }
1626
- }
1627
- function hideNotify(notifyId) {
1628
- const el = exports.elements.notify.querySelector(`[data-notifyid="${notifyId}"]`);
1629
- if (!el) {
1630
- return;
1631
- }
1632
- clearTimeout(parseInt(el.getAttribute('data-timer')));
1633
- const notifyHeight = el.offsetHeight;
1634
- el.style.opacity = '0';
1635
- setTimeout(function () {
1636
- notifyBottom += notifyHeight + 10;
1637
- const notifyElementList = document.getElementsByClassName('cg-notify-wrap');
1638
- let needSub = false;
1639
- for (const notifyElement of notifyElementList) {
1640
- if (notifyElement === el) {
1641
- needSub = true;
1642
- continue;
1643
- }
1644
- if (needSub) {
1645
- notifyElement.style.transform = notifyElement.style.transform.replace(/translateY\(([-0-9]+)px\)/, function (t, t1) {
1646
- return `translateY(${parseInt(t1) + notifyHeight + 10}px)`;
1647
- });
1648
- }
1649
- }
1650
- el.remove();
1651
- }, 100);
1652
- }
1653
- function appendToPop(el) {
1654
- exports.elements.popList.appendChild(el);
1655
- }
1656
- function removeFromPop(el) {
1657
- exports.elements.popList.removeChild(el);
1658
- }
1659
- function refreshPopPosition(el, pop, direction, size = {}) {
1660
- const width = size.width ?? pop.offsetWidth;
1661
- const height = size.height ?? pop.offsetHeight;
1662
- let left, top;
1663
- if (typeof direction === 'string') {
1664
- const bcr = el.getBoundingClientRect();
1665
- if (direction === 'v') {
1666
- left = bcr.left;
1667
- top = bcr.top + bcr.height;
1668
- }
1669
- else if (direction === 'h') {
1670
- left = bcr.left + bcr.width - 2;
1671
- top = bcr.top - 2;
1672
- }
1673
- else {
1674
- pop.removeAttribute('data-pop-t-bottom');
1675
- left = bcr.left + bcr.width / 2 - width / 2;
1676
- top = bcr.top - height - 10;
1677
- }
1678
- if (width + left > window.innerWidth) {
1679
- if (direction === 'v') {
1680
- left = bcr.left + bcr.width - width;
1681
- }
1682
- else if (direction === 'h') {
1683
- left = bcr.left - width + 2;
1684
- }
1685
- else {
1686
- left = window.innerWidth - width;
1687
- }
1688
- }
1689
- if (height + top > window.innerHeight) {
1690
- if (direction === 'v') {
1691
- top = bcr.top - height;
1692
- }
1693
- else if (direction === 'h') {
1694
- top = bcr.top + bcr.height - height + 2;
1695
- }
1696
- else {
1697
- }
1698
- }
1699
- else if (top < 0 && direction === 't') {
1700
- top = bcr.top + bcr.height + 10;
1701
- pop.dataset.popTBottom = '';
1702
- }
1703
- }
1704
- else {
1705
- let x;
1706
- let y;
1707
- if (direction instanceof MouseEvent || direction.type === 'mousedown') {
1708
- x = direction.clientX;
1709
- y = direction.clientY;
1710
- }
1711
- else if (direction instanceof TouchEvent || direction.type === 'touchstart') {
1712
- x = direction.touches[0].clientX;
1713
- y = direction.touches[0].clientY;
1714
- }
1715
- else {
1716
- x = direction.x;
1717
- y = direction.y;
1718
- }
1719
- left = x + 5;
1720
- top = y + 7;
1721
- if (width + left > window.innerWidth) {
1722
- left = x - width - 5;
1723
- }
1724
- if (height + top > window.innerHeight) {
1725
- top = y - height - 5;
1726
- }
1727
- }
1728
- if (left < 0) {
1729
- left = 0;
1730
- }
1731
- if (top < 0) {
1732
- top = 0;
1733
- }
1734
- pop.style.left = left.toString() + 'px';
1735
- pop.style.top = top.toString() + 'px';
1736
- pop.style.zIndex = (++popInfo.lastZIndex).toString();
1737
- if (size.width) {
1738
- pop.style.width = size.width.toString() + 'px';
1739
- }
1740
- if (size.height) {
1741
- pop.style.height = size.height.toString() + 'px';
1742
- }
1743
- }
1744
- let lastShowPopTime = 0;
1745
- function showPop(el, pop, direction, opt = {}) {
1746
- if (!(el instanceof Element)) {
1747
- if (!el.$el) {
1748
- return;
1749
- }
1750
- el = el.$el;
1751
- }
1752
- if (pop && !(pop instanceof Element)) {
1753
- if (!pop.$el) {
1754
- return;
1755
- }
1756
- pop = pop.$el;
1757
- }
1758
- opt.null ??= false;
1759
- opt.size ??= {};
1760
- opt.flow ??= true;
1761
- if (!pop && !opt.null) {
1762
- return;
1763
- }
1764
- if (pop && !opt.flow) {
1765
- pop.removeAttribute('data-cg-pop-none');
1766
- pop.dataset.cgFlow = '';
1767
- clickgo.tool.sleep(34).then(() => {
1768
- if (pop.dataset.cgFlow === undefined) {
1769
- return;
1770
- }
1771
- refreshPopPosition(el, pop, direction, opt.size);
1772
- if (opt.autoPosition) {
1773
- clickgo.dom.watchSize(pop, () => {
1774
- refreshPopPosition(el, pop, direction, opt.size);
1775
- });
1776
- }
1777
- pop.dataset.cgOpen = '';
1778
- }).catch(() => {
1779
- });
1780
- return;
1781
- }
1782
- const now = Date.now();
1783
- if (now - lastShowPopTime < 5) {
1784
- lastShowPopTime = now;
1785
- return;
1786
- }
1787
- lastShowPopTime = now;
1788
- if (el.dataset.cgPopOpen !== undefined) {
1789
- return;
1790
- }
1791
- const parentPop = dom.findParentByData(el, 'cg-pop');
1792
- if (parentPop?.dataset.cgLevel !== undefined) {
1793
- const nextlevel = parseInt(parentPop.dataset.cgLevel) + 1;
1794
- if (popInfo.elList[nextlevel]) {
1795
- hidePop(popInfo.elList[nextlevel]);
1796
- }
1797
- }
1798
- else {
1799
- hidePop();
1800
- }
1801
- if (!pop) {
1802
- popInfo.elList.push(el);
1803
- el.dataset.cgPopOpen = '';
1804
- el.dataset.cgLevel = (popInfo.elList.length - 1).toString();
1805
- return;
1806
- }
1807
- pop.removeAttribute('data-cg-pop-none');
1808
- popInfo.list.push(pop);
1809
- popInfo.elList.push(el);
1810
- popInfo.wayList.push(opt.way ?? 'normal');
1811
- popInfo.time.push(Date.now());
1812
- pop.dataset.cgLevel = (popInfo.list.length - 1).toString();
1813
- el.dataset.cgLevel = (popInfo.elList.length - 1).toString();
1814
- clickgo.tool.sleep(34).then(() => {
1815
- if (pop.dataset.cgLevel === undefined) {
1816
- return;
1817
- }
1818
- refreshPopPosition(el, pop, direction, opt.size);
1819
- if (opt.autoPosition && typeof direction === 'string') {
1820
- clickgo.dom.watchSize(pop, () => {
1821
- refreshPopPosition(el, pop, direction, opt.size);
1822
- });
1823
- }
1824
- if (opt.autoScroll && typeof direction === 'string') {
1825
- clickgo.dom.watchPosition(el, () => {
1826
- refreshPopPosition(el, pop, direction, opt.size);
1827
- });
1828
- }
1829
- pop.dataset.cgOpen = '';
1830
- el.dataset.cgPopOpen = '';
1831
- }).catch(() => {
1832
- });
1833
- }
1834
- function hidePop(pop) {
1835
- if (pop && !(pop instanceof HTMLElement)) {
1836
- if (!pop.$el) {
1837
- return;
1838
- }
1839
- pop = pop.$el;
1840
- }
1841
- if (!pop) {
1842
- if (popInfo.elList.length === 0) {
1843
- return;
1844
- }
1845
- hidePop(popInfo.elList[0]);
1846
- return;
1847
- }
1848
- if (pop.dataset.cgFlow !== undefined) {
1849
- pop.removeAttribute('data-cg-flow');
1850
- pop.removeAttribute('data-cg-open');
1851
- clickgo.dom.unwatchSize(pop);
1852
- clickgo.tool.sleep(334).then(() => {
1853
- if (pop.dataset.cgFlow !== undefined) {
1854
- return;
1855
- }
1856
- pop.dataset.cgPopNone = '';
1857
- }).catch(() => {
1858
- });
1859
- return;
1860
- }
1861
- if (pop.dataset.cgLevel === undefined) {
1862
- return;
1863
- }
1864
- const isPop = pop.dataset.cgPop !== undefined ? true : false;
1865
- const level = pop.dataset.cgLevel ? parseInt(pop.dataset.cgLevel) : -1;
1866
- if (level === -1) {
1867
- return;
1868
- }
1869
- if (popInfo.elList[level + 1]) {
1870
- hidePop(popInfo.elList[level + 1]);
1871
- }
1872
- if (isPop) {
1873
- pop.removeAttribute('data-cg-open');
1874
- pop.removeAttribute('data-cg-level');
1875
- clickgo.dom.unwatchSize(pop);
1876
- clickgo.dom.unwatchPosition(popInfo.elList[level]);
1877
- popInfo.elList[level].removeAttribute('data-cg-pop-open');
1878
- popInfo.elList[level].removeAttribute('data-cg-level');
1879
- clickgo.tool.sleep(334).then(() => {
1880
- if (pop.dataset.cgLevel !== undefined) {
1881
- return;
1882
- }
1883
- pop.dataset.cgPopNone = '';
1884
- }).catch(() => {
1885
- });
1886
- }
1887
- else {
1888
- if (popInfo.list[level]) {
1889
- const opop = popInfo.list[level];
1890
- opop.removeAttribute('data-cg-open');
1891
- opop.removeAttribute('data-cg-level');
1892
- clickgo.dom.unwatchSize(popInfo.list[level]);
1893
- clickgo.dom.unwatchPosition(pop);
1894
- clickgo.tool.sleep(334).then(() => {
1895
- if (opop.dataset.cgLevel !== undefined) {
1896
- return;
1897
- }
1898
- opop.dataset.cgPopNone = '';
1899
- }).catch(() => {
1900
- });
1901
- }
1902
- pop.removeAttribute('data-cg-pop-open');
1903
- pop.removeAttribute('data-cg-level');
1904
- }
1905
- popInfo.list.splice(level);
1906
- popInfo.elList.splice(level);
1907
- popInfo.wayList.splice(level);
1908
- popInfo.time.splice(level);
1909
- }
1910
- function isJustPop(el) {
1911
- if (el instanceof HTMLElement) {
1912
- const level = el.dataset.cgLevel;
1913
- if (!level) {
1914
- return false;
1915
- }
1916
- el = parseInt(level);
1917
- }
1918
- const time = popInfo.time[el];
1919
- if (Date.now() - time >= 100) {
1920
- return false;
1921
- }
1922
- return true;
1923
- }
1924
- function doFocusAndPopEvent(e) {
1925
- if (dom.hasTouchButMouse(e)) {
1926
- return;
1927
- }
1928
- const target = e.target;
1929
- if (!target) {
1930
- return;
1931
- }
1932
- const paths = e.path ?? (e.composedPath ? e.composedPath() : []);
1933
- let isCgPopOpen = null;
1934
- for (const item of paths) {
1935
- if (!item.tagName) {
1936
- continue;
1937
- }
1938
- if (item.dataset.cgLevel !== undefined && item.dataset.cgPop === undefined) {
1939
- isCgPopOpen = item;
1940
- continue;
1941
- }
1942
- if (item.classList.contains('cg-form-wrap')) {
1943
- const formId = parseInt(item.getAttribute('data-form-id') ?? '0');
1944
- changeFocus(formId);
1945
- if (isCgPopOpen) {
1946
- if (!isJustPop(isCgPopOpen)) {
1947
- hidePop();
1948
- }
1949
- }
1950
- else {
1951
- hidePop();
1952
- }
1953
- return;
1954
- }
1955
- if (item.tagName.toLowerCase() === 'body') {
1956
- break;
1957
- }
1958
- }
1959
- for (const item of paths) {
1960
- if (!item.tagName) {
1961
- continue;
1962
- }
1963
- if (item.tagName.toLowerCase() === 'body') {
1964
- break;
1965
- }
1966
- if (item.dataset.cgPop !== undefined) {
1967
- if (item.dataset.cgLevel) {
1968
- const nextlevel = parseInt(item.dataset.cgLevel) + 1;
1969
- if (popInfo.wayList[nextlevel] === 'click' && !isJustPop(nextlevel)) {
1970
- clickgo.form.hidePop(popInfo.list[nextlevel]);
1971
- }
1972
- }
1973
- return;
1974
- }
1975
- }
1976
- hidePop();
1977
- changeFocus();
1978
- }
1979
- window.addEventListener('touchstart', doFocusAndPopEvent, {
1980
- 'passive': true
1981
- });
1982
- window.addEventListener('mousedown', doFocusAndPopEvent);
1983
- function remove(formId) {
1984
- const taskId = getTaskId(formId);
1985
- if (!task.list[taskId].forms[formId]) {
1986
- return false;
1987
- }
1988
- if (task.list[taskId].forms[formId].closed) {
1989
- return false;
1990
- }
1991
- task.list[taskId].forms[formId].closed = true;
1992
- const title = task.list[taskId].forms[formId].vroot.$refs.form.title;
1993
- const icon = task.list[taskId].forms[formId].vroot.$refs.form.iconDataUrl;
1994
- const io = task.list[taskId].runtime.dialogFormIds.indexOf(formId);
1995
- if (io > -1) {
1996
- task.list[taskId].runtime.dialogFormIds.splice(io, 1);
1997
- }
1998
- task.list[taskId].forms[formId].vroot.$refs.form.$data.isShow = false;
1999
- setTimeout(function () {
2000
- const fid = getMaxZIndexID({
2001
- 'formIds': [formId]
2002
- });
2003
- if (fid) {
2004
- changeFocus(fid);
2005
- }
2006
- else {
2007
- changeFocus();
2008
- }
2009
- if (!task.list[taskId]) {
2010
- return true;
2011
- }
2012
- task.list[taskId].forms[formId].vapp.unmount();
2013
- task.list[taskId].forms[formId].vapp._container.remove();
2014
- exports.elements.popList.querySelector('[data-form-id="' + formId.toString() + '"]')?.remove();
2015
- if (io > -1) {
2016
- task.list[taskId].forms[formId].vroot.cgDialogCallback();
2017
- }
2018
- delete task.list[taskId].forms[formId];
2019
- dom.removeStyle(taskId, 'form', formId);
2020
- core.trigger('formRemoved', taskId, formId, title, icon);
2021
- dom.clearWatchStyle(formId);
2022
- dom.clearWatchProperty(formId);
2023
- dom.clearWatchPosition(formId);
2024
- native.clear(formId, taskId);
2025
- delete exports.activePanels[formId];
2026
- if (Object.keys(task.list[taskId].forms).length === 0) {
2027
- task.end(taskId);
2028
- }
2029
- }, 300);
2030
- return true;
2031
- }
2032
- function removePanel(id, vapp, el) {
2033
- const formWrap = dom.findParentByClass(el, 'cg-form-wrap');
2034
- if (!formWrap) {
2035
- return false;
2036
- }
2037
- const formId = formWrap.dataset.formId;
2038
- if (!formId) {
2039
- return false;
2040
- }
2041
- const taskId = formWrap.dataset.taskId;
2042
- if (!taskId) {
2043
- return false;
2044
- }
2045
- const tid = parseInt(taskId);
2046
- vapp.unmount();
2047
- vapp._container.remove();
2048
- el.querySelector('[data-panel-id="' + id.toString() + '"]')?.remove();
2049
- dom.removeStyle(tid, 'form', formId, id);
2050
- dom.clearWatchStyle(formId, id);
2051
- dom.clearWatchProperty(formId, id);
2052
- dom.clearWatchPosition(formId, id);
2053
- if (exports.activePanels[formId]) {
2054
- const io = exports.activePanels[formId].indexOf(id);
2055
- if (io >= 0) {
2056
- exports.activePanels[formId].splice(io, 1);
2057
- }
2058
- if (!exports.activePanels[formId].length) {
2059
- delete exports.activePanels[formId];
2060
- }
2061
- }
2062
- return true;
2063
- }
2064
- function getForm(taskId, formId) {
2065
- const t = task.list[taskId];
2066
- if (!t) {
2067
- return null;
2068
- }
2069
- const form = t.forms[formId];
2070
- if (!form) {
2071
- return null;
2072
- }
2073
- return form;
2074
- }
2075
- async function createPanel(rootPanel, cls, opt = {}, taskId) {
2076
- if (rootPanel.element.dataset.cgControl !== 'panel') {
2077
- const err = new Error('form.createPanel: -0');
2078
- core.trigger('error', 0, 0, err, err.message);
2079
- throw err;
2080
- }
2081
- const formWrap = dom.findParentByData(rootPanel.element, 'form-id');
2082
- if (!formWrap) {
2083
- const err = new Error('form.createPanel: -0');
2084
- core.trigger('error', 0, 0, err, err.message);
2085
- throw err;
2086
- }
2087
- const formId = parseInt(formWrap.dataset.formId);
2088
- if (!taskId) {
2089
- const err = new Error('form.createPanel: -1');
2090
- core.trigger('error', 0, 0, err, err.message);
2091
- throw err;
2092
- }
2093
- const t = task.list[taskId];
2094
- if (!t) {
2095
- const err = new Error('form.createPanel: -2');
2096
- core.trigger('error', 0, 0, err, err.message);
2097
- throw err;
2098
- }
2099
- let layout = '';
2100
- if (opt.layout) {
2101
- layout = opt.layout;
2102
- }
2103
- let style = '';
2104
- let prep = '';
2105
- if (opt.style) {
2106
- style = opt.style;
2107
- }
2108
- let filename = '';
2109
- if (typeof cls === 'string') {
2110
- filename = tool.urlResolve(opt.path ?? '/', cls);
2111
- if (!layout) {
2112
- const l = t.app.files[filename + '.xml'];
2113
- if (typeof l !== 'string') {
2114
- const err = new Error('form.createPanel: -3');
2115
- core.trigger('error', 0, 0, err, err.message);
2116
- throw err;
2117
- }
2118
- layout = l;
2119
- }
2120
- if (!style) {
2121
- const s = t.app.files[filename + '.css'];
2122
- if (typeof s === 'string') {
2123
- style = s;
2124
- }
2125
- }
2126
- cls = class extends AbstractPanel {
2127
- get filename() {
2128
- return filename + '.js';
2129
- }
2130
- get taskId() {
2131
- return t.id;
2132
- }
2133
- };
2134
- }
2135
- const panelId = ++info.lastPanelId;
2136
- const panel = new cls();
2137
- if (!filename) {
2138
- filename = panel.filename;
2139
- }
2140
- const lio = filename.lastIndexOf('/');
2141
- const path = filename.slice(0, lio);
2142
- if (!layout) {
2143
- const l = t.app.files[filename.slice(0, -2) + 'xml'];
2144
- if (typeof l !== 'string') {
2145
- const err = new Error('form.createPanel: -4');
2146
- core.trigger('error', 0, 0, err, err.message);
2147
- throw err;
2148
- }
2149
- layout = l;
2150
- }
2151
- if (!style) {
2152
- const s = t.app.files[filename.slice(0, -2) + 'css'];
2153
- if (typeof s === 'string') {
2154
- style = s;
2155
- }
2156
- }
2157
- if (style) {
2158
- const r = tool.stylePrepend(style);
2159
- prep = r.prep;
2160
- style = await tool.styleUrl2DataUrl(path + '/', r.style, t.app.files);
2161
- }
2162
- layout = tool.purify(layout);
2163
- layout = tool.layoutAddTagClassAndReTagName(layout, true);
2164
- const prepList = ['cg-task' + t.id.toString() + '_'];
2165
- if (prep !== '') {
2166
- prepList.push(prep);
2167
- }
2168
- layout = tool.layoutClassPrepend(layout, prepList);
2169
- layout = tool.eventsAttrWrap(layout);
2170
- if (layout.includes('<teleport')) {
2171
- layout = tool.teleportGlue(layout, formId);
2172
- }
2173
- const components = control.buildComponents(t.id, formId, path);
2174
- if (!components) {
2175
- const err = new Error('form.createPanel: -5');
2176
- core.trigger('error', 0, 0, err, err.message);
2177
- throw err;
2178
- }
2179
- const idata = {};
2180
- const cdata = Object.entries(panel);
2181
- for (const item of cdata) {
2182
- if (item[0] === 'access') {
2183
- continue;
2184
- }
2185
- idata[item[0]] = item[1];
2186
- }
2187
- const prot = tool.getClassPrototype(panel);
2188
- const methods = prot.method;
2189
- const computed = prot.access;
2190
- computed.formId = {
2191
- get: function () {
2192
- return formId;
2193
- },
2194
- set: function () {
2195
- notify({
2196
- 'title': 'Error',
2197
- 'content': `The software tries to modify the system variable "formId".\nPath: ${this.filename}`,
2198
- 'type': 'danger'
2199
- });
2200
- return;
2201
- }
2202
- };
2203
- computed.panelId = {
2204
- get: function () {
2205
- return panelId;
2206
- },
2207
- set: function () {
2208
- notify({
2209
- 'title': 'Error',
2210
- 'content': `The software tries to modify the system variable "panelId".\nPath: ${this.filename}`,
2211
- 'type': 'danger'
2212
- });
2213
- return;
2214
- }
2215
- };
2216
- computed.path = {
2217
- get: function () {
2218
- return path;
2219
- },
2220
- set: function () {
2221
- notify({
2222
- 'title': 'Error',
2223
- 'content': `The software tries to modify the system variable "path".\nPath: ${this.filename}`,
2224
- 'type': 'danger'
2225
- });
2226
- return;
2227
- }
2228
- };
2229
- computed.prep = {
2230
- get: function () {
2231
- return prep;
2232
- },
2233
- set: function () {
2234
- notify({
2235
- 'title': 'Error',
2236
- 'content': `The software tries to modify the system variable "prep".\nPath: ${this.filename}`,
2237
- 'type': 'danger'
2238
- });
2239
- return;
2240
- }
2241
- };
2242
- computed.rootForm = {
2243
- get: function () {
2244
- return t.forms[formId].vroot;
2245
- },
2246
- set: function () {
2247
- notify({
2248
- 'title': 'Error',
2249
- 'content': `The software tries to modify the system variable "rootForm".\nPath: ${this.filename}`,
2250
- 'type': 'danger'
2251
- });
2252
- return;
2253
- }
2254
- };
2255
- computed.rootPanel = {
2256
- get: function () {
2257
- return rootPanel;
2258
- },
2259
- set: function () {
2260
- notify({
2261
- 'title': 'Error',
2262
- 'content': `The software tries to modify the system variable "rootPanel".\nPath: ${this.filename}`,
2263
- 'type': 'danger'
2264
- });
2265
- return;
2266
- }
2267
- };
2268
- rootPanel.element.insertAdjacentHTML('beforeend', `<div data-panel-id="${panelId.toString()}"></div>`);
2269
- if (style) {
2270
- dom.pushStyle(t.id, style, 'form', formId, panelId);
2271
- }
2272
- const mel = rootPanel.element.children.item(rootPanel.element.children.length - 1);
2273
- mel.style.position = 'absolute';
2274
- mel.style.display = 'none';
2275
- const rtn = await new Promise(function (resolve) {
2276
- const vapp = clickgo.vue.createApp({
2277
- 'template': layout.replace(/^<cg-panel([\s\S]+)-panel>$/, '<cg-layout$1-layout>'),
2278
- 'data': function () {
2279
- return tool.clone(idata);
2280
- },
2281
- 'methods': methods,
2282
- 'computed': computed,
2283
- 'beforeCreate': panel.onBeforeCreate,
2284
- 'created': function () {
2285
- if (panel.access) {
2286
- this.access = tool.clone(panel.access);
2287
- }
2288
- this.onCreated();
2289
- },
2290
- 'beforeMount': function () {
2291
- this.onBeforeMount();
2292
- },
2293
- 'mounted': async function () {
2294
- await this.$nextTick();
2295
- mel.children.item(0).style.flex = '1';
2296
- resolve({
2297
- 'vapp': vapp,
2298
- 'vroot': this
2299
- });
2300
- },
2301
- 'beforeUpdate': function () {
2302
- this.onBeforeUpdate();
2303
- },
2304
- 'updated': async function () {
2305
- await this.$nextTick();
2306
- this.onUpdated();
2307
- },
2308
- 'beforeUnmount': function () {
2309
- this.onBeforeUnmount();
2310
- },
2311
- 'unmounted': async function () {
2312
- await this.$nextTick();
2313
- this.onUnmounted();
2314
- }
2315
- });
2316
- vapp.config.errorHandler = function (err, vm, info) {
2317
- notify({
2318
- 'title': 'Runtime Error',
2319
- 'content': `Message: ${err.message}\nTask id: ${vm.taskId}\nForm id: ${vm.formId}`,
2320
- 'type': 'danger'
2321
- });
2322
- console.error('Runtime Error [form.createPanel.errorHandler]', `Message: ${err.message}\nTask id: ${vm.taskId}\nForm id: ${vm.formId}`, err, info);
2323
- core.trigger('error', vm.taskId, vm.formId, err, info + '(-3,' + vm.taskId + ',' + vm.formId + ')');
2324
- };
2325
- for (const key in components) {
2326
- vapp.component(key, components[key]);
2327
- }
2328
- try {
2329
- vapp.mount(mel);
2330
- }
2331
- catch (err) {
2332
- notify({
2333
- 'title': 'Runtime Error',
2334
- 'content': `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}`,
2335
- 'type': 'danger'
2336
- });
2337
- console.error('Runtime Error [form.createPanel.mount]', `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}`, err);
2338
- core.trigger('error', t.id, formId, err, err.message);
2339
- }
2340
- });
2341
- await tool.sleep(34);
2342
- try {
2343
- await panel.onMounted.call(rtn.vroot);
2344
- }
2345
- catch (err) {
2346
- core.trigger('error', rtn.vroot.taskId, rtn.vroot.formId, err, 'Create panel mounted error: -6.');
2347
- try {
2348
- rtn.vapp.unmount();
2349
- }
2350
- catch (err) {
2351
- const msg = `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}\nFunction: form.createPanel, unmount.`;
2352
- notify({
2353
- 'title': 'Panel Unmount Error',
2354
- 'content': msg,
2355
- 'type': 'danger'
2356
- });
2357
- console.log('Panel Unmount Error', msg, err);
2358
- }
2359
- rtn.vapp._container.remove();
2360
- dom.clearWatchStyle(rtn.vroot.formId, panelId);
2361
- dom.clearWatchProperty(rtn.vroot.formId, panelId);
2362
- dom.clearWatchPosition(rtn.vroot.formId, panelId);
2363
- dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId, panelId);
2364
- throw err;
2365
- }
2366
- return {
2367
- 'id': panelId,
2368
- 'vapp': rtn.vapp,
2369
- 'vroot': rtn.vroot
2370
- };
2371
- }
2372
- async function create(cls, data, opt = {}, taskId) {
2373
- if (!taskId) {
2374
- const err = new Error('form.create: -1');
2375
- core.trigger('error', 0, 0, err, err.message);
2376
- throw err;
2377
- }
2378
- const t = task.list[taskId];
2379
- if (!t) {
2380
- const err = new Error('form.create: -2');
2381
- core.trigger('error', 0, 0, err, err.message);
2382
- throw err;
2383
- }
2384
- let layout = '';
2385
- if (opt.layout) {
2386
- layout = opt.layout;
2387
- }
2388
- let style = '';
2389
- let prep = '';
2390
- if (opt.style) {
2391
- style = opt.style;
2392
- }
2393
- let filename = '';
2394
- if (typeof cls === 'string') {
2395
- filename = tool.urlResolve(opt.path ?? '/', cls);
2396
- if (!layout) {
2397
- const l = t.app.files[filename + '.xml'];
2398
- if (typeof l !== 'string') {
2399
- const err = new Error('form.create: -3');
2400
- core.trigger('error', 0, 0, err, err.message);
2401
- throw err;
2402
- }
2403
- layout = l;
2404
- }
2405
- if (!style) {
2406
- const s = t.app.files[filename + '.css'];
2407
- if (typeof s === 'string') {
2408
- style = s;
2409
- }
2410
- }
2411
- cls = class extends AbstractForm {
2412
- get filename() {
2413
- return filename + '.js';
2414
- }
2415
- get taskId() {
2416
- return t.id;
2417
- }
2418
- };
2419
- }
2420
- const formId = ++info.lastId;
2421
- const frm = new cls();
2422
- if (!filename) {
2423
- filename = frm.filename;
2424
- }
2425
- const lio = filename.lastIndexOf('/');
2426
- const path = filename.slice(0, lio);
2427
- if (!layout) {
2428
- const l = t.app.files[filename.slice(0, -2) + 'xml'];
2429
- if (typeof l !== 'string') {
2430
- const err = new Error('form.create: -4');
2431
- core.trigger('error', 0, 0, err, err.message);
2432
- throw err;
2433
- }
2434
- layout = l;
2435
- }
2436
- if (!style) {
2437
- const s = t.app.files[filename.slice(0, -2) + 'css'];
2438
- if (typeof s === 'string') {
2439
- style = s;
2440
- }
2441
- }
2442
- if (style) {
2443
- const r = tool.stylePrepend(style);
2444
- prep = r.prep;
2445
- style = await tool.styleUrl2DataUrl(path + '/', r.style, t.app.files);
2446
- }
2447
- layout = tool.purify(layout);
2448
- layout = tool.layoutAddTagClassAndReTagName(layout, true);
2449
- const prepList = ['cg-task' + t.id.toString() + '_'];
2450
- if (prep !== '') {
2451
- prepList.push(prep);
2452
- }
2453
- layout = tool.layoutClassPrepend(layout, prepList);
2454
- layout = tool.eventsAttrWrap(layout);
2455
- if (layout.includes('<teleport')) {
2456
- layout = tool.teleportGlue(layout, formId);
2457
- }
2458
- const components = control.buildComponents(t.id, formId, path);
2459
- if (!components) {
2460
- const err = new Error('form.create: -5');
2461
- core.trigger('error', 0, 0, err, err.message);
2462
- throw err;
2463
- }
2464
- const idata = {};
2465
- const cdata = Object.entries(frm);
2466
- for (const item of cdata) {
2467
- if (item[0] === 'access') {
2468
- continue;
2469
- }
2470
- idata[item[0]] = item[1];
2471
- }
2472
- idata._formFocus = false;
2473
- if (clickgo.isNative() && (formId === 1) && !clickgo.isImmersion() && !clickgo.hasFrame()) {
2474
- idata.isNativeSync = true;
2475
- }
2476
- const prot = tool.getClassPrototype(frm);
2477
- const methods = prot.method;
2478
- const computed = prot.access;
2479
- computed.formId = {
2480
- get: function () {
2481
- return formId;
2482
- },
2483
- set: function () {
2484
- notify({
2485
- 'title': 'Error',
2486
- 'content': `The software tries to modify the system variable "formId".\nPath: ${this.filename}`,
2487
- 'type': 'danger'
2488
- });
2489
- return;
2490
- }
2491
- };
2492
- computed.path = {
2493
- get: function () {
2494
- return path;
2495
- },
2496
- set: function () {
2497
- notify({
2498
- 'title': 'Error',
2499
- 'content': `The software tries to modify the system variable "path".\nPath: ${this.filename}`,
2500
- 'type': 'danger'
2501
- });
2502
- return;
2503
- }
2504
- };
2505
- computed.prep = {
2506
- get: function () {
2507
- return prep;
2508
- },
2509
- set: function () {
2510
- notify({
2511
- 'title': 'Error',
2512
- 'content': `The software tries to modify the system variable "prep".\nPath: ${this.filename}`,
2513
- 'type': 'danger'
2514
- });
2515
- return;
2516
- }
2517
- };
2518
- idata._bottomMost = false;
2519
- computed.bottomMost = {
2520
- get: function () {
2521
- return this._bottomMost;
2522
- },
2523
- set: function (v) {
2524
- if (v) {
2525
- this._bottomMost = true;
2526
- this.$el.dataset.cgBottomMost = '';
2527
- if (this._topMost) {
2528
- this._topMost = false;
2529
- }
2530
- this.$refs.form.$data.zIndex = ++info.bottomLastZIndex;
2531
- }
2532
- else {
2533
- this._bottomMost = false;
2534
- this.$el.removeAttribute('data-cg-bottom-most');
2535
- this.$refs.form.$data.zIndex = ++info.lastZIndex;
2536
- }
2537
- }
2538
- };
2539
- idata._topMost = false;
2540
- computed.topMost = {
2541
- get: function () {
2542
- return this._topMost;
2543
- },
2544
- set: function (v) {
2545
- if (v) {
2546
- this._topMost = true;
2547
- if (this._bottomMost) {
2548
- this._bottomMost = false;
2549
- this.$el.removeAttribute('data-cg-bottom-most');
2550
- }
2551
- if (!this._formFocus) {
2552
- changeFocus(this.formId);
2553
- }
2554
- else {
2555
- this.$refs.form.$data.zIndex = ++info.topLastZIndex;
2556
- }
2557
- }
2558
- else {
2559
- this._topMost = false;
2560
- this.$refs.form.$data.zIndex = ++info.lastZIndex;
2561
- }
2562
- }
2563
- };
2564
- idata._historyHash = [];
2565
- idata._formHash = '';
2566
- computed.formHash = {
2567
- get: function () {
2568
- return this._formHash;
2569
- },
2570
- set: function (v) {
2571
- if (v === this._formHash) {
2572
- return;
2573
- }
2574
- if (Date.now() - this._lastFormHashData > 300) {
2575
- this._formHashData = {};
2576
- }
2577
- if (this.inStep) {
2578
- (async () => {
2579
- if (this._stepValues.includes(v)) {
2580
- this.$refs.form.stepValue = v;
2581
- }
2582
- else {
2583
- if (!await clickgo.form.confirm({
2584
- 'taskId': this.taskId,
2585
- 'content': info.locale[this.locale].confirmExitStep
2586
- })) {
2587
- return;
2588
- }
2589
- this._inStep = false;
2590
- this.$refs.form.stepHide();
2591
- }
2592
- if (this._formHash) {
2593
- this._historyHash.push(this._formHash);
2594
- }
2595
- this._formHash = v;
2596
- core.trigger('formHashChange', t.id, formId, v, this._formHashData);
2597
- })();
2598
- return;
2599
- }
2600
- if (this._formHash) {
2601
- this._historyHash.push(this._formHash);
2602
- }
2603
- this._formHash = v;
2604
- core.trigger('formHashChange', t.id, formId, v, this._formHashData);
2605
- }
2606
- };
2607
- idata._lastFormHashData = 0;
2608
- idata._formHashData = {};
2609
- computed.formHashData = {
2610
- get: function () {
2611
- return this._formHashData;
2612
- },
2613
- set: function (v) {
2614
- this._formHashData = v;
2615
- this._lastFormHashData = Date.now();
2616
- }
2617
- };
2618
- idata._showInSystemTask = true;
2619
- computed.showInSystemTask = {
2620
- get: function () {
2621
- return this._showInSystemTask;
2622
- },
2623
- set: function (v) {
2624
- this._showInSystemTask = v;
2625
- core.trigger('formShowInSystemTaskChange', t.id, formId, v);
2626
- }
2627
- };
2628
- const cbs = [];
2629
- methods.ready = function (cb) {
2630
- if (this.isReady) {
2631
- cb();
2632
- return;
2633
- }
2634
- cbs.push(cb);
2635
- };
2636
- exports.elements.list.insertAdjacentHTML('beforeend', `<div class="cg-form-wrap" data-form-id="${formId.toString()}" data-task-id="${t.id.toString()}"></div>`);
2637
- exports.elements.popList.insertAdjacentHTML('beforeend', `<div data-form-id="${formId.toString()}" data-task-id="${t.id.toString()}"></div>`);
2638
- if (style) {
2639
- dom.pushStyle(t.id, style, 'form', formId);
2640
- }
2641
- const el = exports.elements.list.children.item(exports.elements.list.children.length - 1);
2642
- const rtn = await new Promise(function (resolve) {
2643
- const vapp = clickgo.vue.createApp({
2644
- 'template': layout.replace(/^<cg-form/, '<cg-form ref="form"'),
2645
- 'data': function () {
2646
- return tool.clone(idata);
2647
- },
2648
- 'methods': methods,
2649
- 'computed': computed,
2650
- 'beforeCreate': frm.onBeforeCreate,
2651
- 'created': function () {
2652
- if (frm.access) {
2653
- this.access = tool.clone(frm.access);
2654
- }
2655
- this.onCreated();
2656
- },
2657
- 'beforeMount': function () {
2658
- this.onBeforeMount();
2659
- },
2660
- 'mounted': async function () {
2661
- await this.$nextTick();
2662
- if (this.$refs.form.icon) {
2663
- const icon = await fs.getContent(this.$refs.form.icon, undefined, taskId);
2664
- this.$refs.form.iconDataUrl = (icon instanceof Blob) ? await tool.blob2DataUrl(icon) : '';
2665
- }
2666
- resolve({
2667
- 'vapp': vapp,
2668
- 'vroot': this
2669
- });
2670
- },
2671
- 'beforeUpdate': function () {
2672
- this.onBeforeUpdate();
2673
- },
2674
- 'updated': async function () {
2675
- await this.$nextTick();
2676
- this.onUpdated();
2677
- },
2678
- 'beforeUnmount': function () {
2679
- this.onBeforeUnmount();
2680
- },
2681
- 'unmounted': async function () {
2682
- await this.$nextTick();
2683
- this.onUnmounted();
2684
- }
2685
- });
2686
- vapp.config.errorHandler = function (err, vm, info) {
2687
- notify({
2688
- 'title': 'Runtime Error',
2689
- 'content': `Message: ${err.message}\nTask id: ${vm.taskId}\nForm id: ${vm.formId}`,
2690
- 'type': 'danger'
2691
- });
2692
- console.error('Runtime Error [form.create.errorHandler]', `Message: ${err.message}\nTask id: ${vm.taskId}\nForm id: ${vm.formId}`, err, info);
2693
- core.trigger('error', vm.taskId, vm.formId, err, info + '(-3,' + vm.taskId + ',' + vm.formId + ')');
2694
- };
2695
- for (const key in components) {
2696
- vapp.component(key, components[key]);
2697
- }
2698
- try {
2699
- vapp.mount(el);
2700
- }
2701
- catch (err) {
2702
- notify({
2703
- 'title': 'Runtime Error',
2704
- 'content': `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}`,
2705
- 'type': 'danger'
2706
- });
2707
- console.error('Runtime Error [form.create.mount]', `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}`, err);
2708
- core.trigger('error', t.id, formId, err, err.message);
2709
- }
2710
- });
2711
- const nform = {
2712
- 'id': formId,
2713
- 'vapp': rtn.vapp,
2714
- 'vroot': rtn.vroot,
2715
- 'closed': false
2716
- };
2717
- t.forms[formId] = nform;
2718
- await tool.sleep(34);
2719
- try {
2720
- await frm.onMounted.call(rtn.vroot, data ?? {});
2721
- }
2722
- catch (err) {
2723
- core.trigger('error', rtn.vroot.taskId, rtn.vroot.formId, err, 'Create form mounted error: -6.');
2724
- delete t.forms[formId];
2725
- try {
2726
- rtn.vapp.unmount();
2727
- }
2728
- catch (err) {
2729
- const msg = `Message: ${err.message}\nTask id: ${t.id}\nForm id: ${formId}\nFunction: form.create, unmount.`;
2730
- notify({
2731
- 'title': 'Form Unmount Error',
2732
- 'content': msg,
2733
- 'type': 'danger'
2734
- });
2735
- console.log('Form Unmount Error', msg, err);
2736
- }
2737
- rtn.vapp._container.remove();
2738
- exports.elements.popList.querySelector('[data-form-id="' + rtn.vroot.formId + '"]')?.remove();
2739
- dom.clearWatchStyle(rtn.vroot.formId);
2740
- dom.clearWatchProperty(rtn.vroot.formId);
2741
- dom.clearWatchPosition(rtn.vroot.formId);
2742
- native.clear(formId, t.id);
2743
- dom.removeStyle(rtn.vroot.taskId, 'form', rtn.vroot.formId);
2744
- throw err;
2745
- }
2746
- core.trigger('formCreated', t.id, formId, rtn.vroot.$refs.form.title, rtn.vroot.$refs.form.iconDataUrl, rtn.vroot.showInSystemTask);
2747
- if (rtn.vroot.isNativeSync) {
2748
- await native.invoke('cg-set-size', native.getToken(), rtn.vroot.$refs.form.$el.offsetWidth, rtn.vroot.$refs.form.$el.offsetHeight);
2749
- window.addEventListener('resize', function () {
2750
- rtn.vroot.$refs.form.setPropData('width', window.innerWidth);
2751
- rtn.vroot.$refs.form.setPropData('height', window.innerHeight);
2752
- });
2753
- }
2754
- rtn.vroot.isReady = true;
2755
- for (const cb of cbs) {
2756
- cb.call(rtn.vroot);
2757
- }
2758
- return rtn.vroot;
2759
- }
2760
- function dialog(opt) {
2761
- return new Promise(function (resolve) {
2762
- if (typeof opt === 'string') {
2763
- opt = {
2764
- 'content': opt
2765
- };
2766
- }
2767
- const filename = tool.urlResolve(opt.path ?? '/', './tmp' + (Math.random() * 100000000000000).toFixed() + '.js');
2768
- const nopt = opt;
2769
- const taskId = nopt.taskId;
2770
- if (!taskId) {
2771
- resolve('');
2772
- return;
2773
- }
2774
- const t = task.list[taskId];
2775
- if (!t) {
2776
- resolve('');
2777
- return;
2778
- }
2779
- const locale = t.locale.lang || core.config.locale;
2780
- nopt.buttons ??= [info.locale[locale]?.ok ?? info.locale['en'].ok];
2781
- const cls = class extends AbstractForm {
2782
- constructor() {
2783
- super(...arguments);
2784
- this.buttons = nopt.buttons;
2785
- this.data = nopt.data ?? {};
2786
- this.methods = nopt.methods ?? {};
2787
- }
2788
- get filename() {
2789
- return filename;
2790
- }
2791
- get taskId() {
2792
- return taskId;
2793
- }
2794
- select(button) {
2795
- const event = {
2796
- 'go': true,
2797
- preventDefault: function () {
2798
- this.go = false;
2799
- },
2800
- 'detail': {
2801
- 'button': button
2802
- }
2803
- };
2804
- if (nopt.select) {
2805
- nopt.select.call(this, event, button);
2806
- }
2807
- if (event.go) {
2808
- if (nopt.autoDialogResult !== false) {
2809
- this.dialogResult = button;
2810
- }
2811
- close(this.formId);
2812
- }
2813
- }
2814
- };
2815
- create(cls, undefined, {
2816
- 'layout': `<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.gutter ? ` gutter="${nopt.gutter}"` : ''}>${nopt.content}</dialog></form>`,
2817
- 'style': nopt.style
2818
- }, t.id).then((frm) => {
2819
- if (typeof frm === 'number') {
2820
- resolve('');
2821
- return;
2822
- }
2823
- frm.showDialog().then((v) => {
2824
- resolve(v);
2825
- }).catch(() => {
2826
- resolve('');
2827
- });
2828
- }).catch(() => {
2829
- resolve('');
2830
- });
2831
- });
2832
- }
2833
- async function confirm(opt) {
2834
- if (typeof opt === 'string') {
2835
- opt = {
2836
- 'content': opt
2837
- };
2838
- }
2839
- const taskId = opt.taskId;
2840
- if (!taskId) {
2841
- return false;
2842
- }
2843
- const t = task.list[taskId];
2844
- if (!t) {
2845
- return false;
2846
- }
2847
- const locale = t.locale.lang || core.config.locale;
2848
- const buttons = [info.locale[locale]?.no ?? info.locale['en'].no, info.locale[locale]?.yes ?? info.locale['en'].yes];
2849
- if (opt.cancel) {
2850
- buttons.unshift(info.locale[locale]?.cancel ?? info.locale['en'].cancel);
2851
- }
2852
- const res = await dialog({
2853
- 'taskId': taskId,
2854
- 'title': opt.title,
2855
- 'content': opt.content,
2856
- 'buttons': buttons
2857
- });
2858
- if (res === (info.locale[locale]?.yes ?? info.locale['en'].yes)) {
2859
- return true;
2860
- }
2861
- if (res === (info.locale[locale]?.cancel ?? info.locale['en'].cancel)) {
2862
- return 0;
2863
- }
2864
- return false;
2865
- }
2866
- async function prompt(opt) {
2867
- if (typeof opt === 'string') {
2868
- opt = {
2869
- 'content': opt
2870
- };
2871
- }
2872
- const taskId = opt.taskId;
2873
- if (!taskId) {
2874
- return '';
2875
- }
2876
- const t = task.list[taskId];
2877
- if (!t) {
2878
- return '';
2879
- }
2880
- const locale = t.locale.lang || core.config.locale;
2881
- const buttons = [info.locale[locale]?.ok ?? info.locale['en'].ok];
2882
- const cancelBtn = info.locale[locale]?.cancel ?? info.locale['en'].cancel;
2883
- if (opt.cancel === true || opt.cancel === undefined) {
2884
- buttons.unshift(cancelBtn);
2885
- }
2886
- const res = await dialog({
2887
- 'taskId': taskId,
2888
- 'title': opt.title,
2889
- 'direction': 'v',
2890
- 'gutter': 10,
2891
- 'content': '<block>' + opt.content + '</block><text v-model="data.text" />',
2892
- 'data': {
2893
- 'text': opt.text ?? ''
2894
- },
2895
- 'select': function (e, button) {
2896
- const event = {
2897
- 'go': true,
2898
- preventDefault: function () {
2899
- this.go = false;
2900
- },
2901
- 'detail': {
2902
- 'button': button,
2903
- 'value': this.data.text
2904
- }
2905
- };
2906
- opt.select?.call(this, event, button);
2907
- if (!event.go) {
2908
- e.preventDefault();
2909
- }
2910
- if (e.detail.button === cancelBtn) {
2911
- this.dialogResult = '';
2912
- return;
2913
- }
2914
- this.dialogResult = this.data.text;
2915
- },
2916
- 'buttons': buttons,
2917
- 'autoDialogResult': false
2918
- });
2919
- return res;
2920
- }
2921
- function flash(formId, taskId) {
2922
- if (!taskId) {
2923
- return;
2924
- }
2925
- const form = getForm(taskId, formId);
2926
- if (!form) {
2927
- return;
2928
- }
2929
- if (!form.vroot._formFocus) {
2930
- changeFocus(form.id);
2931
- }
2932
- if (form.vroot.$refs.form.flashTimer) {
2933
- clearTimeout(form.vroot.$refs.form.flashTimer);
2934
- form.vroot.$refs.form.flashTimer = undefined;
2935
- }
2936
- form.vroot.$refs.form.flashTimer = setTimeout(() => {
2937
- if (form.vroot.$refs.form) {
2938
- form.vroot.$refs.form.flashTimer = undefined;
2939
- }
2940
- }, 1000);
2941
- core.trigger('formFlash', taskId, formId);
2942
- }
2943
- function showLauncher() {
2944
- exports.elements.launcher.style.display = 'flex';
2945
- requestAnimationFrame(function () {
2946
- exports.elements.launcher.classList.add('cg-show');
2947
- });
2948
- }
2949
- function hideLauncher() {
2950
- exports.elements.launcher.classList.remove('cg-show');
2951
- setTimeout(function () {
2952
- if (exports.launcherRoot.folderName !== '') {
2953
- exports.launcherRoot.closeFolder();
2954
- }
2955
- exports.launcherRoot.name = '';
2956
- exports.elements.launcher.style.display = 'none';
2957
- }, 300);
2958
- }
2959
- window.addEventListener('resize', function () {
2960
- task.refreshSystemPosition();
2961
- });