amis-core 1.0.0-beta.0

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 (211) hide show
  1. package/dist/Root.js +94 -0
  2. package/dist/RootRenderer.js +288 -0
  3. package/dist/SchemaRenderer.js +323 -0
  4. package/dist/Scoped.js +252 -0
  5. package/dist/WithRootStore.js +44 -0
  6. package/dist/WithStore.js +179 -0
  7. package/dist/__tests__/compat.test.d.ts +1 -0
  8. package/dist/__tests__/factory.test.d.ts +1 -0
  9. package/dist/__tests__/filter.test.d.ts +1 -0
  10. package/dist/__tests__/helper.d.ts +13 -0
  11. package/dist/__tests__/tokenize.test.d.ts +1 -0
  12. package/dist/actions/Action.js +119 -0
  13. package/dist/actions/AjaxAction.js +96 -0
  14. package/dist/actions/BreakAction.js +35 -0
  15. package/dist/actions/BroadcastAction.js +49 -0
  16. package/dist/actions/CmptAction.js +60 -0
  17. package/dist/actions/ContinueAction.js +35 -0
  18. package/dist/actions/CopyAction.js +43 -0
  19. package/dist/actions/CustomAction.js +49 -0
  20. package/dist/actions/DialogAction.js +104 -0
  21. package/dist/actions/DrawerAction.js +66 -0
  22. package/dist/actions/EmailAction.js +48 -0
  23. package/dist/actions/LinkAction.js +52 -0
  24. package/dist/actions/LoopAction.js +107 -0
  25. package/dist/actions/PageAction.js +80 -0
  26. package/dist/actions/ParallelAction.js +40 -0
  27. package/dist/actions/SwitchAction.js +52 -0
  28. package/dist/actions/ToastAction.js +35 -0
  29. package/dist/components/LazyComponent.js +99 -0
  30. package/dist/env.js +20 -0
  31. package/dist/envOverwrite.js +43 -0
  32. package/dist/factory.js +308 -0
  33. package/dist/index.js +218 -0
  34. package/dist/index2.js +255 -0
  35. package/dist/locale.js +114 -0
  36. package/dist/renderers/Form.js +1162 -0
  37. package/dist/renderers/Item.js +636 -0
  38. package/dist/renderers/Options.js +881 -0
  39. package/dist/renderers/Placeholder.js +31 -0
  40. package/dist/renderers/builtin.js +27 -0
  41. package/dist/renderers/wrapControl.js +507 -0
  42. package/dist/src/Root.d.ts +37 -0
  43. package/dist/src/RootRenderer.d.ts +27 -0
  44. package/dist/src/SchemaRenderer.d.ts +37 -0
  45. package/dist/src/Scoped.d.ts +38 -0
  46. package/dist/src/WithRootStore.d.ts +737 -0
  47. package/dist/src/WithStore.d.ts +5 -0
  48. package/dist/src/actions/Action.d.ts +38 -0
  49. package/dist/src/actions/AjaxAction.d.ts +25 -0
  50. package/dist/src/actions/BreakAction.d.ts +15 -0
  51. package/dist/src/actions/BroadcastAction.d.ts +16 -0
  52. package/dist/src/actions/CmptAction.d.ts +20 -0
  53. package/dist/src/actions/ContinueAction.d.ts +15 -0
  54. package/dist/src/actions/CopyAction.d.ts +20 -0
  55. package/dist/src/actions/CustomAction.d.ts +17 -0
  56. package/dist/src/actions/Decorators.d.ts +25 -0
  57. package/dist/src/actions/DialogAction.d.ts +57 -0
  58. package/dist/src/actions/DrawerAction.d.ts +30 -0
  59. package/dist/src/actions/EmailAction.d.ts +23 -0
  60. package/dist/src/actions/LinkAction.d.ts +24 -0
  61. package/dist/src/actions/LoopAction.d.ts +19 -0
  62. package/dist/src/actions/PageAction.d.ts +39 -0
  63. package/dist/src/actions/ParallelAction.d.ts +8 -0
  64. package/dist/src/actions/SwitchAction.d.ts +11 -0
  65. package/dist/src/actions/ToastAction.d.ts +19 -0
  66. package/dist/src/actions/index.d.ts +21 -0
  67. package/dist/src/components/LazyComponent.d.ts +32 -0
  68. package/dist/src/env.d.ts +172 -0
  69. package/dist/src/envOverwrite.d.ts +4 -0
  70. package/dist/src/factory.d.ts +78 -0
  71. package/dist/src/index.d.ts +25 -0
  72. package/dist/src/locale.d.ts +82 -0
  73. package/dist/src/renderers/Form.d.ts +352 -0
  74. package/dist/src/renderers/Item.d.ts +795 -0
  75. package/dist/src/renderers/Options.d.ts +150 -0
  76. package/dist/src/renderers/Placeholder.d.ts +6 -0
  77. package/dist/src/renderers/builtin.d.ts +1 -0
  78. package/dist/src/renderers/wrapControl.d.ts +446 -0
  79. package/dist/src/schema.d.ts +369 -0
  80. package/dist/src/store/app.d.ts +89 -0
  81. package/dist/src/store/combo.d.ts +8504 -0
  82. package/dist/src/store/crud.d.ts +124 -0
  83. package/dist/src/store/form.d.ts +3394 -0
  84. package/dist/src/store/formItem.d.ts +130 -0
  85. package/dist/src/store/iRenderer.d.ts +46 -0
  86. package/dist/src/store/index.d.ts +105 -0
  87. package/dist/src/store/list.d.ts +270 -0
  88. package/dist/src/store/manager.d.ts +115 -0
  89. package/dist/src/store/modal.d.ts +84 -0
  90. package/dist/src/store/node.d.ts +22 -0
  91. package/dist/src/store/pagination.d.ts +58 -0
  92. package/dist/src/store/root.d.ts +79 -0
  93. package/dist/src/store/service.d.ts +71 -0
  94. package/dist/src/store/table-v2.d.ts +309 -0
  95. package/dist/src/store/table.d.ts +8334 -0
  96. package/dist/src/theme.d.ts +83 -0
  97. package/dist/src/types.d.ts +217 -0
  98. package/dist/src/utils/Animation.d.ts +22 -0
  99. package/dist/src/utils/ColorScale.d.ts +19 -0
  100. package/dist/src/utils/DataSchema.d.ts +25 -0
  101. package/dist/src/utils/DataScope.d.ts +23 -0
  102. package/dist/src/utils/RootClose.d.ts +4 -0
  103. package/dist/src/utils/SimpleMap.d.ts +8 -0
  104. package/dist/src/utils/api.d.ts +27 -0
  105. package/dist/src/utils/attachmentAdpator.d.ts +7 -0
  106. package/dist/src/utils/autobind.d.ts +7 -0
  107. package/dist/src/utils/columnsSplit.d.ts +1 -0
  108. package/dist/src/utils/dataMapping.d.ts +3 -0
  109. package/dist/src/utils/date.d.ts +4 -0
  110. package/dist/src/utils/debug.d.ts +26 -0
  111. package/dist/src/utils/dom.d.ts +13 -0
  112. package/dist/src/utils/errors.d.ts +6 -0
  113. package/dist/src/utils/escapeHtml.d.ts +1 -0
  114. package/dist/src/utils/filter-schema.d.ts +12 -0
  115. package/dist/src/utils/filter.d.ts +1 -0
  116. package/dist/src/utils/formatDuration.d.ts +1 -0
  117. package/dist/src/utils/formula.d.ts +16 -0
  118. package/dist/src/utils/getVariable.d.ts +3 -0
  119. package/dist/src/utils/grammar.d.ts +4 -0
  120. package/dist/src/utils/handleAction.d.ts +6 -0
  121. package/dist/src/utils/helper.d.ts +286 -0
  122. package/dist/src/utils/icon.d.ts +12 -0
  123. package/dist/src/utils/image.d.ts +17 -0
  124. package/dist/src/utils/index.d.ts +12 -0
  125. package/dist/src/utils/isPureVariable.d.ts +1 -0
  126. package/dist/src/utils/json-schema-2-amis-schema.d.ts +6 -0
  127. package/dist/src/utils/keyToPath.d.ts +6 -0
  128. package/dist/src/utils/makeSorter.d.ts +1 -0
  129. package/dist/src/utils/markdown.d.ts +5 -0
  130. package/dist/src/utils/normalizeLink.d.ts +1 -0
  131. package/dist/src/utils/normalizeOptions.d.ts +7 -0
  132. package/dist/src/utils/object.d.ts +15 -0
  133. package/dist/src/utils/offset.d.ts +14 -0
  134. package/dist/src/utils/offsetParent.d.ts +4 -0
  135. package/dist/src/utils/optionValueCompare.d.ts +3 -0
  136. package/dist/src/utils/position.d.ts +15 -0
  137. package/dist/src/utils/prettyBytes.d.ts +1 -0
  138. package/dist/src/utils/renderer-event.d.ts +44 -0
  139. package/dist/src/utils/replaceText.d.ts +6 -0
  140. package/dist/src/utils/resize-sensor.d.ts +6 -0
  141. package/dist/src/utils/resolveVariable.d.ts +1 -0
  142. package/dist/src/utils/resolveVariableAndFilter.d.ts +1 -0
  143. package/dist/src/utils/scrollPosition.d.ts +6 -0
  144. package/dist/src/utils/string2regExp.d.ts +1 -0
  145. package/dist/src/utils/stripNumber.d.ts +1 -0
  146. package/dist/src/utils/style.d.ts +10 -0
  147. package/dist/src/utils/tokenize.d.ts +1 -0
  148. package/dist/src/utils/tpl-builtin.d.ts +18 -0
  149. package/dist/src/utils/tpl-lodash.d.ts +4 -0
  150. package/dist/src/utils/tpl.d.ts +11 -0
  151. package/dist/src/utils/validations.d.ts +39 -0
  152. package/dist/store/app.js +190 -0
  153. package/dist/store/combo.js +154 -0
  154. package/dist/store/crud.js +413 -0
  155. package/dist/store/form.js +579 -0
  156. package/dist/store/formItem.js +846 -0
  157. package/dist/store/iRenderer.js +189 -0
  158. package/dist/store/index.js +103 -0
  159. package/dist/store/list.js +248 -0
  160. package/dist/store/manager.js +56 -0
  161. package/dist/store/modal.js +54 -0
  162. package/dist/store/node.js +93 -0
  163. package/dist/store/pagination.js +60 -0
  164. package/dist/store/root.js +45 -0
  165. package/dist/store/service.js +415 -0
  166. package/dist/store/table-v2.js +471 -0
  167. package/dist/store/table.js +1105 -0
  168. package/dist/theme.js +93 -0
  169. package/dist/tsconfig.tsbuildinfo +1 -0
  170. package/dist/utils/Animation.js +290 -0
  171. package/dist/utils/DataSchema.js +120 -0
  172. package/dist/utils/DataScope.js +151 -0
  173. package/dist/utils/SimpleMap.js +46 -0
  174. package/dist/utils/api.js +555 -0
  175. package/dist/utils/autobind.js +94 -0
  176. package/dist/utils/dataMapping.js +136 -0
  177. package/dist/utils/date.js +90 -0
  178. package/dist/utils/debug.js +343 -0
  179. package/dist/utils/errors.js +23 -0
  180. package/dist/utils/escapeHtml.js +24 -0
  181. package/dist/utils/filter-schema.js +75 -0
  182. package/dist/utils/filter.js +481 -0
  183. package/dist/utils/formatDuration.js +27 -0
  184. package/dist/utils/formula.js +165 -0
  185. package/dist/utils/getVariable.js +29 -0
  186. package/dist/utils/grammar.js +54 -0
  187. package/dist/utils/helper.js +1283 -0
  188. package/dist/utils/isPureVariable.js +16 -0
  189. package/dist/utils/keyToPath.js +34 -0
  190. package/dist/utils/makeSorter.js +30 -0
  191. package/dist/utils/normalizeLink.js +47 -0
  192. package/dist/utils/normalizeOptions.js +92 -0
  193. package/dist/utils/object.js +156 -0
  194. package/dist/utils/offset.js +36 -0
  195. package/dist/utils/offsetParent.js +27 -0
  196. package/dist/utils/optionValueCompare.js +25 -0
  197. package/dist/utils/position.js +50 -0
  198. package/dist/utils/prettyBytes.js +28 -0
  199. package/dist/utils/renderer-event.js +131 -0
  200. package/dist/utils/replaceText.js +35 -0
  201. package/dist/utils/resize-sensor.js +177 -0
  202. package/dist/utils/resolveVariable.js +39 -0
  203. package/dist/utils/resolveVariableAndFilter.js +37 -0
  204. package/dist/utils/string2regExp.js +18 -0
  205. package/dist/utils/stripNumber.js +20 -0
  206. package/dist/utils/tokenize.js +33 -0
  207. package/dist/utils/tpl-builtin.js +71 -0
  208. package/dist/utils/tpl-lodash.js +71 -0
  209. package/dist/utils/tpl.js +140 -0
  210. package/dist/utils/validations.js +377 -0
  211. package/package.json +121 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+ var isPureVariable = require('./isPureVariable.js');
