amis 1.4.1 → 1.4.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +1 -1
  2. package/lib/Schema.d.ts +17 -0
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/Alert.js +3 -1
  5. package/lib/components/Alert.js.map +2 -2
  6. package/lib/components/Badge.d.ts +2 -2
  7. package/lib/components/Badge.js +12 -6
  8. package/lib/components/Badge.js.map +2 -2
  9. package/lib/components/Collapse.js +1 -1
  10. package/lib/components/Collapse.js.map +2 -2
  11. package/lib/components/DatePicker.js +1 -1
  12. package/lib/components/DatePicker.js.map +2 -2
  13. package/lib/components/DateRangePicker.js +1 -1
  14. package/lib/components/DateRangePicker.js.map +2 -2
  15. package/lib/components/InputBox.js +1 -1
  16. package/lib/components/InputBox.js.map +2 -2
  17. package/lib/components/Link.d.ts +91 -0
  18. package/lib/components/Link.js +44 -0
  19. package/lib/components/Link.js.map +13 -0
  20. package/lib/components/MonthRangePicker.js +1 -1
  21. package/lib/components/MonthRangePicker.js.map +2 -2
  22. package/lib/components/RichText.js +17 -53
  23. package/lib/components/RichText.js.map +2 -2
  24. package/lib/components/Select.js +3 -0
  25. package/lib/components/Select.js.map +2 -2
  26. package/lib/components/SparkLine.d.ts +85 -84
  27. package/lib/components/SparkLine.js +2 -2
  28. package/lib/components/SparkLine.js.map +2 -2
  29. package/lib/components/Toast.js +2 -2
  30. package/lib/components/Toast.js.map +2 -2
  31. package/lib/components/Tree.js +5 -3
  32. package/lib/components/Tree.js.map +2 -2
  33. package/lib/components/icons.js +12 -0
  34. package/lib/components/icons.js.map +2 -2
  35. package/lib/icons/clock.js +10 -0
  36. package/lib/icons/status-close.js +11 -0
  37. package/lib/icons/status-fail.js +11 -0
  38. package/lib/icons/status-info.js +10 -0
  39. package/lib/icons/status-success.js +11 -0
  40. package/lib/icons/status-warning.js +10 -0
  41. package/lib/index.js +1 -1
  42. package/lib/locale/de-DE.js +2 -0
  43. package/lib/locale/de-DE.js.map +2 -2
  44. package/lib/locale/en-US.js +2 -0
  45. package/lib/locale/en-US.js.map +2 -2
  46. package/lib/locale/zh-CN.js +3 -1
  47. package/lib/locale/zh-CN.js.map +2 -2
  48. package/lib/renderers/Action.d.ts +7 -0
  49. package/lib/renderers/Action.js.map +2 -2
  50. package/lib/renderers/CRUD.js +21 -6
  51. package/lib/renderers/CRUD.js.map +2 -2
  52. package/lib/renderers/Collapse.js +2 -2
  53. package/lib/renderers/Collapse.js.map +2 -2
  54. package/lib/renderers/Dialog.js +0 -3
  55. package/lib/renderers/Dialog.js.map +2 -2
  56. package/lib/renderers/Drawer.js +0 -3
  57. package/lib/renderers/Drawer.js.map +2 -2
  58. package/lib/renderers/DropDownButton.d.ts +5 -1
  59. package/lib/renderers/DropDownButton.js +8 -6
  60. package/lib/renderers/DropDownButton.js.map +2 -2
  61. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  62. package/lib/renderers/Form/Checkbox.js +4 -0
  63. package/lib/renderers/Form/Checkbox.js.map +2 -2
  64. package/lib/renderers/Form/Combo.js +2 -2
  65. package/lib/renderers/Form/Combo.js.map +2 -2
  66. package/lib/renderers/Form/InputFile.js +2 -2
  67. package/lib/renderers/Form/InputFile.js.map +2 -2
  68. package/lib/renderers/Form/InputImage.js +5 -3
  69. package/lib/renderers/Form/InputImage.js.map +2 -2
  70. package/lib/renderers/Form/Options.js +6 -3
  71. package/lib/renderers/Form/Options.js.map +2 -2
  72. package/lib/renderers/Form/Picker.js +2 -2
  73. package/lib/renderers/Form/Picker.js.map +2 -2
  74. package/lib/renderers/Form/wrapControl.js +2 -2
  75. package/lib/renderers/Form/wrapControl.js.map +2 -2
  76. package/lib/renderers/IFrame.js +2 -2
  77. package/lib/renderers/IFrame.js.map +2 -2
  78. package/lib/renderers/Image.d.ts +1 -0
  79. package/lib/renderers/Image.js +15 -1
  80. package/lib/renderers/Image.js.map +2 -2
  81. package/lib/renderers/Link.d.ts +16 -3
  82. package/lib/renderers/Link.js +16 -13
  83. package/lib/renderers/Link.js.map +2 -2
  84. package/lib/renderers/Log.d.ts +2 -2
  85. package/lib/renderers/Log.js +7 -1
  86. package/lib/renderers/Log.js.map +2 -2
  87. package/lib/renderers/Nav.d.ts +62 -36
  88. package/lib/renderers/Nav.js +248 -90
  89. package/lib/renderers/Nav.js.map +2 -2
  90. package/lib/renderers/SparkLine.d.ts +4 -0
  91. package/lib/renderers/SparkLine.js.map +2 -2
  92. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  93. package/lib/renderers/Table/ColumnToggler.js +216 -0
  94. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  95. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  96. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  97. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  98. package/lib/renderers/Table/TableBody.d.ts +4 -0
  99. package/lib/renderers/Table/TableCell.js +3 -1
  100. package/lib/renderers/Table/TableCell.js.map +2 -2
  101. package/lib/renderers/Table/index.d.ts +14 -1
  102. package/lib/renderers/Table/index.js +116 -36
  103. package/lib/renderers/Table/index.js.map +2 -2
  104. package/lib/store/table.d.ts +257 -1
  105. package/lib/store/table.js +41 -6
  106. package/lib/store/table.js.map +2 -2
  107. package/lib/themes/ang-ie11.css +393 -90
  108. package/lib/themes/ang.css +393 -90
  109. package/lib/themes/ang.css.map +1 -1
  110. package/lib/themes/antd-ie11.css +393 -90
  111. package/lib/themes/antd.css +393 -90
  112. package/lib/themes/antd.css.map +1 -1
  113. package/lib/themes/cxd-ie11.css +904 -263
  114. package/lib/themes/cxd.css +904 -263
  115. package/lib/themes/cxd.css.map +1 -1
  116. package/lib/themes/dark-ie11.css +393 -90
  117. package/lib/themes/dark.css +393 -90
  118. package/lib/themes/dark.css.map +1 -1
  119. package/lib/themes/default.css +904 -263
  120. package/lib/themes/default.css.map +1 -1
  121. package/lib/utils/api.js +4 -4
  122. package/lib/utils/api.js.map +2 -2
  123. package/lib/utils/handleAction.d.ts +7 -0
  124. package/lib/utils/handleAction.js +30 -0
  125. package/lib/utils/handleAction.js.map +13 -0
  126. package/lib/utils/helper.d.ts +1 -1
  127. package/lib/utils/helper.js +3 -3
  128. package/lib/utils/helper.js.map +2 -2
  129. package/lib/utils/tpl-builtin.d.ts +1 -1
  130. package/lib/utils/tpl-builtin.js +25 -15
  131. package/lib/utils/tpl-builtin.js.map +2 -2
  132. package/package.json +1 -1
  133. package/schema.json +322 -261
  134. package/scss/_properties.scss +39 -4
  135. package/scss/_utilities.scss +4 -0
  136. package/scss/components/_button.scss +4 -5
  137. package/scss/components/_collapse.scss +26 -8
  138. package/scss/components/_column-toggler.scss +234 -0
  139. package/scss/components/_dropdown.scss +2 -1
  140. package/scss/components/_images.scss +2 -1
  141. package/scss/components/_link.scss +6 -0
  142. package/scss/components/_nav.scss +231 -223
  143. package/scss/components/_page.scss +5 -4
  144. package/scss/components/_progress.scss +2 -0
  145. package/scss/components/_steps.scss +1 -1
  146. package/scss/components/_table.scss +25 -1
  147. package/scss/components/form/_color.scss +1 -0
  148. package/scss/components/form/_date-range.scss +2 -0
  149. package/scss/components/form/_date.scss +2 -0
  150. package/scss/components/form/_fieldset.scss +1 -2
  151. package/scss/components/form/_file.scss +5 -4
  152. package/scss/components/form/_image.scss +7 -2
  153. package/scss/components/form/_list.scss +1 -0
  154. package/scss/components/form/_location.scss +1 -1
  155. package/scss/components/form/_text.scss +13 -0
  156. package/scss/components/form/_textarea.scss +10 -0
  157. package/scss/components/form/_transfer.scss +2 -0
  158. package/scss/themes/_common.scss +2 -0
  159. package/scss/themes/_cxd-colors.scss +56 -0
  160. package/scss/themes/_cxd-variables.scss +215 -90
  161. package/scss/themes/cxd.scss +366 -0
  162. package/sdk/ang-ie11.css +569 -235
  163. package/sdk/ang.css +512 -151
  164. package/sdk/antd-ie11.css +558 -224
  165. package/sdk/antd.css +512 -151
  166. package/sdk/charts.js +13 -13
  167. package/sdk/color-picker.js +67 -67
  168. package/sdk/cropperjs.js +2 -2
  169. package/sdk/cxd-ie11.css +1506 -870
  170. package/sdk/cxd.css +1064 -324
  171. package/sdk/dark-ie11.css +569 -235
  172. package/sdk/dark.css +512 -151
  173. package/sdk/exceljs.js +1 -1
  174. package/sdk/ie11-patch.css +1 -0
  175. package/sdk/locale/de-DE.js +2 -0
  176. package/sdk/markdown.js +69 -69
  177. package/sdk/papaparse.js +1 -1
  178. package/sdk/renderers/Form/CityDB.js +1 -1
  179. package/sdk/rest.js +22 -22
  180. package/sdk/rich-text.js +62 -62
  181. package/sdk/sdk-ie11.css +1506 -870
  182. package/sdk/sdk.css +1064 -324
  183. package/sdk/sdk.js +1138 -1118
  184. package/sdk/thirds/hls.js/hls.js +1 -1
  185. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  186. package/sdk/tinymce.js +57 -57
  187. package/src/Schema.ts +18 -0
  188. package/src/components/Alert.tsx +3 -1
  189. package/src/components/Badge.tsx +36 -24
  190. package/src/components/Collapse.tsx +14 -9
  191. package/src/components/DatePicker.tsx +1 -1
  192. package/src/components/DateRangePicker.tsx +23 -11
  193. package/src/components/InputBox.tsx +1 -1
  194. package/src/components/Link.tsx +94 -0
  195. package/src/components/MonthRangePicker.tsx +10 -2
  196. package/src/components/RichText.tsx +17 -57
  197. package/src/components/Select.tsx +3 -0
  198. package/src/components/SparkLine.tsx +4 -1
  199. package/src/components/Toast.tsx +5 -5
  200. package/src/components/Tree.tsx +6 -8
  201. package/src/components/icons.tsx +13 -0
  202. package/src/icons/clock.svg +1 -0
  203. package/src/icons/status-close.svg +10 -0
  204. package/src/icons/status-fail.svg +10 -0
  205. package/src/icons/status-info.svg +8 -0
  206. package/src/icons/status-success.svg +10 -0
  207. package/src/icons/status-warning.svg +8 -0
  208. package/src/locale/de-DE.ts +2 -0
  209. package/src/locale/en-US.ts +2 -0
  210. package/src/locale/zh-CN.ts +3 -1
  211. package/src/renderers/Action.tsx +5 -0
  212. package/src/renderers/CRUD.tsx +31 -26
  213. package/src/renderers/Collapse.tsx +1 -1
  214. package/src/renderers/Dialog.tsx +0 -4
  215. package/src/renderers/Drawer.tsx +0 -4
  216. package/src/renderers/DropDownButton.tsx +19 -14
  217. package/src/renderers/Form/Checkbox.tsx +8 -0
  218. package/src/renderers/Form/Combo.tsx +2 -3
  219. package/src/renderers/Form/InputFile.tsx +2 -1
  220. package/src/renderers/Form/InputImage.tsx +5 -2
  221. package/src/renderers/Form/Options.tsx +16 -5
  222. package/src/renderers/Form/Picker.tsx +3 -2
  223. package/src/renderers/Form/wrapControl.tsx +2 -2
  224. package/src/renderers/IFrame.tsx +2 -1
  225. package/src/renderers/Image.tsx +10 -0
  226. package/src/renderers/Link.tsx +36 -11
  227. package/src/renderers/Log.tsx +16 -3
  228. package/src/renderers/Nav.tsx +255 -100
  229. package/src/renderers/SparkLine.tsx +5 -0
  230. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  231. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  232. package/src/renderers/Table/TableCell.tsx +16 -1
  233. package/src/renderers/Table/index.tsx +179 -47
  234. package/src/store/table.ts +57 -6
  235. package/src/utils/api.ts +13 -4
  236. package/src/utils/handleAction.ts +41 -0
  237. package/src/utils/helper.ts +4 -4
  238. package/src/utils/tpl-builtin.ts +48 -17
  239. package/sdk.zip +0 -0
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NavigationRenderer = exports.Navigation = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
6
- var sortablejs_1 = (0, tslib_1.__importDefault)(require("sortablejs"));
6
+ var react_dom_1 = require("react-dom");
7
7
  var factory_1 = require("../factory");
