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,99 @@
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 VisibilitySensor = require('react-visibility-sensor');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+ var VisibilitySensor__default = /*#__PURE__*/_interopDefaultLegacy(VisibilitySensor);
18
+
19
+ /**
20
+ * @file LazyComponent
21
+ * @description
22
+ * @author fex
23
+ */
24
+ var LazyComponent = /** @class */ (function (_super) {
25
+ tslib.__extends(LazyComponent, _super);
26
+ function LazyComponent(props) {
27
+ var _this = _super.call(this, props) || this;
28
+ _this.mounted = false;
29
+ _this.handleVisibleChange = _this.handleVisibleChange.bind(_this);
30
+ _this.mounted = true;
31
+ _this.state = {
32
+ visible: false,
33
+ component: props.component
34
+ };
35
+ return _this;
36
+ }
37
+ LazyComponent.prototype.componentDidMount = function () {
38
+ // jest 里面有点异常,先手动让它总是可见
39
+ if (typeof jest !== 'undefined') {
40
+ this.handleVisibleChange(true);
41
+ }
42
+ };
43
+ LazyComponent.prototype.componentWillUnmount = function () {
44
+ this.mounted = false;
45
+ };
46
+ LazyComponent.prototype.handleVisibleChange = function (visible) {
47
+ var _this = this;
48
+ this.setState({
49
+ visible: visible
50
+ });
51
+ if (!visible || this.state.component || !this.props.getComponent) {
52
+ return;
53
+ }
54
+ this.props
55
+ .getComponent()
56
+ .then(function (component) {
57
+ return _this.mounted &&
58
+ typeof component === 'function' &&
59
+ _this.setState({
60
+ component: component
61
+ });
62
+ })
63
+ .catch(function (reason) {
64
+ return _this.mounted &&
65
+ _this.setState({
66
+ component: function () { return (React__default["default"].createElement("div", { className: "alert alert-danger" }, String(reason))); }
67
+ });
68
+ });
69
+ };
70
+ LazyComponent.prototype.render = function () {
71
+ var _a = this.props, placeholder = _a.placeholder, unMountOnHidden = _a.unMountOnHidden, childProps = _a.childProps, visiblilityProps = _a.visiblilityProps, partialVisibility = _a.partialVisibility, children = _a.children, rest = tslib.__rest(_a, ["placeholder", "unMountOnHidden", "childProps", "visiblilityProps", "partialVisibility", "children"]);
72
+ var _b = this.state, visible = _b.visible, Component = _b.component;
73
+ // 需要监听从可见到不可见。
74
+ if (unMountOnHidden) {
75
+ return (React__default["default"].createElement(VisibilitySensor__default["default"], tslib.__assign({}, visiblilityProps, { partialVisibility: partialVisibility, onChange: this.handleVisibleChange }),
76
+ React__default["default"].createElement("div", { className: "visibility-sensor" }, Component && visible ? (React__default["default"].createElement(Component, tslib.__assign({}, rest, childProps))) : children && visible ? (children) : (placeholder))));
77
+ }
78
+ if (!visible) {
79
+ return (React__default["default"].createElement(VisibilitySensor__default["default"], tslib.__assign({}, visiblilityProps, { partialVisibility: partialVisibility, onChange: this.handleVisibleChange }),
80
+ React__default["default"].createElement("div", { className: "visibility-sensor" }, placeholder)));
81
+ }
82
+ else if (Component) {
83
+ // 只监听不可见到可见,一旦可见了,就销毁检查。
84
+ return React__default["default"].createElement(Component, tslib.__assign({}, rest, childProps));
85
+ }
86
+ else if (children) {
87
+ return children;
88
+ }
89
+ return React__default["default"].createElement("div", null, placeholder);
90
+ };
91
+ LazyComponent.defaultProps = {
92
+ placeholder: React__default["default"].createElement("span", null, "Loading..."),
93
+ unMountOnHidden: false,
94
+ partialVisibility: true
95
+ };
96
+ return LazyComponent;
97
+ }(React__default["default"].Component));
98
+
99
+ exports["default"] = LazyComponent;
package/dist/env.js ADDED
@@ -0,0 +1,20 @@
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
+ require('tslib');
11
+ var React = require('react');
12
+ require('hoist-non-react-statics');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+
18
+ var EnvContext = React__default["default"].createContext(undefined);
19
+
20
+ exports.EnvContext = EnvContext;
@@ -0,0 +1,43 @@
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 helper = require('./utils/helper.js');
11
+
12
+ /**
13
+ * @file 用于在移动端或不同语言环境下使用不同配置
14
+ */
15
+ var _a, _b;
16
+ var isMobile = ((_b = (_a = window).matchMedia) === null || _b === void 0 ? void 0 : _b.call(_a, '(max-width: 768px)').matches)
17
+ ? true
18
+ : false;
19
+ // 这里不能用 addSchemaFilter 是因为还需要更深层的替换,比如 select 里的 options
20
+ var envOverwrite = function (schema, locale) {
21
+ if (schema.mobile && isMobile) {
22
+ Object.assign(schema, schema.mobile);
23
+ delete schema.mobile;
24
+ }
25
+ if (locale) {
26
+ var schemaNodes = helper.findObjectsWithKey(schema, locale);
27
+ for (var _i = 0, schemaNodes_1 = schemaNodes; _i < schemaNodes_1.length; _i++) {
28
+ var schemaNode = schemaNodes_1[_i];
29
+ Object.assign(schemaNode, schemaNode[locale]);
30
+ delete schemaNode[locale];
31
+ }
32
+ }
33
+ if (isMobile) {
34
+ var schemaNodes = helper.findObjectsWithKey(schema, 'mobile');
35
+ for (var _a = 0, schemaNodes_2 = schemaNodes; _a < schemaNodes_2.length; _a++) {
36
+ var schemaNode = schemaNodes_2[_a];
37
+ Object.assign(schemaNode, schemaNode['mobile']);
38
+ delete schemaNode['mobile'];
39
+ }
40
+ }
41
+ };
42
+
43
+ exports.envOverwrite = envOverwrite;
@@ -0,0 +1,308 @@
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 index = require('./store/index.js');
13
+ var mobxStateTree = require('mobx-state-tree');
14
+ var api = require('./utils/api.js');
15
+ var normalizeLink = require('./utils/normalizeLink.js');
16
+ var helper = require('./utils/helper.js');
17
+ var mobxReact = require('mobx-react');
18
+ var Scoped = require('./Scoped.js');
19
+ var find = require('lodash/find');
20
+ var WithStore = require('./WithStore.js');
21
+ var Placeholder = require('./renderers/Placeholder.js');
22
+ var string2regExp = require('./utils/string2regExp.js');
23
+
24
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
+
26
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
+ var find__default = /*#__PURE__*/_interopDefaultLegacy(find);
28
+
29
+ var _a, _b;
30
+ var renderers = [];
31
+ var renderersMap = {};
32
+ var schemaFilters = [];
33
+ var anonymousIndex = 1;
34
+ function filterSchema(schema, render, props) {
35
+ return schemaFilters.reduce(function (schema, filter) { return filter(schema, render, props); }, schema);
36
+ }
37
+ function Renderer(config) {
38
+ return function (component) {
39
+ var renderer = registerRenderer(tslib.__assign(tslib.__assign({}, config), { component: component }));
40
+ return renderer.component;
41
+ };
42
+ }
43
+ function registerRenderer(config) {
44
+ if (!config.test && !config.type) {
45
+ throw new TypeError('please set config.test or config.type');
46
+ }
47
+ else if (!config.component) {
48
+ throw new TypeError('config.component is required');
49
+ }
50
+ if (typeof config.type === 'string' && config.type) {
51
+ config.type = config.type.toLowerCase();
52
+ config.test =
53
+ config.test || new RegExp("(^|/)".concat(string2regExp.string2regExp(config.type), "$"), 'i');
54
+ }
55
+ config.weight = config.weight || 0;
56
+ config.Renderer = config.component;
57
+ config.name = config.name || config.type || "anonymous-".concat(anonymousIndex++);
58
+ if (renderersMap[config.name]) {
59
+ throw new Error("The renderer with name \"".concat(config.name, "\" has already exists, please try another name!"));
60
+ }
61
+ if (config.storeType && config.component) {
62
+ config.component = WithStore.HocStoreFactory({
63
+ storeType: config.storeType,
64
+ extendsData: config.storeExtendsData,
65
+ shouldSyncSuperStore: config.shouldSyncSuperStore
66
+ })(mobxReact.observer(config.component));
67
+ }
68
+ if (config.isolateScope) {
69
+ config.component = Scoped.HocScoped(config.component);
70
+ }
71
+ var idx = helper.findIndex(renderers, function (item) { return config.weight < item.weight; });
72
+ ~idx ? renderers.splice(idx, 0, config) : renderers.push(config);
73
+ renderersMap[config.name] = config.Renderer !== Placeholder.Placeholder;
74
+ return config;
75
+ }
76
+ function unRegisterRenderer(config) {
77
+ var name = (typeof config === 'string' ? config : config.name);
78
+ delete renderersMap[name];
79
+ // 清空渲染器定位缓存
80
+ cache = {};
81
+ }
82
+ function loadRenderer(schema, path) {
83
+ return (React__default["default"].createElement("div", { className: "RuntimeError" },
84
+ React__default["default"].createElement("p", null, "Error: \u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u6E32\u67D3\u5668"),
85
+ React__default["default"].createElement("p", null,
86
+ "Path: ",
87
+ path),
88
+ React__default["default"].createElement("pre", null,
89
+ React__default["default"].createElement("code", null, JSON.stringify(schema, null, 2)))));
90
+ }
91
+ var defaultOptions = {
92
+ session: 'global',
93
+ affixOffsetTop: 0,
94
+ affixOffsetBottom: 0,
95
+ richTextToken: '',
96
+ useMobileUI: true,
97
+ enableAMISDebug: (_b = (_a = window.enableAMISDebug) !== null && _a !== void 0 ? _a : location.search.indexOf('amisDebug=1') !== -1) !== null && _b !== void 0 ? _b : false,
98
+ loadRenderer: loadRenderer,
99
+ fetcher: function () {
100
+ return Promise.reject('fetcher is required');
101
+ },
102
+ // 使用 WebSocket 来实时获取数据
103
+ wsFetcher: function (ws, onMessage, onError) {
104
+ if (ws) {
105
+ var socket_1 = new WebSocket(ws.url);
106
+ socket_1.onopen = function (event) {
107
+ if (ws.body) {
108
+ socket_1.send(JSON.stringify(ws.body));
109
+ }
110
+ };
111
+ socket_1.onmessage = function (event) {
112
+ var _a;
113
+ if (event.data) {
114
+ var data = void 0;
115
+ try {
116
+ data = JSON.parse(event.data);
117
+ }
118
+ catch (error) { }
119
+ if (typeof data !== 'object') {
120
+ var key = ws.responseKey || 'data';
121
+ data = (_a = {},
122
+ _a[key] = event.data,
123
+ _a);
124
+ }
125
+ onMessage(data);
126
+ }
127
+ };
128
+ socket_1.onerror = onError;
129
+ return {
130
+ close: socket_1.close
131
+ };
132
+ }
133
+ else {
134
+ return {
135
+ close: function () { }
136
+ };
137
+ }
138
+ },
139
+ isCancel: function () {
140
+ console.error('Please implement isCancel. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97');
141
+ return false;
142
+ },
143
+ updateLocation: function () {
144
+ console.error('Please implement updateLocation. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97');
145
+ },
146
+ jumpTo: function (to, action) {
147
+ if (to === 'goBack') {
148
+ return window.history.back();
149
+ }
150
+ to = normalizeLink.normalizeLink(to);
151
+ if (action && action.actionType === 'url') {
152
+ action.blank === false ? (window.location.href = to) : window.open(to);
153
+ return;
154
+ }
155
+ if (/^https?:\/\//.test(to)) {
156
+ window.location.replace(to);
157
+ }
158
+ else {
159
+ location.href = to;
160
+ }
161
+ },
162
+ isCurrentUrl: function (to) {
163
+ if (!to) {
164
+ return false;
165
+ }
166
+ var link = normalizeLink.normalizeLink(to);
167
+ var location = window.location;
168
+ var pathname = link;
169
+ var search = '';
170
+ var idx = link.indexOf('?');
171
+ if (~idx) {
172
+ pathname = link.substring(0, idx);
173
+ search = link.substring(idx);
174
+ }
175
+ if (search) {
176
+ if (pathname !== location.pathname || !location.search) {
177
+ return false;
178
+ }
179
+ var query_1 = helper.qsparse(search.substring(1));
180
+ var currentQuery_1 = helper.qsparse(location.search.substring(1));
181
+ return Object.keys(query_1).every(function (key) { return query_1[key] === currentQuery_1[key]; });
182
+ }
183
+ else if (pathname === location.pathname) {
184
+ return true;
185
+ }
186
+ return false;
187
+ },
188
+ copy: function (contents) {
189
+ console.error('copy contents', contents);
190
+ },
191
+ // 用于跟踪用户在界面中的各种操作
192
+ tracker: function (eventTrack, props) { },
193
+ rendererResolver: resolveRenderer,
194
+ replaceTextIgnoreKeys: [
195
+ 'type',
196
+ 'name',
197
+ 'mode',
198
+ 'target',
199
+ 'reload',
200
+ 'persistData'
201
+ ],
202
+ /**
203
+ * 过滤 html 标签,可用来添加 xss 保护逻辑
204
+ */
205
+ filterHtml: function (input) { return input; }
206
+ };
207
+ var stores = {};
208
+ // 默认 env 会被缓存,所以新传入的 env 不会替换旧的。
209
+ // 除非先删了旧的,新的才会生效。
210
+ function clearStoresCache(sessions) {
211
+ if (sessions === void 0) { sessions = Object.keys(stores); }
212
+ if (!Array.isArray(sessions)) {
213
+ sessions = [sessions];
214
+ }
215
+ sessions.forEach(function (key) {
216
+ var store = stores[key];
217
+ // @ts-ignore
218
+ delete stores[key];
219
+ store && mobxStateTree.destroy(store);
220
+ });
221
+ }
222
+ // 当然也可以直接这样更新。
223
+ // 主要是有时候第一次创建的时候并没有准备多少接口,
224
+ // 可以后续补充点,比如 amis 自己实现的,prompt 里面的表单。
225
+ function updateEnv(options, session) {
226
+ if (session === void 0) { session = 'global'; }
227
+ options = tslib.__assign({}, options);
228
+ if (options.fetcher) {
229
+ options.fetcher = api.wrapFetcher(options.fetcher, options.tracker);
230
+ }
231
+ if (options.confirm) {
232
+ options.confirm = helper.promisify(options.confirm);
233
+ }
234
+ var store = stores[options.session || session];
235
+ if (!store) {
236
+ store = index.RendererStore.create({}, options);
237
+ stores[options.session || session] = store;
238
+ }
239
+ else {
240
+ var env = mobxStateTree.getEnv(store);
241
+ Object.assign(env, options);
242
+ }
243
+ }
244
+ var cache = {};
245
+ function resolveRenderer(path, schema) {
246
+ var type = typeof (schema === null || schema === void 0 ? void 0 : schema.type) == 'string' ? schema.type.toLowerCase() : '';
247
+ if (type && cache[type]) {
248
+ return cache[type];
249
+ }
250
+ else if (cache[path]) {
251
+ return cache[path];
252
+ }
253
+ else if (path && path.length > 1024) {
254
+ throw new Error('Path太长是不是死循环了?');
255
+ }
256
+ var renderer = null;
257
+ renderers.some(function (item) {
258
+ var matched = false;
259
+ // 直接匹配类型,后续注册渲染都应该用这个方式而不是之前的判断路径。
260
+ if (item.type && type) {
261
+ matched = item.type === type;
262
+ // 如果是type来命中的,那么cache的key直接用 type 即可。
263
+ if (matched) {
264
+ cache[type] = item;
265
+ }
266
+ }
267
+ else if (typeof item.test === 'function') {
268
+ // 不应该搞得这么复杂的,让每个渲染器唯一 id,自己不晕别人用起来也不晕。
269
+ matched = item.test(path, schema, resolveRenderer);
270
+ }
271
+ else if (item.test instanceof RegExp) {
272
+ matched = item.test.test(path);
273
+ }
274
+ if (matched) {
275
+ renderer = item;
276
+ }
277
+ return matched;
278
+ });
279
+ // 只能缓存纯正则表达式的后者方法中没有用到第二个参数的,
280
+ // 因为自定义 test 函数的有可能依赖 schema 的结果
281
+ if (renderer !== null &&
282
+ (renderer.type ||
283
+ renderer.test instanceof RegExp ||
284
+ (typeof renderer.test === 'function' &&
285
+ renderer.test.length < 2))) {
286
+ cache[path] = renderer;
287
+ }
288
+ return renderer;
289
+ }
290
+ function getRenderers() {
291
+ return renderers.concat();
292
+ }
293
+ function getRendererByName(name) {
294
+ return find__default["default"](renderers, function (item) { return item.name === name; });
295
+ }
296
+
297
+ exports.Renderer = Renderer;
298
+ exports.clearStoresCache = clearStoresCache;
299
+ exports.defaultOptions = defaultOptions;
300
+ exports.filterSchema = filterSchema;
301
+ exports.getRendererByName = getRendererByName;
302
+ exports.getRenderers = getRenderers;
303
+ exports.loadRenderer = loadRenderer;
304
+ exports.registerRenderer = registerRenderer;
305
+ exports.resolveRenderer = resolveRenderer;
306
+ exports.stores = stores;
307
+ exports.unRegisterRenderer = unRegisterRenderer;
308
+ exports.updateEnv = updateEnv;
package/dist/index.js ADDED
@@ -0,0 +1,218 @@
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 index$1 = require('./index2.js');
11
+ var Item = require('./renderers/Item.js');
12
+ var resizeSensor = require('./utils/resize-sensor.js');
13
+ var object = require('./utils/object.js');
14
+ var string2regExp = require('./utils/string2regExp.js');
15
+ var getVariable = require('./utils/getVariable.js');
16
+ var keyToPath = require('./utils/keyToPath.js');
17
+ var helper = require('./utils/helper.js');
18
+ var api = require('./utils/api.js');
19
+ var tpl = require('./utils/tpl.js');
20
+ var prettyBytes = require('./utils/prettyBytes.js');
21
+ var escapeHtml = require('./utils/escapeHtml.js');
22
+ var formatDuration = require('./utils/formatDuration.js');
23
+ var date = require('./utils/date.js');
24
+ var amisFormula = require('amis-formula');
25
+ var isPureVariable = require('./utils/isPureVariable.js');
26
+ var stripNumber = require('./utils/stripNumber.js');
27
+ var tokenize = require('./utils/tokenize.js');
28
+ var resolveVariable = require('./utils/resolveVariable.js');
29
+ var resolveVariableAndFilter = require('./utils/resolveVariableAndFilter.js');
30
+ var dataMapping = require('./utils/dataMapping.js');
31
+ var tplBuiltin = require('./utils/tpl-builtin.js');
32
+ var DataScope = require('./utils/DataScope.js');
33
+ var DataSchema = require('./utils/DataSchema.js');
34
+ var normalizeOptions = require('./utils/normalizeOptions.js');
35
+ var validations = require('./utils/validations.js');
36
+ var Animation = require('./utils/Animation.js');
37
+ var factory = require('./factory.js');
38
+ var index = require('./store/index.js');
39
+ var Options = require('./renderers/Options.js');
40
+ var Scoped = require('./Scoped.js');
41
+ var theme = require('./theme.js');
42
+ var locale = require('./locale.js');
43
+
44
+
45
+
46
+ exports.classPrefix = index$1.classPrefix;
47
+ exports.render = index$1.render;
48
+ exports.FormItem = Item.FormItem;
49
+ exports.FormItemWrap = Item.FormItemWrap;
50
+ exports.registerFormItem = Item.registerFormItem;
51
+ exports.resizeSensor = resizeSensor.resizeSensor;
52
+ exports.cloneObject = object.cloneObject;
53
+ exports.createObject = object.createObject;
54
+ exports.deleteVariable = object.deleteVariable;
55
+ exports.extendObject = object.extendObject;
56
+ exports.isObject = object.isObject;
57
+ exports.pickValues = object.pickValues;
58
+ exports.setVariable = object.setVariable;
59
+ exports.string2regExp = string2regExp.string2regExp;
60
+ exports.getVariable = getVariable.getVariable;
61
+ exports.keyToPath = keyToPath.keyToPath;
62
+ exports.JSONTraverse = helper.JSONTraverse;
63
+ exports.SkipOperation = helper.SkipOperation;
64
+ exports.__uri = helper.__uri;
65
+ exports.anyChanged = helper.anyChanged;
66
+ exports.autobind = helper.autobind;
67
+ exports.bulkBindFunctions = helper.bulkBindFunctions;
68
+ exports.camel = helper.camel;
69
+ exports.chainEvents = helper.chainEvents;
70
+ exports.chainFunctions = helper.chainFunctions;
71
+ exports.convertArrayValueToMoment = helper.convertArrayValueToMoment;
72
+ exports.detectPropValueChanged = helper.detectPropValueChanged;
73
+ exports.difference = helper.difference;
74
+ exports.eachTree = helper.eachTree;
75
+ exports.everyTree = helper.everyTree;
76
+ exports.filterTree = helper.filterTree;
77
+ exports.findIndex = helper.findIndex;
78
+ exports.findObjectsWithKey = helper.findObjectsWithKey;
79
+ exports.findTree = helper.findTree;
80
+ exports.findTreeIndex = helper.findTreeIndex;
81
+ exports.flattenTree = helper.flattenTree;
82
+ exports.getLevelFromClassName = helper.getLevelFromClassName;
83
+ exports.getPropValue = helper.getPropValue;
84
+ exports.getRange = helper.getRange;
85
+ exports.getScrollParent = helper.getScrollParent;
86
+ exports.getScrollbarWidth = helper.getScrollbarWidth;
87
+ exports.getTree = helper.getTree;
88
+ exports.getTreeAncestors = helper.getTreeAncestors;
89
+ exports.getTreeDepth = helper.getTreeDepth;
90
+ exports.getTreeParent = helper.getTreeParent;
91
+ exports.getWidthRate = helper.getWidthRate;
92
+ exports.guid = helper.guid;
93
+ exports.hasAbility = helper.hasAbility;
94
+ exports.hasFile = helper.hasFile;
95
+ exports.hasOwnProperty = helper.hasOwnProperty;
96
+ exports.hasVisibleExpression = helper.hasVisibleExpression;
97
+ exports.hashCode = helper.hashCode;
98
+ exports.immutableExtends = helper.immutableExtends;
99
+ exports.injectPropsToObject = helper.injectPropsToObject;
100
+ exports.isArrayChildrenModified = helper.isArrayChildrenModified;
101
+ exports.isBreakpoint = helper.isBreakpoint;
102
+ exports.isClickOnInput = helper.isClickOnInput;
103
+ exports.isDisabled = helper.isDisabled;
104
+ exports.isEmpty = helper.isEmpty;
105
+ exports.isMobile = helper.isMobile;
106
+ exports.isObjectShallowModified = helper.isObjectShallowModified;
107
+ exports.isSuperDataModified = helper.isSuperDataModified;
108
+ exports.isUnfolded = helper.isUnfolded;
109
+ exports.isVisible = helper.isVisible;
110
+ exports.lcFirst = helper.lcFirst;
111
+ exports.loadScript = helper.loadScript;
112
+ exports.makeColumnClassBuild = helper.makeColumnClassBuild;
113
+ exports.makeHorizontalDeeper = helper.makeHorizontalDeeper;
114
+ exports.mapObject = helper.mapObject;
115
+ exports.mapTree = helper.mapTree;
116
+ exports.noop = helper.noop;
117
+ exports.normalizeNodePath = helper.normalizeNodePath;
118
+ exports.object2formData = helper.object2formData;
119
+ exports.omitControls = helper.omitControls;
120
+ exports.padArr = helper.padArr;
121
+ exports.pickEventsProps = helper.pickEventsProps;
122
+ exports.preventDefault = helper.preventDefault;
123
+ exports.promisify = helper.promisify;
124
+ exports.qsparse = helper.qsparse;
125
+ exports.qsstringify = helper.qsstringify;
126
+ exports.range = helper.range;
127
+ exports.removeHTMLTag = helper.removeHTMLTag;
128
+ exports.repeatCount = helper.repeatCount;
129
+ exports.rmUndefined = helper.rmUndefined;
130
+ exports.someTree = helper.someTree;
131
+ exports.sortArray = helper.sortArray;
132
+ exports.spliceTree = helper.spliceTree;
133
+ exports.syncDataFromSuper = helper.syncDataFromSuper;
134
+ exports.ucFirst = helper.ucFirst;
135
+ exports.until = helper.until;
136
+ exports.utils = helper;
137
+ exports.uuid = helper.uuid;
138
+ exports.uuidv4 = helper.uuidv4;
139
+ exports.visibilityFilter = helper.visibilityFilter;
140
+ exports.buildApi = api.buildApi;
141
+ exports.clearApiCache = api.clearApiCache;
142
+ exports.getApiCache = api.getApiCache;
143
+ exports.isApiOutdated = api.isApiOutdated;
144
+ exports.isEffectiveApi = api.isEffectiveApi;
145
+ exports.isSameApi = api.isSameApi;
146
+ exports.isValidApi = api.isValidApi;
147
+ exports.jsonpFetcher = api.jsonpFetcher;
148
+ exports.normalizeApi = api.normalizeApi;
149
+ exports.normalizeApiResponseData = api.normalizeApiResponseData;
150
+ exports.responseAdaptor = api.responseAdaptor;
151
+ exports.setApiCache = api.setApiCache;
152
+ exports.str2AsyncFunction = api.str2AsyncFunction;
153
+ exports.str2function = api.str2function;
154
+ exports.wrapAdaptor = api.wrapAdaptor;
155
+ exports.wrapFetcher = api.wrapFetcher;
156
+ exports.evalExpression = tpl.evalExpression;
157
+ exports.evalJS = tpl.evalJS;
158
+ exports.filter = tpl.filter;
159
+ exports.registerTplEnginer = tpl.registerTplEnginer;
160
+ exports.setCustomEvalExpression = tpl.setCustomEvalExpression;
161
+ exports.setCustomEvalJs = tpl.setCustomEvalJs;
162
+ exports.prettyBytes = prettyBytes.prettyBytes;
163
+ exports.escapeHtml = escapeHtml.escapeHtml;
164
+ exports.formatDuration = formatDuration.formatDuration;
165
+ exports.filterDate = date.filterDate;
166
+ exports.parseDuration = date.parseDuration;
167
+ exports.relativeValueRe = date.relativeValueRe;
168
+ Object.defineProperty(exports, 'getFilters', {
169
+ enumerable: true,
170
+ get: function () { return amisFormula.getFilters; }
171
+ });
172
+ Object.defineProperty(exports, 'registerFilter', {
173
+ enumerable: true,
174
+ get: function () { return amisFormula.registerFilter; }
175
+ });
176
+ exports.isPureVariable = isPureVariable.isPureVariable;
177
+ exports.stripNumber = stripNumber.stripNumber;
178
+ exports.tokenize = tokenize.tokenize;
179
+ exports.resolveVariable = resolveVariable.resolveVariable;
180
+ exports.resolveVariableAndFilter = resolveVariableAndFilter.resolveVariableAndFilter;
181
+ exports.dataMapping = dataMapping.dataMapping;
182
+ exports.resolveMapping = dataMapping.resolveMapping;
183
+ exports.register = tplBuiltin.register;
184
+ exports.DataScope = DataScope.DataScope;
185
+ exports.DataSchema = DataSchema.DataSchema;
186
+ exports.normalizeOptions = normalizeOptions.normalizeOptions;
187
+ exports.addRule = validations.addRule;
188
+ exports.str2rules = validations.str2rules;
189
+ exports.validate = validations.validate;
190
+ exports.validateMessages = validations.validateMessages;
191
+ exports.validateObject = validations.validateObject;
192
+ exports.validations = validations.validations;
193
+ exports.animation = Animation["default"];
194
+ exports.Renderer = factory.Renderer;
195
+ exports.clearStoresCache = factory.clearStoresCache;
196
+ exports.filterSchema = factory.filterSchema;
197
+ exports.getRendererByName = factory.getRendererByName;
198
+ exports.getRenderers = factory.getRenderers;
199
+ exports.registerRenderer = factory.registerRenderer;
200
+ exports.resolveRenderer = factory.resolveRenderer;
201
+ exports.unRegisterRenderer = factory.unRegisterRenderer;
202
+ exports.updateEnv = factory.updateEnv;
203
+ exports.RegisterStore = index.RegisterStore;
204
+ exports.OptionsControl = Options.OptionsControl;
205
+ exports.registerOptionsControl = Options.registerOptionsControl;
206
+ exports.Scoped = Scoped.HocScoped;
207
+ exports.ScopedContext = Scoped.ScopedContext;
208
+ exports.classnames = theme.classnames;
209
+ exports.getClassPrefix = theme.getClassPrefix;
210
+ exports.getTheme = theme.getTheme;
211
+ exports.setDefaultTheme = theme.setDefaultTheme;
212
+ exports.theme = theme.theme;
213
+ exports.extendLocale = locale.extendLocale;
214
+ exports.getDefaultLocale = locale.getDefaultLocale;
215
+ exports.localeable = locale.localeable;
216
+ exports.makeTranslator = locale.makeTranslator;
217
+ exports.registerLocale = locale.register;
218
+ exports.setDefaultLocale = locale.setDefaultLocale;