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/core.js DELETED
@@ -1,1005 +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.boot = exports.AbstractApp = exports.global = exports.config = void 0;
37
- exports.getCdn = getCdn;
38
- exports.regModule = regModule;
39
- exports.getModule = getModule;
40
- exports.trigger = trigger;
41
- exports.readApp = readApp;
42
- exports.fetchApp = fetchApp;
43
- exports.getAvailArea = getAvailArea;
44
- exports.hash = hash;
45
- exports.getHash = getHash;
46
- exports.getHost = getHost;
47
- exports.location = location;
48
- exports.getLocation = getLocation;
49
- exports.back = back;
50
- exports.open = open;
51
- const clickgo = __importStar(require("../clickgo"));
52
- const fs = __importStar(require("./fs"));
53
- const form = __importStar(require("./form"));
54
- const task = __importStar(require("./task"));
55
- const tool = __importStar(require("./tool"));
56
- const zip = __importStar(require("./zip"));
57
- const configOrigin = {
58
- 'locale': 'en',
59
- 'task.position': 'bottom',
60
- 'task.pin': {},
61
- 'desktop.icon.storage': true,
62
- 'desktop.icon.recycler': true,
63
- 'desktop.wallpaper': null,
64
- 'desktop.path': null,
65
- 'launcher.list': []
66
- };
67
- exports.config = clickgo.vue.reactive({
68
- 'locale': 'en',
69
- 'task.position': 'bottom',
70
- 'task.pin': {},
71
- 'desktop.icon.storage': true,
72
- 'desktop.icon.recycler': true,
73
- 'desktop.wallpaper': null,
74
- 'desktop.path': null,
75
- 'launcher.list': []
76
- });
77
- exports.global = window.clickgoGlobal ?? {};
78
- class AbstractApp {
79
- get filename() {
80
- return '';
81
- }
82
- get taskId() {
83
- return 0;
84
- }
85
- set taskId(v) {
86
- form.notify({
87
- 'title': 'Error',
88
- 'content': `The software tries to modify the system variable "taskId" to "${v}".\nPath: ${this.filename}`,
89
- 'type': 'danger'
90
- });
91
- }
92
- run(form) {
93
- form.show();
94
- }
95
- onError() {
96
- return;
97
- }
98
- onScreenResize() {
99
- return;
100
- }
101
- onConfigChanged() {
102
- return;
103
- }
104
- onFormCreated() {
105
- return;
106
- }
107
- onFormRemoved() {
108
- return;
109
- }
110
- onFormTitleChanged() {
111
- return;
112
- }
113
- onFormIconChanged() {
114
- return;
115
- }
116
- onFormStateMinChanged() {
117
- return;
118
- }
119
- onFormStateMaxChanged() {
120
- return;
121
- }
122
- onFormShowChanged() {
123
- return;
124
- }
125
- onFormFocused() {
126
- return;
127
- }
128
- onFormBlurred() {
129
- return;
130
- }
131
- onFormFlash() {
132
- return;
133
- }
134
- onFormShowInSystemTaskChange() {
135
- return;
136
- }
137
- onFormHashChange() {
138
- return;
139
- }
140
- onTaskStarted() {
141
- return;
142
- }
143
- onTaskEnded() {
144
- return;
145
- }
146
- onLauncherFolderNameChanged() {
147
- return;
148
- }
149
- onHashChanged() {
150
- return;
151
- }
152
- onKeydown() {
153
- return;
154
- }
155
- onKeyup() {
156
- return;
157
- }
158
- }
159
- exports.AbstractApp = AbstractApp;
160
- function getCdn() {
161
- return loader.cdn;
162
- }
163
- clickgo.vue.watch(exports.config, function () {
164
- for (const key in configOrigin) {
165
- if (exports.config[key] !== undefined) {
166
- continue;
167
- }
168
- form.notify({
169
- 'title': 'Warning',
170
- 'content': 'There is a software that maliciously removed the system config item.\nKey: ' + key,
171
- 'type': 'warning'
172
- });
173
- exports.config[key] = configOrigin[key];
174
- }
175
- for (const key in exports.config) {
176
- if (!Object.keys(configOrigin).includes(key)) {
177
- form.notify({
178
- 'title': 'Warning',
179
- 'content': 'There is a software that maliciously modifies the system config.\nKey: ' + key,
180
- 'type': 'warning'
181
- });
182
- delete exports.config[key];
183
- continue;
184
- }
185
- if (key === 'task.pin') {
186
- const paths = Object.keys(exports.config['task.pin']).sort().toString();
187
- const originPaths = Object.keys(configOrigin['task.pin']).sort().toString();
188
- if (paths === originPaths) {
189
- continue;
190
- }
191
- configOrigin['task.pin'] = {};
192
- for (const path in exports.config['task.pin']) {
193
- configOrigin['task.pin'][path] = exports.config['task.pin'][path];
194
- }
195
- trigger('configChanged', 'task.pin', exports.config['task.pin']);
196
- }
197
- else {
198
- if (exports.config[key] === configOrigin[key]) {
199
- continue;
200
- }
201
- configOrigin[key] = exports.config[key];
202
- if (key === 'task.position') {
203
- task.refreshSystemPosition();
204
- }
205
- trigger('configChanged', key, exports.config[key]);
206
- }
207
- }
208
- }, {
209
- 'deep': true
210
- });
211
- const modules = {
212
- 'monaco': {
213
- func: async function () {
214
- return new Promise(function (resolve, reject) {
215
- fetch(loader.cdn + '/npm/monaco-editor@0.50.0/min/vs/loader.js').then(function (r) {
216
- return r.blob();
217
- }).then(function (b) {
218
- return tool.blob2DataUrl(b);
219
- }).then(function (d) {
220
- resolve(d);
221
- }).catch(function (e) {
222
- reject(e);
223
- });
224
- });
225
- },
226
- 'obj': null,
227
- 'loading': false,
228
- 'resolve': []
229
- },
230
- 'xterm': {
231
- func: async function () {
232
- await loader.loadScripts([
233
- loader.cdn + '/npm/xterm@5.3.0/lib/xterm.js',
234
- loader.cdn + '/npm/xterm-addon-fit@0.8.0/lib/xterm-addon-fit.js',
235
- loader.cdn + '/npm/xterm-addon-webgl@0.16.0/lib/xterm-addon-webgl.js'
236
- ]);
237
- if (!window.Terminal) {
238
- throw Error('Xterm load failed.');
239
- }
240
- await loader.loadLinks([
241
- loader.cdn + '/npm/xterm@5.3.0/css/xterm.min.css'
242
- ]);
243
- loader.loadStyle('.xterm-viewport::-webkit-scrollbar{display:none;}');
244
- return [window.Terminal, window.FitAddon.FitAddon, window.WebglAddon.WebglAddon];
245
- },
246
- 'obj': null,
247
- 'loading': false,
248
- 'resolve': []
249
- },
250
- 'echarts': {
251
- func: async function () {
252
- await loader.loadScript(loader.cdn + '/npm/echarts@5.4.2/dist/echarts.min.js');
253
- if (!window.echarts) {
254
- throw Error('Echarts load failed.');
255
- }
256
- return window.echarts;
257
- },
258
- 'obj': null,
259
- 'loading': false,
260
- 'resolve': []
261
- },
262
- 'tuieditor': {
263
- func: async function () {
264
- await loader.loadScripts([
265
- __dirname + '/../ext/toastui-editor-all.min.js'
266
- ]);
267
- if (!window.toastui.Editor) {
268
- throw Error('Tuieditor load failed.');
269
- }
270
- await loader.loadScripts([
271
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/zh-cn.min.js',
272
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/zh-tw.min.js',
273
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/ja-jp.min.js',
274
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/ko-kr.min.js',
275
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/es-es.min.js',
276
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/de-de.min.js',
277
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/fr-fr.min.js',
278
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/pt-br.min.js',
279
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/i18n/ru-ru.min.js'
280
- ]);
281
- await loader.loadLinks([
282
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/toastui-editor.min.css',
283
- loader.cdn + '/npm/@toast-ui/editor@3.2.2/dist/theme/toastui-editor-dark.css'
284
- ]);
285
- loader.loadStyle('.toastui-editor-defaultUI-toolbar,.ProseMirror{box-sizing:initial !important}.toastui-editor-main{background:var(--g-plain-background);border-radius:0 0 3px 3px}.ProseMirror{cursor:text}.jodit ::-webkit-scrollbar{width:6px;cursor:default;}.jodit ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px;}.jodit ::-webkit-scrollbar-thumb:hover{background: rgba(0,0,0,.2);}');
286
- return window.toastui.Editor;
287
- },
288
- 'obj': null,
289
- 'loading': false,
290
- 'resolve': []
291
- },
292
- 'jodit': {
293
- func: async function () {
294
- await loader.loadScripts([
295
- loader.cdn + '/npm/jodit@4.2.27/es2015/jodit.fat.min.js'
296
- ]);
297
- await loader.loadLinks([
298
- loader.cdn + '/npm/jodit@4.2.27/es2015/jodit.fat.min.css'
299
- ]);
300
- loader.loadStyle('.jodit-container:not(.jodit_inline){border:none;display:flex;flex-direction:column;}.jodit-container:not(.jodit_inline) .jodit-workplace{cursor:text;flex:1;}.jodit-wysiwyg a{color:unset;}');
301
- return window.Jodit;
302
- },
303
- 'obj': null,
304
- 'loading': false,
305
- 'resolve': []
306
- },
307
- 'compressorjs': {
308
- func: async function () {
309
- await loader.loadScripts([
310
- loader.cdn + '/npm/compressorjs@1.2.1/dist/compressor.min.js'
311
- ]);
312
- if (!window.Compressor) {
313
- throw Error('Compressor load failed.');
314
- }
315
- return [window.Compressor];
316
- },
317
- 'obj': null,
318
- 'loading': false,
319
- 'resolve': []
320
- },
321
- 'pdfjs': {
322
- func: async function () {
323
- await loader.loadScripts([
324
- loader.cdn + '/npm/pdfjs-dist@4.7.76/build/pdf.min.mjs'
325
- ], {
326
- 'module': true
327
- });
328
- if (!window.pdfjsLib) {
329
- throw Error('pdf.js load failed.');
330
- }
331
- window.pdfjsLib.GlobalWorkerOptions.workerSrc = loader.cdn + '/npm/pdfjs-dist@4.7.76/build/pdf.worker.min.mjs';
332
- return window.pdfjsLib;
333
- },
334
- 'obj': null,
335
- 'loading': false,
336
- 'resolve': []
337
- },
338
- 'qrcode': {
339
- func: async function () {
340
- await loader.loadScripts([
341
- loader.cdn + '/npm/qrcode@1.5.1/build/qrcode.js'
342
- ]);
343
- if (!window.QRCode) {
344
- throw Error('QRCode load failed.');
345
- }
346
- return window.QRCode;
347
- },
348
- 'obj': null,
349
- 'loading': false,
350
- 'resolve': []
351
- },
352
- 'mpegts': {
353
- func: async function () {
354
- await loader.loadScripts([
355
- loader.cdn + '/npm/mpegts.js@1.7.3/dist/mpegts.min.js'
356
- ]);
357
- if (!window.mpegts) {
358
- throw Error('mpegts load failed.');
359
- }
360
- window.mpegts.LoggingControl.enableAll = false;
361
- return window.mpegts;
362
- },
363
- 'obj': null,
364
- 'loading': false,
365
- 'resolve': []
366
- },
367
- 'tplink': {
368
- func: async function () {
369
- await loader.loadScripts([
370
- __dirname + '/../ext/tplinkhd.min.js'
371
- ]);
372
- if (!window.HDPluginControl) {
373
- throw Error('Tplink load failed.');
374
- }
375
- return window.HDPluginControl;
376
- },
377
- 'obj': null,
378
- 'loading': false,
379
- 'resolve': [],
380
- },
381
- 'tcc': {
382
- func: async function () {
383
- await loader.loadScripts([
384
- 'https://turing.captcha.qcloud.com/TJCaptcha.js'
385
- ]);
386
- if (!window.TencentCaptcha) {
387
- throw Error('tcc load failed.');
388
- }
389
- return window.TencentCaptcha;
390
- },
391
- 'obj': null,
392
- 'loading': false,
393
- 'resolve': [],
394
- },
395
- 'cft': {
396
- func: async function () {
397
- await loader.loadScripts([
398
- 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'
399
- ]);
400
- if (!window.turnstile) {
401
- throw Error('cft load failed.');
402
- }
403
- return window.turnstile;
404
- },
405
- 'obj': null,
406
- 'loading': false,
407
- 'resolve': [],
408
- },
409
- 'novnc': {
410
- func: async function () {
411
- console.log('alpha, not use');
412
- try {
413
- console.log('xxx2');
414
- const novnc = await Promise.resolve(`${loader.cdn + '/npm/@novnc/novnc@1.6.0/+esm'}`).then(s => __importStar(require(s)));
415
- console.log('xxx', novnc);
416
- return novnc.default.default;
417
- }
418
- catch (e) {
419
- console.log('xxx222', e);
420
- throw Error('novnc load failed.');
421
- }
422
- },
423
- 'obj': null,
424
- 'loading': false,
425
- 'resolve': [],
426
- },
427
- };
428
- function regModule(name, func) {
429
- if (modules[name]) {
430
- return false;
431
- }
432
- modules[name] = {
433
- func: func,
434
- 'obj': null,
435
- 'loading': false,
436
- 'resolve': []
437
- };
438
- return true;
439
- }
440
- function getModule(name) {
441
- return new Promise((resolve) => {
442
- if (!modules[name]) {
443
- resolve(null);
444
- return;
445
- }
446
- if (!modules[name].obj) {
447
- if (modules[name].loading) {
448
- modules[name].resolve.push(() => {
449
- resolve(modules[name].obj);
450
- });
451
- }
452
- else {
453
- const rtn = modules[name].func();
454
- if (rtn instanceof Promise) {
455
- modules[name].loading = true;
456
- rtn.then(function (obj) {
457
- modules[name].obj = obj;
458
- modules[name].loading = false;
459
- resolve(obj);
460
- for (const r of modules[name].resolve) {
461
- r();
462
- }
463
- }).catch(function () {
464
- modules[name].loading = false;
465
- resolve(null);
466
- for (const r of modules[name].resolve) {
467
- r();
468
- }
469
- });
470
- }
471
- else {
472
- modules[name].obj = rtn;
473
- resolve(rtn);
474
- }
475
- }
476
- return;
477
- }
478
- resolve(modules[name].obj);
479
- return;
480
- });
481
- }
482
- const globalEvents = {
483
- screenResize: function () {
484
- form.refreshMaxPosition();
485
- },
486
- formRemoved: function (taskId, formId) {
487
- if (!form.simpleSystemTaskRoot.forms[formId]) {
488
- return;
489
- }
490
- delete form.simpleSystemTaskRoot.forms[formId];
491
- },
492
- formTitleChanged: function (taskId, formId, title) {
493
- if (!form.simpleSystemTaskRoot.forms[formId]) {
494
- return;
495
- }
496
- form.simpleSystemTaskRoot.forms[formId].title = title;
497
- },
498
- formIconChanged: function (taskId, formId, icon) {
499
- if (!form.simpleSystemTaskRoot.forms[formId]) {
500
- return;
501
- }
502
- form.simpleSystemTaskRoot.forms[formId].icon = icon;
503
- },
504
- formStateMinChanged: function (taskId, formId, state) {
505
- if (task.systemTaskInfo.taskId > 0) {
506
- return;
507
- }
508
- if (state) {
509
- const item = form.get(formId);
510
- if (!item) {
511
- return;
512
- }
513
- form.simpleSystemTaskRoot.forms[formId] = {
514
- 'title': item.title,
515
- 'icon': item.icon
516
- };
517
- }
518
- else {
519
- if (!form.simpleSystemTaskRoot.forms[formId]) {
520
- return;
521
- }
522
- delete form.simpleSystemTaskRoot.forms[formId];
523
- }
524
- }
525
- };
526
- function trigger(name, taskId = 0, formId = 0, param1 = '', param2 = '', param3 = true) {
527
- const eventName = 'on' + name[0].toUpperCase() + name.slice(1);
528
- switch (name) {
529
- case 'error': {
530
- if (typeof taskId !== 'number' || typeof formId !== 'number') {
531
- break;
532
- }
533
- exports.boot?.[eventName](taskId, formId, param1, param2);
534
- for (const tid in task.list) {
535
- const t = task.list[tid];
536
- t.class?.[eventName](taskId, formId, param1, param2);
537
- for (const fid in t.forms) {
538
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1, param2);
539
- }
540
- }
541
- break;
542
- }
543
- case 'screenResize': {
544
- globalEvents.screenResize();
545
- exports.boot?.[eventName]();
546
- for (const tid in task.list) {
547
- const t = task.list[tid];
548
- t.class?.[eventName]();
549
- for (const fid in t.forms) {
550
- t.forms[fid].vroot[eventName]?.();
551
- }
552
- }
553
- break;
554
- }
555
- case 'configChanged': {
556
- if ((typeof taskId !== 'string') || (typeof formId === 'number')) {
557
- break;
558
- }
559
- exports.boot?.[eventName]();
560
- for (const tid in task.list) {
561
- const t = task.list[tid];
562
- t.class?.[eventName](taskId, formId);
563
- for (const fid in t.forms) {
564
- t.forms[fid].vroot[eventName]?.(taskId, formId);
565
- }
566
- }
567
- break;
568
- }
569
- case 'formCreated':
570
- case 'formRemoved': {
571
- globalEvents[name]?.(taskId, formId, param1, param2, param3);
572
- exports.boot?.[eventName](taskId, formId, param1, param2, param3);
573
- for (const tid in task.list) {
574
- const t = task.list[tid];
575
- t.class?.[eventName](taskId, formId, param1, param2, param3);
576
- for (const fid in t.forms) {
577
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1, param2, param3);
578
- }
579
- }
580
- break;
581
- }
582
- case 'formTitleChanged':
583
- case 'formIconChanged': {
584
- globalEvents[name]?.(taskId, formId, param1);
585
- exports.boot?.[eventName](taskId, formId, param1);
586
- for (const tid in task.list) {
587
- const t = task.list[tid];
588
- t.class?.[eventName](taskId, formId, param1);
589
- for (const fid in t.forms) {
590
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1);
591
- }
592
- }
593
- break;
594
- }
595
- case 'formStateMinChanged':
596
- case 'formStateMaxChanged':
597
- case 'formShowChanged': {
598
- globalEvents[name]?.(taskId, formId, param1);
599
- exports.boot?.[eventName](taskId, formId, param1);
600
- for (const tid in task.list) {
601
- const t = task.list[tid];
602
- t.class?.[eventName](taskId, formId, param1);
603
- for (const fid in t.forms) {
604
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1);
605
- }
606
- }
607
- break;
608
- }
609
- case 'formFocused':
610
- case 'formBlurred':
611
- case 'formFlash': {
612
- globalEvents[name]?.(taskId, formId);
613
- exports.boot?.[eventName](taskId, formId);
614
- for (const tid in task.list) {
615
- const t = task.list[tid];
616
- t.class?.[eventName](taskId, formId);
617
- for (const fid in t.forms) {
618
- t.forms[fid].vroot[eventName]?.(taskId, formId);
619
- }
620
- }
621
- break;
622
- }
623
- case 'formShowInSystemTaskChange': {
624
- globalEvents[name]?.(taskId, formId, param1);
625
- exports.boot?.[eventName](taskId, formId, param1);
626
- for (const tid in task.list) {
627
- const t = task.list[tid];
628
- t.class?.[eventName](taskId, formId, param1);
629
- for (const fid in t.forms) {
630
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1);
631
- }
632
- }
633
- break;
634
- }
635
- case 'formHashChange': {
636
- globalEvents[name]?.(taskId, formId, param1, param2);
637
- exports.boot?.[eventName](taskId, formId, param1, param2);
638
- for (const tid in task.list) {
639
- const t = task.list[tid];
640
- t.class?.[eventName](taskId, formId, param1, param2);
641
- for (const fid in t.forms) {
642
- t.forms[fid].vroot[eventName]?.(taskId, formId, param1, param2);
643
- }
644
- }
645
- break;
646
- }
647
- case 'taskStarted':
648
- case 'taskEnded': {
649
- globalEvents[name]?.(taskId, formId);
650
- exports.boot?.[eventName](taskId, formId);
651
- for (const tid in task.list) {
652
- const t = task.list[tid];
653
- t.class?.[eventName](taskId);
654
- for (const fid in t.forms) {
655
- t.forms[fid].vroot[eventName]?.(taskId);
656
- }
657
- }
658
- break;
659
- }
660
- case 'launcherFolderNameChanged': {
661
- if (typeof formId !== 'string') {
662
- break;
663
- }
664
- if (typeof taskId !== 'string') {
665
- break;
666
- }
667
- exports.boot?.[eventName](taskId, formId);
668
- for (const tid in task.list) {
669
- const t = task.list[tid];
670
- t.class?.[eventName](taskId, formId);
671
- for (const fid in t.forms) {
672
- t.forms[fid].vroot[eventName]?.(taskId, formId);
673
- }
674
- }
675
- break;
676
- }
677
- case 'hashChanged': {
678
- if (typeof taskId !== 'string') {
679
- break;
680
- }
681
- exports.boot?.[eventName](taskId);
682
- for (const tid in task.list) {
683
- const t = task.list[tid];
684
- t.class?.[eventName](taskId);
685
- for (const fid in t.forms) {
686
- t.forms[fid].vroot[eventName]?.(taskId);
687
- }
688
- }
689
- break;
690
- }
691
- case 'keydown':
692
- case 'keyup': {
693
- globalEvents[name]?.(taskId);
694
- exports.boot?.[eventName](taskId);
695
- for (const tid in task.list) {
696
- const t = task.list[tid];
697
- t.class?.[eventName](taskId);
698
- for (const fid in t.forms) {
699
- t.forms[fid].vroot[eventName]?.(taskId);
700
- }
701
- }
702
- break;
703
- }
704
- }
705
- }
706
- async function readApp(blob) {
707
- const head = await tool.blob2Text(blob.slice(0, 5));
708
- if (head !== '-CGA-') {
709
- return false;
710
- }
711
- const iconLength = parseInt(await blob.slice(21, 28).text());
712
- if (Number.isNaN(iconLength)) {
713
- return false;
714
- }
715
- const icon = iconLength ? await tool.blob2DataUrl(blob.slice(28, 28 + iconLength)) : '';
716
- const nb = new Blob([blob.slice(5, 21), blob.slice(28 + iconLength)], {
717
- 'type': blob.type
718
- });
719
- const z = await zip.get(nb);
720
- if (!z) {
721
- return false;
722
- }
723
- const files = {};
724
- const configContent = await z.getContent('/config.json');
725
- if (!configContent) {
726
- return false;
727
- }
728
- const config = JSON.parse(configContent);
729
- const list = z.readDir('/', {
730
- 'hasChildren': true
731
- });
732
- for (const file of list) {
733
- const mime = tool.getMimeByPath(file.name);
734
- if (['txt', 'json', 'js', 'css', 'xml', 'html'].includes(mime.ext)) {
735
- const fab = await z.getContent(file.path + file.name, 'string');
736
- if (!fab) {
737
- continue;
738
- }
739
- files[file.path + file.name] = fab.replace(/^\ufeff/, '');
740
- }
741
- else {
742
- const fab = await z.getContent(file.path + file.name, 'arraybuffer');
743
- if (!fab) {
744
- continue;
745
- }
746
- files[file.path + file.name] = new Blob([fab], {
747
- 'type': mime.mime
748
- });
749
- }
750
- }
751
- return {
752
- 'type': 'app',
753
- 'config': config,
754
- 'files': files,
755
- 'icon': icon
756
- };
757
- }
758
- async function fetchApp(url, opt = {}, taskId) {
759
- let cga = '';
760
- if (!url.endsWith('/')) {
761
- const lio = url.lastIndexOf('/');
762
- cga = lio === -1 ? url : url.slice(lio + 1);
763
- if (!cga.endsWith('.cga')) {
764
- return null;
765
- }
766
- }
767
- if (!taskId &&
768
- !url.startsWith('/clickgo/') &&
769
- !url.startsWith('/storage/') &&
770
- !url.startsWith('/mounted/') &&
771
- !url.startsWith('/package/') &&
772
- !url.startsWith('/current/') &&
773
- !url.startsWith('http:') &&
774
- !url.startsWith('https:') &&
775
- !url.startsWith('file:')) {
776
- url = tool.urlResolve(window.location.href, url);
777
- }
778
- if (cga) {
779
- try {
780
- const blob = await fs.getContent(url, {
781
- 'progress': (loaded, total) => {
782
- if (opt.notifyId) {
783
- form.notifyProgress(opt.notifyId, loaded / total);
784
- }
785
- if (opt.progress) {
786
- opt.progress(loaded, total);
787
- }
788
- },
789
- 'cache': opt.cache
790
- }, taskId);
791
- if ((blob === null) || typeof blob === 'string') {
792
- return null;
793
- }
794
- if (opt.notifyId) {
795
- form.notifyProgress(opt.notifyId, 1);
796
- }
797
- return await readApp(blob) || null;
798
- }
799
- catch {
800
- return null;
801
- }
802
- }
803
- let config;
804
- const files = {};
805
- try {
806
- const blob = await fs.getContent(url + 'config.json', {
807
- 'cache': opt.cache
808
- }, taskId);
809
- if (blob === null || typeof blob === 'string') {
810
- return null;
811
- }
812
- config = JSON.parse(await tool.blob2Text(blob));
813
- await new Promise(function (resolve) {
814
- if (!config.files) {
815
- return;
816
- }
817
- const total = config.files.length;
818
- let loaded = 0;
819
- if (opt.progress) {
820
- opt.progress(loaded + 1, total + 1);
821
- }
822
- for (const file of config.files) {
823
- fs.getContent(url + file.slice(1), {
824
- 'cache': opt.cache
825
- }, taskId).then(async function (blob) {
826
- if (blob === null || typeof blob === 'string') {
827
- clickgo.form.notify({
828
- 'title': 'File not found',
829
- 'content': url + file.slice(1),
830
- 'type': 'danger'
831
- });
832
- return;
833
- }
834
- const mime = tool.getMimeByPath(file);
835
- if (['txt', 'json', 'js', 'css', 'xml', 'html'].includes(mime.ext)) {
836
- files[file] = (await tool.blob2Text(blob)).replace(/^\ufeff/, '');
837
- }
838
- else {
839
- files[file] = blob;
840
- }
841
- ++loaded;
842
- if (opt.notifyId) {
843
- form.notifyProgress(opt.notifyId, loaded / total);
844
- }
845
- if (opt.progress) {
846
- opt.progress(loaded + 1, total + 1);
847
- }
848
- if (loaded < total) {
849
- return;
850
- }
851
- resolve();
852
- }).catch(function () {
853
- ++loaded;
854
- if (opt.notifyId) {
855
- form.notifyProgress(opt.notifyId, loaded / total);
856
- }
857
- if (opt.progress) {
858
- opt.progress(loaded + 1, total + 1);
859
- }
860
- if (loaded < total) {
861
- return;
862
- }
863
- resolve();
864
- });
865
- }
866
- });
867
- }
868
- catch (e) {
869
- console.log('core.fetchApp', e);
870
- trigger('error', 0, 0, e, e.message);
871
- return null;
872
- }
873
- let icon = '';
874
- if (config.icon && (files[config.icon] instanceof Blob)) {
875
- icon = await tool.blob2DataUrl(files[config.icon]);
876
- }
877
- if (icon === '') {
878
- const iconBlob = await fs.getContent('/clickgo/icon.png', undefined, taskId);
879
- if (iconBlob instanceof Blob) {
880
- icon = await tool.blob2DataUrl(iconBlob);
881
- }
882
- }
883
- return {
884
- 'type': 'app',
885
- 'config': config,
886
- 'files': files,
887
- 'icon': icon
888
- };
889
- }
890
- function getAvailArea() {
891
- if (Object.keys(form.simpleSystemTaskRoot.forms).length > 0) {
892
- return {
893
- 'left': 0,
894
- 'top': 0,
895
- 'width': window.innerWidth,
896
- 'height': window.innerHeight - 46,
897
- 'owidth': window.innerWidth,
898
- 'oheight': window.innerHeight
899
- };
900
- }
901
- else {
902
- let left = 0;
903
- let top = 0;
904
- let width = 0;
905
- let height = 0;
906
- switch (exports.config['task.position']) {
907
- case 'left': {
908
- left = task.systemTaskInfo.length;
909
- top = 0;
910
- width = window.innerWidth - task.systemTaskInfo.length;
911
- height = window.innerHeight;
912
- break;
913
- }
914
- case 'right': {
915
- left = 0;
916
- top = 0;
917
- width = window.innerWidth - task.systemTaskInfo.length;
918
- height = window.innerHeight;
919
- break;
920
- }
921
- case 'top': {
922
- left = 0;
923
- top = task.systemTaskInfo.length;
924
- width = window.innerWidth;
925
- height = window.innerHeight - task.systemTaskInfo.length;
926
- break;
927
- }
928
- case 'bottom': {
929
- left = 0;
930
- top = 0;
931
- width = window.innerWidth;
932
- height = window.innerHeight - task.systemTaskInfo.length;
933
- }
934
- }
935
- return {
936
- 'left': left,
937
- 'top': top,
938
- 'width': width,
939
- 'height': height,
940
- 'owidth': window.innerWidth,
941
- 'oheight': window.innerHeight
942
- };
943
- }
944
- }
945
- function hash(hash, taskId) {
946
- if (!taskId) {
947
- return false;
948
- }
949
- const t = task.list[taskId];
950
- if (!t) {
951
- return false;
952
- }
953
- if (!t.runtime.permissions.includes('root') && !t.runtime.permissions.includes('hash')) {
954
- return false;
955
- }
956
- window.location.hash = hash;
957
- return true;
958
- }
959
- function getHash() {
960
- return window.location.hash ? decodeURIComponent(window.location.hash.slice(1)) : '';
961
- }
962
- function getHost() {
963
- const match = /https?:\/\/([-a-zA-Z0-9:.]+)/.exec(window.location.href);
964
- if (!match) {
965
- return '';
966
- }
967
- return match[1];
968
- }
969
- function location(url, taskId) {
970
- if (!taskId) {
971
- return false;
972
- }
973
- const t = task.list[taskId];
974
- if (!t) {
975
- return false;
976
- }
977
- if (!t.runtime.permissions.includes('root') && !t.runtime.permissions.includes('location')) {
978
- return false;
979
- }
980
- window.location.href = url;
981
- return true;
982
- }
983
- function getLocation() {
984
- return window.location.href;
985
- }
986
- function back(taskId) {
987
- if (!taskId) {
988
- return false;
989
- }
990
- const t = task.list[taskId];
991
- if (!t) {
992
- return false;
993
- }
994
- if (!t.runtime.permissions.includes('root') && !t.runtime.permissions.includes('location')) {
995
- return false;
996
- }
997
- window.history.back();
998
- return true;
999
- }
1000
- function open(url) {
1001
- window.open(url);
1002
- }
1003
- window.addEventListener('hashchange', function () {
1004
- trigger('hashChanged', window.location.hash ? decodeURIComponent(window.location.hash.slice(1)) : '');
1005
- });