clickgo 3.1.2-dev11 → 3.1.4-dev13

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 (110) hide show
  1. package/README.md +1 -1
  2. package/dist/app/demo/app.js +0 -73
  3. package/dist/app/demo/config.json +113 -0
  4. package/dist/app/demo/form/control/button/button.js +12 -11
  5. package/dist/app/demo/form/control/button/button.xml +6 -6
  6. package/dist/app/demo/form/control/check/check.js +14 -10
  7. package/dist/app/demo/form/control/file/file.js +15 -13
  8. package/dist/app/demo/form/control/{overflow/overflow.css → flow/flow.css} +0 -0
  9. package/dist/app/demo/form/control/flow/flow.js +64 -0
  10. package/dist/app/demo/form/control/{overflow/overflow.scss → flow/flow.scss} +0 -0
  11. package/dist/app/demo/form/control/flow/flow.xml +101 -0
  12. package/dist/app/demo/form/control/form/form.js +1 -1
  13. package/dist/app/demo/form/control/form/form.xml +3 -3
  14. package/dist/app/demo/form/control/img/img.xml +2 -2
  15. package/dist/app/demo/form/control/list/list.js +95 -75
  16. package/dist/app/demo/form/control/list/list.xml +15 -11
  17. package/dist/app/demo/form/control/marquee/marquee.js +12 -10
  18. package/dist/app/demo/form/control/menu/menu.js +10 -6
  19. package/dist/app/demo/form/control/monaco/monaco.js +50 -60
  20. package/dist/app/demo/form/control/monaco/monaco.xml +6 -5
  21. package/dist/app/demo/form/control/property/property.js +131 -127
  22. package/dist/app/demo/form/control/radio/radio.js +9 -5
  23. package/dist/app/demo/form/control/scroll/scroll.js +16 -12
  24. package/dist/app/demo/form/control/scroll/scroll.xml +10 -10
  25. package/dist/app/demo/form/control/select/select.js +132 -71
  26. package/dist/app/demo/form/control/select/select.xml +69 -67
  27. package/dist/app/demo/form/control/tab/tab.js +21 -20
  28. package/dist/app/demo/form/control/tab/tab.xml +2 -2
  29. package/dist/app/demo/form/control/text/text.js +53 -45
  30. package/dist/app/demo/form/control/text/text.xml +3 -3
  31. package/dist/app/demo/form/control/{greatview/greatview.css → vflow/vflow.css} +0 -0
  32. package/dist/app/demo/form/control/vflow/vflow.js +79 -0
  33. package/dist/app/demo/form/control/{greatview/greatview.scss → vflow/vflow.scss} +0 -0
  34. package/dist/app/demo/form/control/{greatview/greatview.xml → vflow/vflow.xml} +25 -25
  35. package/dist/app/demo/form/event/form/form.js +58 -56
  36. package/dist/app/demo/form/event/form/form.xml +3 -3
  37. package/dist/app/demo/form/event/other/other.js +29 -0
  38. package/dist/app/demo/form/event/other/other.xml +5 -0
  39. package/dist/app/demo/form/event/screen/screen.js +30 -28
  40. package/dist/app/demo/form/event/screen/screen.xml +2 -2
  41. package/dist/app/demo/form/event/task/task.js +31 -31
  42. package/dist/app/demo/form/event/task/task.xml +3 -3
  43. package/dist/app/demo/form/main.js +166 -5
  44. package/dist/app/demo/form/main.xml +37 -35
  45. package/dist/app/demo/form/method/aform/aform.js +2 -1
  46. package/dist/app/demo/form/method/aform/aform.xml +3 -2
  47. package/dist/app/demo/form/method/aform/sd.js +28 -0
  48. package/dist/app/demo/form/method/aform/sd.xml +7 -0
  49. package/dist/app/demo/form/method/aform/test.xml +4 -5
  50. package/dist/app/demo/form/method/core/core.js +23 -8
  51. package/dist/app/demo/form/method/core/core.xml +6 -1
  52. package/dist/app/demo/form/method/dom/dom.js +91 -99
  53. package/dist/app/demo/form/method/dom/dom.xml +6 -7
  54. package/dist/app/demo/form/method/form/form.js +8 -8
  55. package/dist/app/demo/form/method/form/form.xml +4 -4
  56. package/dist/app/demo/form/method/fs/fs.js +34 -33
  57. package/dist/app/demo/form/method/fs/fs.xml +1 -1
  58. package/dist/app/demo/form/method/fs/text.js +12 -12
  59. package/dist/app/demo/form/method/native/native.js +50 -0
  60. package/dist/app/demo/form/method/native/native.xml +12 -0
  61. package/dist/app/demo/form/method/system/system.js +50 -0
  62. package/dist/app/demo/form/method/system/system.xml +11 -0
  63. package/dist/app/demo/form/method/task/task.js +68 -62
  64. package/dist/app/demo/form/method/task/task.xml +5 -6
  65. package/dist/app/demo/form/method/theme/theme.js +14 -14
  66. package/dist/app/demo/form/method/tool/tool.js +29 -28
  67. package/dist/app/demo/form/method/tool/tool.xml +3 -3
  68. package/dist/app/demo/form/method/zip/zip.js +46 -41
  69. package/dist/app/demo/form/method/zip/zip.xml +1 -1
  70. package/dist/app/task/app.js +0 -25
  71. package/dist/app/task/config.json +29 -0
  72. package/dist/app/task/form/bar/bar.js +1 -1
  73. package/dist/app/task/form/bar/bar.xml +1 -1
  74. package/dist/clickgo.js +1 -1
  75. package/dist/clickgo.ts +1 -1
  76. package/dist/control/common.cgc +0 -0
  77. package/dist/control/form.cgc +0 -0
  78. package/dist/control/monaco.cgc +0 -0
  79. package/dist/control/property.cgc +0 -0
  80. package/dist/control/task.cgc +0 -0
  81. package/dist/global.css +1 -1
  82. package/dist/index.js +6 -3
  83. package/dist/index.ts +9 -3
  84. package/dist/lib/control.js +70 -104
  85. package/dist/lib/control.ts +97 -123
  86. package/dist/lib/core.js +163 -253
  87. package/dist/lib/core.ts +185 -268
  88. package/dist/lib/dom.js +565 -484
  89. package/dist/lib/dom.ts +704 -547
  90. package/dist/lib/form.js +211 -159
  91. package/dist/lib/form.ts +196 -121
  92. package/dist/lib/fs.js +107 -12
  93. package/dist/lib/fs.ts +111 -20
  94. package/dist/lib/native.js +142 -8
  95. package/dist/lib/native.ts +181 -11
  96. package/dist/lib/task.js +526 -164
  97. package/dist/lib/task.ts +598 -179
  98. package/dist/lib/tool.js +48 -1
  99. package/dist/lib/tool.ts +61 -0
  100. package/dist/lib/zip.ts +2 -0
  101. package/dist/theme/familiar.cgt +0 -0
  102. package/package.json +2 -2
  103. package/types/index.d.ts +83 -39
  104. package/dist/app/demo/form/control/greatview/greatview.js +0 -92
  105. package/dist/app/demo/form/control/overflow/overflow.js +0 -70
  106. package/dist/app/demo/form/control/overflow/overflow.xml +0 -98
  107. package/dist/app/demo/form/control/view/view.css +0 -1
  108. package/dist/app/demo/form/control/view/view.js +0 -73
  109. package/dist/app/demo/form/control/view/view.scss +0 -18
  110. package/dist/app/demo/form/control/view/view.xml +0 -94