8
8
  var filter_schema_1 = (0, tslib_1.__importDefault)(require("../utils/filter-schema"));
9
9
  var tpl_1 = require("../utils/tpl");
@@ -14,86 +14,147 @@ var icons_1 = require("../components/icons");
14
14
  var icon_1 = require("../utils/icon");
15
15
  var WithRemoteConfig_1 = require("../components/WithRemoteConfig");
16
16
  var Spinner_1 = (0, tslib_1.__importDefault)(require("../components/Spinner"));
17
- var cloneDeep_1 = (0, tslib_1.__importDefault)(require("lodash/cloneDeep"));
18
17
  var api_1 = require("../utils/api");
19
18
  var Badge_1 = require("../components/Badge");
20
19
  var Navigation = /** @class */ (function (_super) {
21
20
  (0, tslib_1.__extends)(Navigation, _super);
22
21
  function Navigation() {
23
22
  var _this = _super !== null && _super.apply(this, arguments) || this;
24
- _this.sortable = [];
23
+ _this.startPoint = {
24
+ y: 0,
25
+ x: 0
26
+ };
27
+ _this.state = {};
25
28
  return _this;
26
29
  }
27
30
  Navigation.prototype.handleClick = function (link) {
28
31
  var _a, _b;
29
32
  (_b = (_a = this.props).onSelect) === null || _b === void 0 ? void 0 : _b.call(_a, link);
30
33
  };
31
- Navigation.prototype.toggleLink = function (target) {
34
+ Navigation.prototype.toggleLink = function (target, forceFold) {
32
35
  var _a, _b;
33
- (_b = (_a = this.props).onToggle) === null || _b === void 0 ? void 0 : _b.call(_a, target);
36
+ (_b = (_a = this.props).onToggle) === null || _b === void 0 ? void 0 : _b.call(_a, target, forceFold);
34
37
  };
35
- Navigation.prototype.dragRefFn = function (ref) {
36
- var draggable = this.props.draggable;
37
- if (ref && draggable) {
38
- this.id = (0, helper_1.guid)();
39
- this.initDragging(ref);
38
+ Navigation.prototype.getDropInfo = function (e, id, depth) {
39
+ var _a, _b;
40
+ var _c = this.props, dragOnSameLevel = _c.dragOnSameLevel, indentSize = _c.indentSize;
41
+ var rect = e.target.getBoundingClientRect();
42
+ var dragLink = (_a = this.dragNode) === null || _a === void 0 ? void 0 : _a.link;
43
+ var top = rect.top, height = rect.height, width = rect.width;
44
+ var clientY = e.clientY, clientX = e.clientX;
45
+ var left = depth * ((_b = parseInt(indentSize, 10)) !== null && _b !== void 0 ? _b : 24);
46
+ var deltaX = left + width * .2;
47
+ var position;
48
+ if (clientY >= top + height / 2) {
49
+ position = 'bottom';
50
+ }
51
+ else {
52
+ position = 'top';
53
+ }
54
+ if (!dragOnSameLevel && position === 'bottom' && clientX >= this.startPoint.x + deltaX) {
55
+ position = 'self';
56
+ }
57
+ return {
58
+ nodeId: id,
59
+ dragLink: dragLink,
60
+ position: position,
61
+ rect: rect,
62
+ height: height,
63
+ left: left
64
+ };
65
+ };
66
+ Navigation.prototype.updateDropIndicator = function (e) {
67
+ var _a, _b;
68
+ var dragOnSameLevel = this.props.dragOnSameLevel;
69
+ var target = e.target; // a标签
70
+ var targetId = target.getAttribute('data-id');
71
+ var targetDepth = Number(target.getAttribute('data-depth'));
72
+ if (dragOnSameLevel
73
+ && ((_a = this.dragNode) === null || _a === void 0 ? void 0 : _a.node.parentElement) !== ((_b = target.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement)) {
74
+ this.setState({ dropIndicator: undefined });
75
+ this.dropInfo = null;
76
+ return;
77
+ }
78
+ this.dropInfo = this.getDropInfo(e, targetId, targetDepth);
79
+ var _c = this.dropInfo, position = _c.position, rect = _c.rect, dragLink = _c.dragLink, height = _c.height, left = _c.left;
80
+ if (targetId === (dragLink === null || dragLink === void 0 ? void 0 : dragLink.__id)) {
81
+ this.setState({ dropIndicator: undefined });
82
+ this.dropInfo = null;
83
+ return;
84
+ }
85
+ var ul = (0, react_dom_1.findDOMNode)(this).firstChild;
86
+ if (position === 'self') {
87
+ this.setState({
88
+ dropIndicator: {
89
+ top: rect.top - ul.getBoundingClientRect().top,
90
+ left: left,
91
+ width: ul.getBoundingClientRect().width - left,
92
+ height: height,
93
+ opacity: .2
94
+ }
95
+ });
96
+ }
97
+ else {
98
+ this.setState({
99
+ dropIndicator: {
100
+ top: (position === 'bottom' ? rect.top + rect.height : rect.top) - ul.getBoundingClientRect().top,
101
+ left: left,
102
+ width: ul.getBoundingClientRect().width - left
103
+ }
104
+ });
40
105
  }
41
106
  };
42
- Navigation.prototype.initDragging = function (ref) {
107
+ Navigation.prototype.handleDragStart = function (link) {
43
108
  var _this = this;
44
- var ns = this.props.classPrefix;
45
- this.sortable.push(new sortablejs_1.default(ref, {
46
- group: "nav-" + this.id,
47
- animation: 150,
48
- handle: "." + ns + "Nav-itemDrager",
49
- ghostClass: ns + "Nav-item--dragging",
50
- onEnd: function (e) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
51
- var id, parentNode, links, parent, _a, saveOrderApi, env;
52
- return (0, tslib_1.__generator)(this, function (_b) {
53
- switch (_b.label) {
54
- case 0:
55
- // 没有移动
56
- if (e.newIndex === e.oldIndex) {
57
- return [2 /*return*/];
58
- }
59
- id = e.item.getAttribute('data-id');
60
- parentNode = e.to;
61
- if (e.newIndex < e.oldIndex &&
62
- e.oldIndex < parentNode.childNodes.length - 1) {
63
- parentNode.insertBefore(e.item, parentNode.childNodes[e.oldIndex + 1]);
64
- }
65
- else if (e.oldIndex < parentNode.childNodes.length - 1) {
66
- parentNode.insertBefore(e.item, parentNode.childNodes[e.oldIndex]);
67
- }
68
- else {
69
- parentNode.appendChild(e.item);
70
- }
71
- links = (0, cloneDeep_1.default)(this.props.links);
72
- parent = links;
73
- (0, helper_1.someTree)(links, function (item, key, level, paths) {
74
- if (item.id === id) {
75
- var len = paths.length - 1;
76
- parent = (~len ? paths[len].children : links);
77
- return true;
78
- }
79
- return false;
80
- });
81
- parent.splice(e.newIndex, 0, parent.splice(e.oldIndex, 1)[0]);
82
- _a = this.props, saveOrderApi = _a.saveOrderApi, env = _a.env;
83
- if (!(saveOrderApi && (0, api_1.isEffectiveApi)(saveOrderApi))) return [3 /*break*/, 2];
84
- return [4 /*yield*/, env.fetcher(saveOrderApi, { data: links }, { method: 'post' })];
85
- case 1:
86
- _b.sent();
87
- this.props.reload();
88
- return [3 /*break*/, 3];
89
- case 2:
90
- console.warn('请配置saveOrderApi');
91
- _b.label = 3;
92
- case 3: return [2 /*return*/];
93
- }
94
- });
95
- }); }
96
- }));
109
+ return function (e) {
110
+ e.stopPropagation();
111
+ var currentTarget = e.currentTarget;
112
+ e.dataTransfer.effectAllowed = 'copyMove';
113
+ e.dataTransfer.setDragImage(currentTarget, 0, 0);
114
+ _this.dragNode = {
115
+ node: currentTarget,
116
+ link: link
117
+ };
118
+ _this.dropInfo = null;
119
+ _this.startPoint = {
120
+ x: e.clientX,
121
+ y: e.clientY
122
+ };
123
+ currentTarget.addEventListener('dragend', _this.handleDragEnd);
124
+ document.body.addEventListener('dragover', _this.handleDragOver);
125
+ };
126
+ };
127
+ Navigation.prototype.handleDragOver = function (e) {
128
+ e.preventDefault();
129
+ e.stopPropagation();
130
+ if (!this.dragNode) {
131
+ return;
132
+ }
133
+ var target = e.target;
134
+ var id = target.getAttribute('data-id');
135
+ if (!id) {
136
+ return;
137
+ }
138
+ this.updateDropIndicator(e);
139
+ };
140
+ Navigation.prototype.handleDragEnd = function (e) {
141
+ var _a, _b, _c;
142
+ e.preventDefault();
143
+ e.stopPropagation();
144
+ this.setState({
145
+ dropIndicator: undefined
146
+ });
147
+ var currentTarget = e.currentTarget;
148
+ var id = currentTarget.getAttribute('data-id');
149
+ var nodeId = (_a = this.dropInfo) === null || _a === void 0 ? void 0 : _a.nodeId;
150
+ if (!this.dropInfo || !nodeId || id === nodeId) {
151
+ return;
152
+ }
153
+ currentTarget.removeEventListener('dragend', this.handleDragEnd);
154
+ document.body.removeEventListener('dragover', this.handleDragOver);
155
+ (_c = (_b = this.props).onDragUpdate) === null || _c === void 0 ? void 0 : _c.call(_b, this.dropInfo);
156
+ this.dragNode = null;
157
+ this.dropInfo = null;
97
158
  };
98
159
  Navigation.prototype.renderItem = function (link, index, depth) {
99
160
  var _this = this;
@@ -103,22 +164,18 @@ var Navigation = /** @class */ (function (_super) {
103
164
  return null;
104
165
  }
105
166
  var isActive = !!link.active;
106
- var _b = this.props, disabled = _b.disabled, togglerClassName = _b.togglerClassName, cx = _b.classnames, indentSize = _b.indentSize, render = _b.render, itemActions = _b.itemActions, draggable = _b.draggable, links = _b.links, defaultBadge = _b.badge;
167
+ var _b = this.props, disabled = _b.disabled, togglerClassName = _b.togglerClassName, cx = _b.classnames, indentSize = _b.indentSize, render = _b.render, itemActions = _b.itemActions, draggable = _b.draggable, links = _b.links, itemBadge = _b.itemBadge, defaultData = _b.data;
107
168
  var hasSub = (link.defer && !link.loaded) || (link.children && link.children.length);
108
- var id = (0, helper_1.guid)();
109
- link.id = id;
110
- var badge = defaultBadge ? Object.assign(defaultBadge, link.badge) : link.badge;
111
- return (react_1.default.createElement("li", { key: index, className: cx('Nav-item', link.className, {
169
+ return (react_1.default.createElement("li", { key: link.__id, "data-id": link.__id, className: cx('Nav-item', link.className, {
112
170
  'is-disabled': disabled || link.disabled || link.loading,
113
171
  'is-active': isActive,
114
172
  'is-unfolded': link.unfolded,
115
173
  'has-sub': hasSub
116
- }), "data-id": id },
117
- react_1.default.createElement(Badge_1.Badge, { classnames: cx, badge: badge, data: link },
118
- react_1.default.createElement("a", { onClick: this.handleClick.bind(this, link), style: { paddingLeft: depth * ((_a = parseInt(indentSize, 10)) !== null && _a !== void 0 ? _a : 24) } },
119
- !disabled && draggable && links && links.length > 1 ? (react_1.default.createElement("div", { className: cx('Nav-itemDrager') },
120
- react_1.default.createElement("a", { key: "drag", "data-position": "bottom" },
121
- react_1.default.createElement(icons_1.Icon, { icon: "drag-bar", className: "icon" })))) : null,
174
+ }), onDragStart: this.handleDragStart(link) },
175
+ react_1.default.createElement(Badge_1.Badge, { classnames: cx, badge: itemBadge, data: (0, helper_1.createObject)(defaultData, link) },
176
+ react_1.default.createElement("a", { "data-id": link.__id, "data-depth": depth, onClick: this.handleClick.bind(this, link), style: { paddingLeft: depth * ((_a = parseInt(indentSize, 10)) !== null && _a !== void 0 ? _a : 24) } },
177
+ !disabled && draggable && links && links.length > 1 ? (react_1.default.createElement("div", { className: cx('Nav-itemDrager'), draggable: true, onMouseDown: function (e) { _this.toggleLink(link, true); e.stopPropagation(); } },
178
+ react_1.default.createElement(icons_1.Icon, { icon: "drag-bar", className: "icon" }))) : null,
122
179
  link.loading ? (react_1.default.createElement(Spinner_1.default, { size: "sm", show: true, icon: "reload", spinnerClassName: cx('Nav-spinner') })) : hasSub ? (react_1.default.createElement("span", { onClick: function () { return _this.toggleLink(link); }, className: cx('Nav-itemToggler', togglerClassName) },
123
180
  react_1.default.createElement(icons_1.Icon, { icon: "caret", className: "icon" }))) : null,
124
181
  (0, icon_1.generateIcon)(cx, link.icon, 'Nav-itemIcon'),
@@ -127,20 +184,26 @@ var Navigation = /** @class */ (function (_super) {
127
184
  : render('inline', link.label))),
128
185
  // 更多操作
129
186
  itemActions
130
- ? react_1.default.createElement("div", { className: cx('Nav-item-atcions') }, render('inline', itemActions, { data: link })) : null,
131
- Array.isArray(link.children) && link.children.length ? (react_1.default.createElement("ul", { className: cx('Nav-subItems'), ref: this.dragRefFn }, link.children.map(function (link, index) {
187
+ ? react_1.default.createElement("div", { className: cx('Nav-item-atcions') }, render('inline', itemActions, { data: (0, helper_1.createObject)(defaultData, link) })) : null,
188
+ Array.isArray(link.children) && link.children.length ? (react_1.default.createElement("ul", { className: cx('Nav-subItems') }, link.children.map(function (link, index) {
132
189
  return _this.renderItem(link, index, depth + 1);
133
190
  }))) : null)));
134
191
  };
135
192
  Navigation.prototype.render = function () {
136
193
  var _this = this;
137
194
  var _a = this.props, className = _a.className, stacked = _a.stacked, cx = _a.classnames, links = _a.links, loading = _a.loading;
138
- return (react_1.default.createElement("ul", { className: cx('Nav', className, stacked ? 'Nav--stacked' : 'Nav--tabs'), ref: this.dragRefFn },
139
- Array.isArray(links)
140
- ? links.map(function (item, index) { return _this.renderItem(item, index); })
141
- : null,
142
- react_1.default.createElement(Spinner_1.default, { show: !!loading, overlay: true, icon: "reload" })));
195
+ var dropIndicator = this.state.dropIndicator;
196
+ return (react_1.default.createElement("div", { className: cx('Nav') },
197
+ react_1.default.createElement("ul", { className: cx('Nav-list', className, stacked ? 'Nav-list--stacked' : 'Nav-list--tabs') },
198
+ Array.isArray(links)
199
+ ? links.map(function (item, index) { return _this.renderItem(item, index); })
200
+ : null,
201
+ react_1.default.createElement(Spinner_1.default, { show: !!loading, overlay: true, icon: "reload" })),
202
+ (dropIndicator
203
+ ? react_1.default.createElement("div", { className: cx('Nav-dropIndicator'), style: dropIndicator })
204
+ : null)));
143
205
  };
206
+ var _a, _b, _c, _d;
144
207
  Navigation.defaultProps = {
145
208
  indentSize: 24
146
209
  };
@@ -153,15 +216,39 @@ var Navigation = /** @class */ (function (_super) {
153
216
  (0, tslib_1.__decorate)([
154
217
  helper_1.autobind,
155
218
  (0, tslib_1.__metadata)("design:type", Function),
156
- (0, tslib_1.__metadata)("design:paramtypes", [Object]),
219
+ (0, tslib_1.__metadata)("design:paramtypes", [Object, Boolean]),
157
220
  (0, tslib_1.__metadata)("design:returntype", void 0)
158
221
  ], Navigation.prototype, "toggleLink", null);
222
+ (0, tslib_1.__decorate)([
223
+ helper_1.autobind,
224
+ (0, tslib_1.__metadata)("design:type", Function),
225
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_a = typeof DragEvent !== "undefined" && DragEvent) === "function" ? _a : Object, String, Number]),
226
+ (0, tslib_1.__metadata)("design:returntype", Object)
227
+ ], Navigation.prototype, "getDropInfo", null);
228
+ (0, tslib_1.__decorate)([
229
+ helper_1.autobind,
230
+ (0, tslib_1.__metadata)("design:type", Function),
231
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof DragEvent !== "undefined" && DragEvent) === "function" ? _b : Object]),
232
+ (0, tslib_1.__metadata)("design:returntype", void 0)
233
+ ], Navigation.prototype, "updateDropIndicator", null);
159
234
  (0, tslib_1.__decorate)([
160
235
  helper_1.autobind,
161
236
  (0, tslib_1.__metadata)("design:type", Function),
162
237
  (0, tslib_1.__metadata)("design:paramtypes", [Object]),
163
238
  (0, tslib_1.__metadata)("design:returntype", void 0)
164
- ], Navigation.prototype, "dragRefFn", null);
239
+ ], Navigation.prototype, "handleDragStart", null);
240
+ (0, tslib_1.__decorate)([
241
+ helper_1.autobind,
242
+ (0, tslib_1.__metadata)("design:type", Function),
243
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_c = typeof DragEvent !== "undefined" && DragEvent) === "function" ? _c : Object]),
244
+ (0, tslib_1.__metadata)("design:returntype", void 0)
245
+ ], Navigation.prototype, "handleDragOver", null);
246
+ (0, tslib_1.__decorate)([
247
+ helper_1.autobind,
248
+ (0, tslib_1.__metadata)("design:type", Function),
249
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_d = typeof DragEvent !== "undefined" && DragEvent) === "function" ? _d : Object]),
250
+ (0, tslib_1.__metadata)("design:returntype", void 0)
251
+ ], Navigation.prototype, "handleDragEnd", null);
165
252
  return Navigation;
166
253
  }(react_1.default.Component));