12
+ var resolveVariableAndFilter = require('./resolveVariableAndFilter.js');
13
+ var tokenize = require('./tokenize.js');
14
+ var isPlainObject = require('lodash/isPlainObject');
15
+ var object = require('./object.js');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
20
+
21
+ function resolveMapping(value, data, defaultFilter) {
22
+ if (defaultFilter === void 0) { defaultFilter = '| raw'; }
23
+ return typeof value === 'string' && isPureVariable.isPureVariable(value)
24
+ ? resolveVariableAndFilter.resolveVariableAndFilter(value, data, defaultFilter, function () { return ''; })
25
+ : typeof value === 'string' && ~value.indexOf('$')
26
+ ? tokenize.tokenize(value, data, defaultFilter)
27
+ : value;
28
+ }
29
+ function dataMapping(to, from, ignoreFunction, convertKeyToPath) {
30
+ if (from === void 0) { from = {}; }
31
+ if (ignoreFunction === void 0) { ignoreFunction = false; }
32
+ if (Array.isArray(to)) {
33
+ return to.map(function (item) {
34
+ return dataMapping(item, from, ignoreFunction, convertKeyToPath);
35
+ });
36
+ }
37
+ else if (typeof to === 'string') {
38
+ return resolveMapping(to, from);
39
+ }
40
+ else if (!isPlainObject__default["default"](to)) {
41
+ return to;
42
+ }
43
+ var ret = {};
44
+ Object.keys(to).forEach(function (key) {
45
+ var value = to[key];
46
+ var keys;
47
+ if (typeof ignoreFunction === 'function' && ignoreFunction(key, value)) {
48
+ // 如果被ignore,不做数据映射处理。
49
+ object.setVariable(ret, key, value, convertKeyToPath);
50
+ }
51
+ else if (key === '&' && value === '$$') {
52
+ ret = tslib.__assign(tslib.__assign({}, ret), from);
53
+ }
54
+ else if (key === '&') {
55
+ var v = isPlainObject__default["default"](value) &&
56
+ (keys = Object.keys(value)) &&
57
+ keys.length === 1 &&
58
+ from[keys[0].substring(1)] &&
59
+ Array.isArray(from[keys[0].substring(1)])
60
+ ? from[keys[0].substring(1)].map(function (raw) {
61
+ return dataMapping(value[keys[0]], object.createObject(from, raw), ignoreFunction, convertKeyToPath);
62
+ })
63
+ : resolveMapping(value, from);
64
+ if (Array.isArray(v) || typeof v === 'string') {
65
+ ret = v;
66
+ }
67
+ else if (typeof v === 'function') {
68
+ ret = tslib.__assign(tslib.__assign({}, ret), v(from));
69
+ }
70
+ else {
71
+ ret = tslib.__assign(tslib.__assign({}, ret), v);
72
+ }
73
+ }
74
+ else if (value === '$$') {
75
+ object.setVariable(ret, key, from, convertKeyToPath);
76
+ }
77
+ else if (value && value[0] === '$') {
78
+ var v = resolveMapping(value, from);
79
+ object.setVariable(ret, key, v, convertKeyToPath);
80
+ if (v === '__undefined') {
81
+ object.deleteVariable(ret, key);
82
+ }
83
+ }
84
+ else if (isPlainObject__default["default"](value) &&
85
+ (keys = Object.keys(value)) &&
86
+ keys.length === 1 &&
87
+ keys[0][0] === '$' &&
88
+ isPlainObject__default["default"](value[keys[0]])) {
89
+ // from[keys[0].substring(1)] &&
90
+ // Array.isArray(from[keys[0].substring(1)])
91
+ // 支持只取数组中的部分值这个需求
92
+ // 如:
93
+ // data: {
94
+ // items: {
95
+ // '$rows': {
96
+ // id: '$id',
97
+ // forum_id: '$forum_id'
98
+ // }
99
+ // }
100
+ // }
101
+ var arr = Array.isArray(from[keys[0].substring(1)])
102
+ ? from[keys[0].substring(1)]
103
+ : [];
104
+ var mapping_1 = value[keys[0]];
105
+ ret[key] = arr.map(function (raw) {
106
+ return dataMapping(mapping_1, object.createObject(from, raw), ignoreFunction, convertKeyToPath);
107
+ });
108
+ }
109
+ else if (isPlainObject__default["default"](value)) {
110
+ object.setVariable(ret, key, dataMapping(value, from, ignoreFunction, convertKeyToPath), convertKeyToPath);
111
+ }
112
+ else if (Array.isArray(value)) {
113
+ object.setVariable(ret, key, value.map(function (value) {
114
+ return isPlainObject__default["default"](value)
115
+ ? dataMapping(value, from, ignoreFunction, convertKeyToPath)
116
+ : resolveMapping(value, from);
117
+ }), convertKeyToPath);
118
+ }
119
+ else if (typeof value == 'string' && ~value.indexOf('$')) {
120
+ object.setVariable(ret, key, resolveMapping(value, from), convertKeyToPath);
121
+ }
122
+ else if (typeof value === 'function' && ignoreFunction !== true) {
123
+ object.setVariable(ret, key, value(from), convertKeyToPath);
124
+ }
125
+ else {
126
+ object.setVariable(ret, key, value, convertKeyToPath);
127
+ if (value === '__undefined') {
128
+ object.deleteVariable(ret, key);
129
+ }
130
+ }
131
+ });
132
+ return ret;
133
+ }
134
+
135
+ exports.dataMapping = dataMapping;
136
+ exports.resolveMapping = resolveMapping;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var moment = require('moment');
11
+ var object = require('./object.js');
12
+ var tokenize = require('./tokenize.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
17
+
18
+ var timeUnitMap = {
19
+ year: 'Y',
20
+ month: 'M',
21
+ week: 'w',
22
+ weekday: 'W',
23
+ day: 'd',
24
+ hour: 'h',
25
+ minute: 'm',
26
+ min: 'm',
27
+ second: 's',
28
+ millisecond: 'ms'
29
+ };
30
+ var relativeValueRe = /^(.+)?(\+|-)(\d+)(minute|min|hour|day|week|month|year|weekday|second|millisecond)s?$/i;
31
+ var filterDate = function (value, data, format, utc) {
32
+ if (data === void 0) { data = {}; }
33
+ if (format === void 0) { format = 'X'; }
34
+ if (utc === void 0) { utc = false; }
35
+ var m, mm = utc ? moment__default["default"].utc : moment__default["default"];
36
+ if (typeof value === 'string') {
37
+ value = value.trim();
38
+ }
39
+ // todo
40
+ var date = new Date();
41
+ value = tokenize.tokenize(value, object.createObject(data, {
42
+ now: mm().toDate(),
43
+ today: mm([date.getFullYear(), date.getMonth(), date.getDate()])
44
+ }), '| raw');
45
+ if (value && typeof value === 'string' && (m = relativeValueRe.exec(value))) {
46
+ var date_1 = new Date();
47
+ var step = parseInt(m[3], 10);
48
+ var from = m[1]
49
+ ? filterDate(m[1], data, format, utc)
50
+ : mm(/(minute|min|hour|second)s?/.test(m[4])
51
+ ? [
52
+ date_1.getFullYear(),
53
+ date_1.getMonth(),
54
+ date_1.getDate(),
55
+ date_1.getHours(),
56
+ date_1.getMinutes(),
57
+ date_1.getSeconds()
58
+ ]
59
+ : [date_1.getFullYear(), date_1.getMonth(), date_1.getDate()]);
60
+ return m[2] === '-'
61
+ ? from.subtract(step, timeUnitMap[m[4]])
62
+ : from.add(step, timeUnitMap[m[4]]);
63
+ // return from[m[2] === '-' ? 'subtract' : 'add'](step, mapping[m[4]] || m[4]);
64
+ }
65
+ else if (value === 'now') {
66
+ return mm();
67
+ }
68
+ else if (value === 'today') {
69
+ var date_2 = new Date();
70
+ return mm([date_2.getFullYear(), date_2.getMonth(), date_2.getDate()]);
71
+ }
72
+ else {
73
+ var result = mm(value);
74
+ return result.isValid() ? result : mm(value, format);
75
+ }
76
+ };
77
+ function parseDuration(str) {
78
+ var matches = /^((?:\-|\+)?(?:\d*\.)?\d+)(minute|min|hour|day|week|month|quarter|year|weekday|second|millisecond)s?$/.exec(str);
79
+ if (matches) {
80
+ var duration = moment__default["default"].duration(parseFloat(matches[1]), matches[2]);
81
+ if (moment__default["default"].isDuration(duration)) {
82
+ return duration;
83
+ }
84
+ }
85
+ return;
86
+ }
87
+
88
+ exports.filterDate = filterDate;
89
+ exports.parseDuration = parseDuration;
90
+ exports.relativeValueRe = relativeValueRe;
@@ -0,0 +1,343 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+ var React = require('react');
12
+ var cx = require('classnames');
13
+ var reactDom = require('react-dom');
14
+ var JsonView = require('react-json-view');
15
+ var mobx = require('mobx');
16
+ var mobxReact = require('mobx-react');
17
+ var helper = require('./helper.js');
18
+ var position = require('./position.js');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
24
+ var JsonView__default = /*#__PURE__*/_interopDefaultLegacy(JsonView);
25
+
26
+ /**
27
+ * amis 运行时调试功能,为了避免循环引用,这个组件不要依赖 amis 里的组件
28
+ */
29
+ /** @class */ ((function () {
30
+ function Log() {
31
+ this.cat = '';
32
+ this.level = '';
33
+ this.msg = '';
34
+ this.ext = '';
35
+ }
36
+ tslib.__decorate([
37
+ mobx.observable,
38
+ tslib.__metadata("design:type", Object)
39
+ ], Log.prototype, "cat", void 0);
40
+ tslib.__decorate([
41
+ mobx.observable,
42
+ tslib.__metadata("design:type", Object)
43
+ ], Log.prototype, "level", void 0);
44
+ tslib.__decorate([
45
+ mobx.observable,
46
+ tslib.__metadata("design:type", Object)
47
+ ], Log.prototype, "msg", void 0);
48
+ tslib.__decorate([
49
+ mobx.observable,
50
+ tslib.__metadata("design:type", Object)
51
+ ], Log.prototype, "ext", void 0);
52
+ return Log;
53
+ })());
54
+ var AMISDebugStore = /** @class */ (function () {
55
+ function AMISDebugStore() {
56
+ /**
57
+ * 当前 tab
58
+ */
59
+ this.tab = 'log';
60
+ /**
61
+ * 显示位置,默认在右边
62
+ */
63
+ this.position = 'right';
64
+ /**
65
+ * 组件日志
66
+ */
67
+ this.logs = [];
68
+ /**
69
+ * Debug 面板是否展开
70
+ */
71
+ this.isExpanded = false;
72
+ /**
73
+ * 是否是 inspect 模式,在这个模式下可以查看数据域
74
+ */
75
+ this.inspectMode = false;
76
+ }
77
+ tslib.__decorate([
78
+ mobx.observable,
79
+ tslib.__metadata("design:type", String)
80
+ ], AMISDebugStore.prototype, "tab", void 0);
81
+ tslib.__decorate([
82
+ mobx.observable,
83
+ tslib.__metadata("design:type", String)
84
+ ], AMISDebugStore.prototype, "position", void 0);
85
+ tslib.__decorate([
86
+ mobx.observable,
87
+ tslib.__metadata("design:type", Array)
88
+ ], AMISDebugStore.prototype, "logs", void 0);
89
+ tslib.__decorate([
90
+ mobx.observable,
91
+ tslib.__metadata("design:type", Object)
92
+ ], AMISDebugStore.prototype, "isExpanded", void 0);
93
+ tslib.__decorate([
94
+ mobx.observable,
95
+ tslib.__metadata("design:type", Object)
96
+ ], AMISDebugStore.prototype, "inspectMode", void 0);
97
+ tslib.__decorate([
98
+ mobx.observable,
99
+ tslib.__metadata("design:type", String)
100
+ ], AMISDebugStore.prototype, "hoverId", void 0);
101
+ tslib.__decorate([
102
+ mobx.observable,
103
+ tslib.__metadata("design:type", String)
104
+ ], AMISDebugStore.prototype, "activeId", void 0);
105
+ return AMISDebugStore;
106
+ }());
107
+ var store = new AMISDebugStore();
108
+ // 存储组件信息用于 debug
109
+ var ComponentInfo = {};
110
+ var LogView = mobxReact.observer(function (_a) {
111
+ var store = _a.store;
112
+ var logs = store.logs;
113
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, logs.map(function (log, index) {
114
+ return (React__default["default"].createElement("div", { className: "AMISDebug-logLine", key: "log-".concat(index) },
115
+ React__default["default"].createElement("div", { className: "AMISDebug-logLineMsg" },
116
+ "[",
117
+ log.cat,
118
+ "] ",
119
+ log.msg),
120
+ log.ext ? (React__default["default"].createElement(JsonView__default["default"], { name: null, theme: "monokai", src: JSON.parse(log.ext), collapsed: true, enableClipboard: false, displayDataTypes: false, iconStyle: "square" })) : null));
121
+ })));
122
+ });
123
+ var AMISDebug = mobxReact.observer(function (_a) {
124
+ var _b, _c;
125
+ var store = _a.store;
126
+ var activeId = store.activeId;
127
+ var activeComponentInspect = ComponentInfo[activeId];
128
+ // 收集数据域里的数据
129
+ var start = ((_c = (_b = activeComponentInspect === null || activeComponentInspect === void 0 ? void 0 : activeComponentInspect.component) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.data) || {};
130
+ var stacks = [start];
131
+ while (Object.getPrototypeOf(start) !== Object.prototype) {
132
+ var superData = Object.getPrototypeOf(start);
133
+ if (Object.prototype.toString.call(superData) !== '[object Object]') {
134
+ break;
135
+ }
136
+ stacks.push(superData);
137
+ start = superData;
138
+ }
139
+ var stackDataView = [];
140
+ if (Object.keys(stacks[0]).length || stacks.length > 1) {
141
+ var level = 0;
142
+ for (var _i = 0, stacks_1 = stacks; _i < stacks_1.length; _i++) {
143
+ var stack = stacks_1[_i];
144
+ stackDataView.push(React__default["default"].createElement("div", { key: "data-".concat(level) },
145
+ React__default["default"].createElement("h3", null,
146
+ "Data Level-",
147
+ level),
148
+ React__default["default"].createElement(JsonView__default["default"], { key: "dataview-".concat(stack), name: null, theme: "monokai", src: stack, collapsed: level === 0 ? false : true, enableClipboard: false, displayDataTypes: false, iconStyle: "square" })));
149
+ level += 1;
150
+ }
151
+ }
152
+ var panelRef = React.useRef(null);
153
+ var _d = React.useState(false), isResizing = _d[0], setResizing = _d[1];
154
+ var _e = React.useState(0), startX = _e[0], setStartX = _e[1];
155
+ var _f = React.useState(0), panelWidth = _f[0], setPanelWidth = _f[1];
156
+ React.useEffect(function () {
157
+ var handleMouseUp = function () {
158
+ setResizing(false);
159
+ };
160
+ var handleMouseMove = function (e) {
161
+ if (!isResizing) {
162
+ return;
163
+ }
164
+ var xOffset = store.position === 'right' ? e.clientX - startX : startX - e.clientX;
165
+ var panel = panelRef.current;
166
+ var targetWidth = Math.max(200, panelWidth - xOffset);
167
+ panel.style.width = targetWidth + 'px';
168
+ if (e.stopPropagation)
169
+ e.stopPropagation();
170
+ if (e.preventDefault)
171
+ e.preventDefault();
172
+ e.cancelBubble = true;
173
+ return false;
174
+ };
175
+ if (isResizing) {
176
+ document.addEventListener('mousemove', handleMouseMove);
177
+ document.addEventListener('mouseup', handleMouseUp);
178
+ }
179
+ return function () {
180
+ if (isResizing) {
181
+ document.removeEventListener('mousemove', handleMouseMove);
182
+ document.removeEventListener('mouseup', handleMouseUp);
183
+ }
184
+ };
185
+ }, [isResizing]);
186
+ return (React__default["default"].createElement("div", { className: cx__default["default"]('AMISDebug', {
187
+ 'is-expanded': store.isExpanded,
188
+ 'is-left': store.position === 'left'
189
+ }), ref: panelRef },
190
+ React__default["default"].createElement("div", { className: "AMISDebug-toggle", title: "open debug", onClick: function () {
191
+ store.isExpanded = true;
192
+ } }, store.isExpanded ? (React__default["default"].createElement("i", { className: "fas fa-times" })) : (React__default["default"].createElement("i", { className: "fas fa-bug" }))),
193
+ React__default["default"].createElement("div", { className: cx__default["default"]('AMISDebug-content') },
194
+ React__default["default"].createElement("div", { className: "AMISDebug-close", title: "Close", onClick: function () {
195
+ store.isExpanded = false;
196
+ } },
197
+ React__default["default"].createElement("i", { className: "fas fa-times" })),
198
+ React__default["default"].createElement("div", { className: "AMISDebug-resize", onMouseDown: function (event) {
199
+ setStartX(event.clientX);
200
+ setPanelWidth(parseInt(getComputedStyle(panelRef.current).getPropertyValue('width'), 10));
201
+ setResizing(true);
202
+ } }),
203
+ React__default["default"].createElement("div", { className: "AMISDebug-tab" },
204
+ React__default["default"].createElement("button", { className: cx__default["default"]({ active: store.tab === 'log' }), onClick: function () {
205
+ store.tab = 'log';
206
+ } }, "Log"),
207
+ React__default["default"].createElement("button", { className: cx__default["default"]({ active: store.tab === 'inspect' }), onClick: function () {
208
+ store.tab = 'inspect';
209
+ } }, "Inspect")),
210
+ React__default["default"].createElement("div", { className: "AMISDebug-changePosition" }, store.position === 'right' ? (React__default["default"].createElement("i", { className: "fas fa-chevron-left", title: "move to left", onClick: function () {
211
+ store.position = 'left';
212
+ } })) : (React__default["default"].createElement("i", { className: "fas fa-chevron-right", title: "move to right", onClick: function () {
213
+ store.position = 'right';
214
+ } }))),
215
+ store.tab === 'log' ? (React__default["default"].createElement("div", { className: "AMISDebug-log" },
216
+ React__default["default"].createElement("button", { onClick: function () {
217
+ store.logs = [];
218
+ } }, "Clear Log"),
219
+ React__default["default"].createElement(LogView, { store: store }))) : null,
220
+ store.tab === 'inspect' ? (React__default["default"].createElement("div", { className: "AMISDebug-inspect" }, activeId ? (React__default["default"].createElement(React__default["default"].Fragment, null,
221
+ React__default["default"].createElement("h3", null,
222
+ "Component:",
223
+ ' ',
224
+ React__default["default"].createElement("span", { className: "primary" }, activeComponentInspect.name)),
225
+ stackDataView)) : ('Click component to display inspect'))) : null)));
226
+ });
227
+ /**
228
+ * 鼠标移动到某个组件的效果
229
+ */
230
+ function handleMouseMove(e) {
231
+ if (!store.isExpanded) {
232
+ return;
233
+ }
234
+ var dom = e.target;
235
+ var target = dom.closest("[data-debug-id]");
236
+ if (target) {
237
+ store.hoverId = target.getAttribute('data-debug-id');
238
+ }
239
+ }
240
+ /**
241
+ * 点选某个组件
242
+ */
243
+ function handleMouseclick(e) {
244
+ if (!store.isExpanded) {
245
+ return;
246
+ }
247
+ var dom = e.target;
248
+ var target = dom.closest("[data-debug-id]");
249
+ if (target) {
250
+ store.activeId = target.getAttribute('data-debug-id');
251
+ store.tab = 'inspect';
252
+ }
253
+ }
254
+ // hover 及点击后的高亮
255
+ var amisHoverBox = document.createElement('div');
256
+ amisHoverBox.className = 'AMISDebug-hoverBox';
257
+ var amisActiveBox = document.createElement('div');
258
+ amisActiveBox.className = 'AMISDebug-activeBox';
259
+ mobx.autorun(function () {
260
+ var hoverId = store.hoverId;
261
+ var hoverElement = document.querySelector("[data-debug-id=\"".concat(hoverId, "\"]"));
262
+ if (hoverElement) {
263
+ var offset = position["default"](hoverElement, document.body);
264
+ amisHoverBox.style.top = "".concat(offset.top, "px");
265
+ amisHoverBox.style.left = "".concat(offset.left, "px");
266
+ amisHoverBox.style.width = "".concat(offset.width, "px");
267
+ amisHoverBox.style.height = "".concat(offset.height, "px");
268
+ }
269
+ });
270
+ mobx.autorun(function () {
271
+ var activeId = store.activeId;
272
+ var activeElement = document.querySelector("[data-debug-id=\"".concat(activeId, "\"]"));
273
+ if (activeElement) {
274
+ var offset = position["default"](activeElement, document.body);
275
+ amisActiveBox.style.top = "".concat(offset.top, "px");
276
+ amisActiveBox.style.left = "".concat(offset.left, "px");
277
+ amisActiveBox.style.width = "".concat(offset.width, "px");
278
+ amisActiveBox.style.height = "".concat(offset.height, "px");
279
+ }
280
+ });
281
+ // 页面中只能有一个实例
282
+ var isEnabled = false;
283
+ function enableDebug() {
284
+ if (isEnabled) {
285
+ return;
286
+ }
287
+ isEnabled = true;
288
+ var amisDebugElement = document.createElement('div');
289
+ document.body.appendChild(amisDebugElement);
290
+ var element = React__default["default"].createElement(AMISDebug, { store: store });
291
+ reactDom.render(element, amisDebugElement);
292
+ document.body.appendChild(amisHoverBox);
293
+ document.body.appendChild(amisActiveBox);
294
+ document.addEventListener('mousemove', handleMouseMove);
295
+ document.addEventListener('click', handleMouseclick);
296
+ }
297
+ var DebugWrapper = /** @class */ (function (_super) {
298
+ tslib.__extends(DebugWrapper, _super);
299
+ function DebugWrapper() {
300
+ return _super !== null && _super.apply(this, arguments) || this;
301
+ }
302
+ DebugWrapper.prototype.componentDidMount = function () {
303
+ var root = reactDom.findDOMNode(this);
304
+ if (!root) {
305
+ return;
306
+ }
307
+ var renderer = this.props.renderer;
308
+ var debugId = helper.uuidv4();
309
+ root.setAttribute('data-debug-id', debugId);
310
+ ComponentInfo[debugId] = {
311
+ name: renderer.name,
312
+ component: this.props.children
313
+ };
314
+ };
315
+ DebugWrapper.prototype.render = function () {
316
+ return this.props.children;
317
+ };
318
+ return DebugWrapper;
319
+ }(React.Component));
320
+ /**
321
+ * 一般调试日志
322
+ * @param msg 简单消息
323
+ * @param ext 扩展信息
324
+ */
325
+ function debug(cat, msg, ext) {
326
+ if (!isEnabled) {
327
+ return;
328
+ }
329
+ var log = {
330
+ cat: cat,
331
+ level: 'debug',
332
+ msg: msg,
333
+ ext: JSON.stringify(ext)
334
+ };
335
+ console.groupCollapsed('amis debug', msg);
336
+ console.trace(log);
337
+ console.groupEnd();
338
+ store.logs.push(log);
339
+ }
340
+
341
+ exports.DebugWrapper = DebugWrapper;
342
+ exports.debug = debug;
343
+ exports.enableDebug = enableDebug;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+
12
+ var ServerError = /** @class */ (function (_super) {
13
+ tslib.__extends(ServerError, _super);
14
+ function ServerError(msg, response) {
15
+ var _this = _super.call(this, msg) || this;
16
+ _this.type = 'ServerError';
17
+ _this.response = response;
18
+ return _this;
19
+ }
20
+ return ServerError;
21
+ }(Error));
22
+
23
+ exports.ServerError = ServerError;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var entityMap = {
11
+ '&': '&amp;',
12
+ '<': '&lt;',
13
+ '>': '&gt;',
14
+ '"': '&quot;',
15
+ "'": '&#39;',
16
+ '/': '&#x2F;'
17
+ };
18
+ var escapeHtml = function (str) {
19
+ return String(str).replace(/[&<>"'\/]/g, function (s) {
20
+ return entityMap[s];
21
+ });
22
+ };
23
+
24
+ exports.escapeHtml = escapeHtml;