@@ -1,5 +1,5 @@
1
- <form width="350" height="400" title="Library tool" padding="10">
2
- <overflow direction="v" style="flex: 1;">
1
+ <form width="350" height="400" title="Library tool">
2
+ <flow direction="v" style="flex: 1; padding: 10px;">
3
3
  <layout direction="v" gutter="10">
4
4
  <button @click="sleep" style="height: 30px;">{{sleeping ? 'Waiting...' : 'sleep(1000)'}}</button>
5
5
  <text v-model="purifyTxt" multi style="height: 100px;"></text>
@@ -22,5 +22,5 @@
22
22
  <text v-model="url2" style="height: 30px;"></text>
23
23
  <button @click="urlResolve" style="height: 30px;">urlResolve('{{url1.slice(0, 5)}}...', '{{url2.slice(0, 5)}}...')</button>
24
24
  </layout>
25
- </overflow>
25
+ </flow>
26
26
  </form>
@@ -9,18 +9,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.methods = exports.data = void 0;
13
12
  const clickgo = require("clickgo");
14
- exports.data = {
15
- 'path': '/',
16
- 'list': [],
17
- 'val': ''
18
- };
19
- exports.methods = {
20
- select: function () {
21
- this.$refs.file.select();
22
- },
23
- change: function (files) {
13
+ const text_1 = require("../fs/text");
14
+ class default_1 extends clickgo.form.AbstractForm {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.ppath = '/';
18
+ this.list = [];
19
+ this.val = [];
20
+ this.access = {
21
+ 'zip': undefined
22
+ };
23
+ }
24
+ select() {
25
+ this.refs.file.select();
26
+ }
27
+ change(files) {
24
28
  return __awaiter(this, void 0, void 0, function* () {
25
29
  if (!files) {
26
30
  return;
@@ -30,51 +34,53 @@ exports.methods = {
30
34
  yield clickgo.form.dialog('File failed to open.');
31
35
  return;
32
36
  }
33
- this.zip = zip;
37
+ this.access.zip = zip;
34
38
  this.open('/');
35
39
  });
36
- },
37
- open: function (path) {
38
- const zip = this.zip;
40
+ }
41
+ open(path) {
42
+ if (!this.access.zip) {
43
+ return;
44
+ }
39
45
  if (!path.endsWith('/')) {
40
46
  path += '/';
41
47
  }
42
48
  this.list = [];
43
- const ls = zip.readDir(path);
49
+ const ls = this.access.zip.readDir(path);
44
50
  for (const item of ls) {
45
51
  this.list.push({
46
52
  'label': (item.isDirectory ? '[FOLD]' : '[FILE]') + ' ' + item.name,
47
53
  'value': path + item.name
48
54
  });
49
55
  }
50
- this.path = path;
51
- },
52
- dblclick: function () {
56
+ this.ppath = path;
57
+ }
58
+ dblclick() {
53
59
  return __awaiter(this, void 0, void 0, function* () {
54
- if (!this.zip) {
60
+ if (!this.access.zip) {
55
61
  return;
56
62
  }
57
- const zip = this.zip;
58
- const r = zip.isFile(this.val);
63
+ const r = this.access.zip.isFile(this.val[0]);
59
64
  if (r) {
60
- const extlio = this.val.lastIndexOf('.');
65
+ const extlio = this.val[0].lastIndexOf('.');
61
66
  if (extlio === -1) {
62
67
  yield clickgo.form.dialog('This extension is not supported.');
63
68
  return;
64
69
  }
65
- const ext = this.val.toLowerCase().slice(extlio + 1);
70
+ const ext = this.val[0].toLowerCase().slice(extlio + 1);
66
71
  if (['xml', 'js', 'ts', 'json', 'css', 'html', 'php'].includes(ext)) {
67
- const content = yield zip.getContent(this.val);
72
+ const content = yield this.access.zip.getContent(this.val[0]);
68
73
  if (!content) {
69
74
  yield clickgo.form.dialog('This file cannot be opened.');
70
75
  return;
71
76
  }
72
- const f = yield clickgo.form.create('../fs/text');
77
+ const f = yield text_1.default.create();
73
78
  if (typeof f === 'number') {
74
79
  return;
75
80
  }
76
- clickgo.form.send(f.id, {
77
- 'title': this.val.slice(this.val.lastIndexOf('/') + 1),
81
+ f.show();
82
+ this.send(f.formId, {
83
+ 'title': this.val[0].slice(this.val[0].lastIndexOf('/') + 1),
78
84
  'content': content
79
85
  });
80
86
  return;
@@ -82,18 +88,17 @@ exports.methods = {
82
88
  yield clickgo.form.dialog('This extension is not supported.');
83
89
  return;
84
90
  }
85
- this.open(this.val);
86
- });
87
- },
88
- up: function () {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- if (this.path === '/') {
91
- return;
92
- }
93
- const path = this.path.slice(0, -1);
94
- const lif = path.lastIndexOf('/');
95
- const npath = path.slice(0, lif + 1);
96
- yield this.open(npath);
91
+ this.open(this.val[0]);
97
92
  });
98
93
  }
99
- };
94
+ up() {
95
+ if (this.ppath === '/') {
96
+ return;
97
+ }
98
+ const path = this.ppath.slice(0, -1);
99
+ const lif = path.lastIndexOf('/');
100
+ const npath = path.slice(0, lif + 1);
101
+ this.open(npath);
102
+ }
103
+ }
104
+ exports.default = default_1;
@@ -5,7 +5,7 @@
5
5
  <file ref="file" @change="change" :accept="['zip', 'apk']"></file>
6
6
  </button>
7
7
  <label>Double click the item below:</label>
8
- <block style="background: #000; color: #FFF; padding: 5px;">{{path}}</block>
8
+ <block style="background: #000; color: #FFF; padding: 5px;">{{ppath}}</block>
9
9
  <list v-model="val" :data="list" @dblclick="dblclick" style="flex: 1; height: 0;"></list>
10
10
  <button style="height: 30px;" @click="up">Up</button>
11
11
  </layout>
@@ -14,31 +14,6 @@ const bar_1 = require("./form/bar/bar");
14
14
  class default_1 extends clickgo.core.AbstractApp {
15
15
  main() {
16
16
  return __awaiter(this, void 0, void 0, function* () {
17
- yield this.config({
18
- 'name': 'Clickgo Task',
19
- 'ver': 1,
20
- 'version': '0.1',
21
- 'author': 'clickgo',
22
- 'controls': [
23
- '/clickgo/control/common',
24
- '/clickgo/control/form',
25
- '/clickgo/control/task'
26
- ],
27
- 'locales': {
28
- '/package/locale/sc': 'sc',
29
- '/package/locale/tc': 'tc',
30
- '/package/locale/en': 'en',
31
- '/package/locale/ja': 'ja'
32
- },
33
- 'files': [
34
- '/form/bar/bar.xml',
35
- '/form/desktop/desktop.xml',
36
- '/locale/en.json',
37
- '/locale/ja.json',
38
- '/locale/sc.json',
39
- '/locale/tc.json'
40
- ]
41
- });
42
17
  this.run(yield bar_1.default.create());
43
18
  });
44
19
  }
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "Clickgo Task",
3
+ "ver": 1,
4
+ "version": "0.1",
5
+ "author": "clickgo",
6
+
7
+ "controls": [
8
+ "/clickgo/control/common",
9
+ "/clickgo/control/form",
10
+ "/clickgo/control/task"
11
+ ],
12
+ "locales": {
13
+ "/package/locale/sc": "sc",
14
+ "/package/locale/tc": "tc",
15
+ "/package/locale/en": "en",
16
+ "/package/locale/ja": "ja"
17
+ },
18
+
19
+ "files": [
20
+ "/form/bar/bar.js",
21
+ "/form/bar/bar.xml",
22
+ "/form/desktop/desktop.xml",
23
+ "/locale/en.json",
24
+ "/locale/ja.json",
25
+ "/locale/sc.json",
26
+ "/locale/tc.json",
27
+ "/app.js"
28
+ ]
29
+ }
@@ -75,7 +75,7 @@ class default_1 extends clickgo.form.AbstractForm {
75
75
  };
76
76
  }
77
77
  }
78
- close(index) {
78
+ cclose(index) {
79
79
  const app = this.apps[index];
80
80
  if (!app) {
81
81
  return;
@@ -21,7 +21,7 @@
21
21
  <menulist-item @click="pin(appIndex)">
22
22
  <block style="width: 16px; height: 16px;"></block><label style="margin-left: 10px;">{{app.pin ? l('unpin from taskbar') : l('pin to taskbar')}}</label>
23
23
  </menulist-item>
24
- <menulist-item v-if="app.formCount > 0" @click="close(appIndex)">
24
+ <menulist-item v-if="app.formCount > 0" @click="cclose(appIndex)">
25
25
  <block style="width: 16px; height: 16px;"></block><label style="margin-left: 10px;">{{app.formCount > 1 ? l('close all windows') : l('close window')}}</label>
26
26
  </menulist-item>
27
27
  </menulist>
package/dist/clickgo.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.zip = exports.tool = exports.theme = exports.task = exports.native = exports.fs = exports.form = exports.dom = exports.core = exports.control = exports.vue = exports.hasFrame = exports.isImmersion = exports.getPlatform = exports.isNative = exports.getVersion = void 0;
4
- const version = '3.0.0';
4
+ const version = '3.1.3';
5
5
  function getVersion() {
6
6
  return version;
7
7
  }
package/dist/clickgo.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- const version = '3.0.0';
16
+ const version = '3.1.3';
17
17
  export function getVersion(): string {
18
18
  return version;
19
19
  }
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/global.css CHANGED
@@ -1 +1 @@
1
- #cg-wrap{--cg:hsl(20, 100%, 65%);--success:hsl(150, 100%, 40%);--success-hover:hsl(150, 100%, 45%);--success-active:hsl(150, 100%, 30%);--success-focus:hsl(150, 100%, 35%);--success-disabled:hsl(150, 0%, 40%);--info:hsl(210, 100%, 50%);--info-hover:hsl(210, 100%, 60%);--info-active:hsl(210, 100%, 40%);--info-focus:hsl(210, 100%, 45%);--info-disabled:hsl(210, 0%, 50%);--warning:hsl(20, 100%, 70%);--warning-hover:hsl(20, 100%, 80%);--warning-active:hsl(20, 100%, 60%);--warning-focus:hsl(20, 100%, 65%);--warning-disabled:hsl(20, 0%, 70%);--danger:hsl(350, 100%, 50%);--danger-hover:hsl(350, 100%, 70%);--danger-active:hsl(350, 100%, 40%);--danger-focus:hsl(350, 100%, 45%);--danger-disabled:hsl(350, 0%, 50%);--system-color:hsl(0, 0%, 95%);--system-background:hsla(0, 0%, 0%, .5);--system-border-color:hsla(0, 0%, 100%, .2);--face:hsl(0, 0%, 95%);--g-color:hsl(0, 0%, 20%);--g-color-hover:hsl(0, 0%, 30%);--g-color-active:hsl(0, 0%, 10%);--g-color-focus:hsl(0, 0%, 15%);--g-color-disabled:hsl(0, 0%, 60%);--g-background:hsl(0, 0%, 95%);--g-background-hover:hsl(0, 0%, 100%);--g-background-active:hsl(0, 0%, 85%);--g-background-kp:hsl(0, 0%, 80%);--g-background-opacity:hsl(0, 0%, 50%, .2);--g-background-focus:hsl(0, 0%, 97.5%);--g-background-disabled:hsl(0, 0%, 75%);--g-border-color:hsl(0, 0%, 40%);--g-border-color-hover:hsl(0, 0%, 50%);--g-border-color-active:hsl(0, 0%, 30%);--g-border-color-focus:hsl(0, 0%, 35%);--g-border-color-disabled:hsl(0, 0%, 60%);--g-plain-color:var(--g-color);--g-plain-color-hover:var(--g-color-hover);--g-plain-color-active:var(--g-color-active);--g-plain-color-focus:var(--g-color-focus);--g-plain-color-disabled:var(--g-color-disabled);--g-plain-background:hsl(0, 0%, 100%);--g-plain-background-hover:hsl(0, 0%, 98%);--g-plain-background-active:hsl(0, 0%, 95%);--g-plain-background-focus:var(--g-plain-background);--g-plain-background-disabled:hsl(0, 0%, 95%);--g-plain-border-color:hsl(0, 0%, 70%);--g-plain-border-color-hover:hsl(0, 0%, 80%);--g-plain-border-color-active:hsl(0, 0%, 60%);--g-plain-border-color-focus:hsl(0, 0%, 65%);--g-plain-border-color-disabled:hsl(0, 0%, 60%)}#cg-form-list{z-index:20020000}#cg-pop-list{z-index:20020001}#cg-simpletask{z-index:20020002}#cg-rectangle{z-index:20020003;box-sizing:border-box;position:fixed;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.25);background:rgba(255,255,255,.05);pointer-events:none;opacity:0}#cg-circular{z-index:20020003;box-sizing:border-box;position:fixed;border:solid 3px var(--cg);border-radius:50%;filter:drop-shadow(0 0 3px var(--cg));pointer-events:none;opacity:0}#cg-gesture{z-index:20020003;box-sizing:border-box;position:fixed;border-radius:50%;pointer-events:none;opacity:0;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);transform:scale(0);width:20px;height:20px}#cg-gesture.done{background:rgba(255,255,255,.3);border:solid 3px rgba(0,0,0,.3)}#cg-drag{z-index:20020003;box-sizing:border-box;position:fixed;border-radius:3px;pointer-events:none;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);opacity:0;display:flex;justify-content:center;align-items:center}#cg-launcher{z-index:20020004;box-sizing:border-box;position:fixed;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);width:100%;height:100%;left:0;top:0;color:var(--system-color);display:none;flex-direction:column;transition:all .1s linear;transform:scale(1.2);opacity:0}#cg-launcher:not(.cg-show){pointer-events:none}#cg-launcher.cg-show{transform:scale(1);opacity:1}.cg-launcher-search{text-align:center;padding:50px}.cg-launcher-sinput{-webkit-appearance:none;appearance:none;padding:10px;height:38px;border:solid 1px var(--system-border-color);background:rgba(0,0,0,0);width:50%;border-radius:3px;color:var(--system-color)}.cg-launcher-sinput::placeholder{color:var(--system-border-color)}.cg-launcher-sinput::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-sinput:focus{outline:none;border-color:var(--system-color)}.cg-launcher-foldername{-webkit-appearance:none;appearance:none;height:38px;font-size:28px !important;border:none;background:rgba(0,0,0,0);width:50%;color:var(--system-color);text-align:center}.cg-launcher-foldername::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-foldername:focus{outline:none}.cg-launcher-item{width:190px;display:inline-flex;vertical-align:middle;margin-bottom:50px}.cg-launcher-inner{flex:1;width:0}.cg-launcher-icon{background-position:center;background-size:80px;height:80px;background-repeat:no-repeat}.cg-launcher-icon:active{filter:brightness(0.6)}.cg-launcher-name{font-size:13px;font-weight:bold;text-shadow:0 0 3px rgba(0,0,0,.6);text-align:center;margin-top:20px}.cg-launcher-icon,.cg-launcher-name{transition:all .1s linear;transition-property:opacity}.cg-launcher-space{width:50px}.cg-launcher-folder{display:flex;justify-content:center;height:80px}.cg-launcher-folder>div{height:80px;width:80px;background:rgba(255,255,255,.3);border-radius:20px;padding:10px 4px 4px 10px;transition:all .1s linear;transition-property:left,top,width,height,opacity;overflow-y:auto}.cg-launcher-folder>div::-webkit-scrollbar{display:none}.cg-launcher-folder>div .cg-launcher-item,.cg-launcher-folder>div .cg-launcher-space{transition:all .1s linear}.cg-launcher-folder>div.cg-show{padding:50px 0 0 50px}.cg-launcher-folder>div:not(.cg-show):active{filter:brightness(0.6)}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-item{width:22px;margin-bottom:6px}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-icon{background-size:16px;height:16px;pointer-events:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-name{display:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-space{width:6px}.cg-launcher-list{flex:1;height:0;overflow-y:auto;padding:0 0 0 50px}.cg-launcher-list::-webkit-scrollbar{display:none}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-icon,.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-name{opacity:0}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-folder>div:not(.cg-show){opacity:0}[data-cg-pop]{position:fixed;box-shadow:0px 5px 20px rgba(0,0,0,.25);transition:.1s ease-out;transition-property:transform,opacity;transform:translateY(-10px);opacity:0}[data-cg-pop]:not([data-cg-open]){pointer-events:none}[data-cg-pop][data-cg-open]{transform:translateY(0px);opacity:1}#cg-system{z-index:20020005}.cg-system-notify{background:var(--system-background);position:fixed;padding:15px;border-radius:3px;right:0;top:0;width:280px;font-size:14px;display:flex;transition:.1s ease-out;transition-property:transform,opacity;overflow:hidden;color:var(--system-color);box-shadow:0 5px 20px rgba(0,0,0,.25);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2)}.cg-system-icon{margin-right:10px;width:16px;height:16px;border-radius:50%}.cg-system-icon.cg-primary{background:var(--success)}.cg-system-icon.cg-info{background:var(--info)}.cg-system-icon.cg-warning{background:var(--warning)}.cg-system-icon.cg-danger{background:var(--danger)}.cg-system-icon.cg-progress{background:var(--cg)}.cg-system-notify-title{font-size:16px;font-weight:bold;padding-bottom:10px}.cg-system-notify-content{line-height:1.5;word-break:break-word}.cg-system-notify-progress{position:absolute;bottom:0;left:0;border-radius:1px;background:var(--cg);transition:width 1s ease-out;width:0%;height:2px}#cg-simpletask{left:0;bottom:-46px;width:100%;height:46px;top:initial;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);padding:5px 0 5px 5px;display:flex;color:var(--system-color);transition:bottom .1s ease-out;overflow-x:auto}#cg-simpletask::-webkit-scrollbar{display:none}.cg-simpletask-item{background:rgba(0,0,0,.05);border-radius:3px;padding:10px;display:flex;align-items:center;margin-right:5px}.cg-simpletask-item:hover{background:rgba(0,0,0,.1)}.cg-simpletask-item:active{background:rgba(0,0,0,.2)}.cg-simpletask-icon{margin-right:5px;background-size:cover;width:16px;height:16px}
1
+ #cg-wrap{position:fixed;left:0;top:0;--cg:hsl(20, 100%, 65%);--success:hsl(150, 100%, 40%);--success-hover:hsl(150, 100%, 45%);--success-active:hsl(150, 100%, 30%);--success-focus:hsl(150, 100%, 35%);--success-disabled:hsl(150, 0%, 40%);--info:hsl(210, 100%, 50%);--info-hover:hsl(210, 100%, 60%);--info-active:hsl(210, 100%, 40%);--info-focus:hsl(210, 100%, 45%);--info-disabled:hsl(210, 0%, 50%);--warning:hsl(20, 100%, 70%);--warning-hover:hsl(20, 100%, 80%);--warning-active:hsl(20, 100%, 60%);--warning-focus:hsl(20, 100%, 65%);--warning-disabled:hsl(20, 0%, 70%);--danger:hsl(350, 100%, 50%);--danger-hover:hsl(350, 100%, 70%);--danger-active:hsl(350, 100%, 40%);--danger-focus:hsl(350, 100%, 45%);--danger-disabled:hsl(350, 0%, 50%);--system-color:hsl(0, 0%, 95%);--system-background:hsla(0, 0%, 0%, .5);--system-background-hover:hsla(0, 0%, 100%, .05);--system-background-active:hsla(0, 0%, 0%, .2);--system-border-color:hsla(0, 0%, 100%, .2);--face:hsl(0, 0%, 95%);--g-color:hsl(0, 0%, 20%);--g-color-hover:hsl(0, 0%, 30%);--g-color-active:hsl(0, 0%, 10%);--g-color-focus:hsl(0, 0%, 15%);--g-color-disabled:hsl(0, 0%, 60%);--g-background:hsl(0, 0%, 95%);--g-background-hover:hsl(0, 0%, 100%);--g-background-active:hsl(0, 0%, 85%);--g-background-kp:hsl(0, 0%, 80%);--g-background-opacity:hsl(0, 0%, 50%, .2);--g-background-focus:hsl(0, 0%, 97.5%);--g-background-disabled:hsl(0, 0%, 75%);--g-border-color:hsl(0, 0%, 40%);--g-border-color-hover:hsl(0, 0%, 50%);--g-border-color-active:hsl(0, 0%, 30%);--g-border-color-focus:hsl(0, 0%, 35%);--g-border-color-disabled:hsl(0, 0%, 60%);--g-plain-color:var(--g-color);--g-plain-color-hover:var(--g-color-hover);--g-plain-color-active:var(--g-color-active);--g-plain-color-focus:var(--g-color-focus);--g-plain-color-disabled:var(--g-color-disabled);--g-plain-background:hsl(0, 0%, 100%);--g-plain-background-hover:hsl(0, 0%, 98%);--g-plain-background-active:hsl(0, 0%, 95%);--g-plain-background-focus:var(--g-plain-background);--g-plain-background-disabled:hsl(0, 0%, 95%);--g-plain-border-color:hsl(0, 0%, 70%);--g-plain-border-color-hover:hsl(0, 0%, 80%);--g-plain-border-color-active:hsl(0, 0%, 60%);--g-plain-border-color-focus:hsl(0, 0%, 65%);--g-plain-border-color-disabled:hsl(0, 0%, 60%)}#cg-form-list{z-index:20020000}#cg-pop-list{z-index:20020001}#cg-simpletask{z-index:20020002}#cg-rectangle{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;box-shadow:0 0 10px rgba(0,0,0,.25);background:rgba(255,255,255,.05);pointer-events:none;opacity:0}#cg-circular{z-index:20020003;box-sizing:border-box;position:absolute;border:solid 3px var(--cg);border-radius:50%;filter:drop-shadow(0 0 3px var(--cg));pointer-events:none;opacity:0}#cg-gesture{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:50%;pointer-events:none;opacity:0;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);transform:scale(0);width:20px;height:20px}#cg-gesture.done{background:rgba(255,255,255,.3);border:solid 3px rgba(0,0,0,.3)}#cg-gesture.ani{transition:all .1s ease-out;transition-property:left,top,transform}#cg-drag{z-index:20020003;box-sizing:border-box;position:absolute;border-radius:3px;pointer-events:none;background:var(--system-background);box-shadow:0 5px 20px rgba(0,0,0,.25);opacity:0;display:flex;justify-content:center;align-items:center}#cg-launcher{z-index:20020004;box-sizing:border-box;position:fixed;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);width:100%;height:100%;left:0;top:0;color:var(--system-color);display:none;flex-direction:column;transition:all .1s linear;transform:scale(1.2);opacity:0}#cg-launcher:not(.cg-show){pointer-events:none}#cg-launcher.cg-show{transform:scale(1);opacity:1}.cg-launcher-search{text-align:center;padding:50px}.cg-launcher-sinput{-webkit-appearance:none;appearance:none;padding:10px;height:38px;border:solid 1px var(--system-border-color);background:rgba(0,0,0,0);width:50%;border-radius:3px;color:var(--system-color)}.cg-launcher-sinput::placeholder{color:var(--system-border-color)}.cg-launcher-sinput::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-sinput:focus{outline:none;border-color:var(--system-color)}.cg-launcher-foldername{-webkit-appearance:none;appearance:none;height:38px;font-size:28px !important;border:none;background:rgba(0,0,0,0);width:50%;color:var(--system-color);text-align:center}.cg-launcher-foldername::selection{background-color:var(--system-color);color:var(--g-color)}.cg-launcher-foldername:focus{outline:none}.cg-launcher-item{width:190px;display:inline-flex;vertical-align:middle;margin-bottom:50px}.cg-launcher-inner{flex:1;width:0}.cg-launcher-icon{background-position:center;background-size:80px;height:80px;background-repeat:no-repeat}.cg-launcher-icon:active{filter:brightness(0.6)}.cg-launcher-name{font-size:13px;font-weight:bold;text-shadow:0 0 3px rgba(0,0,0,.6);text-align:center;margin-top:20px}.cg-launcher-icon,.cg-launcher-name{transition:all .1s linear;transition-property:opacity}.cg-launcher-space{width:50px}.cg-launcher-folder{display:flex;justify-content:center;height:80px}.cg-launcher-folder>div{height:80px;width:80px;background:rgba(255,255,255,.3);border-radius:20px;padding:10px 4px 4px 10px;transition:all .1s linear;transition-property:left,top,width,height,opacity;overflow-y:auto}.cg-launcher-folder>div::-webkit-scrollbar{display:none}.cg-launcher-folder>div .cg-launcher-item,.cg-launcher-folder>div .cg-launcher-space{transition:all .1s linear}.cg-launcher-folder>div.cg-show{padding:50px 0 0 50px}.cg-launcher-folder>div:not(.cg-show):active{filter:brightness(0.6)}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-item{width:22px;margin-bottom:6px}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-icon{background-size:16px;height:16px;pointer-events:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-name{display:none}.cg-launcher-folder>div:not(.cg-show) .cg-launcher-space{width:6px}.cg-launcher-list{flex:1;height:0;overflow-y:auto;padding:0 0 0 50px}.cg-launcher-list::-webkit-scrollbar{display:none}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-icon,.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-name{opacity:0}.cg-launcher-list.cg-folder-open>.cg-launcher-item>.cg-launcher-inner>.cg-launcher-folder>div:not(.cg-show){opacity:0}[data-cg-pop]{position:absolute;box-shadow:0px 5px 20px rgba(0,0,0,.25);transition:.1s ease-out;transition-property:transform,opacity;transform:translateY(-10px);opacity:0}[data-cg-pop]:not([data-cg-open]){pointer-events:none}[data-cg-pop][data-cg-open]{transform:translateY(0px);opacity:1}#cg-notify{z-index:20020005}.cg-notify-wrap{background:var(--system-background);position:fixed;padding:15px;border-radius:3px;right:0;top:0;width:280px;font-size:14px;display:flex;transition:.1s ease-out;transition-property:transform,opacity;overflow:hidden;color:var(--system-color);box-shadow:0 5px 20px rgba(0,0,0,.25);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2)}.cg-notify-icon{margin-right:10px;width:16px;height:16px;border-radius:50%}.cg-notify-icon.cg-primary{background:var(--success)}.cg-notify-icon.cg-info{background:var(--info)}.cg-notify-icon.cg-warning{background:var(--warning)}.cg-notify-icon.cg-danger{background:var(--danger)}.cg-notify-icon.cg-progress{background:var(--cg)}.cg-notify-title{font-size:16px;font-weight:bold;padding-bottom:10px}.cg-notify-content{line-height:1.5;word-break:break-word}.cg-notify-progress{position:absolute;bottom:0;left:0;border-radius:1px;background:var(--cg);transition:width 1s ease-out;width:0%;height:2px}#cg-simpletask{left:0;bottom:-46px;width:100%;height:46px;top:initial;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);padding:5px 0 5px 5px;display:flex;color:var(--system-color);transition:bottom .1s ease-out;overflow-x:auto;position:fixed}#cg-simpletask::-webkit-scrollbar{display:none}.cg-simpletask-item{background:rgba(0,0,0,.05);border-radius:3px;padding:10px;display:flex;align-items:center;margin-right:5px}.cg-simpletask-item:hover{background:rgba(0,0,0,.1)}.cg-simpletask-item:active{background:rgba(0,0,0,.2)}.cg-simpletask-icon{margin-right:5px;background-size:cover;width:16px;height:16px}#cg-confirm{z-index:20020006;position:fixed;left:0;top:0;width:100%;height:100%;background:var(--system-background);-webkit-backdrop-filter:blur(30px) brightness(1.2);backdrop-filter:blur(30px) brightness(1.2);justify-content:center;align-items:center}#cg-confirm .cg-confirm-box{background:var(--system-background);width:60%;box-shadow:0 5px 20px rgba(0,0,0,.25);font-size:14px;border-radius:3px;overflow:hidden;color:var(--system-color)}#cg-confirm .cg-confirm-box #cg-confirm-content{padding:25px}#cg-confirm .cg-confirm-box .cg-confirm-controls{border-top:solid .5px var(--system-border-color);display:flex}#cg-confirm .cg-confirm-box .cg-confirm-controls>div{padding:20px;flex:1;text-align:center}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:last-child{border-left:solid .5px var(--system-border-color)}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:hover{background:var(--system-background-hover)}#cg-confirm .cg-confirm-box .cg-confirm-controls>div:active{background:var(--system-background-active)}
package/dist/index.js CHANGED
@@ -79,6 +79,9 @@ class AbstractBoot {
79
79
  onLauncherFolderNameChanged() {
80
80
  return;
81
81
  }
82
+ onHashChanged() {
83
+ return;
84
+ }
82
85
  onRuntimeFileLoad() {
83
86
  return;
84
87
  }
@@ -92,7 +95,7 @@ function launcher(boot) {
92
95
  var _a;
93
96
  return __awaiter(this, void 0, void 0, function* () {
94
97
  const paths = [
95
- loader.cdn + '/npm/vue@3.2.40/dist/vue.global.prod.min.js'
98
+ loader.cdn + '/npm/vue@3.2.41/dist/vue.global.prod.min.js'
96
99
  ];
97
100
  let ro = true;
98
101
  if (!(window.ResizeObserver)) {
@@ -145,8 +148,8 @@ function launcher(boot) {
145
148
  exports.core.boot = boot;
146
149
  yield boot.main();
147
150
  });
148
- })().catch(function () {
149
- return;
151
+ })().catch(function (e) {
152
+ console.log('launcher', e);
150
153
  });
151
154
  }
152
155
  exports.launcher = launcher;
package/dist/index.ts CHANGED
@@ -137,6 +137,12 @@ export abstract class AbstractBoot {
137
137
  return;
138
138
  }
139
139
 
140
+ /** --- location hash 改变事件 --- */
141
+ public onHashChanged(hash: string): void | Promise<void>;
142
+ public onHashChanged(): void {
143
+ return;
144
+ }
145
+
140
146
  /** --- 环境文件准备加载时的事件 --- */
141
147
  public onRuntimeFileLoad(url: string): void | Promise<void>;
142
148
  public onRuntimeFileLoad(): void {
@@ -155,7 +161,7 @@ export function launcher(boot: AbstractBoot): void {
155
161
  (async function() {
156
162
  // --- 通过标签加载库 ---
157
163
  const paths: string[] = [
158
- loader.cdn + '/npm/vue@3.2.40/dist/vue.global.prod.min.js'
164
+ loader.cdn + '/npm/vue@3.2.41/dist/vue.global.prod.min.js'
159
165
  ];
160
166
  // --- 判断 ResizeObserver 是否存在 ---
161
167
  let ro = true;
@@ -216,7 +222,7 @@ export function launcher(boot: AbstractBoot): void {
216
222
  core.boot = boot;
217
223
  // --- 执行回调 ---
218
224
  await boot.main();
219
- })().catch(function() {
220
- return;
225
+ })().catch(function(e) {
226
+ console.log('launcher', e);
221
227
  });
222
228
  }
@@ -20,6 +20,7 @@ const fs = require("./fs");
20
20
  class AbstractControl {
21
21
  constructor() {
22
22
  this.props = {};
23
+ this.slots = {};
23
24
  }
24
25
  get filename() {
25
26
  return '';
@@ -85,33 +86,32 @@ class AbstractControl {
85
86
  }
86
87
  core.trigger(name, this.taskId, this.formId, param1, param2);
87
88
  }
89
+ get propBoolean() {
90
+ return (name) => {
91
+ return tool.getBoolean(this.props[name]);
92
+ };
93
+ }
94
+ get propNumber() {
95
+ return (name) => {
96
+ return tool.getNumber(this.props[name]);
97
+ };
98
+ }
99
+ get propInt() {
100
+ return (name) => {
101
+ return Math.round(this.propNumber(name));
102
+ };
103
+ }
104
+ get propArray() {
105
+ return (name) => {
106
+ return tool.getArray(this.props[name]);
107
+ };
108
+ }
88
109
  get element() {
89
110
  return this.$el;
90
111
  }
91
112
  emit(name, ...v) {
92
113
  this.$emit(name, ...v);
93
114
  }
94
- get slots() {
95
- return (name = 'default') => {
96
- const d = this.$slots[name];
97
- if (!d) {
98
- return [];
99
- }
100
- const slots = [];
101
- const list = d();
102
- for (const item of list) {
103
- if (typeof item.type === 'symbol') {
104
- for (const item2 of item.children) {
105
- slots.push(item2);
106
- }
107
- }
108
- else {
109
- slots.push(item);
110
- }
111
- }
112
- return slots;
113
- };
114
- }
115
115
  get parent() {
116
116
  return this.$parent;
117
117
  }
@@ -162,92 +162,56 @@ function read(blob) {
162
162
  return false;
163
163
  }
164
164
  const controlPkg = {};
165
- let controlProcessed = 0;
166
- const controls = z.readDir();
167
- yield new Promise(function (resolve) {
168
- const controlCb = function () {
169
- ++controlProcessed;
170
- if (controlProcessed < controls.length) {
171
- return;
172
- }
173
- resolve();
165
+ const list = z.readDir('/');
166
+ for (const sub of list) {
167
+ if (sub.isFile) {
168
+ continue;
169
+ }
170
+ const configContent = yield z.getContent('/' + sub.name + '/config.json');
171
+ if (!configContent) {
172
+ continue;
173
+ }
174
+ const config = JSON.parse(configContent);
175
+ controlPkg[config.name] = {
176
+ 'type': 'control',
177
+ 'config': config,
178
+ 'files': {}
174
179
  };
175
- for (const control of controls) {
176
- if (control.isFile) {
177
- controlCb();
178
- continue;
180
+ const list = z.readDir('/' + sub.name + '/', {
181
+ 'hasChildren': true
182
+ });
183
+ for (const file of list) {
184
+ const pre = file.path.slice(config.name.length + 1);
185
+ const mime = tool.getMimeByPath(file.name);
186
+ if (['txt', 'json', 'js', 'css', 'xml', 'html'].includes(mime.ext)) {
187
+ const fab = yield z.getContent(file.path + file.name, 'string');
188
+ if (!fab) {
189
+ continue;
190
+ }
191
+ controlPkg[config.name].files[pre + file.name] = fab.replace(/^\ufeff/, '');
179
192
  }
180
- z.getContent('/' + control.name + '/config.json').then(function (configContent) {
181
- return __awaiter(this, void 0, void 0, function* () {
182
- if (!configContent) {
183
- controlCb();
184
- return;
185
- }
186
- const config = JSON.parse(configContent);
187
- const files = {};
188
- const filesLength = Object.keys(config.files).length;
189
- let fileLoadedLength = 0;
190
- yield new Promise(function (resolve) {
191
- const loadedCb = function () {
192
- ++fileLoadedLength;
193
- if (fileLoadedLength < filesLength) {
194
- return;
195
- }
196
- resolve();
197
- };
198
- for (const file of config.files) {
199
- const mime = tool.getMimeByPath(file);
200
- if (['txt', 'json', 'js', 'css', 'xml', 'html'].includes(mime.ext)) {
201
- z.getContent('/' + control.name + file, 'string').then(function (fab) {
202
- if (!fab) {
203
- loadedCb();
204
- return;
205
- }
206
- files[file] = fab.replace(/^\ufeff/, '');
207
- loadedCb();
208
- }).catch(function () {
209
- loadedCb();
210
- });
211
- }
212
- else {
213
- z.getContent('/' + control.name + file, 'arraybuffer').then(function (fab) {
214
- if (!fab) {
215
- loadedCb();
216
- return;
217
- }
218
- files[file] = new Blob([fab], {
219
- 'type': mime.mime
220
- });
221
- loadedCb();
222
- }).catch(function () {
223
- loadedCb();
224
- });
225
- }
226
- }
227
- });
228
- controlPkg[control.name] = {
229
- 'type': 'control',
230
- 'config': config,
231
- 'files': files
232
- };
233
- controlCb();
193
+ else {
194
+ const fab = yield z.getContent(file.path + file.name, 'arraybuffer');
195
+ if (!fab) {
196
+ continue;
197
+ }
198
+ controlPkg[config.name].files[pre + file.name] = new Blob([fab], {
199
+ 'type': mime.mime
234
200
  });
235
- }).catch(function () {
236
- controlCb();
237
- });
201
+ }
238
202
  }
239
- });
203
+ }
240
204
  return controlPkg;
241
205
  });
242
206
  }
243
207
  exports.read = read;
244
- function init(taskId) {
208
+ function init(taskId, invoke) {
245
209
  return __awaiter(this, void 0, void 0, function* () {
246
210
  const t = task.list[taskId];
247
211
  if (!t) {
248
- return false;
212
+ return -1;
249
213
  }
250
- for (let path of t.config.controls) {
214
+ for (let path of t.app.config.controls) {
251
215
  if (!path.endsWith('.cgc')) {
252
216
  path += '.cgc';
253
217
  }
@@ -276,7 +240,7 @@ function init(taskId) {
276
240
  };
277
241
  t.controls[name].layout = item.files[item.config.layout + '.html'];
278
242
  if (t.controls[name].layout === undefined) {
279
- return false;
243
+ return -2;
280
244
  }
281
245
  t.controls[name].layout = t.controls[name].layout.replace(/^(<[a-zA-Z0-9-]+)( |>)/, '$1 data-cg-control-' + name + '$2');
282
246
  const style = item.files[item.config.style + '.css'];
@@ -299,6 +263,9 @@ function init(taskId) {
299
263
  });
300
264
  }
301
265
  t.controls[name].layout = tool.eventsAttrWrap(t.controls[name].layout);
266
+ if (t.controls[name].layout.includes('<teleport')) {
267
+ t.controls[name].layout = tool.teleportGlue(t.controls[name].layout, '{{{formId}}}');
268
+ }
302
269
  let cls;
303
270
  if (item.files[item.config.code + '.js']) {
304
271
  item.files['/invoke/clickgo.js'] = `module.exports = invokeClickgo;`;
@@ -306,7 +273,7 @@ function init(taskId) {
306
273
  try {
307
274
  expo = loader.require(item.config.code, item.files, {
308
275
  'dir': '/',
309
- 'invoke': t.invoke,
276
+ 'invoke': invoke,
310
277
  'preprocess': function (code, path) {
311
278
  const exec = /eval\W/.exec(code);
312
279
  if (exec) {
@@ -329,12 +296,12 @@ function init(taskId) {
329
296
  }
330
297
  catch (e) {
331
298
  core.trigger('error', taskId, 0, e, e.message + '(-4)');
332
- return false;
299
+ return -3;
333
300
  }
334
301
  if (!(expo === null || expo === void 0 ? void 0 : expo.default)) {
335
302
  const msg = '"default" not found on "' + item.config.code + '" of "' + name + '" control.';
336
303
  core.trigger('error', taskId, 0, new Error(msg), msg);
337
- return false;
304
+ return -4;
338
305
  }
339
306
  cls = new expo.default();
340
307
  }
@@ -397,13 +364,11 @@ function init(taskId) {
397
364
  'content': 'Control failed to load.\nTask id: ' + t.id.toString() + '\nPath: ' + path,
398
365
  'type': 'danger'
399
366
  });
400
- return false;
367
+ return -5;
401
368
  }
402
369
  }
403
370
  }
404
- t.invoke = undefined;
405
- delete t.invoke;
406
- return true;
371
+ return 1;
407
372
  });
408
373
  }
409
374
  exports.init = init;
@@ -441,7 +406,7 @@ function buildComponents(taskId, formId, path) {
441
406
  }
442
407
  };
443
408
  components['cg-' + name] = {
444
- 'template': control.layout,
409
+ 'template': control.layout.replace(/{{{formId}}}/g, formId.toString()),
445
410
  'props': control.props,
446
411
  'data': function () {
447
412
  const data = tool.clone(control.data);
@@ -455,6 +420,7 @@ function buildComponents(taskId, formId, path) {
455
420
  beforeCreate: control.methods.onBeforeCreate,
456
421
  created: function () {
457
422
  this.props = this.$props;
423
+ this.slots = this.$slots;
458
424
  this.access = tool.clone(control.access);
459
425
  this.onCreated();
460
426
  },