167
254
  exports.Navigation = Navigation;
@@ -191,7 +278,7 @@ var ConditionBuilderWithRemoteOptions = (0, WithRemoteConfig_1.withRemoteConfig)
191
278
  ? (0, tpl_1.evalExpression)(link.activeOn, data_1)
192
279
  : !!(link.hasOwnProperty('to') &&
193
280
  env_1 &&
194
- env_1.isCurrentUrl((0, tpl_1.filter)(link.to, data_1)))) });
281
+ env_1.isCurrentUrl((0, tpl_1.filter)(link.to, data_1)))), __id: (0, helper_1.guid)() });
195
282
  item.unfolded =
196
283
  (0, helper_1.isUnfolded)(item, { unfoldedField: unfoldedField_1, foldedField: foldedField_1 }) ||
197
284
  (link.children && link.children.some(function (link) { return !!link.active; }));
@@ -220,6 +307,7 @@ var ConditionBuilderWithRemoteOptions = (0, WithRemoteConfig_1.withRemoteConfig)
220
307
  var _this = _super.call(this, props) || this;
221
308
  _this.toggleLink = _this.toggleLink.bind(_this);
222
309
  _this.handleSelect = _this.handleSelect.bind(_this);
310
+ _this.dragUpdate = _this.dragUpdate.bind(_this);
223
311
  return _this;
