amis 1.9.0-beta.12 → 1.9.0-beta.15

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 (365) hide show
  1. package/lib/Schema.d.ts +4 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/SchemaRenderer.d.ts +2 -2
  4. package/lib/SchemaRenderer.js +3 -3
  5. package/lib/SchemaRenderer.js.map +2 -2
  6. package/lib/actions/Action.d.ts +8 -6
  7. package/lib/actions/Action.js.map +2 -2
  8. package/lib/actions/AjaxAction.d.ts +10 -7
  9. package/lib/actions/AjaxAction.js +27 -21
  10. package/lib/actions/AjaxAction.js.map +2 -2
  11. package/lib/actions/BreakAction.d.ts +2 -2
  12. package/lib/actions/BreakAction.js.map +1 -1
  13. package/lib/actions/BroadcastAction.d.ts +3 -3
  14. package/lib/actions/BroadcastAction.js +3 -2
  15. package/lib/actions/BroadcastAction.js.map +2 -2
  16. package/lib/actions/CmptAction.d.ts +2 -2
  17. package/lib/actions/CmptAction.js +7 -9
  18. package/lib/actions/CmptAction.js.map +2 -2
  19. package/lib/actions/ContinueAction.d.ts +2 -2
  20. package/lib/actions/ContinueAction.js.map +1 -1
  21. package/lib/actions/CopyAction.d.ts +7 -4
  22. package/lib/actions/CopyAction.js +8 -6
  23. package/lib/actions/CopyAction.js.map +2 -2
  24. package/lib/actions/CustomAction.d.ts +2 -2
  25. package/lib/actions/CustomAction.js.map +1 -1
  26. package/lib/actions/DialogAction.d.ts +14 -8
  27. package/lib/actions/DialogAction.js +6 -6
  28. package/lib/actions/DialogAction.js.map +2 -2
  29. package/lib/actions/DrawerAction.d.ts +3 -3
  30. package/lib/actions/DrawerAction.js.map +1 -1
  31. package/lib/actions/EmailAction.d.ts +10 -7
  32. package/lib/actions/EmailAction.js +4 -5
  33. package/lib/actions/EmailAction.js.map +2 -2
  34. package/lib/actions/LinkAction.d.ts +19 -11
  35. package/lib/actions/LinkAction.js +6 -5
  36. package/lib/actions/LinkAction.js.map +2 -2
  37. package/lib/actions/LoopAction.d.ts +6 -3
  38. package/lib/actions/LoopAction.js +22 -20
  39. package/lib/actions/LoopAction.js.map +2 -2
  40. package/lib/actions/PageAction.d.ts +8 -5
  41. package/lib/actions/PageAction.js +3 -2
  42. package/lib/actions/PageAction.js.map +2 -2
  43. package/lib/actions/ParallelAction.d.ts +2 -2
  44. package/lib/actions/ParallelAction.js.map +1 -1
  45. package/lib/actions/SwitchAction.d.ts +2 -2
  46. package/lib/actions/SwitchAction.js.map +1 -1
  47. package/lib/actions/ToastAction.d.ts +2 -2
  48. package/lib/actions/ToastAction.js +6 -4
  49. package/lib/actions/ToastAction.js.map +2 -2
  50. package/lib/components/Editor.d.ts +84 -84
  51. package/lib/components/InputBox.js +1 -1
  52. package/lib/components/InputBox.js.map +2 -2
  53. package/lib/components/Pagination.d.ts +1175 -0
  54. package/lib/components/Pagination.js +274 -0
  55. package/lib/components/Pagination.js.map +13 -0
  56. package/lib/components/PickerContainer.d.ts +1 -0
  57. package/lib/components/PickerContainer.js +3 -2
  58. package/lib/components/PickerContainer.js.map +2 -2
  59. package/lib/components/Rating.js +11 -9
  60. package/lib/components/Rating.js.map +2 -2
  61. package/lib/components/Select.js +3 -3
  62. package/lib/components/Select.js.map +2 -2
  63. package/lib/components/Tag.d.ts +148 -0
  64. package/lib/components/Tag.js +96 -0
  65. package/lib/components/Tag.js.map +13 -0
  66. package/lib/components/TooltipWrapper.d.ts +25 -21
  67. package/lib/components/TooltipWrapper.js +11 -1
  68. package/lib/components/TooltipWrapper.js.map +2 -2
  69. package/lib/components/TransferDropDown.d.ts +85 -84
  70. package/lib/components/TransferDropDown.js +2 -2
  71. package/lib/components/TransferDropDown.js.map +2 -2
  72. package/lib/components/Tree.d.ts +84 -84
  73. package/lib/components/formula/VariableList.d.ts +1 -0
  74. package/lib/components/formula/VariableList.js.map +2 -2
  75. package/lib/components/icons.js +2 -0
  76. package/lib/components/icons.js.map +2 -2
  77. package/lib/components/index.d.ts +4 -1
  78. package/lib/components/index.js +7 -1
  79. package/lib/components/index.js.map +2 -2
  80. package/lib/components/schema-editor/Array.d.ts +11 -0
  81. package/lib/components/schema-editor/Array.js +66 -0
  82. package/lib/components/schema-editor/Array.js.map +13 -0
  83. package/lib/components/schema-editor/Common.d.ts +29 -0
  84. package/lib/components/schema-editor/Common.js +69 -0
  85. package/lib/components/schema-editor/Common.js.map +13 -0
  86. package/lib/components/schema-editor/Item.d.ts +9 -0
  87. package/lib/components/schema-editor/Item.js +31 -0
  88. package/lib/components/schema-editor/Item.js.map +13 -0
  89. package/lib/components/schema-editor/Object.d.ts +44 -0
  90. package/lib/components/schema-editor/Object.js +191 -0
  91. package/lib/components/schema-editor/Object.js.map +13 -0
  92. package/lib/components/schema-editor/SchemaVariableList.d.ts +316 -0
  93. package/lib/components/schema-editor/SchemaVariableList.js +74 -0
  94. package/lib/components/schema-editor/SchemaVariableList.js.map +13 -0
  95. package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +305 -0
  96. package/lib/components/schema-editor/SchemaVariableListPicker.js +32 -0
  97. package/lib/components/schema-editor/SchemaVariableListPicker.js.map +13 -0
  98. package/lib/components/schema-editor/index.d.ts +520 -0
  99. package/lib/components/schema-editor/index.js +118 -0
  100. package/lib/components/schema-editor/index.js.map +13 -0
  101. package/lib/components/table/Cell.d.ts +930 -0
  102. package/lib/components/table/Cell.js +36 -0
  103. package/lib/components/table/Cell.js.map +13 -0
  104. package/lib/components/table/HeadCellDropDown.d.ts +514 -0
  105. package/lib/components/table/HeadCellDropDown.js +52 -0
  106. package/lib/components/table/HeadCellDropDown.js.map +13 -0
  107. package/lib/components/table/HeadCellFilter.d.ts +771 -0
  108. package/lib/components/table/HeadCellFilter.js +106 -0
  109. package/lib/components/table/HeadCellFilter.js.map +13 -0
  110. package/lib/components/table/HeadCellSelect.d.ts +672 -0
  111. package/lib/components/table/HeadCellSelect.js +46 -0
  112. package/lib/components/table/HeadCellSelect.js.map +13 -0
  113. package/lib/components/table/HeadCellSort.d.ts +498 -0
  114. package/lib/components/table/HeadCellSort.js +67 -0
  115. package/lib/components/table/HeadCellSort.js.map +13 -0
  116. package/lib/components/table/index.d.ts +1355 -0
  117. package/lib/components/table/index.js +1095 -0
  118. package/lib/components/table/index.js.map +13 -0
  119. package/lib/env.d.ts +2 -4
  120. package/lib/env.js.map +2 -2
  121. package/lib/factory.js +0 -95
  122. package/lib/factory.js.map +2 -2
  123. package/lib/icons/dot.js +11 -0
  124. package/lib/index.d.ts +6 -1
  125. package/lib/index.js +9 -2
  126. package/lib/index.js.map +2 -2
  127. package/lib/locale/de-DE.js +18 -1
  128. package/lib/locale/de-DE.js.map +2 -2
  129. package/lib/locale/en-US.js +18 -1
  130. package/lib/locale/en-US.js.map +2 -2
  131. package/lib/locale/zh-CN.js +20 -1
  132. package/lib/locale/zh-CN.js.map +2 -2
  133. package/lib/renderers/Action.js +0 -2
  134. package/lib/renderers/Action.js.map +2 -2
  135. package/lib/renderers/Carousel.d.ts +5 -1
  136. package/lib/renderers/Carousel.js +18 -5
  137. package/lib/renderers/Carousel.js.map +2 -2
  138. package/lib/renderers/Form/ButtonGroupSelect.d.ts +2 -0
  139. package/lib/renderers/Form/ButtonGroupSelect.js +7 -0
  140. package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
  141. package/lib/renderers/Form/Checkbox.js +3 -4
  142. package/lib/renderers/Form/Checkbox.js.map +2 -2
  143. package/lib/renderers/Form/Checkboxes.d.ts +2 -1
  144. package/lib/renderers/Form/Checkboxes.js +19 -14
  145. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  146. package/lib/renderers/Form/Combo.js +23 -4
  147. package/lib/renderers/Form/Combo.js.map +2 -2
  148. package/lib/renderers/Form/DiffEditor.d.ts +126 -18
  149. package/lib/renderers/Form/Editor.d.ts +412 -112
  150. package/lib/renderers/Form/Editor.js +10 -1
  151. package/lib/renderers/Form/Editor.js.map +2 -2
  152. package/lib/renderers/Form/InputExcel.js +6 -1
  153. package/lib/renderers/Form/InputExcel.js.map +2 -2
  154. package/lib/renderers/Form/InputFile.js +1 -2
  155. package/lib/renderers/Form/InputFile.js.map +2 -2
  156. package/lib/renderers/Form/InputTree.js +1 -1
  157. package/lib/renderers/Form/InputTree.js.map +2 -2
  158. package/lib/renderers/Form/Item.d.ts +0 -6
  159. package/lib/renderers/Form/JSONSchemaEditor.d.ts +41 -0
  160. package/lib/renderers/Form/JSONSchemaEditor.js +33 -0
  161. package/lib/renderers/Form/JSONSchemaEditor.js.map +13 -0
  162. package/lib/renderers/Form/ListSelect.d.ts +2 -0
  163. package/lib/renderers/Form/ListSelect.js +7 -0
  164. package/lib/renderers/Form/ListSelect.js.map +2 -2
  165. package/lib/renderers/Form/Options.js +1 -0
  166. package/lib/renderers/Form/Options.js.map +2 -2
  167. package/lib/renderers/Form/Select.js +12 -1
  168. package/lib/renderers/Form/Select.js.map +2 -2
  169. package/lib/renderers/Form/TabsTransfer.d.ts +1 -1
  170. package/lib/renderers/Form/TabsTransfer.js +2 -2
  171. package/lib/renderers/Form/TabsTransfer.js.map +2 -2
  172. package/lib/renderers/Form/TreeSelect.d.ts +4 -0
  173. package/lib/renderers/Form/TreeSelect.js +2 -2
  174. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  175. package/lib/renderers/Form/wrapControl.js +10 -5
  176. package/lib/renderers/Form/wrapControl.js.map +2 -2
  177. package/lib/renderers/Pagination.d.ts +49 -30
  178. package/lib/renderers/Pagination.js +3 -132
  179. package/lib/renderers/Pagination.js.map +2 -2
  180. package/lib/renderers/Table/HeadCellSearchDropdown.js +0 -1
  181. package/lib/renderers/Table/HeadCellSearchDropdown.js.map +2 -2
  182. package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
  183. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +158 -0
  184. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +13 -0
  185. package/lib/renderers/Table-v2/TableCell.d.ts +6 -0
  186. package/lib/renderers/Table-v2/TableCell.js +28 -0
  187. package/lib/renderers/Table-v2/TableCell.js.map +13 -0
  188. package/lib/renderers/Table-v2/index.d.ts +256 -0
  189. package/lib/renderers/Table-v2/index.js +548 -0
  190. package/lib/renderers/Table-v2/index.js.map +13 -0
  191. package/lib/renderers/Tabs.js +1 -1
  192. package/lib/renderers/Tabs.js.map +2 -2
  193. package/lib/renderers/Tag.d.ts +66 -0
  194. package/lib/renderers/Tag.js +53 -0
  195. package/lib/renderers/Tag.js.map +13 -0
  196. package/lib/renderers/Wizard.js +3 -3
  197. package/lib/renderers/Wizard.js.map +2 -2
  198. package/lib/schemaExtend.js +24 -30
  199. package/lib/schemaExtend.js.map +2 -2
  200. package/lib/store/combo.d.ts +140 -20
  201. package/lib/store/form.d.ts +56 -8
  202. package/lib/store/formItem.d.ts +3 -1
  203. package/lib/store/formItem.js +3 -1
  204. package/lib/store/formItem.js.map +2 -2
  205. package/lib/store/index.js +2 -0
  206. package/lib/store/index.js.map +2 -2
  207. package/lib/store/table-v2.d.ts +308 -0
  208. package/lib/store/table-v2.js +452 -0
  209. package/lib/store/table-v2.js.map +13 -0
  210. package/lib/store/table.d.ts +112 -16
  211. package/lib/store/table.js +1 -1
  212. package/lib/store/table.js.map +2 -2
  213. package/lib/themes/ang-ie11.css +1686 -120
  214. package/lib/themes/ang.css +1807 -208
  215. package/lib/themes/ang.css.map +1 -1
  216. package/lib/themes/antd-ie11.css +1667 -101
  217. package/lib/themes/antd.css +1789 -201
  218. package/lib/themes/antd.css.map +1 -1
  219. package/lib/themes/cxd-ie11.css +1662 -97
  220. package/lib/themes/cxd.css +1983 -394
  221. package/lib/themes/cxd.css.map +1 -1
  222. package/lib/themes/dark-ie11.css +1667 -101
  223. package/lib/themes/dark.css +1789 -201
  224. package/lib/themes/dark.css.map +1 -1
  225. package/lib/themes/default-ie11.css +1662 -97
  226. package/lib/themes/default.css +1983 -394
  227. package/lib/themes/default.css.map +1 -1
  228. package/lib/utils/DataSchema.d.ts +25 -0
  229. package/lib/utils/DataSchema.js +104 -0
  230. package/lib/utils/DataSchema.js.map +13 -0
  231. package/lib/utils/DataScope.d.ts +23 -0
  232. package/lib/utils/DataScope.js +140 -0
  233. package/lib/utils/DataScope.js.map +13 -0
  234. package/lib/utils/handleAction.js +1 -1
  235. package/lib/utils/handleAction.js.map +2 -2
  236. package/lib/utils/renderer-event.d.ts +8 -2
  237. package/lib/utils/renderer-event.js +102 -1
  238. package/lib/utils/renderer-event.js.map +2 -2
  239. package/package.json +3 -2
  240. package/schema.json +1476 -469
  241. package/scss/_properties.scss +69 -0
  242. package/scss/components/_button.scss +37 -39
  243. package/scss/components/_context-menu.scss +3 -18
  244. package/scss/components/_json-schema-editor.scss +126 -0
  245. package/scss/components/_pagination.scss +104 -23
  246. package/scss/components/_result-box.scss +2 -2
  247. package/scss/components/_table-v2.scss +912 -0
  248. package/scss/components/_tag.scss +177 -0
  249. package/scss/components/form/_selection.scss +1 -14
  250. package/scss/components/form/_text.scss +1 -1
  251. package/scss/themes/_antd-variables.scss +0 -13
  252. package/scss/themes/_common.scss +3 -0
  253. package/scss/themes/_cxd-variables.scss +7 -17
  254. package/scss/themes/_dark-variables.scss +0 -13
  255. package/scss/themes/cxd.scss +1 -1
  256. package/sdk/ang-ie11.css +2240 -227
  257. package/sdk/ang.css +2905 -859
  258. package/sdk/antd-ie11.css +2233 -220
  259. package/sdk/antd.css +2905 -870
  260. package/sdk/barcode.js +51 -51
  261. package/sdk/charts.js +14 -14
  262. package/sdk/codemirror.js +7 -7
  263. package/sdk/color-picker.js +65 -65
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +2223 -211
  266. package/sdk/cxd.css +2911 -875
  267. package/sdk/dark-ie11.css +2233 -220
  268. package/sdk/dark.css +2905 -870
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/locale/de-DE.js +18 -1
  271. package/sdk/markdown.js +69 -69
  272. package/sdk/papaparse.js +1 -1
  273. package/sdk/renderers/Form/CityDB.js +1 -1
  274. package/sdk/rest.js +16 -16
  275. package/sdk/rich-text.js +62 -62
  276. package/sdk/sdk-ie11.css +2223 -211
  277. package/sdk/sdk.css +2911 -875
  278. package/sdk/sdk.js +1326 -1270
  279. package/sdk/thirds/hls.js/hls.js +1 -1
  280. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  281. package/sdk/tinymce.js +57 -57
  282. package/src/Schema.ts +7 -0
  283. package/src/SchemaRenderer.tsx +4 -5
  284. package/src/actions/Action.ts +7 -6
  285. package/src/actions/AjaxAction.ts +33 -24
  286. package/src/actions/BreakAction.ts +2 -2
  287. package/src/actions/BroadcastAction.ts +6 -5
  288. package/src/actions/CmptAction.ts +5 -6
  289. package/src/actions/ContinueAction.ts +2 -2
  290. package/src/actions/CopyAction.ts +14 -8
  291. package/src/actions/CustomAction.ts +2 -2
  292. package/src/actions/DialogAction.ts +16 -10
  293. package/src/actions/DrawerAction.ts +3 -3
  294. package/src/actions/EmailAction.ts +12 -12
  295. package/src/actions/LinkAction.ts +34 -14
  296. package/src/actions/LoopAction.ts +13 -8
  297. package/src/actions/PageAction.ts +9 -6
  298. package/src/actions/ParallelAction.ts +2 -2
  299. package/src/actions/SwitchAction.ts +2 -2
  300. package/src/actions/ToastAction.ts +9 -5
  301. package/src/components/InputBox.tsx +1 -0
  302. package/src/components/Pagination.tsx +446 -0
  303. package/src/components/PickerContainer.tsx +8 -5
  304. package/src/components/Rating.tsx +16 -9
  305. package/src/components/Select.tsx +3 -3
  306. package/src/components/Tag.tsx +179 -0
  307. package/src/components/TooltipWrapper.tsx +14 -1
  308. package/src/components/TransferDropDown.tsx +3 -0
  309. package/src/components/formula/VariableList.tsx +1 -0
  310. package/src/components/icons.tsx +2 -0
  311. package/src/components/index.tsx +7 -1
  312. package/src/components/schema-editor/Array.tsx +95 -0
  313. package/src/components/schema-editor/Common.tsx +138 -0
  314. package/src/components/schema-editor/Item.tsx +36 -0
  315. package/src/components/schema-editor/Object.tsx +299 -0
  316. package/src/components/schema-editor/SchemaVariableList.tsx +97 -0
  317. package/src/components/schema-editor/SchemaVariableListPicker.tsx +66 -0
  318. package/src/components/schema-editor/index.tsx +211 -0
  319. package/src/components/table/Cell.tsx +70 -0
  320. package/src/components/table/HeadCellDropDown.tsx +115 -0
  321. package/src/components/table/HeadCellFilter.tsx +193 -0
  322. package/src/components/table/HeadCellSelect.tsx +86 -0
  323. package/src/components/table/HeadCellSort.tsx +102 -0
  324. package/src/components/table/index.tsx +1681 -0
  325. package/src/env.tsx +7 -14
  326. package/src/factory.tsx +3 -106
  327. package/src/icons/dot.svg +11 -0
  328. package/src/index.tsx +8 -1
  329. package/src/locale/de-DE.ts +18 -1
  330. package/src/locale/en-US.ts +18 -1
  331. package/src/locale/zh-CN.ts +20 -1
  332. package/src/renderers/Action.tsx +1 -1
  333. package/src/renderers/Carousel.tsx +21 -6
  334. package/src/renderers/Form/ButtonGroupSelect.tsx +10 -1
  335. package/src/renderers/Form/Checkbox.tsx +4 -4
  336. package/src/renderers/Form/Checkboxes.tsx +31 -25
  337. package/src/renderers/Form/Combo.tsx +20 -4
  338. package/src/renderers/Form/Editor.tsx +15 -1
  339. package/src/renderers/Form/InputExcel.tsx +6 -1
  340. package/src/renderers/Form/InputFile.tsx +1 -2
  341. package/src/renderers/Form/InputTree.tsx +1 -1
  342. package/src/renderers/Form/JSONSchemaEditor.tsx +67 -0
  343. package/src/renderers/Form/ListSelect.tsx +9 -1
  344. package/src/renderers/Form/Options.tsx +1 -1
  345. package/src/renderers/Form/Select.tsx +7 -0
  346. package/src/renderers/Form/TabsTransfer.tsx +2 -2
  347. package/src/renderers/Form/TreeSelect.tsx +8 -1
  348. package/src/renderers/Form/wrapControl.tsx +11 -5
  349. package/src/renderers/Pagination.tsx +65 -253
  350. package/src/renderers/Table/HeadCellSearchDropdown.tsx +0 -1
  351. package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +244 -0
  352. package/src/renderers/Table-v2/TableCell.tsx +19 -0
  353. package/src/renderers/Table-v2/index.tsx +1140 -0
  354. package/src/renderers/Tabs.tsx +1 -1
  355. package/src/renderers/Tag.tsx +128 -0
  356. package/src/renderers/Wizard.tsx +3 -3
  357. package/src/schemaExtend.ts +24 -28
  358. package/src/store/formItem.ts +5 -1
  359. package/src/store/index.ts +2 -0
  360. package/src/store/table-v2.ts +646 -0
  361. package/src/store/table.ts +1 -1
  362. package/src/utils/DataSchema.ts +131 -0
  363. package/src/utils/DataScope.ts +190 -0
  364. package/src/utils/handleAction.ts +1 -1
  365. package/src/utils/renderer-event.ts +113 -2
