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.
- package/lib/Schema.d.ts +4 -2
- package/lib/Schema.js.map +1 -1
- package/lib/SchemaRenderer.d.ts +2 -2
- package/lib/SchemaRenderer.js +3 -3
- package/lib/SchemaRenderer.js.map +2 -2
- package/lib/actions/Action.d.ts +8 -6
- package/lib/actions/Action.js.map +2 -2
- package/lib/actions/AjaxAction.d.ts +10 -7
- package/lib/actions/AjaxAction.js +27 -21
- package/lib/actions/AjaxAction.js.map +2 -2
- package/lib/actions/BreakAction.d.ts +2 -2
- package/lib/actions/BreakAction.js.map +1 -1
- package/lib/actions/BroadcastAction.d.ts +3 -3
- package/lib/actions/BroadcastAction.js +3 -2
- package/lib/actions/BroadcastAction.js.map +2 -2
- package/lib/actions/CmptAction.d.ts +2 -2
- package/lib/actions/CmptAction.js +7 -9
- package/lib/actions/CmptAction.js.map +2 -2
- package/lib/actions/ContinueAction.d.ts +2 -2
- package/lib/actions/ContinueAction.js.map +1 -1
- package/lib/actions/CopyAction.d.ts +7 -4
- package/lib/actions/CopyAction.js +8 -6
- package/lib/actions/CopyAction.js.map +2 -2
- package/lib/actions/CustomAction.d.ts +2 -2
- package/lib/actions/CustomAction.js.map +1 -1
- package/lib/actions/DialogAction.d.ts +14 -8
- package/lib/actions/DialogAction.js +6 -6
- package/lib/actions/DialogAction.js.map +2 -2
- package/lib/actions/DrawerAction.d.ts +3 -3
- package/lib/actions/DrawerAction.js.map +1 -1
- package/lib/actions/EmailAction.d.ts +10 -7
- package/lib/actions/EmailAction.js +4 -5
- package/lib/actions/EmailAction.js.map +2 -2
- package/lib/actions/LinkAction.d.ts +19 -11
- package/lib/actions/LinkAction.js +6 -5
- package/lib/actions/LinkAction.js.map +2 -2
- package/lib/actions/LoopAction.d.ts +6 -3
- package/lib/actions/LoopAction.js +22 -20
- package/lib/actions/LoopAction.js.map +2 -2
- package/lib/actions/PageAction.d.ts +8 -5
- package/lib/actions/PageAction.js +3 -2
- package/lib/actions/PageAction.js.map +2 -2
- package/lib/actions/ParallelAction.d.ts +2 -2
- package/lib/actions/ParallelAction.js.map +1 -1
- package/lib/actions/SwitchAction.d.ts +2 -2
- package/lib/actions/SwitchAction.js.map +1 -1
- package/lib/actions/ToastAction.d.ts +2 -2
- package/lib/actions/ToastAction.js +6 -4
- package/lib/actions/ToastAction.js.map +2 -2
- package/lib/components/Editor.d.ts +84 -84
- package/lib/components/InputBox.js +1 -1
- package/lib/components/InputBox.js.map +2 -2
- package/lib/components/Pagination.d.ts +1175 -0
- package/lib/components/Pagination.js +274 -0
- package/lib/components/Pagination.js.map +13 -0
- package/lib/components/PickerContainer.d.ts +1 -0
- package/lib/components/PickerContainer.js +3 -2
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/Rating.js +11 -9
- package/lib/components/Rating.js.map +2 -2
- package/lib/components/Select.js +3 -3
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Tag.d.ts +148 -0
- package/lib/components/Tag.js +96 -0
- package/lib/components/Tag.js.map +13 -0
- package/lib/components/TooltipWrapper.d.ts +25 -21
- package/lib/components/TooltipWrapper.js +11 -1
- package/lib/components/TooltipWrapper.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +85 -84
- package/lib/components/TransferDropDown.js +2 -2
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/Tree.d.ts +84 -84
- package/lib/components/formula/VariableList.d.ts +1 -0
- package/lib/components/formula/VariableList.js.map +2 -2
- package/lib/components/icons.js +2 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +4 -1
- package/lib/components/index.js +7 -1
- package/lib/components/index.js.map +2 -2
- package/lib/components/schema-editor/Array.d.ts +11 -0
- package/lib/components/schema-editor/Array.js +66 -0
- package/lib/components/schema-editor/Array.js.map +13 -0
- package/lib/components/schema-editor/Common.d.ts +29 -0
- package/lib/components/schema-editor/Common.js +69 -0
- package/lib/components/schema-editor/Common.js.map +13 -0
- package/lib/components/schema-editor/Item.d.ts +9 -0
- package/lib/components/schema-editor/Item.js +31 -0
- package/lib/components/schema-editor/Item.js.map +13 -0
- package/lib/components/schema-editor/Object.d.ts +44 -0
- package/lib/components/schema-editor/Object.js +191 -0
- package/lib/components/schema-editor/Object.js.map +13 -0
- package/lib/components/schema-editor/SchemaVariableList.d.ts +316 -0
- package/lib/components/schema-editor/SchemaVariableList.js +74 -0
- package/lib/components/schema-editor/SchemaVariableList.js.map +13 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +305 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.js +32 -0
- package/lib/components/schema-editor/SchemaVariableListPicker.js.map +13 -0
- package/lib/components/schema-editor/index.d.ts +520 -0
- package/lib/components/schema-editor/index.js +118 -0
- package/lib/components/schema-editor/index.js.map +13 -0
- package/lib/components/table/Cell.d.ts +930 -0
- package/lib/components/table/Cell.js +36 -0
- package/lib/components/table/Cell.js.map +13 -0
- package/lib/components/table/HeadCellDropDown.d.ts +514 -0
- package/lib/components/table/HeadCellDropDown.js +52 -0
- package/lib/components/table/HeadCellDropDown.js.map +13 -0
- package/lib/components/table/HeadCellFilter.d.ts +771 -0
- package/lib/components/table/HeadCellFilter.js +106 -0
- package/lib/components/table/HeadCellFilter.js.map +13 -0
- package/lib/components/table/HeadCellSelect.d.ts +672 -0
- package/lib/components/table/HeadCellSelect.js +46 -0
- package/lib/components/table/HeadCellSelect.js.map +13 -0
- package/lib/components/table/HeadCellSort.d.ts +498 -0
- package/lib/components/table/HeadCellSort.js +67 -0
- package/lib/components/table/HeadCellSort.js.map +13 -0
- package/lib/components/table/index.d.ts +1355 -0
- package/lib/components/table/index.js +1095 -0
- package/lib/components/table/index.js.map +13 -0
- package/lib/env.d.ts +2 -4
- package/lib/env.js.map +2 -2
- package/lib/factory.js +0 -95
- package/lib/factory.js.map +2 -2
- package/lib/icons/dot.js +11 -0
- package/lib/index.d.ts +6 -1
- package/lib/index.js +9 -2
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +18 -1
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +18 -1
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +20 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Action.js +0 -2
- package/lib/renderers/Action.js.map +2 -2
- package/lib/renderers/Carousel.d.ts +5 -1
- package/lib/renderers/Carousel.js +18 -5
- package/lib/renderers/Carousel.js.map +2 -2
- package/lib/renderers/Form/ButtonGroupSelect.d.ts +2 -0
- package/lib/renderers/Form/ButtonGroupSelect.js +7 -0
- package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
- package/lib/renderers/Form/Checkbox.js +3 -4
- package/lib/renderers/Form/Checkbox.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.d.ts +2 -1
- package/lib/renderers/Form/Checkboxes.js +19 -14
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/Combo.js +23 -4
- package/lib/renderers/Form/Combo.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +126 -18
- package/lib/renderers/Form/Editor.d.ts +412 -112
- package/lib/renderers/Form/Editor.js +10 -1
- package/lib/renderers/Form/Editor.js.map +2 -2
- package/lib/renderers/Form/InputExcel.js +6 -1
- package/lib/renderers/Form/InputExcel.js.map +2 -2
- package/lib/renderers/Form/InputFile.js +1 -2
- package/lib/renderers/Form/InputFile.js.map +2 -2
- package/lib/renderers/Form/InputTree.js +1 -1
- package/lib/renderers/Form/InputTree.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +0 -6
- package/lib/renderers/Form/JSONSchemaEditor.d.ts +41 -0
- package/lib/renderers/Form/JSONSchemaEditor.js +33 -0
- package/lib/renderers/Form/JSONSchemaEditor.js.map +13 -0
- package/lib/renderers/Form/ListSelect.d.ts +2 -0
- package/lib/renderers/Form/ListSelect.js +7 -0
- package/lib/renderers/Form/ListSelect.js.map +2 -2
- package/lib/renderers/Form/Options.js +1 -0
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/Select.js +12 -1
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TabsTransfer.d.ts +1 -1
- package/lib/renderers/Form/TabsTransfer.js +2 -2
- package/lib/renderers/Form/TabsTransfer.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.d.ts +4 -0
- package/lib/renderers/Form/TreeSelect.js +2 -2
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/wrapControl.js +10 -5
- package/lib/renderers/Form/wrapControl.js.map +2 -2
- package/lib/renderers/Pagination.d.ts +49 -30
- package/lib/renderers/Pagination.js +3 -132
- package/lib/renderers/Pagination.js.map +2 -2
- package/lib/renderers/Table/HeadCellSearchDropdown.js +0 -1
- package/lib/renderers/Table/HeadCellSearchDropdown.js.map +2 -2
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +158 -0
- package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +13 -0
- package/lib/renderers/Table-v2/TableCell.d.ts +6 -0
- package/lib/renderers/Table-v2/TableCell.js +28 -0
- package/lib/renderers/Table-v2/TableCell.js.map +13 -0
- package/lib/renderers/Table-v2/index.d.ts +256 -0
- package/lib/renderers/Table-v2/index.js +548 -0
- package/lib/renderers/Table-v2/index.js.map +13 -0
- package/lib/renderers/Tabs.js +1 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Tag.d.ts +66 -0
- package/lib/renderers/Tag.js +53 -0
- package/lib/renderers/Tag.js.map +13 -0
- package/lib/renderers/Wizard.js +3 -3
- package/lib/renderers/Wizard.js.map +2 -2
- package/lib/schemaExtend.js +24 -30
- package/lib/schemaExtend.js.map +2 -2
- package/lib/store/combo.d.ts +140 -20
- package/lib/store/form.d.ts +56 -8
- package/lib/store/formItem.d.ts +3 -1
- package/lib/store/formItem.js +3 -1
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/index.js +2 -0
- package/lib/store/index.js.map +2 -2
- package/lib/store/table-v2.d.ts +308 -0
- package/lib/store/table-v2.js +452 -0
- package/lib/store/table-v2.js.map +13 -0
- package/lib/store/table.d.ts +112 -16
- package/lib/store/table.js +1 -1
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +1686 -120
- package/lib/themes/ang.css +1807 -208
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +1667 -101
- package/lib/themes/antd.css +1789 -201
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1662 -97
- package/lib/themes/cxd.css +1983 -394
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +1667 -101
- package/lib/themes/dark.css +1789 -201
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default-ie11.css +1662 -97
- package/lib/themes/default.css +1983 -394
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/DataSchema.d.ts +25 -0
- package/lib/utils/DataSchema.js +104 -0
- package/lib/utils/DataSchema.js.map +13 -0
- package/lib/utils/DataScope.d.ts +23 -0
- package/lib/utils/DataScope.js +140 -0
- package/lib/utils/DataScope.js.map +13 -0
- package/lib/utils/handleAction.js +1 -1
- package/lib/utils/handleAction.js.map +2 -2
- package/lib/utils/renderer-event.d.ts +8 -2
- package/lib/utils/renderer-event.js +102 -1
- package/lib/utils/renderer-event.js.map +2 -2
- package/package.json +3 -2
- package/schema.json +1476 -469
- package/scss/_properties.scss +69 -0
- package/scss/components/_button.scss +37 -39
- package/scss/components/_context-menu.scss +3 -18
- package/scss/components/_json-schema-editor.scss +126 -0
- package/scss/components/_pagination.scss +104 -23
- package/scss/components/_result-box.scss +2 -2
- package/scss/components/_table-v2.scss +912 -0
- package/scss/components/_tag.scss +177 -0
- package/scss/components/form/_selection.scss +1 -14
- package/scss/components/form/_text.scss +1 -1
- package/scss/themes/_antd-variables.scss +0 -13
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-variables.scss +7 -17
- package/scss/themes/_dark-variables.scss +0 -13
- package/scss/themes/cxd.scss +1 -1
- package/sdk/ang-ie11.css +2240 -227
- package/sdk/ang.css +2905 -859
- package/sdk/antd-ie11.css +2233 -220
- package/sdk/antd.css +2905 -870
- package/sdk/barcode.js +51 -51
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +2223 -211
- package/sdk/cxd.css +2911 -875
- package/sdk/dark-ie11.css +2233 -220
- package/sdk/dark.css +2905 -870
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +18 -1
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +16 -16
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +2223 -211
- package/sdk/sdk.css +2911 -875
- package/sdk/sdk.js +1326 -1270
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +7 -0
- package/src/SchemaRenderer.tsx +4 -5
- package/src/actions/Action.ts +7 -6
- package/src/actions/AjaxAction.ts +33 -24
- package/src/actions/BreakAction.ts +2 -2
- package/src/actions/BroadcastAction.ts +6 -5
- package/src/actions/CmptAction.ts +5 -6
- package/src/actions/ContinueAction.ts +2 -2
- package/src/actions/CopyAction.ts +14 -8
- package/src/actions/CustomAction.ts +2 -2
- package/src/actions/DialogAction.ts +16 -10
- package/src/actions/DrawerAction.ts +3 -3
- package/src/actions/EmailAction.ts +12 -12
- package/src/actions/LinkAction.ts +34 -14
- package/src/actions/LoopAction.ts +13 -8
- package/src/actions/PageAction.ts +9 -6
- package/src/actions/ParallelAction.ts +2 -2
- package/src/actions/SwitchAction.ts +2 -2
- package/src/actions/ToastAction.ts +9 -5
- package/src/components/InputBox.tsx +1 -0
- package/src/components/Pagination.tsx +446 -0
- package/src/components/PickerContainer.tsx +8 -5
- package/src/components/Rating.tsx +16 -9
- package/src/components/Select.tsx +3 -3
- package/src/components/Tag.tsx +179 -0
- package/src/components/TooltipWrapper.tsx +14 -1
- package/src/components/TransferDropDown.tsx +3 -0
- package/src/components/formula/VariableList.tsx +1 -0
- package/src/components/icons.tsx +2 -0
- package/src/components/index.tsx +7 -1
- package/src/components/schema-editor/Array.tsx +95 -0
- package/src/components/schema-editor/Common.tsx +138 -0
- package/src/components/schema-editor/Item.tsx +36 -0
- package/src/components/schema-editor/Object.tsx +299 -0
- package/src/components/schema-editor/SchemaVariableList.tsx +97 -0
- package/src/components/schema-editor/SchemaVariableListPicker.tsx +66 -0
- package/src/components/schema-editor/index.tsx +211 -0
- package/src/components/table/Cell.tsx +70 -0
- package/src/components/table/HeadCellDropDown.tsx +115 -0
- package/src/components/table/HeadCellFilter.tsx +193 -0
- package/src/components/table/HeadCellSelect.tsx +86 -0
- package/src/components/table/HeadCellSort.tsx +102 -0
- package/src/components/table/index.tsx +1681 -0
- package/src/env.tsx +7 -14
- package/src/factory.tsx +3 -106
- package/src/icons/dot.svg +11 -0
- package/src/index.tsx +8 -1
- package/src/locale/de-DE.ts +18 -1
- package/src/locale/en-US.ts +18 -1
- package/src/locale/zh-CN.ts +20 -1
- package/src/renderers/Action.tsx +1 -1
- package/src/renderers/Carousel.tsx +21 -6
- package/src/renderers/Form/ButtonGroupSelect.tsx +10 -1
- package/src/renderers/Form/Checkbox.tsx +4 -4
- package/src/renderers/Form/Checkboxes.tsx +31 -25
- package/src/renderers/Form/Combo.tsx +20 -4
- package/src/renderers/Form/Editor.tsx +15 -1
- package/src/renderers/Form/InputExcel.tsx +6 -1
- package/src/renderers/Form/InputFile.tsx +1 -2
- package/src/renderers/Form/InputTree.tsx +1 -1
- package/src/renderers/Form/JSONSchemaEditor.tsx +67 -0
- package/src/renderers/Form/ListSelect.tsx +9 -1
- package/src/renderers/Form/Options.tsx +1 -1
- package/src/renderers/Form/Select.tsx +7 -0
- package/src/renderers/Form/TabsTransfer.tsx +2 -2
- package/src/renderers/Form/TreeSelect.tsx +8 -1
- package/src/renderers/Form/wrapControl.tsx +11 -5
- package/src/renderers/Pagination.tsx +65 -253
- package/src/renderers/Table/HeadCellSearchDropdown.tsx +0 -1
- package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +244 -0
- package/src/renderers/Table-v2/TableCell.tsx +19 -0
- package/src/renderers/Table-v2/index.tsx +1140 -0
- package/src/renderers/Tabs.tsx +1 -1
- package/src/renderers/Tag.tsx +128 -0
- package/src/renderers/Wizard.tsx +3 -3
- package/src/schemaExtend.ts +24 -28
- package/src/store/formItem.ts +5 -1
- package/src/store/index.ts +2 -0
- package/src/store/table-v2.ts +646 -0
- package/src/store/table.ts +1 -1
- package/src/utils/DataSchema.ts +131 -0
- package/src/utils/DataScope.ts +190 -0
- package/src/utils/handleAction.ts +1 -1
- 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": "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",
|
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,
|
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()
|
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
|
-
|
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:
|
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": "
|
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:
|
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.
|
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": "
|
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",
|