224
312
  }
225
313
  class_1.prototype.componentDidMount = function () {
@@ -235,7 +323,7 @@ var ConditionBuilderWithRemoteOptions = (0, WithRemoteConfig_1.withRemoteConfig)
235
323
  this.props.updateConfig(this.props.links, 'update');
236
324
  }
237
325
  };
238
- class_1.prototype.toggleLink = function (target) {
326
+ class_1.prototype.toggleLink = function (target, forceFold) {
239
327
  var _a = this.props, config = _a.config, updateConfig = _a.updateConfig, deferLoad = _a.deferLoad;
240
328
  if (target.defer && !target.loaded) {
241
329
  deferLoad(target);
@@ -243,10 +331,80 @@ var ConditionBuilderWithRemoteOptions = (0, WithRemoteConfig_1.withRemoteConfig)
243
331
  else {
244
332
  updateConfig((0, helper_1.mapTree)(config, function (link) {
245
333
  return target === link
246
- ? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, link), { unfolded: !link.unfolded }) : link;
334
+ ? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, link), { unfolded: forceFold ? false : !link.unfolded }) : link;
247
335
  }), 'toggle');
248
336
  }
249
337
  };
338
+ class_1.prototype.dragUpdate = function (dropInfo) {
339
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
340
+ var links, nodeId, dragLink, position, sourceIdx, idx;
341
+ return (0, tslib_1.__generator)(this, function (_a) {
342
+ switch (_a.label) {
343
+ case 0:
344
+ links = this.props.config;
345
+ nodeId = dropInfo.nodeId, dragLink = dropInfo.dragLink, position = dropInfo.position;
346
+ if (dragLink) {
347
+ sourceIdx = (0, helper_1.findTreeIndex)(links, function (link) { return link.__id === dragLink.__id; });
348
+ links = (0, helper_1.spliceTree)(links, sourceIdx, 1);
349
+ if (position === 'self') {
350
+ // 插入到对应节点的children中
351
+ (0, helper_1.mapTree)(links, function (link) {
352
+ if (link.__id === nodeId) {
353
+ if (!link.children) {
354
+ link.children = [];
355
+ }
356
+ link.children.push(dragLink);
357
+ }
358
+ return link;
359
+ });
360
+ }
361
+ else {
362
+ idx = (0, helper_1.findTreeIndex)(links, function (link) { return link.__id === nodeId; });
363
+ // 插入节点之后
364
+ if (position === 'bottom') {
365
+ idx.push(idx.pop() + 1);
366
+ }
367
+ links = (0, helper_1.spliceTree)(links, idx, 0, dragLink);
368
+ }
369
+ }
370
+ this.props.updateConfig(links, 'update');
371
+ return [4 /*yield*/, this.saveOrder((0, helper_1.mapTree)(links, function (link) {
372
+ // 清除内部加的字段
373
+ for (var key in link) {
374
+ if (/^__.*$/.test(key)) {
375
+ delete link[key];
376
+ }
377
+ }
378
+ return link;
379
+ }))];
380
+ case 1:
381
+ _a.sent();
382
+ return [2 /*return*/];
383
+ }
384
+ });
385
+ });
386
+ };
387
+ class_1.prototype.saveOrder = function (links) {
388
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
389
+ var _a, saveOrderApi, env, data, reload;
390
+ return (0, tslib_1.__generator)(this, function (_b) {
391
+ switch (_b.label) {
392
+ case 0:
393
+ _a = this.props, saveOrderApi = _a.saveOrderApi, env = _a.env, data = _a.data, reload = _a.reload;
394
+ if (!(saveOrderApi && (0, api_1.isEffectiveApi)(saveOrderApi))) return [3 /*break*/, 2];
395
+ return [4 /*yield*/, env.fetcher(saveOrderApi, (0, helper_1.createObject)(data, { data: links }), { method: 'post' })];
396
+ case 1:
397
+ _b.sent();
398
+ reload();
399
+ return [3 /*break*/, 3];
400
+ case 2:
401
+ env.alert('NAV saveOrderApi is required!');
402
+ _b.label = 3;
403
+ case 3: return [2 /*return*/];
404
+ }
405
+ });
406
+ });
407
+ };
250
408
  class_1.prototype.handleSelect = function (link) {
251
409
  var _a = this.props, onSelect = _a.onSelect, env = _a.env, data = _a.data;
252
410
  if (onSelect && onSelect(link) === false) {
@@ -262,7 +420,7 @@ var ConditionBuilderWithRemoteOptions = (0, WithRemoteConfig_1.withRemoteConfig)
262
420
  };
263
421
  class_1.prototype.render = function () {
264
422
  var _a = this.props, loading = _a.loading, config = _a.config, deferLoad = _a.deferLoad, updateConfig = _a.updateConfig, rest = (0, tslib_1.__rest)(_a, ["loading", "config", "deferLoad", "updateConfig"]);
265
- return (react_1.default.createElement(ThemedNavigation, (0, tslib_1.__assign)({}, rest, { loading: loading, links: config || rest.links || [], disabled: loading, onSelect: this.handleSelect, onToggle: this.toggleLink })));
423
+ return (react_1.default.createElement(ThemedNavigation, (0, tslib_1.__assign)({}, rest, { loading: loading, links: config || rest.links || [], disabled: loading, onSelect: this.handleSelect, onToggle: this.toggleLink, onDragUpdate: this.dragUpdate })));
266
424
  };
267
425
  return class_1;
268
426
  }(react_1.default.Component)));