@@ -0,0 +1,25 @@
1
+ import { DataScope } from './DataScope';
2
+ import type { JSONSchema } from './DataScope';
3
+ /**
4
+ * 用来定义数据本身的数据结构,比如有类型是什么,有哪些属性。
5
+ */
6
+ export declare class DataSchema {
7
+ readonly root: DataScope;
8
+ readonly idMap: {
9
+ [propName: string]: DataScope;
10
+ };
11
+ current: DataScope;
12
+ constructor(schema: JSONSchema | Array<JSONSchema>);
13
+ setSchema(schemas: Array<JSONSchema>): this;
14
+ addSchema(schema: JSONSchema): this;
15
+ removeSchema(id: string): this;
16
+ getSchemas(): import("json-schema").JSONSchema7[];
17
+ addScope(schema?: JSONSchema | Array<JSONSchema>, id?: string): this;
18
+ removeScope(idOrScope: string | DataScope): this;
19
+ hasScope(idOrScope: string | DataScope): idOrScope is string | DataScope;
20
+ getScope(idOrScope: string | DataScope): DataScope;
21
+ switchToRoot(): this;
22
+ switchTo(idOrScope: string | DataScope): this;
23
+ getDataPropsAsOptions(): any[];
24
+ getSchemaByPath(path: string): import("json-schema").JSONSchema7 | null;
25
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataSchema = void 0;
4
+ var DataScope_1 = require("./DataScope");
5
+ var helper_1 = require("./helper");
6
+ /**
7
+ * 用来定义数据本身的数据结构,比如有类型是什么,有哪些属性。
8
+ */
9
+ var DataSchema = /** @class */ (function () {
10
+ function DataSchema(schema) {
11
+ this.idMap = {};
12
+ this.root = new DataScope_1.DataScope(schema, 'root');
13
+ this.idMap['root'] = this.root;
14
+ this.current = this.root;
15
+ }
16
+ DataSchema.prototype.setSchema = function (schemas) {
17
+ this.current.setSchemas(schemas);
18
+ return this;
19
+ };
20
+ DataSchema.prototype.addSchema = function (schema) {
21
+ this.current.addSchema(schema);
22
+ return this;
23
+ };
24
+ DataSchema.prototype.removeSchema = function (id) {
25
+ this.current.removeSchema(id);
26
+ delete this.idMap[id];
27
+ return this;
28
+ };
29
+ DataSchema.prototype.getSchemas = function () {
30
+ var schemas = [];
31
+ var current = this.current;
32
+ while (current) {
33
+ schemas.push.apply(schemas, current.schemas);
34
+ current = current.parent;
35
+ }
36
+ return schemas;
37
+ };
38
+ DataSchema.prototype.addScope = function (schema, id) {
39
+ if (id === void 0) { id = (0, helper_1.guid)(); }
40
+ if (this.idMap[id]) {
41
+ throw new Error('scope id `' + id + '` already exists');
42
+ }
43
+ this.current = this.current.addChild(id, schema);
44
+ this.idMap[id] = this.current;
45
+ return this;
46
+ };
47
+ DataSchema.prototype.removeScope = function (idOrScope) {
48
+ var _a;
49
+ var scope = this.getScope(idOrScope);
50
+ if (!scope.parent) {
51
+ throw new Error('cannot remove root scope');
52
+ }
53
+ if (scope.contains(this.current)) {
54
+ this.current = scope.parent;
55
+ }
56
+ (_a = scope.parent) === null || _a === void 0 ? void 0 : _a.removeChild(scope);
57
+ return this;
58
+ };
59
+ DataSchema.prototype.hasScope = function (idOrScope) {
60
+ var id = typeof idOrScope === 'string' ? idOrScope : idOrScope.id;
61
+ var scope = this.idMap[id];
62
+ return !!scope;
63
+ };
64
+ DataSchema.prototype.getScope = function (idOrScope) {
65
+ var id = typeof idOrScope === 'string' ? idOrScope : idOrScope.id;
66
+ var scope = this.idMap[id];
67
+ if (!scope) {
68
+ throw new Error('scope not found!');
69
+ }
70
+ return scope;
71
+ };
72
+ DataSchema.prototype.switchToRoot = function () {
73
+ this.current = this.root;
74
+ return this;
75
+ };
76
+ DataSchema.prototype.switchTo = function (idOrScope) {
77
+ var scope = this.getScope(idOrScope);
78
+ this.current = scope;
79
+ return this;
80
+ };
81
+ DataSchema.prototype.getDataPropsAsOptions = function () {
82
+ var variables = [];
83
+ var current = this.current;
84
+ while (current) {
85
+ variables.push.apply(variables, current.getDataPropsAsOptions());
86
+ current = current.parent;
87
+ }
88
+ return variables;
89
+ };
90
+ DataSchema.prototype.getSchemaByPath = function (path) {
91
+ var current = this.current;
92
+ while (current) {
93
+ var schema = current.getSchemaByPath(path);
94
+ if (schema) {
95
+ return schema;
96
+ }
97
+ current = current.parent;
98
+ }
99
+ return null;
100
+ };
101
+ return DataSchema;
102
+ }());
103
+ exports.DataSchema = DataSchema;
104
+ //# sourceMappingURL=./utils/DataSchema.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "file": "DataSchema.js",
4
+ "sourceRoot": "",
5
+ "sources": [
6
+ "/src/utils/DataSchema.ts"
7
+ ],
8
+ "names": [],
9
+ "mappings": "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",
10
+ "sourcesContent": [
11
+ "import {DataScope} from './DataScope';\nimport type {JSONSchema} from './DataScope';\nimport {guid} from './helper';\n\n/**\n * 用来定义数据本身的数据结构,比如有类型是什么,有哪些属性。\n */\nexport class DataSchema {\n // 指向顶级数据作用域\n readonly root: DataScope;\n\n readonly idMap: {\n [propName: string]: DataScope;\n } = {};\n\n // 这个经常变动,游离于整个链中\n current: DataScope;\n\n constructor(schema: JSONSchema | Array<JSONSchema>) {\n this.root = new DataScope(schema, 'root');\n this.idMap['root'] = this.root;\n this.current = this.root;\n }\n\n setSchema(schemas: Array<JSONSchema>) {\n this.current.setSchemas(schemas);\n return this;\n }\n\n addSchema(schema: JSONSchema) {\n this.current.addSchema(schema);\n return this;\n }\n\n removeSchema(id: string) {\n this.current.removeSchema(id);\n delete this.idMap[id];\n return this;\n }\n\n getSchemas() {\n const schemas: Array<JSONSchema> = [];\n let current: DataScope | void = this.current;\n\n while (current) {\n schemas.push(...current.schemas);\n current = current.parent;\n }\n\n return schemas;\n }\n\n addScope(schema?: JSONSchema | Array<JSONSchema>, id: string = guid()) {\n if (this.idMap[id]) {\n throw new Error('scope id `' + id + '` already exists');\n }\n\n this.current = this.current.addChild(id, schema);\n this.idMap[id] = this.current;\n return this;\n }\n\n removeScope(idOrScope: string | DataScope) {\n const scope = this.getScope(idOrScope);\n\n if (!scope.parent) {\n throw new Error('cannot remove root scope');\n }\n\n if (scope.contains(this.current)) {\n this.current = scope.parent!;\n }\n\n scope.parent?.removeChild(scope);\n return this;\n }\n\n hasScope(idOrScope: string | DataScope): idOrScope is string | DataScope {\n const id = typeof idOrScope === 'string' ? idOrScope : idOrScope.id;\n const scope = this.idMap[id];\n return !!scope;\n }\n\n getScope(idOrScope: string | DataScope) {\n const id = typeof idOrScope === 'string' ? idOrScope : idOrScope.id;\n const scope = this.idMap[id];\n\n if (!scope) {\n throw new Error('scope not found!');\n }\n\n return scope;\n }\n\n switchToRoot() {\n this.current = this.root;\n return this;\n }\n\n switchTo(idOrScope: string | DataScope) {\n const scope = this.getScope(idOrScope);\n this.current = scope;\n return this;\n }\n\n getDataPropsAsOptions() {\n const variables: Array<any> = [];\n let current: DataScope | void = this.current;\n\n while (current) {\n variables.push(...current.getDataPropsAsOptions());\n current = current.parent;\n }\n\n return variables;\n }\n\n getSchemaByPath(path: string) {\n let current: DataScope | void = this.current;\n\n while (current) {\n const schema = current.getSchemaByPath(path);\n if (schema) {\n return schema;\n }\n current = current.parent;\n }\n\n return null;\n }\n}\n"
12
+ ]
13
+ }
@@ -0,0 +1,23 @@
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ export declare type JSONSchema = JSONSchema7;
3
+ export declare class DataScope {
4
+ parent?: DataScope;
5
+ readonly children: Array<DataScope>;
6
+ readonly id: string;
7
+ ref?: string;
8
+ name?: string;
9
+ tag?: string;
10
+ description?: string;
11
+ readonly schemas: Array<JSONSchema>;
12
+ constructor(schemas: JSONSchema | Array<JSONSchema>, id: string);
13
+ addChild(id: string, schema?: JSONSchema | Array<JSONSchema>): DataScope;
14
+ removeChild(idOrScope: string | DataScope): void;
15
+ setSchemas(schemas: Array<JSONSchema>): this;
16
+ addSchema(schema: JSONSchema): this;
17
+ removeSchema(id: string): this;
18
+ contains(scope: DataScope): boolean;
19
+ getMergedSchema(): any;
20
+ protected buildOptions(options: Array<any>, schema: JSONSchema, path: string): void;
21
+ getDataPropsAsOptions(): any[];
22
+ getSchemaByPath(path: string): JSONSchema7 | null;
23
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataScope = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var helper_1 = require("./helper");
6
+ var DataScope = /** @class */ (function () {
7
+ function DataScope(schemas, id) {
8
+ this.children = [];
9
+ this.schemas = [];
10
+ this.setSchemas(Array.isArray(schemas) ? schemas : [schemas]);
11
+ this.id = id;
12
+ }
13
+ DataScope.prototype.addChild = function (id, schema) {
14
+ var child = new DataScope(schema || {
15
+ type: 'object',
16
+ properties: {}
17
+ }, id);
18
+ this.children.push(child);
19
+ child.parent = this;
20
+ return child;
21
+ };
22
+ DataScope.prototype.removeChild = function (idOrScope) {
23
+ var idx = this.children.findIndex(function (item) {
24
+ return typeof idOrScope === 'string'
25
+ ? idOrScope === item.id
26
+ : idOrScope === idOrScope;
27
+ });
28
+ if (~idx) {
29
+ var scope = this.children[idx];
30
+ delete scope.parent;
31
+ this.children.splice(idx, 1);
32
+ }
33
+ };
34
+ DataScope.prototype.setSchemas = function (schemas) {
35
+ this.schemas.splice(0, this.schemas.length);
36
+ for (var _i = 0, schemas_1 = schemas; _i < schemas_1.length; _i++) {
37
+ var schema = schemas_1[_i];
38
+ if (schema.type !== 'object') {
39
+ throw new TypeError('data scope accept only object');
40
+ }
41
+ this.schemas.push((0, tslib_1.__assign)({ $id: (0, helper_1.guid)() }, schema));
42
+ }
43
+ return this;
44
+ };
45
+ DataScope.prototype.addSchema = function (schema) {
46
+ schema = (0, tslib_1.__assign)({ $id: (0, helper_1.guid)() }, schema);
47
+ this.schemas.push(schema);
48
+ return this;
49
+ };
50
+ DataScope.prototype.removeSchema = function (id) {
51
+ var idx = this.schemas.findIndex(function (schema) { return schema.$id === id; });
52
+ if (~idx) {
53
+ this.schemas.splice(idx, 1);
54
+ }
55
+ return this;
56
+ };
57
+ DataScope.prototype.contains = function (scope) {
58
+ var from = scope;
59
+ while (from) {
60
+ if (this === from) {
61
+ return true;
62
+ }
63
+ from = from.parent;
64
+ }
65
+ return false;
66
+ };
67
+ DataScope.prototype.getMergedSchema = function () {
68
+ var mergedSchema = {
69
+ type: 'object',
70
+ properties: {}
71
+ };
72
+ // todo 以后再来细化这一块,先粗略的写个大概
73
+ this.schemas.forEach(function (schema) {
74
+ var properties = schema.properties || {};
75
+ Object.keys(properties).forEach(function (key) {
76
+ var value = properties[key];
77
+ if (mergedSchema.properties[key]) {
78
+ if (Array.isArray(mergedSchema.properties[key].oneOf)) {
79
+ mergedSchema.properties[key].oneOf.push();
80
+ }
81
+ else if (mergedSchema.properties[key].type &&
82
+ mergedSchema.properties[key].type !== value.type) {
83
+ mergedSchema.properties[key] = {
84
+ oneOf: [mergedSchema.properties[key], value]
85
+ };
86
+ }
87
+ }
88
+ else {
89
+ mergedSchema.properties[key] = value;
90
+ }
91
+ });
92
+ });
93
+ return mergedSchema;
94
+ };
95
+ DataScope.prototype.buildOptions = function (options, schema, path) {
96
+ var _this = this;
97
+ if (schema.type === 'object' && schema.properties) {
98
+ var keys = Object.keys(schema.properties);
99
+ keys.forEach(function (key) {
100
+ var child = schema.properties[key];
101
+ // todo 支持 oneOf, anyOf
102
+ var option = {
103
+ label: child.title || key,
104
+ value: path + key,
105
+ type: child.type,
106
+ description: child.description
107
+ };
108
+ if (child.type === 'object') {
109
+ option.children = [];
110
+ _this.buildOptions(option.children, child, path + key + '.');
111
+ }
112
+ options.push(option);
113
+ });
114
+ }
115
+ };
116
+ DataScope.prototype.getDataPropsAsOptions = function () {
117
+ var variables = [];
118
+ this.buildOptions(variables, this.getMergedSchema(), '');
119
+ return variables;
120
+ };
121
+ DataScope.prototype.getSchemaByPath = function (path) {
122
+ var parts = (0, helper_1.keyToPath)(path);
123
+ for (var _i = 0, _a = this.schemas; _i < _a.length; _i++) {
124
+ var schema = _a[_i];
125
+ var result = parts.reduce(function (schema, key) {
126
+ if (schema && schema.type === 'object' && schema.properties) {
127
+ return schema.properties[key];
128
+ }
129
+ return null;
130
+ }, schema);
131
+ if (result) {
132
+ return result;
133
+ }
134
+ }
135
+ return null;
136
+ };
137
+ return DataScope;
138
+ }());
139
+ exports.DataScope = DataScope;
140
+ //# sourceMappingURL=./utils/DataScope.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "file": "DataScope.js",
4
+ "sourceRoot": "",
5
+ "sources": [
6
+ "/src/utils/DataScope.ts"
7
+ ],
8
+ "names": [],
9
+ "mappings": ";;;;AACA,mCAAyC;AAMzC;IAsBE,mBAAY,OAAuC,EAAE,EAAU;QAnBtD,aAAQ,GAAqB,EAAE,CAAC;QAiBhC,YAAO,GAAsB,EAAE,CAAC;QAGvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,4BAAQ,GAAR,UAAS,EAAU,EAAE,MAAuC;QAC1D,IAAM,KAAK,GAAG,IAAI,SAAS,CACzB,MAAM,IAAI;YACR,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf,EACD,EAAE,CACH,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+BAAW,GAAX,UAAY,SAA6B;QACvC,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAA,IAAI;YACtC,OAAA,OAAO,SAAS,KAAK,QAAQ;gBAC3B,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE;gBACvB,CAAC,CAAC,SAAS,KAAK,SAAS;QAF3B,CAE2B,CAC5B,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE;YACR,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,8BAAU,GAAV,UAAW,OAA0B;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5C,KAAmB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;YAAvB,IAAI,MAAM,gBAAA;YACb,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC5B,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;aACtD;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,yBACf,GAAG,EAAE,IAAA,aAAI,GAAE,IACR,MAAM,EACT,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAAS,GAAT,UAAU,MAAkB;QAC1B,MAAM,2BACJ,GAAG,EAAE,IAAA,aAAI,GAAE,IACR,MAAM,CACV,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAY,GAAZ,UAAa,EAAU;QACrB,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,GAAG,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAAQ,GAAR,UAAS,KAAgB;QACvB,IAAI,IAAI,GAA0B,KAAK,CAAC;QACxC,OAAO,IAAI,EAAE;YACX,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mCAAe,GAAf;QACE,IAAM,YAAY,GAAQ;YACxB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,0BAA0B;QAC1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;YACzB,IAAM,UAAU,GAAQ,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBACjC,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;wBACrD,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3C;yBAAM,IACL,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI;wBACjC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAChD;wBACA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;4BAC7B,KAAK,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;yBAC7C,CAAC;qBACH;iBACF;qBAAM;oBACL,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACtC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAES,gCAAY,GAAtB,UACE,OAAmB,EACnB,MAAkB,EAClB,IAAY;QAHd,iBA2BC;QAtBC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;YACjD,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG;gBACd,IAAM,KAAK,GAAQ,MAAM,CAAC,UAAW,CAAC,GAAG,CAAC,CAAC;gBAE3C,uBAAuB;gBACvB,IAAM,MAAM,GAAQ;oBAClB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG;oBACzB,KAAK,EAAE,IAAI,GAAG,GAAG;oBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC;gBAEF,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACrB,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;iBAC7D;gBAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,yCAAqB,GAArB;QACE,IAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mCAAe,GAAf,UAAgB,IAAY;QAC1B,IAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC;QAE9B,KAAmB,UAAY,EAAZ,KAAA,IAAI,CAAC,OAAO,EAAZ,cAAY,EAAZ,IAAY,EAAE;YAA5B,IAAI,MAAM,SAAA;YACb,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,UAAC,MAAkB,EAAE,GAAW;gBAC1D,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;oBAC3D,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAe,CAAC;iBAC7C;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC;aACf;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACH,gBAAC;AAAD,CAAC,AAtLD,IAsLC;AAtLY,8BAAS",
10
+ "sourcesContent": [
11
+ "import type {JSONSchema7} from 'json-schema';\nimport {guid, keyToPath} from './helper';\n\n// 先只支持 JSONSchema draft07 好了\n// https://json-schema.org/draft-07/json-schema-release-notes.html\nexport type JSONSchema = JSONSchema7;\n\nexport class DataScope {\n // 指向父级\n parent?: DataScope;\n readonly children: Array<DataScope> = [];\n\n // 全局不能重复,用来快速定位\n readonly id: string;\n\n // todo 如果想要跨过层级直接获取某一层的数据域,用这个字段\n ref?: string;\n\n // scope 的名字,同一个层级不允许重名\n name?: string;\n\n // scope 分类\n tag?: string;\n\n // scope 的描述信息\n description?: string;\n\n readonly schemas: Array<JSONSchema> = [];\n\n constructor(schemas: JSONSchema | Array<JSONSchema>, id: string) {\n this.setSchemas(Array.isArray(schemas) ? schemas : [schemas]);\n this.id = id;\n }\n\n addChild(id: string, schema?: JSONSchema | Array<JSONSchema>): DataScope {\n const child = new DataScope(\n schema || {\n type: 'object',\n properties: {}\n },\n id\n );\n\n this.children.push(child);\n child.parent = this;\n return child;\n }\n\n removeChild(idOrScope: string | DataScope) {\n const idx = this.children.findIndex(item =>\n typeof idOrScope === 'string'\n ? idOrScope === item.id\n : idOrScope === idOrScope\n );\n\n if (~idx) {\n const scope = this.children[idx];\n delete scope.parent;\n this.children.splice(idx, 1);\n }\n }\n\n setSchemas(schemas: Array<JSONSchema>) {\n this.schemas.splice(0, this.schemas.length);\n\n for (let schema of schemas) {\n if (schema.type !== 'object') {\n throw new TypeError('data scope accept only object');\n }\n this.schemas.push({\n $id: guid(),\n ...schema\n });\n }\n return this;\n }\n\n addSchema(schema: JSONSchema) {\n schema = {\n $id: guid(),\n ...schema\n };\n this.schemas.push(schema);\n return this;\n }\n\n removeSchema(id: string) {\n const idx = this.schemas.findIndex(schema => schema.$id === id);\n if (~idx) {\n this.schemas.splice(idx, 1);\n }\n return this;\n }\n\n contains(scope: DataScope) {\n let from: DataScope | undefined = scope;\n while (from) {\n if (this === from) {\n return true;\n }\n from = from.parent;\n }\n return false;\n }\n\n getMergedSchema() {\n const mergedSchema: any = {\n type: 'object',\n properties: {}\n };\n\n // todo 以后再来细化这一块,先粗略的写个大概\n this.schemas.forEach(schema => {\n const properties: any = schema.properties || {};\n Object.keys(properties).forEach(key => {\n const value = properties[key];\n if (mergedSchema.properties[key]) {\n if (Array.isArray(mergedSchema.properties[key].oneOf)) {\n mergedSchema.properties[key].oneOf.push();\n } else if (\n mergedSchema.properties[key].type &&\n mergedSchema.properties[key].type !== value.type\n ) {\n mergedSchema.properties[key] = {\n oneOf: [mergedSchema.properties[key], value]\n };\n }\n } else {\n mergedSchema.properties[key] = value;\n }\n });\n });\n\n return mergedSchema;\n }\n\n protected buildOptions(\n options: Array<any>,\n schema: JSONSchema,\n path: string\n ) {\n if (schema.type === 'object' && schema.properties) {\n const keys = Object.keys(schema.properties);\n\n keys.forEach(key => {\n const child: any = schema.properties![key];\n\n // todo 支持 oneOf, anyOf\n const option: any = {\n label: child.title || key,\n value: path + key,\n type: child.type,\n description: child.description\n };\n\n if (child.type === 'object') {\n option.children = [];\n this.buildOptions(option.children, child, path + key + '.');\n }\n\n options.push(option);\n });\n }\n }\n\n getDataPropsAsOptions() {\n const variables: Array<any> = [];\n this.buildOptions(variables, this.getMergedSchema(), '');\n return variables;\n }\n\n getSchemaByPath(path: string) {\n const parts = keyToPath(path);\n\n for (let schema of this.schemas) {\n const result = parts.reduce((schema: JSONSchema, key: string) => {\n if (schema && schema.type === 'object' && schema.properties) {\n return schema.properties[key] as JSONSchema;\n }\n\n return null;\n }, schema);\n\n if (result) {\n return result;\n }\n }\n return null;\n }\n}\n"
12
+ ]
13
+ }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var api_1 = require("./api");
7
7
  function handleAction(e, action, props, data) {
8
8
  // https://reactjs.org/docs/legacy-event-pooling.html
9
- e.persist();
9
+ // e.persist(); // react 17之后去掉 event pooling 了,这个应该没用了
10
10
  var onAction = props.onAction;
11
11
  var onClick = action.onClick;
12
12
  if (typeof onClick === 'string') {
@@ -6,8 +6,8 @@
6
6
  "/src/utils/handleAction.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";AAAA;;GAEG;;AAIH,6BAAiD;AAEjD,SAAwB,YAAY,CAClC,CAAwB,EACxB,MAAoB,EACpB,KAAoB,EACpB,IAAU;IAEV,qDAAqD;IACrD,CAAC,CAAC,OAAO,EAAE,CAAC;IAEZ,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,OAAO,GAAQ,MAAM,CAAC,OAAO,CAAC;IAElC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,GAAG,IAAA,kBAAY,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;IACD,IAAM,MAAM,GAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAErE,IAAI,CAAC,CAAC,kBAAkB,EAAE,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;QAC3D,OAAO;KACR;IAED,CAAC,CAAC,cAAc,EAAE,CAAC;IAEnB,wBAAwB;IACxB,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;QACpC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;QAC3B,IAAM,GAAG,GAAG,IAAA,kBAAY,EAAE,MAA2B,CAAC,GAAG,CAAC,CAAC;QAC3D,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;QACzB,MAA2B,CAAC,GAAG,GAAG,GAAG,CAAC;KACxC;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAhCD,+BAgCC",
9
+ "mappings": ";AAAA;;GAEG;;AAIH,6BAAiD;AAEjD,SAAwB,YAAY,CAClC,CAAwB,EACxB,MAAoB,EACpB,KAAoB,EACpB,IAAU;IAEV,qDAAqD;IACrD,uDAAuD;IAEvD,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,OAAO,GAAQ,MAAM,CAAC,OAAO,CAAC;IAElC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,GAAG,IAAA,kBAAY,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3D;IACD,IAAM,MAAM,GAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IAErE,IAAI,CAAC,CAAC,kBAAkB,EAAE,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;QAC3D,OAAO;KACR;IAED,CAAC,CAAC,cAAc,EAAE,CAAC;IAEnB,wBAAwB;IACxB,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;QACpC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;QAC3B,IAAM,GAAG,GAAG,IAAA,kBAAY,EAAE,MAA2B,CAAC,GAAG,CAAC,CAAC;QAC3D,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;QACzB,MAA2B,CAAC,GAAG,GAAG,GAAG,CAAC;KACxC;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAhCD,+BAgCC",
10
10
  "sourcesContent": [
11
- "/**\n * 后续好多地方可能都要支持 action,所以提取公共功能\n */\n\nimport {RendererProps} from '../factory';\nimport {ActionSchema, AjaxActionSchema} from '../renderers/Action';\nimport {normalizeApi, str2function} from './api';\n\nexport default function handleAction(\n e: React.MouseEvent<any>,\n action: ActionSchema,\n props: RendererProps,\n data?: any\n) {\n // https://reactjs.org/docs/legacy-event-pooling.html\n e.persist();\n\n const onAction = props.onAction;\n let onClick: any = action.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2function(onClick, 'event', 'props', 'data');\n }\n const result: any = onClick && onClick(e, props, data || props.data);\n\n if (e.isDefaultPrevented() || result === false || !onAction) {\n return;\n }\n\n e.preventDefault();\n\n // download 是一种 ajax 的简写\n if (action.actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action, data || props.data);\n}\n"
11
+ "/**\n * 后续好多地方可能都要支持 action,所以提取公共功能\n */\n\nimport {RendererProps} from '../factory';\nimport {ActionSchema, AjaxActionSchema} from '../renderers/Action';\nimport {normalizeApi, str2function} from './api';\n\nexport default function handleAction(\n e: React.MouseEvent<any>,\n action: ActionSchema,\n props: RendererProps,\n data?: any\n) {\n // https://reactjs.org/docs/legacy-event-pooling.html\n // e.persist(); // react 17之后去掉 event pooling 了,这个应该没用了\n\n const onAction = props.onAction;\n let onClick: any = action.onClick;\n\n if (typeof onClick === 'string') {\n onClick = str2function(onClick, 'event', 'props', 'data');\n }\n const result: any = onClick && onClick(e, props, data || props.data);\n\n if (e.isDefaultPrevented() || result === false || !onAction) {\n return;\n }\n\n e.preventDefault();\n\n // download 是一种 ajax 的简写\n if (action.actionType === 'download') {\n action.actionType = 'ajax';\n const api = normalizeApi((action as AjaxActionSchema).api);\n api.responseType = 'blob';\n (action as AjaxActionSchema).api = api;\n }\n\n onAction(e, action, data || props.data);\n}\n"
12
12
  ]
13
13
  }
@@ -1,4 +1,7 @@
1
- import { ListenerAction, ListenerContext } from '../actions/Action';
1
+ /// <reference types="react" />
2
+ import { ListenerAction } from '../actions/Action';
3
+ import { RendererProps } from '../factory';
4
+ import { IScopedContext } from '../Scoped';
2
5
  export interface EventListeners {
3
6
  [propName: string]: {
4
7
  weight?: number;
@@ -14,7 +17,7 @@ export interface OnEventProps {
14
17
  };
15
18
  }
16
19
  export interface RendererEventListener {
17
- renderer: ListenerContext;
20
+ renderer: React.Component<RendererProps>;
18
21
  type: string;
19
22
  weight: number;
20
23
  actions: ListenerAction[];
@@ -34,5 +37,8 @@ export interface RendererEventContext {
34
37
  [propName: string]: any;
35
38
  }
36
39
  export declare function createRendererEvent<T extends RendererEventContext>(type: string, context: T): RendererEvent<T>;
40
+ export declare const bindEvent: (renderer: any) => (() => void) | undefined;
41
+ export declare function dispatchEvent(e: string | React.MouseEvent<any>, renderer: React.Component<RendererProps>, scoped: IScopedContext, data: any, broadcast?: RendererEvent<any>): Promise<RendererEvent<any> | void>;
42
+ export declare const getRendererEventListeners: () => RendererEventListener[];
37
43
  declare const _default: {};
38
44
  export default _default;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRendererEvent = void 0;
3
+ exports.getRendererEventListeners = exports.dispatchEvent = exports.bindEvent = exports.createRendererEvent = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Action_1 = require("../actions/Action");
6
+ var rendererEventListeners = [];
4
7
  // 创建渲染器事件对象
5
8
  function createRendererEvent(type, context) {
6
9
  var rendererEvent = {
@@ -24,5 +27,103 @@ function createRendererEvent(type, context) {
24
27
  return rendererEvent;
25
28
  }
26
29
  exports.createRendererEvent = createRendererEvent;
30
+ // 绑定事件
31
+ var bindEvent = function (renderer) {
32
+ if (!renderer) {
33
+ return undefined;
34
+ }
35
+ var listeners = renderer.props.$schema.onEvent;
36
+ if (listeners) {
37
+ var _loop_1 = function (key) {
38
+ var listener = rendererEventListeners.some(function (item) {
39
+ return item.renderer === renderer && item.type === key;
40
+ });
41
+ if (!listener) {
42
+ rendererEventListeners.push({
43
+ renderer: renderer,
44
+ type: key,
45
+ weight: listeners[key].weight || 0,
46
+ actions: listeners[key].actions
47
+ });
48
+ }
49
+ };
50
+ // 暂存
51
+ for (var _i = 0, _a = Object.keys(listeners); _i < _a.length; _i++) {
52
+ var key = _a[_i];
53
+ _loop_1(key);
54
+ }
55
+ return function () {
56
+ rendererEventListeners = rendererEventListeners.filter(function (item) { return item.renderer !== renderer; });
57
+ };
58
+ }
59
+ return undefined;
60
+ };
61
+ exports.bindEvent = bindEvent;
62
+ // 触发事件
63
+ function dispatchEvent(e, renderer, scoped, data, broadcast) {
64
+ var _a, _b, _c, _d, _e, _f;
65
+ return (0, tslib_1.__awaiter)(this, void 0, Promise, function () {
66
+ var unbindEvent, eventName, eventConfig, rendererEvent, listeners, _i, listeners_1, listener;
67
+ return (0, tslib_1.__generator)(this, function (_g) {
68
+ switch (_g.label) {
69
+ case 0:
70
+ unbindEvent = null;
71
+ eventName = typeof e === 'string' ? e : e.type;
72
+ (_c = (_b = (_a = renderer === null || renderer === void 0 ? void 0 : renderer.props) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.beforeDispatchEvent) === null || _c === void 0 ? void 0 : _c.call(_b, e, renderer, scoped, data, broadcast);
73
+ if (!broadcast) {
74
+ eventConfig = (_e = (_d = renderer === null || renderer === void 0 ? void 0 : renderer.props) === null || _d === void 0 ? void 0 : _d.onEvent) === null || _e === void 0 ? void 0 : _e[eventName];
75
+ if (!eventConfig) {
76
+ // 没命中也没关系
77
+ return [2 /*return*/, Promise.resolve()];
78
+ }
79
+ unbindEvent = (0, exports.bindEvent)(renderer);
80
+ }
81
+ // 没有可处理的监听
82
+ if (!rendererEventListeners.length) {
83
+ return [2 /*return*/, Promise.resolve()];
84
+ }
85
+ rendererEvent = broadcast ||
86
+ createRendererEvent(eventName, {
87
+ env: (_f = renderer === null || renderer === void 0 ? void 0 : renderer.props) === null || _f === void 0 ? void 0 : _f.env,
88
+ nativeEvent: e,
89
+ data: data,
90
+ scoped: scoped
91
+ });
92
+ listeners = rendererEventListeners
93
+ .filter(function (item) {
94
+ return item.type === eventName &&
95
+ (broadcast ? true : item.renderer === renderer);
96
+ })
97
+ .sort(function (prev, next) {
98
+ return next.weight - prev.weight;
99
+ });
100
+ _i = 0, listeners_1 = listeners;
101
+ _g.label = 1;
102
+ case 1:
103
+ if (!(_i < listeners_1.length)) return [3 /*break*/, 4];
104
+ listener = listeners_1[_i];
105
+ return [4 /*yield*/, (0, Action_1.runActions)(listener.actions, listener.renderer, rendererEvent)];
106
+ case 2:
107
+ _g.sent();
108
+ // 停止后续监听器执行
109
+ if (rendererEvent.stoped) {
110
+ return [3 /*break*/, 4];
111
+ }
112
+ _g.label = 3;
113
+ case 3:
114
+ _i++;
115
+ return [3 /*break*/, 1];
116
+ case 4:
117
+ unbindEvent === null || unbindEvent === void 0 ? void 0 : unbindEvent();
118
+ return [2 /*return*/, Promise.resolve(rendererEvent)];
119
+ }
120
+ });
121
+ });
122
+ }
123
+ exports.dispatchEvent = dispatchEvent;
124
+ var getRendererEventListeners = function () {
125
+ return rendererEventListeners;
126
+ };
127
+ exports.getRendererEventListeners = getRendererEventListeners;
27
128
  exports.default = {};
28
129
  //# sourceMappingURL=./utils/renderer-event.js.map
@@ -6,8 +6,8 @@
6
6
  "/src/utils/renderer-event.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;AA6CA,YAAY;AACZ,SAAgB,mBAAmB,CACjC,IAAY,EACZ,OAAU;IAEV,IAAM,aAAa,GAAG;QACpB,OAAO,SAAA;QACP,IAAI,MAAA;QACJ,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,KAAK;QACb,cAAc;YACZ,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,eAAe;YACb,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI;YACN,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC;QAED,OAAO,EAAP,UAAQ,IAAS;YACf,aAAa,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpC,CAAC;KACF,CAAC;IACF,OAAO,aAAa,CAAC;AACvB,CAAC;AA1BD,kDA0BC;AAED,kBAAe,EAAE,CAAC",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import {ListenerAction, ListenerContext} from '../actions/Action';\n\n// 事件监听器\nexport interface EventListeners {\n [propName: string]: {\n weight?: number; // 权重\n actions: ListenerAction[]; // 执行的动作集\n };\n}\n\n// 事件动作属性\nexport interface OnEventProps {\n onEvent?: {\n [propName: string]: {\n weight?: number; // 权重\n actions: ListenerAction[]; // 执行的动作集\n };\n };\n}\n\n// 渲染器事件监听器\nexport interface RendererEventListener {\n renderer: ListenerContext;\n type: string;\n weight: number;\n actions: ListenerAction[];\n}\n\n// 将事件上下文转成事件对象\nexport type RendererEvent<T, P = any> = {\n context: T;\n type: string;\n prevented?: boolean; // 阻止原有动作执行\n stoped?: boolean; // 阻止后续动作执行\n data?: P;\n preventDefault: () => void;\n stopPropagation: () => void;\n setData: (data: P) => void;\n};\n\nexport interface RendererEventContext {\n data?: any;\n [propName: string]: any;\n}\n\n// 创建渲染器事件对象\nexport function createRendererEvent<T extends RendererEventContext>(\n type: string,\n context: T\n): RendererEvent<T> {\n const rendererEvent = {\n context,\n type,\n prevented: false,\n stoped: false,\n preventDefault() {\n rendererEvent.prevented = true;\n },\n\n stopPropagation() {\n rendererEvent.stoped = true;\n },\n\n get data() {\n return rendererEvent.context.data;\n },\n\n setData(data: any) {\n rendererEvent.context.data = data;\n }\n };\n return rendererEvent;\n}\n\nexport default {};\n"
11
+ "import {ListenerAction, ListenerContext, runActions} from '../actions/Action';\nimport {RendererProps} from '../factory';\nimport {IScopedContext} from '../Scoped';\n\n// 事件监听器\nexport interface EventListeners {\n [propName: string]: {\n weight?: number; // 权重\n actions: ListenerAction[]; // 执行的动作集\n };\n}\n\n// 事件动作属性\nexport interface OnEventProps {\n onEvent?: {\n [propName: string]: {\n weight?: number; // 权重\n actions: ListenerAction[]; // 执行的动作集\n };\n };\n}\n\n// 渲染器事件监听器\nexport interface RendererEventListener {\n renderer: React.Component<RendererProps>;\n type: string;\n weight: number;\n actions: ListenerAction[];\n}\n\n// 将事件上下文转成事件对象\nexport type RendererEvent<T, P = any> = {\n context: T;\n type: string;\n prevented?: boolean; // 阻止原有动作执行\n stoped?: boolean; // 阻止后续动作执行\n data?: P;\n preventDefault: () => void;\n stopPropagation: () => void;\n setData: (data: P) => void;\n};\n\nexport interface RendererEventContext {\n data?: any;\n [propName: string]: any;\n}\n\nlet rendererEventListeners: RendererEventListener[] = [];\n\n// 创建渲染器事件对象\nexport function createRendererEvent<T extends RendererEventContext>(\n type: string,\n context: T\n): RendererEvent<T> {\n const rendererEvent = {\n context,\n type,\n prevented: false,\n stoped: false,\n preventDefault() {\n rendererEvent.prevented = true;\n },\n\n stopPropagation() {\n rendererEvent.stoped = true;\n },\n\n get data() {\n return rendererEvent.context.data;\n },\n\n setData(data: any) {\n rendererEvent.context.data = data;\n }\n };\n return rendererEvent;\n}\n\n// 绑定事件\nexport const bindEvent = (renderer: any) => {\n if (!renderer) {\n return undefined;\n }\n const listeners: EventListeners = renderer.props.$schema.onEvent;\n if (listeners) {\n // 暂存\n for (let key of Object.keys(listeners)) {\n const listener = rendererEventListeners.some(\n (item: RendererEventListener) =>\n item.renderer === renderer && item.type === key\n );\n if (!listener) {\n rendererEventListeners.push({\n renderer,\n type: key,\n weight: listeners[key].weight || 0,\n actions: listeners[key].actions\n });\n }\n }\n\n return () => {\n rendererEventListeners = rendererEventListeners.filter(\n (item: RendererEventListener) => item.renderer !== renderer\n );\n };\n }\n\n return undefined;\n};\n\n// 触发事件\nexport async function dispatchEvent(\n e: string | React.MouseEvent<any>,\n renderer: React.Component<RendererProps>,\n scoped: IScopedContext,\n data: any,\n broadcast?: RendererEvent<any>\n): Promise<RendererEvent<any> | void> {\n let unbindEvent = null;\n const eventName = typeof e === 'string' ? e : e.type;\n\n renderer?.props?.env?.beforeDispatchEvent?.(\n e,\n renderer,\n scoped,\n data,\n broadcast\n );\n\n if (!broadcast) {\n const eventConfig = renderer?.props?.onEvent?.[eventName];\n\n if (!eventConfig) {\n // 没命中也没关系\n return Promise.resolve();\n }\n\n unbindEvent = bindEvent(renderer);\n }\n\n // 没有可处理的监听\n if (!rendererEventListeners.length) {\n return Promise.resolve();\n }\n // 如果是广播动作,就直接复用\n const rendererEvent =\n broadcast ||\n createRendererEvent(eventName, {\n env: renderer?.props?.env,\n nativeEvent: e,\n data,\n scoped\n });\n\n // 过滤&排序\n const listeners = rendererEventListeners\n .filter(\n (item: RendererEventListener) =>\n item.type === eventName &&\n (broadcast ? true : item.renderer === renderer)\n )\n .sort(\n (prev: RendererEventListener, next: RendererEventListener) =>\n next.weight - prev.weight\n );\n\n for (let listener of listeners) {\n await runActions(listener.actions, listener.renderer, rendererEvent);\n\n // 停止后续监听器执行\n if (rendererEvent.stoped) {\n break;\n }\n }\n\n unbindEvent?.();\n\n return Promise.resolve(rendererEvent);\n}\n\nexport const getRendererEventListeners = () => {\n return rendererEventListeners;\n};\n\nexport default {};\n"
12
12
  ]
13
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amis",
3
- "version": "1.9.0-beta.12",
3
+ "version": "1.9.0-beta.15",
4
4
  "description": "一种MIS页面生成工具",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -105,6 +105,7 @@
105
105
  "@types/history": "^4.6.0",
106
106
  "@types/hoist-non-react-statics": "^3.3.1",
107
107
  "@types/jest": "^27.0.2",
108
+ "@types/json-schema": "^7.0.11",
108
109
  "@types/lodash": "^4.14.175",
109
110
  "@types/markdown-it": "^12.2.1",
110
111
  "@types/mkdirp": "^1.0.1",
@@ -162,7 +163,7 @@
162
163
  "prismjs": "^1.25.0",
163
164
  "react": "^18.0.0",
164
165
  "react-dom": "^18.0.0",
165
- "react-router": "^5.2.1",
166
+ "react-router": "5.2.1",
166
167
  "react-router-dom": "5.3.0",
167
168
  "react-test-renderer": "^18.0.0",
168
169
  "ts-jest": "^27.1.4",