@@ -299,7 +457,7 @@ var NavigationRenderer = /** @class */ (function (_super) {
299
457
  var rest = (0, tslib_1.__rest)(this.props, []);
300
458
  return (react_1.default.createElement(ConditionBuilderWithRemoteOptions, (0, tslib_1.__assign)({}, rest, { reload: this.reload, remoteConfigRef: this.remoteConfigRef })));
301
459
  };
302
- var _a, _b;
460
+ var _e, _f;
303
461
  NavigationRenderer.contextType = Scoped_1.ScopedContext;
304
462
  (0, tslib_1.__decorate)([
305
463
  helper_1.autobind,
@@ -324,7 +482,7 @@ var NavigationRenderer = /** @class */ (function (_super) {
324
482
  test: /(^|\/)(?:nav|navigation)$/,
325
483
  name: 'nav'
326
484
  }),
327
- (0, tslib_1.__metadata)("design:paramtypes", [typeof (_a = typeof factory_1.RendererProps !== "undefined" && factory_1.RendererProps) === "function" ? _a : Object, typeof (_b = typeof Scoped_1.IScopedContext !== "undefined" && Scoped_1.IScopedContext) === "function" ? _b : Object])
485
+ (0, tslib_1.__metadata)("design:paramtypes", [typeof (_e = typeof factory_1.RendererProps !== "undefined" && factory_1.RendererProps) === "function" ? _e : Object, typeof (_f = typeof Scoped_1.IScopedContext !== "undefined" && Scoped_1.IScopedContext) === "function" ? _f : Object])
328
486
  ], NavigationRenderer);
329
487
  return NavigationRenderer;
330
488
  }(react_1.default.Component));
@@ -6,8 +6,8 @@
6
6
  "/src/renderers/Nav.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport Sortable from 'sortablejs';\nimport {Renderer, RendererEnv, RendererProps} from '../factory';\nimport getExprProperties from '../utils/filter-schema';\nimport {filter, evalExpression} from '../utils/tpl';\nimport {\n guid,\n autobind,\n createObject,\n findTree,\n isUnfolded,\n mapTree,\n someTree,\n spliceTree\n} from '../utils/helper';\nimport {ScopedContext, IScopedContext} from '../Scoped';\nimport {themeable, ThemeProps} from '../theme';\nimport {Icon} from '../components/icons';\nimport {BaseSchema, SchemaApi, SchemaIcon, SchemaUrlPath, SchemaCollection} from '../Schema';\nimport {generateIcon} from '../utils/icon';\nimport {\n RemoteOptionsProps,\n withRemoteConfig\n} from '../components/WithRemoteConfig';\nimport {Payload} from '../types';\nimport Spinner from '../components/Spinner';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {isEffectiveApi} from '../utils/api';\nimport {Badge, BadgeSchema} from '../components/Badge';\n\nexport type NavItemSchema = {\n /**\n * 文字说明\n */\n label?: string | SchemaCollection;\n\n /**\n * 图标类名,参考 fontawesome 4。\n */\n icon?: SchemaIcon;\n\n to?: SchemaUrlPath;\n\n target?: string;\n\n unfolded?: boolean;\n active?: boolean;\n\n defer?: boolean;\n deferApi?: SchemaApi;\n\n children?: Array<NavItemSchema>;\n\n /**\n * 角标\n */\n badge?: BadgeSchema\n} & Omit<BaseSchema, 'type'>;\n\n/**\n * Nav 导航渲染器\n * 文档:https://baidu.gitee.io/amis/docs/components/nav\n */\nexport interface NavSchema extends BaseSchema {\n /**\n * 指定为 Nav 导航渲染器\n */\n type: 'nav';\n\n /**\n * 链接地址集合\n */\n links?: Array<NavItemSchema>;\n\n /**\n * @default 24\n */\n indentSize: number;\n\n /**\n * 可以通过 API 拉取。\n */\n source?: SchemaApi;\n\n /**\n * 懒加载 api,如果不配置复用 source 接口。\n */\n deferApi?: SchemaApi;\n\n /**\n * true 为垂直排列,false 为水平排列类似如 tabs。\n */\n stacked?: boolean;\n\n /**\n * 更多操作菜单列表\n */\n itemActions?: SchemaCollection;\n\n /**\n * 可拖拽\n */\n draggable?: boolean;\n\n /**\n * 保存排序的 api\n */\n saveOrderApi?: SchemaApi;\n\n /**\n * 角标\n */\n badge?: BadgeSchema;\n}\n\nexport interface Link {\n className?: string;\n label?: string | SchemaCollection;\n to?: string;\n target?: string;\n icon?: string;\n active?: boolean;\n activeOn?: string;\n unfolded?: boolean;\n children?: Links;\n defer?: boolean;\n loading?: boolean;\n loaded?: boolean;\n [propName: string]: any;\n badge?: BadgeSchema\n}\nexport interface Links extends Array<Link> {}\n\nexport interface NavigationState {\n links: Links;\n error?: string;\n}\n\nexport interface NavigationProps\n extends ThemeProps,\n Omit<NavSchema, 'type' | 'className'> {\n onSelect?: (item: Link) => void | false;\n onToggle?: (item: Link) => void;\n togglerClassName?: string;\n links?: Array<Link>;\n loading?: boolean;\n render: RendererProps['render'];\n env: RendererEnv;\n reload?: any;\n}\n\nexport class Navigation extends React.Component<\n NavigationProps,\n NavigationState\n> {\n static defaultProps = {\n indentSize: 24\n };\n sortable: Sortable[] = [];\n id: string;\n dragRef?: HTMLElement;\n\n @autobind\n handleClick(link: Link) {\n this.props.onSelect?.(link);\n }\n\n @autobind\n toggleLink(target: Link) {\n this.props.onToggle?.(target);\n }\n\n @autobind\n dragRefFn(ref: any) {\n const {draggable} = this.props;\n if (ref && draggable) {\n this.id = guid();\n this.initDragging(ref);\n }\n }\n\n initDragging(ref: HTMLElement) {\n const ns = this.props.classPrefix;\n this.sortable.push(new Sortable(\n ref,\n {\n group: `nav-${this.id}`,\n animation: 150,\n handle: `.${ns}Nav-itemDrager`,\n ghostClass: `${ns}Nav-item--dragging`,\n onEnd: async (e: any) => {\n // 没有移动\n if (e.newIndex === e.oldIndex) {\n return;\n }\n const id = e.item.getAttribute('data-id');\n const parentNode = e.to\n if (\n e.newIndex < e.oldIndex &&\n e.oldIndex < parentNode.childNodes.length - 1\n ) {\n parentNode.insertBefore(e.item, parentNode.childNodes[e.oldIndex + 1]);\n } else if (e.oldIndex < parentNode.childNodes.length - 1) {\n parentNode.insertBefore(e.item, parentNode.childNodes[e.oldIndex]);\n } else {\n parentNode.appendChild(e.item);\n }\n const links = cloneDeep(this.props.links) as Link[];\n let parent = links;\n someTree(links, (item: Link, key, level, paths: Link[]) => {\n if (item.id === id) {\n const len = paths.length - 1;\n parent = (~len ? paths[len].children : links) as Link[];\n return true;\n }\n return false;\n });\n parent.splice(e.newIndex, 0, parent.splice(e.oldIndex, 1)[0]);\n const {saveOrderApi, env} = this.props;\n if (saveOrderApi && isEffectiveApi(saveOrderApi)) {\n await env.fetcher(saveOrderApi as SchemaApi, {data: links}, {method: 'post'});\n this.props.reload();\n } else {\n console.warn('请配置saveOrderApi');\n }\n }\n }\n ));\n }\n\n renderItem(link: Link, index: number, depth = 1) {\n if (link.hidden === true || link.visible === false) {\n return null;\n }\n const isActive: boolean = !!link.active;\n const {\n disabled,\n togglerClassName,\n classnames: cx,\n indentSize,\n render,\n itemActions,\n draggable,\n links,\n badge: defaultBadge\n } = this.props;\n const hasSub =\n (link.defer && !link.loaded) || (link.children && link.children.length);\n const id = guid();\n link.id = id;\n const badge = defaultBadge ? Object.assign(defaultBadge, link.badge) : link.badge;\n return (\n <li\n key={index}\n className={cx('Nav-item', link.className, {\n 'is-disabled': disabled || link.disabled || link.loading,\n 'is-active': isActive,\n 'is-unfolded': link.unfolded,\n 'has-sub': hasSub\n })}\n data-id={id}\n >\n <Badge classnames={cx} badge={badge} data={link}>\n <a\n onClick={this.handleClick.bind(this, link)}\n style={{paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)}}\n >\n {!disabled && draggable && links && links.length > 1 ? (\n <div className={cx('Nav-itemDrager')} >\n <a\n key=\"drag\"\n data-position=\"bottom\"\n >\n <Icon icon=\"drag-bar\" className=\"icon\" />\n </a>\n </div>\n ) : null}\n {link.loading ? (\n <Spinner\n size=\"sm\"\n show\n icon=\"reload\"\n spinnerClassName={cx('Nav-spinner')}\n />\n ) : hasSub ? (\n <span\n onClick={() => this.toggleLink(link)}\n className={cx('Nav-itemToggler', togglerClassName)}\n >\n <Icon icon=\"caret\" className=\"icon\" />\n </span>\n ) : null}\n {generateIcon(cx, link.icon, 'Nav-itemIcon')}\n {\n link.label && (typeof link.label === 'string'\n ? link.label\n : render('inline', link.label as SchemaCollection))\n }\n </a>\n {\n // 更多操作\n itemActions\n ? <div className={cx('Nav-item-atcions')}>\n {\n render('inline', itemActions, {data: link})\n }\n </div> : null\n }\n {Array.isArray(link.children) && link.children.length ? (\n <ul className={cx('Nav-subItems')} ref={this.dragRefFn}>\n {link.children.map((link, index) =>\n this.renderItem(link, index, depth + 1)\n )}\n </ul>\n ) : null}\n </Badge>\n </li>\n );\n }\n\n render(): JSX.Element {\n const {className, stacked, classnames: cx, links, loading} = this.props;\n\n return (\n <ul\n className={cx('Nav', className, stacked ? 'Nav--stacked' : 'Nav--tabs')}\n ref={this.dragRefFn}\n >\n {Array.isArray(links)\n ? links.map((item, index) => this.renderItem(item, index))\n : null}\n\n <Spinner show={!!loading} overlay icon=\"reload\" />\n </ul>\n );\n }\n}\n\nconst ThemedNavigation = themeable(Navigation);\n\nconst ConditionBuilderWithRemoteOptions = withRemoteConfig({\n adaptor: (config: any, props: any) => {\n const links = Array.isArray(config)\n ? config\n : config.links || config.options || config.items || config.rows;\n\n if (!Array.isArray(links)) {\n throw new Error('\bpayload.data.options is not array.');\n }\n\n return links;\n },\n afterLoad: (response: any, config: any, props: any) => {\n if (response.value && !someTree(config, item => item.active)) {\n const {env} = props;\n\n env.jumpTo(filter(response.value as string, props.data));\n }\n },\n normalizeConfig(\n links: Array<Link>,\n origin: Array<Link> | undefined,\n props: any,\n motivation?: string\n ) {\n if (Array.isArray(links) && motivation !== 'toggle') {\n const {data, env, unfoldedField, foldedField} = props;\n\n links = mapTree(\n links,\n (link: Link) => {\n const item: any = {\n ...link,\n ...getExprProperties(link, data as object),\n active:\n (motivation !== 'location-change' && link.active) ||\n (link.activeOn\n ? evalExpression(link.activeOn as string, data)\n : !!(\n link.hasOwnProperty('to') &&\n env &&\n env.isCurrentUrl(filter(link.to as string, data))\n ))\n };\n\n item.unfolded =\n isUnfolded(item, {unfoldedField, foldedField}) ||\n (link.children && link.children.some(link => !!link.active));\n\n return item;\n },\n 1,\n true\n );\n }\n\n return links;\n },\n\n beforeDeferLoad(item: Link, indexes: Array<number>, links: Array<Link>) {\n return spliceTree(links, indexes, 1, {\n ...item,\n loading: true\n });\n },\n\n afterDeferLoad(\n item: Link,\n indexes: Array<number>,\n ret: Payload,\n links: Array<Link>\n ) {\n const newItem = {\n ...item,\n loading: false,\n loaded: true,\n error: ret.ok ? undefined : ret.msg\n };\n\n const children = Array.isArray(ret.data)\n ? ret.data\n : ret.data.links || ret.data.options || ret.data.items || ret.data.rows;\n\n if (Array.isArray(children)) {\n newItem.children = children.concat();\n newItem.unfolded = true;\n }\n\n return spliceTree(links, indexes, 1, newItem);\n }\n})(\n class extends React.Component<\n RemoteOptionsProps &\n React.ComponentProps<typeof ThemedNavigation> & {\n location?: any;\n env?: RendererEnv;\n data?: any;\n unfoldedField?: string;\n foldedField?: string;\n reload?: any;\n }\n > {\n constructor(props: any) {\n super(props);\n this.toggleLink = this.toggleLink.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n }\n\n componentDidMount() {\n if (Array.isArray(this.props.links)) {\n this.props.updateConfig(this.props.links, 'mount');\n }\n }\n\n componentDidUpdate(prevProps: any) {\n if (this.props.location !== prevProps.location) {\n this.props.updateConfig(this.props.config, 'location-change');\n } else if (this.props.links !== prevProps.links) {\n this.props.updateConfig(this.props.links, 'update');\n }\n }\n\n toggleLink(target: Link) {\n const {config, updateConfig, deferLoad} = this.props;\n\n if (target.defer && !target.loaded) {\n deferLoad(target);\n } else {\n updateConfig(\n mapTree(config, (link: Link) =>\n target === link\n ? {\n ...link,\n unfolded: !link.unfolded\n }\n : link\n ),\n 'toggle'\n );\n }\n }\n\n handleSelect(link: Link) {\n const {onSelect, env, data} = this.props;\n if (onSelect && onSelect(link) === false) {\n return;\n }\n\n if (\n !link.to &&\n ((link.children && link.children.length) ||\n (link.defer && !link.loaded))\n ) {\n this.toggleLink(link);\n return;\n }\n\n env?.jumpTo(filter(link.to as string, data), link as any);\n }\n\n render() {\n const {loading, config, deferLoad, updateConfig, ...rest} = this.props;\n\n return (\n <ThemedNavigation\n {...rest}\n loading={loading}\n links={config || rest.links || []}\n disabled={loading}\n onSelect={this.handleSelect}\n onToggle={this.toggleLink}\n />\n );\n }\n }\n);\n\nexport default ThemedNavigation;\n@Renderer({\n test: /(^|\\/)(?:nav|navigation)$/,\n name: 'nav'\n})\nexport class NavigationRenderer extends React.Component<RendererProps> {\n static contextType = ScopedContext;\n\n remoteRef:\n | {\n loadConfig: (ctx?: any) => Promise<any> | void;\n setConfig: (value: any) => void;\n }\n | undefined = undefined;\n\n @autobind\n remoteConfigRef(ref: any) {\n this.remoteRef = ref;\n }\n\n constructor(props: RendererProps, context: IScopedContext) {\n super(props);\n\n const scoped = context;\n scoped.registerComponent(this);\n }\n\n componentWillUnmount() {\n const scoped = this.context as IScopedContext;\n scoped.unRegisterComponent(this);\n }\n\n @autobind\n reload(target?: string, query?: any, values?: object) {\n if (query) {\n return this.receive(query);\n }\n\n const {data, env, source, translate: __} = this.props;\n const finalData = values ? createObject(data, values) : data;\n\n this.remoteRef?.loadConfig(finalData);\n }\n\n @autobind\n receive(values: object) {\n this.reload(undefined, undefined, values);\n }\n\n render() {\n const {...rest} = this.props;\n\n return (\n <ConditionBuilderWithRemoteOptions\n {...rest}\n reload={this.reload}\n remoteConfigRef={this.remoteConfigRef}\n />\n );\n }\n}\n"
11
+ "import React from 'react';\nimport {findDOMNode} from 'react-dom';\nimport {Renderer, RendererEnv, RendererProps} from '../factory';\nimport getExprProperties from '../utils/filter-schema';\nimport {filter, evalExpression} from '../utils/tpl';\nimport {\n guid,\n autobind,\n createObject,\n findTree,\n isUnfolded,\n mapTree,\n someTree,\n spliceTree,\n findTreeIndex\n} from '../utils/helper';\nimport {ScopedContext, IScopedContext} from '../Scoped';\nimport {themeable, ThemeProps} from '../theme';\nimport {Icon} from '../components/icons';\nimport {BaseSchema, SchemaApi, SchemaIcon, SchemaUrlPath, SchemaCollection} from '../Schema';\nimport {generateIcon} from '../utils/icon';\nimport {\n RemoteOptionsProps,\n withRemoteConfig\n} from '../components/WithRemoteConfig';\nimport {Payload} from '../types';\nimport Spinner from '../components/Spinner';\nimport {isEffectiveApi} from '../utils/api';\nimport {Badge, BadgeSchema} from '../components/Badge';\n\nexport type NavItemSchema = {\n /**\n * 文字说明\n */\n label?: string | SchemaCollection;\n\n /**\n * 图标类名,参考 fontawesome 4。\n */\n icon?: SchemaIcon;\n\n to?: SchemaUrlPath;\n\n target?: string;\n\n unfolded?: boolean;\n active?: boolean;\n\n defer?: boolean;\n deferApi?: SchemaApi;\n\n children?: Array<NavItemSchema>;\n} & Omit<BaseSchema, 'type'>;\n\n/**\n * Nav 导航渲染器\n * 文档:https://baidu.gitee.io/amis/docs/components/nav\n */\nexport interface NavSchema extends BaseSchema {\n /**\n * 指定为 Nav 导航渲染器\n */\n type: 'nav';\n\n /**\n * 链接地址集合\n */\n links?: Array<NavItemSchema>;\n\n /**\n * @default 24\n */\n indentSize: number;\n\n /**\n * 可以通过 API 拉取。\n */\n source?: SchemaApi;\n\n /**\n * 懒加载 api,如果不配置复用 source 接口。\n */\n deferApi?: SchemaApi;\n\n /**\n * true 为垂直排列,false 为水平排列类似如 tabs。\n */\n stacked?: boolean;\n\n /**\n * 更多操作菜单列表\n */\n itemActions?: SchemaCollection;\n\n /**\n * 可拖拽\n */\n draggable?: boolean;\n\n /**\n * 保存排序的 api\n */\n saveOrderApi?: SchemaApi;\n\n /**\n * 角标\n */\n itemBadge?: BadgeSchema;\n\n /**\n * 仅允许同层级拖拽\n */\n dragOnSameLevel?: boolean;\n}\n\nexport interface Link {\n className?: string;\n label?: string | SchemaCollection;\n to?: string;\n target?: string;\n icon?: string;\n active?: boolean;\n activeOn?: string;\n unfolded?: boolean;\n children?: Links;\n defer?: boolean;\n loading?: boolean;\n loaded?: boolean;\n [propName: string]: any;\n itemBadge?: BadgeSchema;\n}\nexport interface Links extends Array<Link> {}\n\nexport interface NavigationState {\n links?: Links;\n error?: string;\n dropIndicator?: {\n top: number;\n left: number;\n width: number;\n height?: number;\n opacity?: number;\n };\n}\n\nexport interface NavigationProps\n extends ThemeProps,\n Omit<NavSchema, 'type' | 'className'> {\n onSelect?: (item: Link) => void | false;\n onToggle?: (item: Link, forceFold?: boolean) => void;\n onDragUpdate?: (dropInfo: IDropInfo) => void;\n togglerClassName?: string;\n links?: Array<Link>;\n loading?: boolean;\n render: RendererProps['render'];\n env: RendererEnv;\n data: Object;\n reload?: any;\n}\n\nexport interface IDropInfo {\n dragLink: Link | null;\n nodeId: string;\n position: string;\n rect: DOMRect;\n height: number;\n left: number;\n}\n\nexport class Navigation extends React.Component<\n NavigationProps,\n NavigationState\n> {\n static defaultProps = {\n indentSize: 24\n };\n\n dragNode: {\n node: HTMLElement;\n link: Link | null;\n } | null;\n dropInfo: IDropInfo | null;\n startPoint: {\n y: number;\n x: number;\n } = {\n y: 0,\n x: 0\n };\n state: NavigationState = {};\n\n @autobind\n handleClick(link: Link) {\n this.props.onSelect?.(link);\n }\n\n @autobind\n toggleLink(target: Link, forceFold?: boolean) {\n this.props.onToggle?.(target, forceFold);\n }\n\n @autobind\n getDropInfo(e: DragEvent, id: string, depth: number): IDropInfo {\n const {dragOnSameLevel, indentSize} = this.props;\n let rect = (e.target as HTMLElement).getBoundingClientRect();\n const dragLink = this.dragNode?.link as Link;\n const {top, height, width} = rect;\n let {clientY, clientX} = e;\n const left = depth * (parseInt(indentSize as any, 10) ?? 24);\n const deltaX = left + width * .2;\n let position;\n if (clientY >= top + height / 2 ) {\n position = 'bottom';\n } else {\n position = 'top';\n }\n if (!dragOnSameLevel && position === 'bottom' && clientX >= this.startPoint.x + deltaX) {\n position = 'self';\n }\n return {\n nodeId: id,\n dragLink,\n position,\n rect,\n height,\n left\n };\n }\n @autobind\n updateDropIndicator(e: DragEvent) {\n const {dragOnSameLevel} = this.props;\n const target = e.target as HTMLElement; // a标签\n const targetId = target.getAttribute('data-id') as string;\n const targetDepth = Number(target.getAttribute('data-depth'));\n if (dragOnSameLevel\n && this.dragNode?.node.parentElement !== target.parentElement?.parentElement\n ) {\n this.setState({dropIndicator: undefined});\n this.dropInfo = null;\n return;\n }\n this.dropInfo = this.getDropInfo(e, targetId, targetDepth);\n let {position, rect, dragLink, height, left} = this.dropInfo;\n if (targetId === dragLink?.__id) {\n this.setState({dropIndicator: undefined});\n this.dropInfo = null;\n return;\n }\n const ul = (findDOMNode(this) as HTMLElement).firstChild as HTMLElement;\n if (position === 'self') {\n this.setState({\n dropIndicator: {\n top: rect.top - ul.getBoundingClientRect().top,\n left,\n width: ul.getBoundingClientRect().width - left,\n height,\n opacity: .2\n }\n });\n } else {\n this.setState({\n dropIndicator: {\n top: (position === 'bottom' ? rect.top + rect.height : rect.top) - ul.getBoundingClientRect().top,\n left,\n width: ul.getBoundingClientRect().width - left\n }\n });\n }\n }\n\n @autobind\n handleDragStart(link: Link) {\n return (e: React.DragEvent) => {\n e.stopPropagation();\n const currentTarget = e.currentTarget as HTMLElement;\n e.dataTransfer.effectAllowed = 'copyMove';\n e.dataTransfer.setDragImage(currentTarget, 0, 0);\n this.dragNode = {\n node: currentTarget,\n link: link\n };\n this.dropInfo = null;\n this.startPoint = {\n x: e.clientX,\n y: e.clientY\n };\n currentTarget.addEventListener('dragend', this.handleDragEnd);\n document.body.addEventListener('dragover', this.handleDragOver);\n };\n }\n\n @autobind\n handleDragOver(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.dragNode) {\n return;\n }\n const target = e.target as HTMLElement;\n const id = target.getAttribute('data-id');\n if (!id) {\n return;\n }\n this.updateDropIndicator(e);\n }\n\n @autobind\n handleDragEnd(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n dropIndicator: undefined\n });\n const currentTarget = e.currentTarget as HTMLElement;\n const id = currentTarget.getAttribute('data-id');\n let nodeId = this.dropInfo?.nodeId;\n if (!this.dropInfo || !nodeId || id === nodeId) {\n return;\n }\n currentTarget.removeEventListener('dragend', this.handleDragEnd);\n document.body.removeEventListener('dragover', this.handleDragOver);\n\n this.props.onDragUpdate?.(this.dropInfo);\n this.dragNode = null;\n this.dropInfo = null;\n }\n\n renderItem(link: Link, index: number, depth = 1) {\n if (link.hidden === true || link.visible === false) {\n return null;\n }\n const isActive: boolean = !!link.active;\n const {\n disabled,\n togglerClassName,\n classnames: cx,\n indentSize,\n render,\n itemActions,\n draggable,\n links,\n itemBadge,\n data: defaultData\n } = this.props;\n const hasSub =\n (link.defer && !link.loaded) || (link.children && link.children.length);\n return (\n <li\n key={link.__id}\n data-id={link.__id}\n className={cx('Nav-item', link.className, {\n 'is-disabled': disabled || link.disabled || link.loading,\n 'is-active': isActive,\n 'is-unfolded': link.unfolded,\n 'has-sub': hasSub\n })}\n onDragStart={this.handleDragStart(link)}\n >\n <Badge classnames={cx} badge={itemBadge} data={createObject(defaultData, link)}>\n <a\n data-id={link.__id}\n data-depth={depth}\n onClick={this.handleClick.bind(this, link)}\n style={{paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)}}\n >\n {!disabled && draggable && links && links.length > 1 ? (\n <div className={cx('Nav-itemDrager')}\n draggable\n onMouseDown={e => {this.toggleLink(link, true); e.stopPropagation()}}\n >\n <Icon icon=\"drag-bar\" className=\"icon\" />\n </div>\n ) : null}\n {link.loading ? (\n <Spinner\n size=\"sm\"\n show\n icon=\"reload\"\n spinnerClassName={cx('Nav-spinner')}\n />\n ) : hasSub ? (\n <span\n onClick={() => this.toggleLink(link)}\n className={cx('Nav-itemToggler', togglerClassName)}\n >\n <Icon icon=\"caret\" className=\"icon\" />\n </span>\n ) : null}\n {generateIcon(cx, link.icon, 'Nav-itemIcon')}\n {\n link.label && (typeof link.label === 'string'\n ? link.label\n : render('inline', link.label as SchemaCollection))\n }\n </a>\n {\n // 更多操作\n itemActions\n ? <div className={cx('Nav-item-atcions')}>\n {\n render('inline', itemActions, {data: createObject(defaultData, link)})\n }\n </div> : null\n }\n {Array.isArray(link.children) && link.children.length ? (\n <ul className={cx('Nav-subItems')}>\n {link.children.map((link, index) =>\n this.renderItem(link, index, depth + 1)\n )}\n </ul>\n ) : null}\n </Badge>\n </li>\n );\n }\n\n render(): JSX.Element {\n const {className, stacked, classnames: cx, links, loading} = this.props;\n const {dropIndicator} = this.state;\n return (\n <div className={cx('Nav')}>\n <ul className={cx('Nav-list', className, stacked ? 'Nav-list--stacked' : 'Nav-list--tabs')}>\n {Array.isArray(links)\n ? links.map((item, index) => this.renderItem(item, index))\n : null}\n\n <Spinner show={!!loading} overlay icon=\"reload\" />\n </ul>\n {(dropIndicator\n ? <div className={cx('Nav-dropIndicator')} style={dropIndicator} />\n : null\n )}\n </div>\n );\n }\n}\n\nconst ThemedNavigation = themeable(Navigation);\n\nconst ConditionBuilderWithRemoteOptions = withRemoteConfig({\n adaptor: (config: any, props: any) => {\n const links = Array.isArray(config)\n ? config\n : config.links || config.options || config.items || config.rows;\n\n if (!Array.isArray(links)) {\n throw new Error('\bpayload.data.options is not array.');\n }\n\n return links;\n },\n afterLoad: (response: any, config: any, props: any) => {\n if (response.value && !someTree(config, item => item.active)) {\n const {env} = props;\n\n env.jumpTo(filter(response.value as string, props.data));\n }\n },\n normalizeConfig(\n links: Array<Link>,\n origin: Array<Link> | undefined,\n props: any,\n motivation?: string\n ) {\n if (Array.isArray(links) && motivation !== 'toggle') {\n const {data, env, unfoldedField, foldedField} = props;\n\n links = mapTree(\n links,\n (link: Link) => {\n const item: any = {\n ...link,\n ...getExprProperties(link, data as object),\n active:\n (motivation !== 'location-change' && link.active) ||\n (link.activeOn\n ? evalExpression(link.activeOn as string, data)\n : !!(\n link.hasOwnProperty('to') &&\n env &&\n env.isCurrentUrl(filter(link.to as string, data))\n )),\n __id: guid()\n };\n\n item.unfolded =\n isUnfolded(item, {unfoldedField, foldedField}) ||\n (link.children && link.children.some(link => !!link.active));\n\n return item;\n },\n 1,\n true\n );\n }\n\n return links;\n },\n\n beforeDeferLoad(item: Link, indexes: Array<number>, links: Array<Link>) {\n return spliceTree(links, indexes, 1, {\n ...item,\n loading: true\n });\n },\n\n afterDeferLoad(\n item: Link,\n indexes: Array<number>,\n ret: Payload,\n links: Array<Link>\n ) {\n const newItem = {\n ...item,\n loading: false,\n loaded: true,\n error: ret.ok ? undefined : ret.msg\n };\n\n const children = Array.isArray(ret.data)\n ? ret.data\n : ret.data.links || ret.data.options || ret.data.items || ret.data.rows;\n\n if (Array.isArray(children)) {\n newItem.children = children.concat();\n newItem.unfolded = true;\n }\n\n return spliceTree(links, indexes, 1, newItem);\n }\n})(\n class extends React.Component<\n RemoteOptionsProps &\n React.ComponentProps<typeof ThemedNavigation> & {\n location?: any;\n env?: RendererEnv;\n data?: any;\n unfoldedField?: string;\n foldedField?: string;\n reload?: any;\n }\n > {\n constructor(props: any) {\n super(props);\n this.toggleLink = this.toggleLink.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.dragUpdate = this.dragUpdate.bind(this);\n }\n\n componentDidMount() {\n if (Array.isArray(this.props.links)) {\n this.props.updateConfig(this.props.links, 'mount');\n }\n }\n\n componentDidUpdate(prevProps: any) {\n if (this.props.location !== prevProps.location) {\n this.props.updateConfig(this.props.config, 'location-change');\n } else if (this.props.links !== prevProps.links) {\n this.props.updateConfig(this.props.links, 'update');\n }\n }\n\n toggleLink(target: Link, forceFold?: boolean) {\n const {config, updateConfig, deferLoad} = this.props;\n\n if (target.defer && !target.loaded) {\n deferLoad(target);\n } else {\n updateConfig(\n mapTree(config, (link: Link) =>\n target === link\n ? {\n ...link,\n unfolded: forceFold ? false : !link.unfolded\n }\n : link\n ),\n 'toggle'\n );\n }\n }\n\n async dragUpdate(dropInfo: IDropInfo) {\n let links = this.props.config;\n const {nodeId, dragLink, position} = dropInfo;\n if (dragLink) {\n // 删除原节点\n const sourceIdx = findTreeIndex(links, link => link.__id === dragLink.__id) as number[];\n links = spliceTree(links, sourceIdx, 1);\n\n if (position === 'self') {\n // 插入到对应节点的children中\n mapTree(links, (link) => {\n if (link.__id === nodeId) {\n if (!link.children) {\n link.children = [];\n }\n link.children.push(dragLink);\n }\n return link;\n })\n } else {\n // 找到需要插入的节点\n const idx = findTreeIndex(links, link => link.__id === nodeId) as number[];\n // 插入节点之后\n if (position === 'bottom') {\n idx.push(idx.pop() as number + 1);\n }\n links = spliceTree(links, idx, 0, dragLink);\n }\n }\n this.props.updateConfig(links, 'update');\n await this.saveOrder(mapTree(links, (link: Link) => {\n // 清除内部加的字段\n for (let key in link) {\n if (/^__.*$/.test(key)) {\n delete link[key];\n }\n }\n return link;\n }));\n }\n\n async saveOrder(links: Links) {\n const {saveOrderApi, env, data, reload} = this.props;\n if (saveOrderApi && isEffectiveApi(saveOrderApi)) {\n await env.fetcher(saveOrderApi as SchemaApi,\n createObject(data, {data: links}),\n {method: 'post'}\n );\n reload();\n } else {\n env.alert('NAV saveOrderApi is required!');\n }\n }\n\n handleSelect(link: Link) {\n const {onSelect, env, data} = this.props;\n if (onSelect && onSelect(link) === false) {\n return;\n }\n\n if (\n !link.to &&\n ((link.children && link.children.length) ||\n (link.defer && !link.loaded))\n ) {\n this.toggleLink(link);\n return;\n }\n\n env?.jumpTo(filter(link.to as string, data), link as any);\n }\n\n render() {\n const {loading, config, deferLoad, updateConfig, ...rest} = this.props;\n return (\n <ThemedNavigation\n {...rest}\n loading={loading}\n links={config || rest.links || []}\n disabled={loading}\n onSelect={this.handleSelect}\n onToggle={this.toggleLink}\n onDragUpdate={this.dragUpdate}\n />\n );\n }\n }\n);\n\nexport default ThemedNavigation;\n@Renderer({\n test: /(^|\\/)(?:nav|navigation)$/,\n name: 'nav'\n})\nexport class NavigationRenderer extends React.Component<RendererProps> {\n static contextType = ScopedContext;\n\n remoteRef:\n | {\n loadConfig: (ctx?: any) => Promise<any> | void;\n setConfig: (value: any) => void;\n }\n | undefined = undefined;\n\n @autobind\n remoteConfigRef(ref: any) {\n this.remoteRef = ref;\n }\n\n constructor(props: RendererProps, context: IScopedContext) {\n super(props);\n\n const scoped = context;\n scoped.registerComponent(this);\n }\n\n componentWillUnmount() {\n const scoped = this.context as IScopedContext;\n scoped.unRegisterComponent(this);\n }\n\n @autobind\n reload(target?: string, query?: any, values?: object) {\n if (query) {\n return this.receive(query);\n }\n\n const {data, env, source, translate: __} = this.props;\n const finalData = values ? createObject(data, values) : data;\n\n this.remoteRef?.loadConfig(finalData);\n }\n\n @autobind\n receive(values: object) {\n this.reload(undefined, undefined, values);\n }\n\n render() {\n const {...rest} = this.props;\n\n return (\n <ConditionBuilderWithRemoteOptions\n {...rest}\n reload={this.reload}\n remoteConfigRef={this.remoteConfigRef}\n />\n );\n }\n}\n"
12
12
  ]
13
13
  }