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,13 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"file": "index.js",
|
4
|
+
"sourceRoot": "",
|
5
|
+
"sources": [
|
6
|
+
"/src/components/table/index.tsx"
|
7
|
+
],
|
8
|
+
"names": [],
|
9
|
+
"mappings": "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",
|
10
|
+
"sourcesContent": [
|
11
|
+
"/**\n * @file Table\n * @author fex\n */\n\nimport React from 'react';\nimport {findDOMNode} from 'react-dom';\nimport findLastIndex from 'lodash/findLastIndex';\nimport find from 'lodash/find';\nimport isEqual from 'lodash/isEqual';\nimport filter from 'lodash/filter';\nimport intersection from 'lodash/intersection';\nimport cloneDeep from 'lodash/cloneDeep';\nimport Sortable from 'sortablejs';\n\nimport {themeable, ClassNamesFn, ThemeProps} from '../../theme';\nimport {localeable, LocaleProps} from '../../locale';\nimport {isObject, isBreakpoint, guid} from '../../utils/helper';\nimport {Icon} from '../icons';\nimport CheckBox from '../Checkbox';\nimport Spinner from '../Spinner';\n\nimport HeadCellSort from './HeadCellSort';\nimport HeadCellFilter from './HeadCellFilter';\nimport HeadCellSelect from './HeadCellSelect';\nimport Cell from './Cell';\n\nexport interface ColumnProps {\n title: string | React.ReactNode | Function;\n key: string;\n className?: string;\n children?: Array<ColumnProps>;\n render: Function;\n fixed?: boolean | string;\n width?: number | string;\n sorter?: (a: any, b: any) => number | boolean; // 设置为true时,执行onSort,否则执行前端排序\n sortOrder?: string; // 升序ascend、降序descend\n filters?: Array<any>; // 筛选数据源,配置了数据源才展示\n filterMode?: string; // menu/tree 默认menu 先只支持menu\n filterMultiple?: boolean; // 是否支持多选\n filteredValue?: Array<string>;\n filtered?: boolean;\n filterDropdown?: Function | React.ReactNode; // 列筛选 filterDropdown的优先级更高 和filters两者不能并存\n align?: string; // left/right/center\n breakpoint?: '*' | 'xs' | 'sm' | 'md' | 'lg';\n}\n\nexport interface ThProps extends ColumnProps {\n rowSpan: number;\n colSpan: number;\n groupId: string; // 随机生成表头分组的id\n depth: number; // 表头分组层级\n}\n\nexport interface TdProps extends ColumnProps {\n rowSpan: number;\n colSpan: number;\n groupId: string; // 随机生成表头分组的id\n}\n\nexport interface RowSelectionOptionProps {\n key: string;\n text: string;\n onSelect: Function;\n}\n\nexport interface RowSelectionProps {\n type: string;\n rowClick: boolean; // 点击复选框选中还是点击整行选中\n fixed: boolean; // 只能固定在左边\n selectedRowKeys: Array<string | number>;\n keyField?: string; // 默认是key,可自定义\n columnWidth?: number;\n selections?: Array<RowSelectionOptionProps>;\n onChange?: Function;\n onSelect?: Function;\n onSelectAll?: Function;\n getCheckboxProps: Function;\n}\n\nexport interface ExpandableProps {\n expandedRowKeys?: Array<string | number>;\n keyField: string; // 默认是key,可自定义\n columnWidth?: number;\n rowExpandable: Function;\n defaultExpandedRowKeys?: Array<string | number>;\n onExpand?: Function;\n onExpandedRowsChange?: Function;\n expandedRowRender?: Function;\n expandedRowClassName?: Function;\n expandIcon?: Function;\n fixed?: boolean;\n}\n\nexport interface SummaryProps {\n colSpan: number; // 手动控制列合并 先不支持列合并\n fixed: string | boolean; // 手动设置左固定还是右固定\n render: Function | React.ReactNode;\n}\n\nexport interface OnRowProps {\n onRowMouseEnter?: Function;\n onRowMouseLeave?: Function;\n onRowClick?: Function\n}\n\nexport interface TableProps extends ThemeProps, LocaleProps {\n title: string | React.ReactNode | Function;\n footer: string | React.ReactNode | Function;\n className?: string;\n dataSource: Array<any>;\n classnames: ClassNamesFn\n columns: Array<ColumnProps>;\n scroll?: ScrollProps;\n rowSelection?: RowSelectionProps,\n onSort?: Function;\n expandable?: ExpandableProps;\n bordered?: boolean;\n size?: string; // large | default | small\n headSummary?: Function | React.ReactNode | Array<SummaryProps | Array<SummaryProps>>;\n footSummary?: Function | React.ReactNode | Array<SummaryProps | Array<SummaryProps>>;\n draggable?: boolean;\n onDrag?: Function;\n resizable?: boolean; // 列宽调整\n placeholder?: string | React.ReactNode | Function; // 数据为空展示\n loading?: boolean | string | React.ReactNode; // 数据加载中\n sticky?: boolean; // 粘性头部\n onFilter?: Function; // 筛选/过滤函数\n childrenColumnName?: string; // 控制数据源哪一列作为嵌套数据,不想支持,就随便设置一个不存在的值,默认是children\n keyField?: string; // 展开嵌套数据的时候,用哪个字段做唯一标识\n indentSize: number; // 树形展示时 设置缩进值\n onRow?: OnRowProps; // 行操作事件\n rowClassName?: Function;\n lineHeight?: string; // 可设置large、middle固定高度,不设置则跟随内容\n showHeader?: boolean; // 是否展示表头\n}\n\nexport interface ScrollProps {\n x: number | string | true;\n y: number | string;\n}\n\nexport interface TableState {\n selectedRowKeys: Array<string | number>;\n dataSource: Array<any>;\n expandedRowKeys: Array<string | number>;\n colWidths: Array<number>;\n}\n\nfunction getMaxLevelThRowSpan(columns: Array<ColumnProps>) {\n let maxLevel = 0;\n\n Array.isArray(columns) && columns.forEach(c => {\n const level = getThRowSpan(c);\n if (maxLevel < level) {\n maxLevel = level;\n }\n });\n\n return maxLevel;\n}\n\nfunction getThRowSpan(column: ColumnProps) {\n if (!column.children || (column.children && !column.children.length)) {\n return 1;\n }\n\n return 1 + getMaxLevelThRowSpan(column.children);\n}\n\nfunction getThColSpan(column: ColumnProps) {\n if (!column.children || (column.children && !column.children.length)) {\n return 1;\n }\n\n let childrenLength = 0;\n column.children.forEach(item => childrenLength += getThColSpan(item));\n\n return childrenLength;\n}\n\nfunction buildColumns(\n columns: Array<ColumnProps> = [],\n thColumns: Array<Array<any>>,\n tdColumns: Array<ColumnProps> = [],\n depth: number = 0,\n id?: string,\n fixed?: boolean | string) {\n const maxLevel = getMaxLevelThRowSpan(columns);\n // 在处理表头时,如果父级column设置了fixed属性,那么所有children保持一致\n Array.isArray(columns) && columns.forEach(column => {\n const groupId = id || guid();\n let childMaxLevel = 0;\n if (column.children) {\n childMaxLevel = getMaxLevelThRowSpan(column.children);\n }\n const newColumn = {\n ...column,\n rowSpan: childMaxLevel ? 1 : maxLevel - childMaxLevel + depth,\n colSpan: getThColSpan(column),\n groupId,\n depth\n };\n const tdColumn = {\n ...column,\n groupId\n };\n if (fixed) {\n newColumn.fixed = fixed;\n tdColumn.fixed = fixed;\n }\n\n if (!thColumns[depth]) {\n thColumns[depth] = []\n }\n thColumns[depth].push(newColumn);\n if (column.children && column.children.length > 0) {\n buildColumns(column.children, thColumns, tdColumns, depth + 1, groupId, column.fixed);\n }\n else {\n const {children, ...rest} = tdColumn;\n tdColumns.push(rest);\n }\n });\n}\n\nfunction isFixedLeftColumn(fixed: boolean | string | undefined) {\n return fixed === true || fixed === 'left';\n}\n\nfunction isFixedRightColumn(fixed: boolean | string | undefined) {\n return fixed === 'right';\n}\n\nfunction getPreviousLeftWidth(\n doms: HTMLCollection,\n index: number,\n columns: Array<ColumnProps>\n) {\n let width = 0;\n for (let i = 0; i < index; i++) {\n if (columns && columns[i] && isFixedLeftColumn(columns[i].fixed)) {\n const dom = doms[i] as HTMLElement;\n width += dom.offsetWidth;\n }\n }\n return width;\n}\n\nfunction getAfterRightWidth(\n doms: HTMLCollection,\n index: number,\n columns: Array<ColumnProps>\n) {\n let width = 0;\n for (let i = doms.length - 0; i > index; i--) {\n if (columns && columns[i] && isFixedRightColumn(columns[i].fixed)) {\n const dom = doms[i] as HTMLElement;\n width += dom.offsetWidth;\n }\n }\n return width;\n}\n\nfunction hasFixedColumn(columns: Array<ColumnProps>) {\n return find(columns, column => column.fixed);\n}\n\nfunction getSummaryColumns(summary: Array<SummaryProps>) {\n if (!summary) {\n return [];\n }\n const last: Array<SummaryProps> = [];\n const first: Array<SummaryProps> = [];\n summary.forEach(item => {\n if (isObject(item)) {\n first.push(item);\n } else if (Array.isArray(item)) {\n last.push(item);\n }\n });\n return [first, ...last];\n}\n\nconst DefaultCellWidth = 40;\n\nexport class Table extends React.PureComponent<TableProps, TableState> {\n static defaultProps = {\n title: '',\n className: '',\n dataSource: [],\n columns: [],\n indentSize: 15,\n placeholder: '暂无数据',\n showHeader: true\n };\n\n constructor(props: TableProps) {\n super(props);\n\n this.selectedRows = props.rowSelection\n ? this.getSelectedRows(props.dataSource, props.rowSelection?.selectedRowKeys)\n : [];\n\n this.state = {\n selectedRowKeys: props.rowSelection\n ? (props.rowSelection.selectedRowKeys.map(key => key) || []) : [],\n dataSource: props.dataSource || [], // 为了支持前端搜索\n expandedRowKeys: [\n ...(props.expandable ? (props.expandable.expandedRowKeys || []) : []),\n ...props.expandable ? (props.expandable.defaultExpandedRowKeys || []) : []\n ],\n colWidths: []\n };\n\n this.onTableContentScroll = this.onTableContentScroll.bind(this);\n this.getPopOverContainer = this.getPopOverContainer.bind(this);\n }\n\n getPopOverContainer() {\n return findDOMNode(this);\n }\n\n // 表头配置\n thColumns: Array<Array<ThProps>>;\n // 表格配置\n tdColumns: Array<TdProps>;\n // 表格当前选中行\n selectedRows: Array<any>;\n // 拖拽排序\n sortable: Sortable;\n // 记录点击起始横坐标\n resizeStart: number;\n resizeKey: string;\n\n tableDom: React.RefObject<HTMLDivElement> = React.createRef();\n theadDom: React.RefObject<HTMLTableSectionElement> = React.createRef();\n tbodyDom: React.RefObject<HTMLTableSectionElement> = React.createRef();\n contentDom: React.RefObject<HTMLDivElement> = React.createRef();\n headerDom: React.RefObject<HTMLDivElement> = React.createRef();\n bodyDom: React.RefObject<HTMLDivElement> = React.createRef();\n tfootDom: React.RefObject<HTMLTableSectionElement> = React.createRef();\n footDom: React.RefObject<HTMLDivElement> = React.createRef();\n\n getColWidths() {\n const childrens = this.tbodyDom.current?.children[0]?.children || [];\n const colWidths: Array<any> = new Array(childrens ? childrens.length : 0);\n\n for (let i = 0; i < childrens.length; i++) {\n const child: any = childrens[i];\n colWidths[i] = child ? child.offsetWidth : null\n };\n\n return colWidths;\n }\n\n getSelectedRows(dataSource: Array<any>, selectedRowKeys: Array<string | number>) {\n const selectedRows: Array<any> = [];\n dataSource.forEach(data => {\n if (find(selectedRowKeys,\n key => key === data[this.getRowSelectionKeyField()])) {\n selectedRows.push(data);\n }\n });\n\n return selectedRows;\n }\n\n updateTableBodyFixed() {\n const tbodyDom = this.tbodyDom && (this.tbodyDom.current as HTMLElement);\n const tdColumns = [...this.tdColumns];\n this.updateTbodyFixedRow(tbodyDom, tdColumns);\n this.updateHeadSummaryFixedRow(tbodyDom);\n }\n\n updateColWidths() {\n this.setState({colWidths: this.getColWidths()}, () => {\n if (hasFixedColumn(this.props.columns)) {\n const theadDom = this.theadDom && (this.theadDom.current as HTMLElement);\n const thColumns = this.thColumns;\n this.updateTheadFixedRow(theadDom, thColumns);\n this.updateTableBodyFixed();\n }\n });\n }\n\n componentDidMount() {\n if (this.props.loading) {\n return;\n }\n\n if (hasFixedColumn(this.props.columns)) {\n const headerDom = this.headerDom && (this.headerDom.current as HTMLElement);\n if (headerDom) {\n const headerBody = headerDom.getElementsByTagName('tbody');\n headerBody && headerBody[0] && this.updateHeadSummaryFixedRow(headerBody[0]);\n }\n\n const tfootDom = this.tfootDom && (this.tfootDom.current as HTMLElement);\n tfootDom && this.updateFootSummaryFixedRow(tfootDom);\n }\n\n let current = null;\n if (this.contentDom && this.contentDom.current) {\n current = this.contentDom.current;\n current.addEventListener('scroll', this.onTableContentScroll.bind(this));\n } else {\n current = this.headerDom?.current;\n \n // overflow设置为hidden的情况\n const hiddenDomRefs = [this.headerDom, this.footDom];\n hiddenDomRefs.forEach(ref =>\n ref && ref.current\n && ref.current.addEventListener('wheel', this.onWheel.bind(this)));\n // 横向同步滚动\n const scrollDomRefs = [this.bodyDom];\n scrollDomRefs.forEach(ref =>\n ref && ref.current\n && ref.current.addEventListener('scroll', this.onTableScroll.bind(this)));\n }\n current && this.updateTableDom(current);\n\n if (this.props.draggable) {\n this.initDragging();\n }\n\n if (this.props.resizable) {\n this.theadDom.current?.addEventListener('mouseup', this.onResizeMouseUp.bind(this));\n }\n\n this.updateStickyHeader();\n\n this.updateColWidths();\n }\n\n componentDidUpdate(prevProps: TableProps, prevState: TableState) {\n // 数据源发生了变化\n if (!isEqual(prevProps.dataSource, this.props.dataSource)) {\n this.setState({dataSource: [...this.props.dataSource]}, () => this.updateColWidths()); // 异步加载数据需求再更新一次\n }\n\n // 选择项发生了变化触发\n if (!isEqual(prevState.selectedRowKeys, this.state.selectedRowKeys)) {\n // 更新保存的已选择行数据\n this.selectedRows = this.getSelectedRows(this.state.dataSource, this.state.selectedRowKeys);\n\n const {rowSelection} = this.props;\n rowSelection && rowSelection.onChange\n && rowSelection.onChange(this.state.selectedRowKeys, this.selectedRows);\n\n this.setState({selectedRowKeys: this.state.selectedRowKeys.filter((key, i, a) => a.indexOf(key) === i)});\n }\n\n // 外部传入的选择项发生了变化\n if (!isEqual(prevProps.rowSelection?.selectedRowKeys, this.props.rowSelection?.selectedRowKeys)) {\n if (this.props.rowSelection) {\n this.setState({selectedRowKeys: this.props.rowSelection.selectedRowKeys});\n this.selectedRows = this.getSelectedRows(this.state.dataSource, this.state.selectedRowKeys); \n }\n }\n\n // 外部传入的展开项发生了变化\n if (!isEqual(prevProps?.expandable?.expandedRowKeys, this.props.expandable?.expandedRowKeys)) {\n if (this.props.expandable) {\n this.setState({expandedRowKeys: this.props.expandable.expandedRowKeys || []});\n }\n }\n\n // 展开行变化时触发\n if (!isEqual(prevState.expandedRowKeys, this.state.expandedRowKeys)) {\n if (this.props.expandable) {\n const {onExpandedRowsChange, keyField} = this.props.expandable;\n const expandedRows: Array<any> = [];\n this.state.dataSource.forEach(item => {\n if (find(this.state.expandedRowKeys, key => key == item[keyField || 'key'])) {\n expandedRows.push(item);\n }\n });\n onExpandedRowsChange && onExpandedRowsChange(expandedRows);\n }\n }\n\n // sticky属性发生了变化\n if (prevProps.sticky !== this.props.sticky) {\n this.updateStickyHeader();\n }\n }\n\n componentWillUnmount() {\n this.contentDom && this.contentDom.current\n && this.contentDom.current.removeEventListener('scroll', this.onTableContentScroll.bind(this));\n\n const hiddenDomRefs = [this.headerDom, this.footDom];\n hiddenDomRefs.forEach(ref =>\n ref && ref.current\n && ref.current.removeEventListener('wheel', this.onWheel.bind(this)));\n\n const scrollDomRefs = [this.bodyDom];\n scrollDomRefs.forEach(ref =>\n ref && ref.current\n && ref.current.removeEventListener('scroll', this.onTableScroll.bind(this)));\n\n this.destroyDragging();\n }\n\n exchange(fromIndex: number, toIndex: number, item: any) {\n const {scroll, headSummary, onDrag} = this.props;\n // 如果有头部总结行 fromIndex就会+1\n if ((!scroll || scroll && !scroll.y) && headSummary) {\n fromIndex = fromIndex - 1;\n }\n\n const index = toIndex - fromIndex;\n\n const levels = item.getAttribute('row-levels');\n const rowIndex = +item.getAttribute('row-index');\n\n const dataSource = cloneDeep(this.state.dataSource);\n const levelsArray = levels ? levels.split(',') : [];\n const childrenColumnName = this.getChildrenColumnName();\n let data: Array<any> = dataSource;\n let i = 0;\n while (i < levelsArray.length) {\n data = data[levelsArray[i]][childrenColumnName];\n i++;\n }\n\n if (data && data.length > 0) {\n const row = cloneDeep(data[rowIndex]);\n data.splice(rowIndex, 1);\n data.splice(rowIndex + index, 0, row);\n }\n\n // 先通过事件把最新的排序数据提供出去\n // Sortable修改了dom 数据排序后再通过state更新 会有问题\n onDrag && onDrag(dataSource);\n }\n\n initDragging() {\n const {classnames: cx} = this.props;\n\n this.sortable = new Sortable(\n this.tbodyDom.current as HTMLElement,\n {\n group: 'table',\n animation: 150,\n handle: `.${cx('Table-dragCell')}`,\n ghostClass: 'is-dragging',\n onMove: (e: any) => {\n const dragged = e.dragged;\n const related = e.related;\n\n if (related && related.classList.contains(`${cx('Table-summary-row')}`)) {\n return false;\n }\n\n const draggedLevels = dragged.getAttribute('row-levels');\n const relatedLevels = related.getAttribute('row-levels');\n\n // 嵌套展示 不属于同一层的 不允许拖动\n // 否则涉及到试图的更新,比如子元素都被拖完了\n if (draggedLevels !== relatedLevels) {\n return false;\n }\n\n return true;\n },\n onEnd: (e: any) => {\n // 没有移动\n if (e.newIndex === e.oldIndex) {\n return;\n }\n\n this.exchange(e.oldIndex, e.newIndex, e.item);\n }\n }\n );\n }\n\n destroyDragging() {\n this.sortable && this.sortable.destroy();\n }\n\n updateStickyHeader() {\n if (this.props.sticky) {\n // 如果设置了sticky 如果父元素设置了overflow: auto top值还需要考虑padding值\n let parent = this.headerDom?.current?.parentElement;\n setTimeout(() => {\n while (parent && window.getComputedStyle(parent, null).getPropertyValue('overflow') !== 'auto') {\n parent = parent.parentElement;\n }\n if (parent && window.getComputedStyle(parent, null).getPropertyValue('overflow') === 'auto') {\n const paddingTop = window.getComputedStyle(parent, null).getPropertyValue('padding-top');\n if (paddingTop && this.headerDom && this.headerDom.current) {\n this.headerDom.current.style.top = '-' + paddingTop;\n }\n }\n });\n }\n }\n\n // 更新一个tr下的td的left和class\n updateFixedRow(row: HTMLElement, columns: Array<ColumnProps>) {\n const {classnames: cx} = this.props;\n\n const children = row.children;\n for (let i = 0; i < children.length; i++) {\n const dom = children[i] as HTMLElement;\n const fixed = columns[i] ? (columns[i].fixed || '') : '';\n if (isFixedLeftColumn(fixed)) {\n dom.style.left = i > 0 ? getPreviousLeftWidth(children, i, columns) + 'px' : '0';\n } else if (isFixedRightColumn(fixed)) {\n dom.style.right = i < children.length - 1\n ? getAfterRightWidth(children, i, columns) + 'px' : '0';\n }\n }\n // 最后一个左fixed的添加样式\n let leftIndex = findLastIndex(columns, column => isFixedLeftColumn(column.fixed));\n if (leftIndex > -1) {\n children[leftIndex]?.classList.add(cx('Table-cell-fix-left-last'));\n }\n // 第一个右fixed的添加样式\n let rightIndex = columns.findIndex(column => isFixedRightColumn(column.fixed));\n if (rightIndex > -1) {\n children[rightIndex]?.classList.add(cx('Table-cell-fix-right-first'));\n if (rightIndex > 0) {\n children[rightIndex - 1]?.classList.add(cx('Table-cell-fix-right-first-prev'));\n }\n }\n }\n\n // 在可选、可展开、可拖拽的情况下,补充column,方便fix处理\n prependColumns(columns: Array<any>) {\n const {rowSelection, expandable, draggable} = this.props;\n if (draggable) {\n columns.unshift({});\n } else {\n if (expandable) {\n columns.unshift(expandable);\n }\n if (rowSelection) {\n columns.unshift(rowSelection);\n }\n }\n }\n\n updateTheadFixedRow(thead: HTMLElement, columns: Array<any>) {\n const children = thead.children;\n for (let i = 0; i < children.length; i++) {\n const cols = [...columns[i]];\n if (i === 0) {\n this.prependColumns(cols);\n }\n\n this.updateFixedRow(children[i] as HTMLElement, cols);\n }\n }\n\n updateTbodyFixedRow(tbody: HTMLElement, columns: Array<any>) {\n const {classnames: cx} = this.props;\n const children = filter(tbody.children,\n child => !child.classList.contains(cx('Table-summary-row'))\n && !child.classList.contains(cx('Table-empty-row')));\n this.prependColumns(columns);\n for (let i = 0; i < children.length; i++) {\n this.updateFixedRow(children[i] as HTMLElement, columns);\n }\n }\n\n updateSummaryFixedRow(children: HTMLCollection | Array<Element>, columns: Array<any>) {\n for (let i = 0; i < children.length; i++) {\n this.updateFixedRow(children[i] as HTMLElement, columns[i]);\n }\n }\n\n updateFootSummaryFixedRow(tfoot: HTMLElement) {\n const {footSummary} = this.props;\n if (Array.isArray(footSummary)) {\n const columns = getSummaryColumns(footSummary as Array<SummaryProps>);\n this.updateSummaryFixedRow(tfoot.children, columns);\n }\n }\n\n updateHeadSummaryFixedRow(tbody: HTMLElement) {\n const {headSummary, classnames: cx} = this.props;\n if (Array.isArray(headSummary)) {\n const columns = getSummaryColumns(headSummary as Array<SummaryProps>);\n const children = filter(tbody.children,\n child => child.classList.contains(cx('Table-summary-row')));\n this.updateSummaryFixedRow(children, columns);\n }\n }\n\n renderColGroup(colWidths?: Array<number>) {\n const {rowSelection, classnames: cx, expandable, draggable} = this.props;\n\n const tdColumns = this.tdColumns;\n const isExpandable = this.isExpandableTable();\n const extraCount = this.getExtraColumnCount();\n\n return (\n <colgroup>\n {draggable\n ? <col\n className={cx('Table-drag-col')}\n style={{width: DefaultCellWidth + 'px'}}></col> : null}\n {!draggable && rowSelection\n ? <col className={cx('Table-selection-col')}\n style={{width: (rowSelection.columnWidth || DefaultCellWidth) + 'px'}}></col> : null}\n {\n !draggable && isExpandable ? <col\n className={cx('Table-expand-col')}\n style={{width: (expandable?.columnWidth || DefaultCellWidth) + 'px'}}\n ></col> : null\n }\n {tdColumns.map((data, index) => {\n const width = colWidths ? colWidths[index + extraCount] : data.width;\n return <col\n key={index}\n style={{width: typeof width === 'number' ? width + 'px' : width}}\n className={data.className ? cx(`Table-colgroup-${data.className}`) : ''}>\n </col>;\n })}\n </colgroup>\n );\n }\n\n onResizeMouseDown(event: React.MouseEvent<any>, key: string) {\n // 点击记录起始坐标\n this.resizeStart = event.clientX;\n // 记录点击的列名\n this.resizeKey = key;\n event && event.stopPropagation();\n }\n\n onResizeMouseUp(event: React.MouseEvent<any>) {\n // 点击了调整列宽\n if (this.resizeStart && this.resizeKey) {\n // 计算横向移动距离\n const distance = event.clientX - this.resizeStart;\n const tdColumns = [...this.tdColumns];\n let index = tdColumns.findIndex(c => c.key === this.resizeKey)\n + this.getExtraColumnCount();\n\n const colGroup = this.tableDom.current?.getElementsByTagName('colgroup')[0];\n let currentWidth = 0;\n if (colGroup && colGroup.children[index]) {\n const child = colGroup.children[index] as HTMLElement;\n currentWidth = child.offsetWidth;\n }\n \n let newWidth = 0;\n if (colGroup) {\n let maxDistance = 0; // 最多可以移动的距离\n // 调宽列\n if (distance > 0) {\n for (let i = 0; i < colGroup.children.length; i++) {\n const child = colGroup.children[i] as HTMLElement;\n // 自适应列 保证有一个最小宽度\n // 如果都设置了固定宽度 那一个都拖不动\n if (!this.tdColumns[i].width) {\n maxDistance += child.offsetWidth - DefaultCellWidth;\n }\n }\n if (colGroup.children[index]) {\n const child = colGroup.children[index] as HTMLElement;\n newWidth = currentWidth + Math.min(distance, maxDistance);\n child.style.width = newWidth + 'px';\n }\n } else { // 缩短列\n const autoColumns = [];\n for (let i = 0; i < colGroup.children.length; i++) {\n const child = colGroup.children[i] as HTMLElement;\n // 自适应列 保证有一个最小宽度\n // 如果都设置了固定宽度 那一个都拖不动\n if (!this.tdColumns[i].width) {\n autoColumns.push(child);\n }\n }\n maxDistance = DefaultCellWidth - currentWidth;\n if (colGroup.children[index]) {\n const child = colGroup.children[index] as HTMLElement;\n newWidth = currentWidth + Math.max(distance, maxDistance);\n child.style.width = newWidth + 'px';\n }\n const gap = Math.abs(Math.max(distance, maxDistance)) / autoColumns.length;\n autoColumns.forEach(c => {\n c.style.width = c.offsetWidth + gap + 'px';\n });\n }\n }\n\n const column = find(tdColumns, c => c.key === this.resizeKey);\n // 只有通过配置设置过的宽度保存到tdColumns\n // 自动分配的不保存\n // 这样可以一直调整了\n if (column && column.width && newWidth) {\n column.width = newWidth;\n }\n\n this.tdColumns = tdColumns;\n\n this.resizeStart = 0;\n this.resizeKey = '';\n }\n event && event.stopPropagation();\n }\n\n renderTHead() {\n const {\n rowSelection,\n dataSource,\n classnames: cx,\n onSort,\n expandable,\n draggable,\n resizable\n } = this.props;\n\n const thColumns = this.thColumns;\n // 获取一行最多th个数\n let maxCount = 0;\n thColumns.forEach(columns => {\n if (columns.length > maxCount) {\n maxCount = columns.length;\n }\n });\n const keyField = this.getRowSelectionKeyField();\n const dataList = rowSelection && rowSelection.getCheckboxProps\n ? this.state.dataSource.filter((data, index) => {\n const props = rowSelection.getCheckboxProps(data, index);\n return !props.disabled;\n }) : this.state.dataSource;\n \n const isExpandable = this.isExpandableTable();\n \n let allRowKeys: Array<string> = [];\n let allRows: Array<any> = [];\n dataList.forEach(data => {\n allRowKeys.push(data[keyField]);\n allRows.push(data);\n if (!expandable && this.hasChildrenRow(data)) {\n allRowKeys = [...allRowKeys, ...this.getDataChildrenKeys(data)];\n data[this.getChildrenColumnName()].forEach((item: any) => allRows.push(item));\n }\n });\n\n return (\n <thead ref={this.theadDom} className={cx('Table-thead')}>\n {thColumns.map((data, index) => {\n return <tr key={'th-cell-' + index}>\n {\n draggable && index === 0 ? <Cell\n wrapperComponent=\"th\"\n rowSpan={thColumns.length}\n className={cx('Table-dragCell')}></Cell> : null\n }\n {!draggable && rowSelection && index === 0\n ? <Cell\n wrapperComponent=\"th\"\n rowSpan={thColumns.length}\n fixed={rowSelection.fixed ? 'left': ''}\n className={cx('Table-checkCell')}>\n {rowSelection.type !== 'radio'\n ? [<CheckBox\n key=\"checkAll\"\n partial={this.state.selectedRowKeys.length > 0\n && this.state.selectedRowKeys.length < allRowKeys.length}\n checked={this.state.selectedRowKeys.length > 0}\n onChange={value => {\n let changeRows;\n if (value) {\n changeRows = dataList.filter(data => !this.hasCheckedRows(data));\n } else {\n changeRows = this.selectedRows;\n }\n const selectedRows = value ? allRows : [];\n this.setState({\n selectedRowKeys: value ? allRowKeys : []\n });\n\n rowSelection.onSelectAll\n && rowSelection.onSelectAll(value, selectedRows, changeRows);\n }}></CheckBox>,\n rowSelection.selections && rowSelection.selections.length > 0\n ? <HeadCellSelect\n key=\"checkSelection\"\n keys={allRowKeys}\n selections={rowSelection.selections}\n popOverContainer={this.getPopOverContainer}>\n </HeadCellSelect> : null] : null\n }</Cell> : null}\n {\n !draggable && isExpandable && index === 0\n ? <Cell\n wrapperComponent=\"th\"\n rowSpan={thColumns.length}\n fixed={expandable && expandable.fixed ? 'left': ''}\n className={cx('Table-row-expand-icon-cell')}></Cell> : null\n }\n {data.map((item, i) => {\n let sort = null;\n if (item.sorter) {\n sort = (\n <HeadCellSort\n column={item}\n onSort={onSort ? onSort : (payload: any) => {\n if (typeof item.sorter === 'function') {\n if (payload.orderBy) {\n const sortList = [...this.state.dataSource];\n this.setState({dataSource: sortList.sort(item.sorter as (a: any, b: any) => number)});\n } else {\n this.setState({dataSource: [...dataSource]});\n }\n }\n }}\n ></HeadCellSort>\n );\n }\n\n let filter = null;\n if (item.filterDropdown) {\n filter = item.filterDropdown;\n } else if (item.filters && item.filters.length > 0) {\n filter = (\n <HeadCellFilter\n column={item}\n popOverContainer={this.getPopOverContainer}>\n </HeadCellFilter>\n );\n }\n\n const children = <span>\n {sort}\n {filter}\n {resizable ? <i\n className={cx('Table-thead-resizable')}\n onMouseDown={e => this.onResizeMouseDown(e, item.key)}></i> : null}\n </span>;\n\n return <Cell\n wrapperComponent=\"th\"\n rowSpan={item.rowSpan}\n colSpan={item.colSpan}\n key={'cell' + (item.key || i)}\n fixed={item.fixed === true ? 'left' : item.fixed}\n className={cx({\n 'Table-cell-last': i === maxCount - 1 && i === data.length - 1\n })}\n groupId={item.groupId}\n depth={item.depth}>\n {typeof item.title === 'function' ? item.title(children) : item.title}\n </Cell>;\n })\n }</tr>;\n })}\n </thead>\n );\n }\n\n onRowClick(event: React.ChangeEvent<any>, record?: any, rowIndex?: number) {\n const {rowSelection, onRow} = this.props;\n\n if (rowSelection && rowSelection.type && rowSelection.rowClick) {\n const defaultKey = this.getRowSelectionKeyField();\n\n const isSelected = !!find(this.state.selectedRowKeys, key => key === record[defaultKey]);\n\n this.selectedSingleRow(!isSelected, record);\n }\n\n if (record && onRow) {\n onRow.onRowClick && onRow.onRowClick(event, record, rowIndex);\n }\n }\n\n onRowMouseEnter(event: React.ChangeEvent<any>, record?: any, rowIndex?: number) {\n const {classnames: cx, onRow} = this.props;\n\n let parent = event.target;\n while (parent && parent.tagName !== 'TR') {\n parent = parent.parentElement;\n }\n\n if (parent && !parent.classList.contains(cx('Table-row-disabled'))) {\n for (let i = 0; i < parent.children.length; i++) {\n const td = parent.children[i];\n td.classList.add(cx('Table-cell-row-hover')); // 保证有列fixed的时候样式一致\n }\n }\n\n if (record && onRow) {\n onRow.onRowMouseEnter && onRow.onRowMouseEnter(event, record, rowIndex);\n }\n }\n\n onRowMouseLeave(event: React.ChangeEvent<any>, record?: any, rowIndex?: number) {\n const {classnames: cx, onRow} = this.props;\n\n let parent = event.target;\n while (parent && parent.tagName !== 'TR') {\n parent = parent.parentElement;\n }\n\n if (parent) {\n for (let i = 0; i < parent.children.length; i++) {\n const td = parent.children[i];\n td.classList.remove(cx('Table-cell-row-hover'));\n }\n }\n\n if (record && onRow) {\n onRow.onRowMouseLeave && onRow.onRowMouseLeave(event, record, rowIndex);\n }\n }\n\n onExpandRow(data: any) {\n const {expandedRowKeys} = this.state;\n const {expandable} = this.props;\n const key = data[this.getExpandableKeyField()];\n this.setState({expandedRowKeys: [...expandedRowKeys, key]});\n expandable?.onExpand && expandable?.onExpand(true, data);\n }\n\n onCollapseRow(data: any) {\n const {expandedRowKeys} = this.state;\n const {expandable} = this.props;\n const key = data[this.getExpandableKeyField()];\n // 还是得模糊匹配 否则'3'、3匹配不上\n this.setState({expandedRowKeys: expandedRowKeys.filter(k => k != key)});\n expandable?.onExpand && expandable?.onExpand(false, data);\n }\n\n getChildrenColumnName() {\n const {childrenColumnName} = this.props;\n\n return childrenColumnName || 'children';\n }\n\n getRowSelectionKeyField() {\n const {rowSelection} = this.props;\n\n return rowSelection ? (rowSelection.keyField || 'key') : '';\n }\n\n getExpandableKeyField() {\n const {expandable, keyField} = this.props;\n\n return expandable?.keyField || keyField || 'key';\n }\n\n hasChildrenRow(data: any) {\n const key = this.getChildrenColumnName();\n return data[key]\n && Array.isArray(data[key]) && data[key].length > 0;\n }\n\n // 展开和嵌套不能共存\n isExpandableRow(data: any, rowIndex: number) {\n const {expandable} = this.props;\n\n return expandable && expandable.rowExpandable\n && expandable.rowExpandable(data, rowIndex);\n }\n\n // 获取当前行数据所有子行的key值\n getDataChildrenKeys(data: any) {\n let keys: Array<string> = [];\n\n if (this.hasChildrenRow(data)) {\n const key = this.getChildrenColumnName();\n data[key].forEach((item: any) =>\n keys = [\n ...keys,\n ...this.getDataChildrenKeys(item),\n item[this.getRowSelectionKeyField()]\n ]);\n }\n\n return keys;\n }\n\n hasCheckedRows(data: any) {\n const selectedRowKeys = this.state.selectedRowKeys;\n const childrenKeys = this.getDataChildrenKeys(data);\n\n return intersection(selectedRowKeys, [\n ...childrenKeys,\n data[this.getRowSelectionKeyField()]\n ]).length > 0;\n }\n\n hasCheckedChildrenRows(data: any) {\n const selectedRowKeys = this.state.selectedRowKeys;\n const childrenKeys = this.getDataChildrenKeys(data);\n const length = intersection(selectedRowKeys, childrenKeys).length;\n\n return length > 0;\n }\n\n getExpandedIcons(isExpanded: boolean, record: any) {\n const {classnames: cx} = this.props;\n\n return isExpanded\n ? <i\n className={cx(\n 'Table-expandBtn',\n 'is-active'\n )}\n onClick={this.onCollapseRow.bind(this, record)}>\n <Icon icon=\"right-arrow-bold\" className=\"icon\" />\n </i>\n : <i\n className={cx(\n 'Table-expandBtn'\n )}\n onClick={this.onExpandRow.bind(this, record)}>\n <Icon icon=\"right-arrow-bold\" className=\"icon\" />\n </i>;\n }\n\n selectedSingleRow(value: boolean, data: any) {\n const {rowSelection} = this.props;\n\n const defaultKey = this.getRowSelectionKeyField();\n const isRadio = rowSelection && rowSelection.type === 'radio';\n\n const callback = () => {\n rowSelection && rowSelection.onSelect\n && rowSelection.onSelect(\n data,\n value,\n this.selectedRows,\n this.state.selectedRowKeys\n );\n };\n\n if (value) {\n if (isRadio) {\n this.setState({\n selectedRowKeys: [data[defaultKey]]\n }, callback);\n } else {\n this.setState(prevState => (\n {\n selectedRowKeys: [\n ...prevState.selectedRowKeys,\n data[defaultKey],\n ...this.getDataChildrenKeys(data)\n ].filter((key, i, a) => a.indexOf(key) === i)\n }\n ), callback);\n }\n } else {\n if (!isRadio) {\n this.setState({\n selectedRowKeys: this.state.selectedRowKeys.filter(key =>\n ![data[defaultKey], ...this.getDataChildrenKeys(data)].includes(key))\n }, callback);\n }\n }\n }\n\n renderRow(data: any, rowIndex: number, levels: Array<number>) {\n const {\n classnames: cx,\n rowSelection,\n expandable,\n draggable,\n indentSize,\n rowClassName,\n lineHeight // 是否设置了固定行高\n } = this.props;\n\n const tdColumns = this.tdColumns;\n const isExpandable = this.isExpandableTable();\n const defaultKey = this.getRowSelectionKeyField();\n const colCount = this.getExtraColumnCount();\n\n // 当前行是否可展开\n const isExpandableRow = this.isExpandableRow(data, rowIndex);\n // 当前行是否有children\n const hasChildrenRow = this.hasChildrenRow(data);\n\n const isExpanded = !!find(this.state.expandedRowKeys,\n key => key == data[this.getExpandableKeyField()]); // == 匹配 否则'3'、3匹配不上\n\n // 设置缩进效果\n const indentDom = levels.length > 0 ? <span\n className={cx('Table-row-indent', `indent-level-${levels.length}`)}\n style={{paddingLeft: (indentSize * levels.length) + 'px'}}></span> : null;\n\n const cells = tdColumns.map((item, i) => {\n const render = item.render && typeof item.render === 'function'\n ? item.render(data[item.key], data, rowIndex, i) : null;\n let props = {rowSpan: 1, colSpan: 1};\n let children = render;\n if (render && isObject(render)) {\n props = render.props;\n children = render.children;\n // 如果合并行 且有展开行,那么合并行不生效\n if (props.rowSpan > 1 && isExpandableRow && hasChildrenRow) {\n props.rowSpan === 1;\n }\n }\n return props.rowSpan === 0 || props.colSpan === 0 ? null : <Cell\n key={i}\n {...props}\n fixed={item.fixed === true ? 'left' : item.fixed}\n column={item}\n groupId={item.groupId}>\n <div className={cx('Table-cell-wrapper', {\n [cx('Table-cell-wrapper-prefix')]: i === 0\n && (!!indentDom || levels.length === 0 && hasChildrenRow),\n [cx(`Table-cell-height-${lineHeight}`)]: !!lineHeight\n })}>\n {i === 0 && levels.length > 0 ? indentDom : null}\n {i === 0 && hasChildrenRow\n ? this.getExpandedIcons(isExpanded, data) : null}\n {render\n ? children\n : data[item.key]}\n </div>\n </Cell>;\n });\n\n const rowClassNameClass = rowClassName && typeof rowClassName === 'function'\n ? rowClassName(data, rowIndex) : '';\n\n // 可展开和嵌套不能同时支持\n // 设置了expandable 数据源里有children也就不生效了\n // 拖拽排序 可选、可展开都先不支持了,可以支持嵌套展示\n const checkboxProps = rowSelection && rowSelection.getCheckboxProps\n ? rowSelection.getCheckboxProps(data, rowIndex) : {};\n\n const expandedRowClassName = expandable && expandable.expandedRowClassName\n && typeof expandable.expandedRowClassName === 'function'\n ? expandable.expandedRowClassName(data, rowIndex) : '';\n const dataKey = this.getChildrenColumnName();\n\n const children = !draggable && isExpandableRow && isExpanded\n ? <tr\n key=\"expanded\"\n className={cx('Table-expanded-row', expandedRowClassName)}>\n <Cell colSpan={tdColumns.length + colCount}>\n {expandable && expandable.expandedRowRender\n && typeof expandable.expandedRowRender === 'function'\n ? expandable.expandedRowRender(data, rowIndex) : null}\n </Cell>\n </tr> : (this.hasChildrenRow(data) && isExpanded ? data[dataKey].map((item: any, index: number) => {\n return this.renderRow(item, index, [...levels, rowIndex]);\n }) : null);\n\n const isChecked = !!find(this.state.selectedRowKeys, key => key === data[defaultKey]);\n const hasChildrenChecked = this.hasCheckedChildrenRows(data);\n\n return [<tr\n key={rowIndex}\n row-index={rowIndex}\n row-levels={levels.join(',')}\n className={cx(\n 'Table-row',\n `Table-row-level-${levels.length}`,\n rowClassNameClass, {\n 'Table-row-disabled': !!checkboxProps.disabled\n })}\n onMouseEnter={e => this.onRowMouseEnter(e, data, rowIndex)}\n onMouseLeave={e => this.onRowMouseLeave(e, data, rowIndex)}\n onClick={e => this.onRowClick(e, data, rowIndex)}>\n {\n draggable ? <Cell\n className={cx('Table-dragCell')}>\n <Icon icon=\"drag-bar\" className=\"icon\"></Icon>\n </Cell> : null\n }\n {!draggable && rowSelection\n ? (<Cell\n fixed={rowSelection.fixed ? 'left' : ''}\n className={cx('Table-checkCell')}>\n <CheckBox\n name={'Table-checkbox'}\n type={rowSelection.type || 'checkbox'}\n partial={hasChildrenChecked && !isChecked}\n checked={hasChildrenChecked || isChecked}\n onChange={\n (value, shift) => {\n if (!(rowSelection && rowSelection.rowClick)) {\n this.selectedSingleRow(value, data);\n }\n\n event && event.stopPropagation();\n }\n }\n {...checkboxProps}></CheckBox></Cell>) : null}\n {\n !draggable && isExpandable ? <Cell\n fixed={expandable && expandable.fixed ? 'left' : ''}\n className={cx('Table-cell-expand-icon-cell')}>\n {isExpandableRow || hasChildrenRow\n ? this.getExpandedIcons(isExpanded, data) : null}\n </Cell> : null\n }\n {cells}</tr>, children];\n }\n\n renderTBody() {\n const {\n classnames: cx,\n headSummary,\n scroll,\n placeholder,\n sticky\n } = this.props;\n\n const tdColumns = this.tdColumns;\n const hasScrollY = scroll && scroll.y;\n const colCount = this.getExtraColumnCount();\n return (\n <tbody ref={this.tbodyDom} className={cx('Table-tbody')}>\n {!hasScrollY && !sticky && headSummary\n ? this.renderSummaryRow(headSummary) : null}\n {\n !this.state.dataSource.length\n ? <tr className={cx('Table-row', 'Table-empty-row')}>\n <Cell colSpan={tdColumns.length + colCount}>\n <div className={cx('Table-empty')}>\n {typeof placeholder === 'function' ? placeholder() : placeholder}\n </div>\n </Cell>\n </tr>\n : this.state.dataSource.map((data, index) => {\n return this.renderRow(data, index, []);\n })\n }\n </tbody>\n );\n }\n\n isExpandableTable() {\n const {expandable} = this.props;\n\n // 设置了expandable 优先级更高\n // 就不支持默认嵌套了\n return !!expandable;\n }\n\n isNestedTable() {\n const {dataSource} = this.props;\n return !!find(dataSource, item => this.hasChildrenRow(item));\n }\n\n getExtraColumnCount() {\n const {\n draggable,\n rowSelection\n } = this.props;\n\n let count = 0;\n if (draggable) {\n count++;\n } else {\n if (this.isExpandableTable()) {\n count++;\n }\n if (rowSelection) {\n count++;\n }\n }\n\n return count;\n }\n\n renderSummaryRow(summary: any) {\n const {classnames: cx, dataSource} = this.props;\n const cells: Array<React.ReactNode> = [];\n const trs: Array<React.ReactNode> = [];\n let colCount = this.getExtraColumnCount();\n\n (Array.isArray(summary) ? summary.forEach((s, index) => {\n Array.isArray(s) ? trs.push(<tr\n onMouseEnter={e => this.onRowMouseEnter(e)}\n onMouseLeave={e => this.onRowMouseLeave(e)}\n key={'summary-tr-' + index}\n className={cx('Table-summary-row')}>\n {s.map((d, i) => {\n // 将操作列自动添加到第一列,用户的colSpan只需要关心实际的列数\n const colSpan = i === 0 ? (d.colSpan || 1) + colCount : d.colSpan;\n return <Cell\n key={'summary-tr-cell-' + i}\n fixed={d.fixed}\n colSpan={colSpan}\n >\n {typeof d.render === 'function' ? d.render(dataSource) : d.render}\n </Cell>;\n })}</tr>) : cells.push(\n <Cell\n key={'summary-cell-' + index}\n fixed={s.fixed}\n colSpan={cells.length === 0 ? ((s.colSpan || 1) + colCount) : s.colSpan}>\n {typeof s.render === 'function' ? s.render(dataSource) : s.render}\n </Cell>);\n }) : null)\n\n return (\n summary ? (typeof summary === 'function'\n ? summary(dataSource) : [cells.length > 0 ? <tr\n onMouseEnter={e => this.onRowMouseEnter(e)}\n onMouseLeave={e => this.onRowMouseLeave(e)}\n key=\"summary-row\"\n className={cx('Table-summary-row')}>{cells}</tr> : null, ...trs]) : null\n );\n }\n\n renderTFoot() {\n const {classnames: cx, footSummary} = this.props;\n return (<tfoot ref={this.tfootDom} className={cx('Table-summary')}>\n {this.renderSummaryRow(footSummary)}\n </tfoot>);\n }\n\n updateTableDom(dom: HTMLElement) {\n const {classnames: cx} = this.props;\n const {scrollLeft, scrollWidth, offsetWidth} = dom;\n const table = this.tableDom.current;\n\n const leftCalss = cx('Table-ping-left');\n if (scrollLeft > 0) {\n table?.classList.add(leftCalss);\n } else {\n table?.classList.remove(leftCalss);\n }\n\n const rightClass = cx('Table-ping-right');\n if (scrollLeft + offsetWidth < scrollWidth) {\n table?.classList.add(rightClass);\n } else {\n table?.classList.remove(rightClass);\n }\n }\n\n onTableContentScroll(event: React.ChangeEvent<any>) {\n this.updateTableDom(event.target);\n }\n\n onWheel(event: WheelEvent) {\n const {currentTarget, deltaX} = event as unknown as React.WheelEvent<HTMLDivElement>;\n if (deltaX) {\n this.onTableScroll({\n target: currentTarget,\n scrollLeft: currentTarget.scrollLeft + deltaX\n });\n\n event.preventDefault();\n }\n }\n\n onTableScroll(event: {target: HTMLDivElement, scrollLeft?: number}) {\n const scrollDomRefs = [\n this.headerDom,\n this.bodyDom,\n this.footDom\n ];\n\n const {target, scrollLeft} = event;\n \n scrollDomRefs.forEach(ref => {\n const current = ref && ref.current\n if (current && current !== target) {\n current.scrollLeft = (scrollLeft || target.scrollLeft);\n }\n });\n\n this.updateTableDom(target);\n }\n\n renderLoading() {\n const {classnames: cx, loading} = this.props;\n return <div className={cx('Table-loading')}>{\n typeof loading === 'boolean' ? <Spinner></Spinner> : loading\n }</div>;\n }\n\n renderTable() {\n const {\n scroll,\n footSummary,\n loading,\n showHeader,\n classnames: cx\n } = this.props;\n\n // 设置了横向滚动轴 则table的table-layout为fixed\n const hasScrollX = scroll && scroll.x;\n\n return (\n <div\n ref={this.contentDom}\n className={cx('Table-content')}\n style={hasScrollX ? {overflow: 'auto hidden'} : {}}>\n <table\n style={hasScrollX\n ? {width: scroll.x + 'px', tableLayout: 'fixed'}\n : {tableLayout: 'auto'}}\n className={cx('Table-table')}>\n {this.renderColGroup()}\n {showHeader ? this.renderTHead() : null}\n {!loading ? this.renderTBody() : null}\n {!loading && footSummary ? this.renderTFoot() : null}\n </table>\n {loading ? this.renderLoading() : null}\n </div>\n );\n }\n\n renderScrollTableHeader() {\n const {\n scroll,\n headSummary,\n sticky,\n showHeader,\n classnames: cx\n } = this.props;\n\n const style = {overflow: 'hidden'};\n if (!!sticky) {\n Object.assign(style, {top: 0});\n }\n\n const tableStyle = {};\n if (scroll && (scroll.y || scroll.x)) {\n Object.assign(tableStyle, {\n width: (scroll && scroll.x ? (scroll.x + 'px') : '100%'),\n tableLayout: 'fixed'\n });\n }\n\n return (\n <div\n ref={this.headerDom}\n className={cx('Table-header', {\n [cx('Table-sticky-holder')]: !!sticky\n })}\n style={style}>\n <table\n className={cx('Table-table')}\n style={tableStyle}>\n {this.renderColGroup(this.state.colWidths)}\n {showHeader ? this.renderTHead() : null}\n {headSummary ? <tbody>{this.renderSummaryRow(headSummary)}</tbody> : null}\n </table>\n </div>\n );\n }\n\n renderScrollTableBody() {\n const {\n scroll,\n classnames: cx\n } = this.props;\n\n const style = {};\n const tableStyle = {};\n if (scroll && (scroll.y || scroll.x)) {\n Object.assign(style, {\n overflow: 'auto scroll',\n maxHeight: scroll.y\n });\n\n Object.assign(tableStyle, {\n width: scroll && scroll.x ? (scroll.x + 'px') : '100%',\n tableLayout: 'fixed'\n });\n }\n\n return (\n <div\n ref={this.bodyDom}\n className={cx('Table-body')}\n style={style}>\n <table\n className={cx('Table-table')}\n style={tableStyle}>\n {this.renderColGroup()}\n {this.renderTBody()}\n </table>\n </div>\n )\n }\n\n renderScrollTableFoot() {\n const {\n scroll,\n classnames: cx\n } = this.props;\n\n return (\n <div\n ref={this.footDom}\n className={cx('Table-summary')}\n style={{overflow: 'hidden'}}>\n <table\n className={cx('Table-table')}\n style={{width: (scroll?.x + 'px') || '100%', tableLayout: 'fixed'}}>\n {this.renderTFoot()}\n </table>\n </div>\n );\n }\n\n renderScrollTable() {\n const {\n footSummary,\n loading,\n classnames: cx\n } = this.props;\n\n return (\n <div\n className={cx('Table-container')}>\n {this.renderScrollTableHeader()}\n {!loading ? this.renderScrollTableBody() : null}\n {!loading && footSummary ? this.renderScrollTableFoot() : null}\n {loading ? this.renderLoading() : null}\n </div>\n );\n }\n\n render() {\n const {\n title,\n footer,\n className,\n scroll,\n size,\n bordered,\n resizable,\n columns,\n sticky,\n classnames: cx\n } = this.props;\n\n // 过滤掉设置了breakpoint属性的列\n const filterColumns = columns.filter(item => !item.breakpoint ||\n !isBreakpoint(item.breakpoint));\n\n this.thColumns = [];\n this.tdColumns = [];\n buildColumns(filterColumns, this.thColumns, this.tdColumns);\n\n // 是否设置了纵向滚动\n const hasScrollY = scroll && scroll.y;\n // 是否设置了横向滚动\n const hasScrollX = scroll && scroll.x;\n\n return (\n <div\n ref={this.tableDom}\n className={cx('Table-v2', className, {\n [cx('Table-scroll-horizontal')]: hasScrollX,\n [cx(`Table-${size}`)]: size,\n [cx('Table-bordered')]: bordered,\n [cx('Table-resizable')]: resizable\n })}>\n {title ? <div className={cx('Table-title')}>{\n typeof title === 'function' ? title() : title\n }</div> : null}\n\n {hasScrollY || sticky ? this.renderScrollTable()\n : <div className={cx('Table-container')}>{this.renderTable()}</div>}\n\n {footer ? <div className={cx('Table-footer')}>{\n typeof footer === 'function' ? footer() : footer\n }</div> : null}\n </div>\n );\n }\n}\n\nexport default themeable(\n localeable(Table)\n);\n"
|
12
|
+
]
|
13
|
+
}
|
package/lib/env.d.ts
CHANGED
@@ -6,8 +6,8 @@ import { RendererConfig } from './factory';
|
|
6
6
|
import { ThemeInstance } from './theme';
|
7
7
|
import { Action, Api, Payload, Schema } from './types';
|
8
8
|
import hoistNonReactStatic from 'hoist-non-react-statics';
|
9
|
-
import { RendererEvent, RendererEventListener } from './utils/renderer-event';
|
10
9
|
import { IScopedContext } from './Scoped';
|
10
|
+
import { RendererEvent } from './utils/renderer-event';
|
11
11
|
export interface RendererEnv {
|
12
12
|
fetcher: (api: Api, data?: any, options?: object) => Promise<Payload>;
|
13
13
|
isCancel: (val: any) => boolean;
|
@@ -45,13 +45,11 @@ export interface RendererEnv {
|
|
45
45
|
loadRenderer: (schema: Schema, path: string, reRender: Function) => Promise<React.ReactType> | React.ReactType | JSX.Element | void;
|
46
46
|
loadChartExtends?: () => void | Promise<void>;
|
47
47
|
useMobileUI?: boolean;
|
48
|
-
bindEvent: (context: any) => (() => void) | undefined;
|
49
|
-
dispatchEvent: (e: string | React.ClipboardEvent<any> | React.DragEvent<any> | React.ChangeEvent<any> | React.KeyboardEvent<any> | React.TouchEvent<any> | React.WheelEvent<any> | React.AnimationEvent<any> | React.TransitionEvent<any> | React.MouseEvent<any>, context: any, scoped: IScopedContext, data: any, broadcast?: RendererEvent<any>) => Promise<RendererEvent<any> | undefined>;
|
50
|
-
rendererEventListeners: RendererEventListener[];
|
51
48
|
/**
|
52
49
|
* 过滤 html 标签,可用来添加 xss 保护逻辑
|
53
50
|
*/
|
54
51
|
filterHtml: (input: string) => string;
|
52
|
+
beforeDispatchEvent: (e: string | React.ClipboardEvent<any> | React.DragEvent<any> | React.ChangeEvent<any> | React.KeyboardEvent<any> | React.TouchEvent<any> | React.WheelEvent<any> | React.AnimationEvent<any> | React.TransitionEvent<any> | React.MouseEvent<any>, context: any, scoped: IScopedContext, data: any, broadcast?: RendererEvent<any>) => void;
|
55
53
|
[propName: string]: any;
|
56
54
|
}
|
57
55
|
export declare const EnvContext: React.Context<void | RendererEnv>;
|
package/lib/env.js.map
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/env.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA;;GAEG;AACH,6DAA0B;AAI1B,iGAA0D;
|
9
|
+
"mappings": ";;;;AAAA;;GAEG;AACH,6DAA0B;AAI1B,iGAA0D;AAoF7C,QAAA,UAAU,GAAG,eAAK,CAAC,aAAa,CAAqB,SAAS,CAAC,CAAC;AAM7E,SAAgB,eAAe,CAE7B,iBAAoB;;IAQpB,IAAM,MAAM,GAAG,IAAA,iCAAmB;YAClB,wCAA2B;YAAzC;;YA4BA,CAAC;YArBC,wBAAM,GAAN;gBACE,IAAM,aAAa,GAEf;oBACF,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO;iBACpC,CAAC;gBAEF,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;oBACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;iBACvC;gBAED,OAAO,CACL,8BAAC,iBAAiB,4BACX,IAAI,CAAC,KAGR,EACE,aAAa,EACjB,CACH,CAAC;YACJ,CAAC;YACH,cAAC;QAAD,CAAC,AA5BD,CAAc,eAAK,CAAC,SAAS;QACpB,cAAW,GAAG,kBACnB,iBAAiB,CAAC,WAAW,IAAI,iBAAiB,CAAC,IAAI,MACrD;QACG,cAAW,GAAG,kBAAW;QACzB,oBAAiB,GAAG,iBAA4C;aAwBzE,iBAAiB,CAClB,CAAC;IAEF,OAAO,MAEN,CAAC;AACJ,CAAC;AA9CD,0CA8CC",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file 组件 Env,包括如何发送 ajax,如何通知,如何跳转等等。。\n */\nimport React from 'react';\nimport {RendererConfig} from './factory';\nimport {ThemeInstance} from './theme';\nimport {Action, Api, Payload, Schema} from './types';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {
|
11
|
+
"/**\n * @file 组件 Env,包括如何发送 ajax,如何通知,如何跳转等等。。\n */\nimport React from 'react';\nimport {RendererConfig} from './factory';\nimport {ThemeInstance} from './theme';\nimport {Action, Api, Payload, Schema} from './types';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {IScopedContext} from './Scoped';\nimport {RendererEvent} from './utils/renderer-event';\n\nexport interface RendererEnv {\n fetcher: (api: Api, data?: any, options?: object) => Promise<Payload>;\n isCancel: (val: any) => boolean;\n notify: (\n type: 'error' | 'success' | 'warning',\n msg: any,\n conf?: {\n title?: any;\n position?:\n | 'top-right'\n | 'top-center'\n | 'top-left'\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'center';\n closeButton?: boolean;\n timeout?: number;\n }\n ) => void;\n jumpTo: (to: string, action?: Action, ctx?: object) => void;\n alert: (msg: string) => void;\n confirm: (msg: string, title?: string) => Promise<boolean>;\n updateLocation: (location: any, replace?: boolean) => void;\n\n /**\n * 阻止路由跳转,有时候 form 没有保存,但是路由跳转了,导致页面没有更新,\n * 所以先让用户确认一下。\n *\n * 单页模式需要这个,如果非单页模式,不需要处理这个。\n */\n blockRouting?: (fn: (targetLocation: any) => void | string) => () => void;\n isCurrentUrl: (link: string, ctx?: any) => boolean | {params?: object};\n\n /**\n * 监控路由变化,如果 jssdk 需要做单页跳转需要实现这个。\n */\n watchRouteChange?: (fn: () => void) => () => void;\n rendererResolver?: (\n path: string,\n schema: Schema,\n props: any\n ) => null | RendererConfig;\n copy?: (contents: string, format?: any) => void;\n getModalContainer?: () => HTMLElement;\n theme: ThemeInstance;\n affixOffsetTop: number;\n affixOffsetBottom: number;\n richTextToken: string;\n loadRenderer: (\n schema: Schema,\n path: string,\n reRender: Function\n ) => Promise<React.ReactType> | React.ReactType | JSX.Element | void;\n loadChartExtends?: () => void | Promise<void>;\n useMobileUI?: boolean;\n /**\n * 过滤 html 标签,可用来添加 xss 保护逻辑\n */\n filterHtml: (input: string) => string;\n beforeDispatchEvent: (\n e:\n | string\n | React.ClipboardEvent<any>\n | React.DragEvent<any>\n | React.ChangeEvent<any>\n | React.KeyboardEvent<any>\n | React.TouchEvent<any>\n | React.WheelEvent<any>\n | React.AnimationEvent<any>\n | React.TransitionEvent<any>\n | React.MouseEvent<any>,\n context: any,\n scoped: IScopedContext,\n data: any,\n broadcast?: RendererEvent<any>\n ) => void;\n [propName: string]: any;\n}\n\nexport const EnvContext = React.createContext<RendererEnv | void>(undefined);\n\nexport interface EnvProps {\n env: RendererEnv;\n}\n\nexport function withRendererEnv<\n T extends React.ComponentType<React.ComponentProps<T> & EnvProps>\n>(ComposedComponent: T) {\n type OuterProps = JSX.LibraryManagedAttributes<\n T,\n Omit<React.ComponentProps<T>, keyof EnvProps>\n > & {\n env?: RendererEnv;\n };\n\n const result = hoistNonReactStatic(\n class extends React.Component<OuterProps> {\n static displayName = `WithEnv(${\n ComposedComponent.displayName || ComposedComponent.name\n })`;\n static contextType = EnvContext;\n static ComposedComponent = ComposedComponent as React.ComponentType<T>;\n\n render() {\n const injectedProps: {\n env: RendererEnv;\n } = {\n env: this.props.env || this.context\n };\n\n if (!injectedProps.env) {\n throw new Error('Env 信息获取失败,组件用法不正确');\n }\n\n return (\n <ComposedComponent\n {...(this.props as JSX.LibraryManagedAttributes<\n T,\n React.ComponentProps<T>\n >)}\n {...injectedProps}\n />\n );\n }\n },\n ComposedComponent\n );\n\n return result as typeof result & {\n ComposedComponent: T;\n };\n}\n"
|
12
12
|
]
|
13
13
|
}
|
package/lib/factory.js
CHANGED
@@ -22,8 +22,6 @@ var WithStore_1 = require("./WithStore");
|
|
22
22
|
var env_1 = require("./env");
|
23
23
|
Object.defineProperty(exports, "RendererEnv", { enumerable: true, get: function () { return env_1.RendererEnv; } });
|
24
24
|
var envOverwrite_1 = require("./envOverwrite");
|
25
|
-
var renderer_event_1 = require("./utils/renderer-event");
|
26
|
-
var Action_1 = require("./actions/Action");
|
27
25
|
var debug_1 = require("./utils/debug");
|
28
26
|
var renderers = [];
|
29
27
|
var rendererNames = [];
|
@@ -109,7 +107,6 @@ var defaultOptions = {
|
|
109
107
|
useMobileUI: true,
|
110
108
|
enableAMISDebug: (_b = (_a = window.enableAMISDebug) !== null && _a !== void 0 ? _a : location.search.indexOf('amisDebug=1') !== -1) !== null && _b !== void 0 ? _b : false,
|
111
109
|
loadRenderer: loadRenderer,
|
112
|
-
rendererEventListeners: [],
|
113
110
|
fetcher: function () {
|
114
111
|
return Promise.reject('fetcher is required');
|
115
112
|
},
|
@@ -209,98 +206,6 @@ var defaultOptions = {
|
|
209
206
|
},
|
210
207
|
// 用于跟踪用户在界面中的各种操作
|
211
208
|
tracker: function (eventTrack, props) { },
|
212
|
-
// 返回解绑函数
|
213
|
-
bindEvent: function (renderer) {
|
214
|
-
var _this = this;
|
215
|
-
if (!renderer) {
|
216
|
-
return undefined;
|
217
|
-
}
|
218
|
-
var listeners = renderer.props.$schema.onEvent;
|
219
|
-
if (listeners) {
|
220
|
-
var _loop_1 = function (key) {
|
221
|
-
var listener = this_1.rendererEventListeners.some(function (item) {
|
222
|
-
return item.renderer === renderer && item.type === key;
|
223
|
-
});
|
224
|
-
if (!listener) {
|
225
|
-
this_1.rendererEventListeners.push({
|
226
|
-
renderer: renderer,
|
227
|
-
type: key,
|
228
|
-
weight: listeners[key].weight || 0,
|
229
|
-
actions: listeners[key].actions
|
230
|
-
});
|
231
|
-
}
|
232
|
-
};
|
233
|
-
var this_1 = this;
|
234
|
-
// 暂存
|
235
|
-
for (var _i = 0, _a = Object.keys(listeners); _i < _a.length; _i++) {
|
236
|
-
var key = _a[_i];
|
237
|
-
_loop_1(key);
|
238
|
-
}
|
239
|
-
return function () {
|
240
|
-
_this.rendererEventListeners = _this.rendererEventListeners.filter(function (item) { return item.renderer !== renderer; });
|
241
|
-
};
|
242
|
-
}
|
243
|
-
return undefined;
|
244
|
-
},
|
245
|
-
dispatchEvent: function (e, renderer, scoped, data, broadcast) {
|
246
|
-
var _a, _b;
|
247
|
-
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
248
|
-
var unbindEvent, eventName, eventConfig, rendererEvent, listeners, _i, listeners_1, listener;
|
249
|
-
return (0, tslib_1.__generator)(this, function (_c) {
|
250
|
-
switch (_c.label) {
|
251
|
-
case 0:
|
252
|
-
unbindEvent = null;
|
253
|
-
eventName = typeof e === 'string' ? e : e.type;
|
254
|
-
if (!broadcast) {
|
255
|
-
eventConfig = (_b = (_a = renderer === null || renderer === void 0 ? void 0 : renderer.props) === null || _a === void 0 ? void 0 : _a.onEvent) === null || _b === void 0 ? void 0 : _b[eventName];
|
256
|
-
if (!eventConfig) {
|
257
|
-
// 没命中也没关系
|
258
|
-
return [2 /*return*/, Promise.resolve(undefined)];
|
259
|
-
}
|
260
|
-
unbindEvent = this.bindEvent(renderer);
|
261
|
-
}
|
262
|
-
// 没有可处理的监听
|
263
|
-
if (!this.rendererEventListeners.length) {
|
264
|
-
return [2 /*return*/, Promise.resolve()];
|
265
|
-
}
|
266
|
-
rendererEvent = broadcast ||
|
267
|
-
(0, renderer_event_1.createRendererEvent)(eventName, {
|
268
|
-
env: this,
|
269
|
-
nativeEvent: e,
|
270
|
-
data: data,
|
271
|
-
scoped: scoped
|
272
|
-
});
|
273
|
-
listeners = this.rendererEventListeners
|
274
|
-
.filter(function (item) {
|
275
|
-
return item.type === eventName &&
|
276
|
-
(broadcast ? true : item.renderer === renderer);
|
277
|
-
})
|
278
|
-
.sort(function (prev, next) {
|
279
|
-
return next.weight - prev.weight;
|
280
|
-
});
|
281
|
-
_i = 0, listeners_1 = listeners;
|
282
|
-
_c.label = 1;
|
283
|
-
case 1:
|
284
|
-
if (!(_i < listeners_1.length)) return [3 /*break*/, 4];
|
285
|
-
listener = listeners_1[_i];
|
286
|
-
return [4 /*yield*/, (0, Action_1.runActions)(listener.actions, listener.renderer, rendererEvent)];
|
287
|
-
case 2:
|
288
|
-
_c.sent();
|
289
|
-
// 停止后续监听器执行
|
290
|
-
if (rendererEvent.stoped) {
|
291
|
-
return [3 /*break*/, 4];
|
292
|
-
}
|
293
|
-
_c.label = 3;
|
294
|
-
case 3:
|
295
|
-
_i++;
|
296
|
-
return [3 /*break*/, 1];
|
297
|
-
case 4:
|
298
|
-
unbindEvent === null || unbindEvent === void 0 ? void 0 : unbindEvent();
|
299
|
-
return [2 /*return*/, rendererEvent];
|
300
|
-
}
|
301
|
-
});
|
302
|
-
});
|
303
|
-
},
|
304
209
|
rendererResolver: resolveRenderer,
|
305
210
|
replaceTextIgnoreKeys: [
|
306
211
|
'type',
|
package/lib/factory.js.map
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/factory.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport {RendererStore, IRendererStore, IIRendererStore} from './store/index';\nimport {getEnv, destroy} from 'mobx-state-tree';\nimport {wrapFetcher} from './utils/api';\nimport {normalizeLink} from './utils/normalizeLink';\nimport {\n createObject,\n findIndex,\n isObject,\n JSONTraverse,\n promisify,\n qsparse,\n string2regExp\n} from './utils/helper';\nimport {\n Api,\n fetcherResult,\n Payload,\n SchemaNode,\n Schema,\n Action,\n EventTrack,\n PlainObject\n} from './types';\nimport {observer} from 'mobx-react';\nimport Scoped, {IScopedContext} from './Scoped';\nimport {getTheme, ThemeInstance, ThemeProps} from './theme';\nimport find from 'lodash/find';\nimport Alert from './components/Alert2';\nimport {toast} from './components/Toast';\nimport {alert, confirm, setRenderSchemaFn} from './components/Alert';\nimport {getDefaultLocale, makeTranslator, LocaleProps} from './locale';\nimport ScopedRootRenderer, {RootRenderProps} from './Root';\nimport {HocStoreFactory} from './WithStore';\nimport {EnvContext, RendererEnv} from './env';\nimport {envOverwrite} from './envOverwrite';\nimport {\n EventListeners,\n createRendererEvent,\n RendererEventListener,\n OnEventProps,\n RendererEvent\n} from './utils/renderer-event';\nimport {runActions} from './actions/Action';\nimport {enableDebug} from './utils/debug';\n\nexport interface TestFunc {\n (\n path: string,\n schema?: Schema,\n resolveRenderer?: (\n path: string,\n schema?: Schema,\n props?: any\n ) => null | RendererConfig\n ): boolean;\n}\n\nexport interface RendererBasicConfig {\n test?: RegExp | TestFunc;\n type?: string;\n name?: string;\n storeType?: string;\n shouldSyncSuperStore?: (\n store: any,\n props: any,\n prevProps: any\n ) => boolean | undefined;\n storeExtendsData?: boolean | ((props: any) => boolean); // 是否需要继承上层数据。\n weight?: number; // 权重,值越低越优先命中。\n isolateScope?: boolean;\n isFormItem?: boolean;\n autoVar?: boolean; // 自动解析变量\n // [propName:string]:any;\n}\n\nexport interface RendererProps extends ThemeProps, LocaleProps, OnEventProps {\n render: (region: string, node: SchemaNode, props?: any) => JSX.Element;\n env: RendererEnv;\n $path: string; // 当前组件所在的层级信息\n $schema: any; // 原始 schema 配置\n store?: IIRendererStore;\n syncSuperStore?: boolean;\n data: {\n [propName: string]: any;\n };\n defaultData?: object;\n className?: any;\n [propName: string]: any;\n}\n\nexport type RendererComponent = React.ComponentType<RendererProps> & {\n propsList?: Array<any>;\n};\n\nexport interface RendererConfig extends RendererBasicConfig {\n component: RendererComponent;\n Renderer?: RendererComponent; // 原始组件\n}\n\nexport interface RenderSchemaFilter {\n (schema: Schema, renderer: RendererConfig, props?: any): Schema;\n}\n\nexport interface wsObject {\n url: string;\n responseKey?: string;\n body?: any;\n}\n\nexport interface RenderOptions {\n session?: string;\n fetcher?: (config: fetcherConfig) => Promise<fetcherResult>;\n wsFetcher?: (\n ws: wsObject,\n onMessage: (data: any) => void,\n onError: (error: any) => void\n ) => void;\n isCancel?: (value: any) => boolean;\n notify?: (\n type: 'error' | 'success',\n msg: string,\n conf?: {\n closeButton?: boolean;\n timeout?: number;\n }\n ) => void;\n jumpTo?: (to: string, action?: Action, ctx?: object) => void;\n alert?: (msg: string) => void;\n confirm?: (msg: string, title?: string) => boolean | Promise<boolean>;\n rendererResolver?: (\n path: string,\n schema: Schema,\n props: any\n ) => null | RendererConfig;\n copy?: (contents: string, options?: any) => void;\n getModalContainer?: () => HTMLElement;\n loadRenderer?: (\n schema: Schema,\n path: string,\n reRender: Function\n ) => Promise<React.ReactType> | React.ReactType | JSX.Element | void;\n affixOffsetTop?: number;\n affixOffsetBottom?: number;\n richTextToken?: string;\n /**\n * 替换文本,用于实现 URL 替换、语言替换等\n */\n replaceText?: {[propName: string]: any};\n /**\n * 文本替换的黑名单,因为属性太多了所以改成黑名单的 fangs\n */\n replaceTextIgnoreKeys?: String[];\n /**\n * 过滤 html 标签,可用来添加 xss 保护逻辑\n */\n filterHtml?: (input: string) => string;\n /**\n * 是否开启 amis 调试\n */\n enableAMISDebug?: boolean;\n [propName: string]: any;\n}\n\nexport interface fetcherConfig {\n url: string;\n method?: 'get' | 'post' | 'put' | 'patch' | 'delete' | 'jsonp';\n data?: any;\n config?: any;\n}\n\nconst renderers: Array<RendererConfig> = [];\nconst rendererNames: Array<string> = [];\nconst schemaFilters: Array<RenderSchemaFilter> = [];\nlet anonymousIndex = 1;\n\nexport function addSchemaFilter(fn: RenderSchemaFilter) {\n schemaFilters.push(fn);\n}\n\nexport function filterSchema(\n schema: Schema,\n render: RendererConfig,\n props?: any\n) {\n return schemaFilters.reduce(\n (schema, filter) => filter(schema, render, props),\n schema\n ) as Schema;\n}\n\nexport function Renderer(config: RendererBasicConfig) {\n return function <T extends RendererComponent>(component: T): T {\n const renderer = registerRenderer({\n ...config,\n component: component\n });\n return renderer.component as T;\n };\n}\n\nexport function registerRenderer(config: RendererConfig): RendererConfig {\n if (!config.test && !config.type) {\n throw new TypeError('please set config.test or config.type');\n } else if (!config.component) {\n throw new TypeError('config.component is required');\n }\n\n if (typeof config.type === 'string' && config.type) {\n config.type = config.type.toLowerCase();\n config.test =\n config.test || new RegExp(`(^|\\/)${string2regExp(config.type)}$`, 'i');\n }\n\n config.weight = config.weight || 0;\n config.Renderer = config.component;\n config.name = config.name || config.type || `anonymous-${anonymousIndex++}`;\n\n if (~rendererNames.indexOf(config.name)) {\n throw new Error(\n `The renderer with name \"${config.name}\" has already exists, please try another name!`\n );\n }\n\n if (config.storeType && config.component) {\n config.component = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.storeExtendsData,\n shouldSyncSuperStore: config.shouldSyncSuperStore\n })(observer(config.component));\n }\n\n if (config.isolateScope) {\n config.component = Scoped(config.component);\n }\n\n const idx = findIndex(\n renderers,\n item => (config.weight as number) < item.weight\n );\n ~idx ? renderers.splice(idx, 0, config) : renderers.push(config);\n rendererNames.push(config.name);\n return config;\n}\n\nexport function unRegisterRenderer(config: RendererConfig | string) {\n let idx =\n typeof config === 'string'\n ? findIndex(renderers, item => item.name === config)\n : renderers.indexOf(config);\n ~idx && renderers.splice(idx, 1);\n\n let idx2 =\n typeof config === 'string'\n ? findIndex(rendererNames, item => item === config)\n : rendererNames.indexOf(config.name || '');\n ~idx2 && rendererNames.splice(idx2, 1);\n\n // 清空渲染器定位缓存\n cache = {};\n}\n\nexport function loadRenderer(schema: Schema, path: string) {\n return (\n <Alert level=\"danger\">\n <p>Error: 找不到对应的渲染器</p>\n <p>Path: {path}</p>\n <pre>\n <code>{JSON.stringify(schema, null, 2)}</code>\n </pre>\n </Alert>\n );\n}\n\nconst defaultOptions: RenderOptions = {\n session: 'global',\n affixOffsetTop: 0,\n affixOffsetBottom: 0,\n richTextToken: '',\n useMobileUI: true, // 是否启用移动端原生 UI\n enableAMISDebug:\n (window as any).enableAMISDebug ??\n location.search.indexOf('amisDebug=1') !== -1 ??\n false,\n loadRenderer,\n rendererEventListeners: [],\n fetcher() {\n return Promise.reject('fetcher is required');\n },\n // 使用 WebSocket 来实时获取数据\n wsFetcher(ws, onMessage, onError) {\n if (ws) {\n const socket = new WebSocket(ws.url);\n socket.onopen = event => {\n if (ws.body) {\n socket.send(JSON.stringify(ws.body));\n }\n };\n socket.onmessage = event => {\n if (event.data) {\n let data;\n try {\n data = JSON.parse(event.data);\n } catch (error) {}\n if (typeof data !== 'object') {\n let key = ws.responseKey || 'data';\n data = {\n [key]: event.data\n };\n }\n\n onMessage(data);\n }\n };\n socket.onerror = onError;\n return {\n close: socket.close\n };\n } else {\n return {\n close: () => {}\n };\n }\n },\n isCancel() {\n console.error(\n 'Please implement isCancel. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97'\n );\n return false;\n },\n updateLocation() {\n console.error(\n 'Please implement updateLocation. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97'\n );\n },\n alert,\n confirm,\n notify: (type, msg, conf) =>\n toast[type] ? toast[type](msg, conf) : console.warn('[Notify]', type, msg),\n\n jumpTo: (to: string, action?: any) => {\n if (to === 'goBack') {\n return window.history.back();\n }\n to = normalizeLink(to);\n if (action && action.actionType === 'url') {\n action.blank === false ? (window.location.href = to) : window.open(to);\n return;\n }\n if (/^https?:\\/\\//.test(to)) {\n window.location.replace(to);\n } else {\n location.href = to;\n }\n },\n isCurrentUrl: (to: string) => {\n if (!to) {\n return false;\n }\n\n const link = normalizeLink(to);\n const location = window.location;\n let pathname = link;\n let search = '';\n const idx = link.indexOf('?');\n if (~idx) {\n pathname = link.substring(0, idx);\n search = link.substring(idx);\n }\n if (search) {\n if (pathname !== location.pathname || !location.search) {\n return false;\n }\n const query = qsparse(search.substring(1));\n const currentQuery = qsparse(location.search.substring(1));\n return Object.keys(query).every(key => query[key] === currentQuery[key]);\n } else if (pathname === location.pathname) {\n return true;\n }\n return false;\n },\n copy(contents: string) {\n console.error('copy contents', contents);\n },\n // 用于跟踪用户在界面中的各种操作\n tracker(eventTrack: EventTrack, props: PlainObject) {},\n // 返回解绑函数\n 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 = this.rendererEventListeners.some(\n (item: RendererEventListener) =>\n item.renderer === renderer && item.type === key\n );\n if (!listener) {\n this.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 this.rendererEventListeners = this.rendererEventListeners.filter(\n (item: RendererEventListener) => item.renderer !== renderer\n );\n };\n }\n\n return undefined;\n },\n async dispatchEvent(\n e: string | React.MouseEvent<any>,\n renderer: React.Component<RendererProps>,\n scoped: IScopedContext,\n data: any,\n broadcast?: RendererEvent<any>\n ) {\n let unbindEvent = null;\n const eventName = typeof e === 'string' ? e : e.type;\n\n if (!broadcast) {\n const eventConfig = renderer?.props?.onEvent?.[eventName];\n\n if (!eventConfig) {\n // 没命中也没关系\n return Promise.resolve(undefined);\n }\n\n unbindEvent = this.bindEvent(renderer);\n }\n\n // 没有可处理的监听\n if (!this.rendererEventListeners.length) {\n return Promise.resolve();\n }\n // 如果是广播动作,就直接复用\n const rendererEvent =\n broadcast ||\n createRendererEvent(eventName, {\n env: this,\n nativeEvent: e,\n data,\n scoped\n });\n\n // 过滤&排序\n const listeners = this.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 rendererEvent;\n },\n rendererResolver: resolveRenderer,\n replaceTextIgnoreKeys: [\n 'type',\n 'name',\n 'mode',\n 'target',\n 'reload',\n 'persistData'\n ],\n /**\n * 过滤 html 标签,可用来添加 xss 保护逻辑\n */\n filterHtml: (input: string) => input\n};\nlet stores: {\n [propName: string]: IRendererStore;\n} = {};\nexport function render(\n schema: Schema,\n props: RootRenderProps = {},\n options: RenderOptions = {},\n pathPrefix: string = ''\n): JSX.Element {\n let locale = props.locale || getDefaultLocale();\n // 兼容 locale 的不同写法\n locale = locale.replace('_', '-');\n locale = locale === 'en' ? 'en-US' : locale;\n locale = locale === 'zh' ? 'zh-CN' : locale;\n locale = locale === 'cn' ? 'zh-CN' : locale;\n const translate = props.translate || makeTranslator(locale);\n let store = stores[options.session || 'global'];\n\n // 根据环境覆盖 schema,这个要在最前面做,不然就无法覆盖 validations\n envOverwrite(schema, locale);\n\n if (!store) {\n options = {\n ...defaultOptions,\n ...options,\n fetcher: options.fetcher\n ? wrapFetcher(options.fetcher, options.tracker)\n : defaultOptions.fetcher,\n confirm: promisify(\n options.confirm || defaultOptions.confirm || window.confirm\n ),\n locale,\n translate\n } as any;\n\n if (options.enableAMISDebug) {\n // 因为里面还有 render\n setTimeout(() => {\n enableDebug();\n }, 10);\n }\n\n store = RendererStore.create({}, options);\n stores[options.session || 'global'] = store;\n }\n\n (window as any).amisStore = store; // 为了方便 debug.\n const env = getEnv(store);\n\n let theme = props.theme || options.theme || 'cxd';\n if (theme === 'default') {\n theme = 'cxd';\n }\n env.theme = getTheme(theme);\n\n if (props.locale !== undefined) {\n env.translate = translate;\n env.locale = locale;\n }\n\n // 默认将开启移动端原生 UI\n if (typeof options.useMobileUI) {\n props.useMobileUI = true;\n }\n\n // 进行文本替换\n if (env.replaceText && isObject(env.replaceText)) {\n const replaceKeys = Object.keys(env.replaceText);\n replaceKeys.sort((a, b) => b.length - a.length); // 避免用户将短的放前面\n const replaceTextIgnoreKeys = new Set(env.replaceTextIgnoreKeys || []);\n JSONTraverse(schema, (value: any, key: string, object: any) => {\n if (typeof value === 'string' && !replaceTextIgnoreKeys.has(key)) {\n for (const replaceKey of replaceKeys) {\n if (~value.indexOf(replaceKey)) {\n value = object[key] = value.replaceAll(\n replaceKey,\n env.replaceText[replaceKey]\n );\n }\n }\n }\n });\n }\n\n return (\n <EnvContext.Provider value={env}>\n <ScopedRootRenderer\n {...props}\n schema={schema}\n pathPrefix={pathPrefix}\n rootStore={store}\n env={env}\n theme={theme}\n locale={locale}\n translate={translate}\n />\n </EnvContext.Provider>\n );\n}\n\n// 默认 env 会被缓存,所以新传入的 env 不会替换旧的。\n// 除非先删了旧的,新的才会生效。\nexport function clearStoresCache(\n sessions: Array<string> | string = Object.keys(stores)\n) {\n if (!Array.isArray(sessions)) {\n sessions = [sessions];\n }\n\n sessions.forEach(key => {\n const store = stores[key];\n\n // @ts-ignore\n delete stores[key];\n\n store && destroy(store);\n });\n}\n\n// 当然也可以直接这样更新。\n// 主要是有时候第一次创建的时候并没有准备多少接口,\n// 可以后续补充点,比如 amis 自己实现的,prompt 里面的表单。\nexport function updateEnv(options: Partial<RenderOptions>, session = 'global') {\n options = {\n ...options\n };\n\n if (options.fetcher) {\n options.fetcher = wrapFetcher(options.fetcher, options.tracker) as any;\n }\n\n if (options.confirm) {\n options.confirm = promisify(options.confirm);\n }\n\n let store = stores[options.session || session];\n if (!store) {\n store = RendererStore.create({}, options);\n stores[options.session || session] = store;\n } else {\n const env = getEnv(store);\n Object.assign(env, options);\n }\n}\n\nlet cache: {[propName: string]: RendererConfig} = {};\nexport function resolveRenderer(\n path: string,\n schema?: Schema\n): null | RendererConfig {\n const type = typeof schema?.type == 'string' ? schema.type.toLowerCase() : '';\n\n if (type && cache[type]) {\n return cache[type];\n } else if (cache[path]) {\n return cache[path];\n } else if (path && path.length > 1024) {\n throw new Error('Path太长是不是死循环了?');\n }\n\n let renderer: null | RendererConfig = null;\n\n renderers.some(item => {\n let matched = false;\n\n // 直接匹配类型,后续注册渲染都应该用这个方式而不是之前的判断路径。\n if (item.type && type) {\n matched = item.type === type;\n\n // 如果是type来命中的,那么cache的key直接用 type 即可。\n if (matched) {\n cache[type] = item;\n }\n } else if (typeof item.test === 'function') {\n // 不应该搞得这么复杂的,让每个渲染器唯一 id,自己不晕别人用起来也不晕。\n matched = item.test(path, schema, resolveRenderer);\n } else if (item.test instanceof RegExp) {\n matched = item.test.test(path);\n }\n\n if (matched) {\n renderer = item;\n }\n\n return matched;\n });\n\n // 只能缓存纯正则表达式的后者方法中没有用到第二个参数的,\n // 因为自定义 test 函数的有可能依赖 schema 的结果\n if (\n renderer !== null &&\n ((renderer as RendererConfig).type ||\n (renderer as RendererConfig).test instanceof RegExp ||\n (typeof (renderer as RendererConfig).test === 'function' &&\n ((renderer as RendererConfig).test as Function).length < 2))\n ) {\n cache[path] = renderer;\n }\n\n return renderer;\n}\n\nexport function getRenderers() {\n return renderers.concat();\n}\n\nexport function getRendererByName(name: string) {\n return find(renderers, item => item.name === name);\n}\n\nsetRenderSchemaFn((controls, value, callback, scopeRef, theme) => {\n return render(\n {\n name: 'form',\n type: 'form',\n wrapWithPanel: false,\n mode: 'horizontal',\n controls,\n messages: {\n validateFailed: ''\n }\n },\n {\n data: value,\n onFinished: callback,\n scopeRef,\n theme\n },\n {\n session: 'prompt'\n }\n );\n});\n\nexport {RendererEnv};\n"
|
11
|
+
"import React from 'react';\nimport {RendererStore, IRendererStore, IIRendererStore} from './store/index';\nimport {getEnv, destroy} from 'mobx-state-tree';\nimport {wrapFetcher} from './utils/api';\nimport {normalizeLink} from './utils/normalizeLink';\nimport {\n findIndex,\n isObject,\n JSONTraverse,\n promisify,\n qsparse,\n string2regExp\n} from './utils/helper';\nimport {\n fetcherResult,\n SchemaNode,\n Schema,\n Action,\n EventTrack,\n PlainObject\n} from './types';\nimport {observer} from 'mobx-react';\nimport Scoped from './Scoped';\nimport {getTheme, ThemeProps} from './theme';\nimport find from 'lodash/find';\nimport Alert from './components/Alert2';\nimport {toast} from './components/Toast';\nimport {alert, confirm, setRenderSchemaFn} from './components/Alert';\nimport {getDefaultLocale, makeTranslator, LocaleProps} from './locale';\nimport ScopedRootRenderer, {RootRenderProps} from './Root';\nimport {HocStoreFactory} from './WithStore';\nimport {EnvContext, RendererEnv} from './env';\nimport {envOverwrite} from './envOverwrite';\nimport {OnEventProps} from './utils/renderer-event';\nimport {enableDebug} from './utils/debug';\n\nexport interface TestFunc {\n (\n path: string,\n schema?: Schema,\n resolveRenderer?: (\n path: string,\n schema?: Schema,\n props?: any\n ) => null | RendererConfig\n ): boolean;\n}\n\nexport interface RendererBasicConfig {\n test?: RegExp | TestFunc;\n type?: string;\n name?: string;\n storeType?: string;\n shouldSyncSuperStore?: (\n store: any,\n props: any,\n prevProps: any\n ) => boolean | undefined;\n storeExtendsData?: boolean | ((props: any) => boolean); // 是否需要继承上层数据。\n weight?: number; // 权重,值越低越优先命中。\n isolateScope?: boolean;\n isFormItem?: boolean;\n autoVar?: boolean; // 自动解析变量\n // [propName:string]:any;\n}\n\nexport interface RendererProps extends ThemeProps, LocaleProps, OnEventProps {\n render: (region: string, node: SchemaNode, props?: any) => JSX.Element;\n env: RendererEnv;\n $path: string; // 当前组件所在的层级信息\n $schema: any; // 原始 schema 配置\n store?: IIRendererStore;\n syncSuperStore?: boolean;\n data: {\n [propName: string]: any;\n };\n defaultData?: object;\n className?: any;\n [propName: string]: any;\n}\n\nexport type RendererComponent = React.ComponentType<RendererProps> & {\n propsList?: Array<any>;\n};\n\nexport interface RendererConfig extends RendererBasicConfig {\n component: RendererComponent;\n Renderer?: RendererComponent; // 原始组件\n}\n\nexport interface RenderSchemaFilter {\n (schema: Schema, renderer: RendererConfig, props?: any): Schema;\n}\n\nexport interface wsObject {\n url: string;\n responseKey?: string;\n body?: any;\n}\n\nexport interface RenderOptions {\n session?: string;\n fetcher?: (config: fetcherConfig) => Promise<fetcherResult>;\n wsFetcher?: (\n ws: wsObject,\n onMessage: (data: any) => void,\n onError: (error: any) => void\n ) => void;\n isCancel?: (value: any) => boolean;\n notify?: (\n type: 'error' | 'success',\n msg: string,\n conf?: {\n closeButton?: boolean;\n timeout?: number;\n }\n ) => void;\n jumpTo?: (to: string, action?: Action, ctx?: object) => void;\n alert?: (msg: string) => void;\n confirm?: (msg: string, title?: string) => boolean | Promise<boolean>;\n rendererResolver?: (\n path: string,\n schema: Schema,\n props: any\n ) => null | RendererConfig;\n copy?: (contents: string, options?: any) => void;\n getModalContainer?: () => HTMLElement;\n loadRenderer?: (\n schema: Schema,\n path: string,\n reRender: Function\n ) => Promise<React.ReactType> | React.ReactType | JSX.Element | void;\n affixOffsetTop?: number;\n affixOffsetBottom?: number;\n richTextToken?: string;\n /**\n * 替换文本,用于实现 URL 替换、语言替换等\n */\n replaceText?: {[propName: string]: any};\n /**\n * 文本替换的黑名单,因为属性太多了所以改成黑名单的 fangs\n */\n replaceTextIgnoreKeys?: String[];\n /**\n * 过滤 html 标签,可用来添加 xss 保护逻辑\n */\n filterHtml?: (input: string) => string;\n /**\n * 是否开启 amis 调试\n */\n enableAMISDebug?: boolean;\n [propName: string]: any;\n}\n\nexport interface fetcherConfig {\n url: string;\n method?: 'get' | 'post' | 'put' | 'patch' | 'delete' | 'jsonp';\n data?: any;\n config?: any;\n}\n\nconst renderers: Array<RendererConfig> = [];\nconst rendererNames: Array<string> = [];\nconst schemaFilters: Array<RenderSchemaFilter> = [];\nlet anonymousIndex = 1;\n\nexport function addSchemaFilter(fn: RenderSchemaFilter) {\n schemaFilters.push(fn);\n}\n\nexport function filterSchema(\n schema: Schema,\n render: RendererConfig,\n props?: any\n) {\n return schemaFilters.reduce(\n (schema, filter) => filter(schema, render, props),\n schema\n ) as Schema;\n}\n\nexport function Renderer(config: RendererBasicConfig) {\n return function <T extends RendererComponent>(component: T): T {\n const renderer = registerRenderer({\n ...config,\n component: component\n });\n return renderer.component as T;\n };\n}\n\nexport function registerRenderer(config: RendererConfig): RendererConfig {\n if (!config.test && !config.type) {\n throw new TypeError('please set config.test or config.type');\n } else if (!config.component) {\n throw new TypeError('config.component is required');\n }\n\n if (typeof config.type === 'string' && config.type) {\n config.type = config.type.toLowerCase();\n config.test =\n config.test || new RegExp(`(^|\\/)${string2regExp(config.type)}$`, 'i');\n }\n\n config.weight = config.weight || 0;\n config.Renderer = config.component;\n config.name = config.name || config.type || `anonymous-${anonymousIndex++}`;\n\n if (~rendererNames.indexOf(config.name)) {\n throw new Error(\n `The renderer with name \"${config.name}\" has already exists, please try another name!`\n );\n }\n\n if (config.storeType && config.component) {\n config.component = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.storeExtendsData,\n shouldSyncSuperStore: config.shouldSyncSuperStore\n })(observer(config.component));\n }\n\n if (config.isolateScope) {\n config.component = Scoped(config.component);\n }\n\n const idx = findIndex(\n renderers,\n item => (config.weight as number) < item.weight\n );\n ~idx ? renderers.splice(idx, 0, config) : renderers.push(config);\n rendererNames.push(config.name);\n return config;\n}\n\nexport function unRegisterRenderer(config: RendererConfig | string) {\n let idx =\n typeof config === 'string'\n ? findIndex(renderers, item => item.name === config)\n : renderers.indexOf(config);\n ~idx && renderers.splice(idx, 1);\n\n let idx2 =\n typeof config === 'string'\n ? findIndex(rendererNames, item => item === config)\n : rendererNames.indexOf(config.name || '');\n ~idx2 && rendererNames.splice(idx2, 1);\n\n // 清空渲染器定位缓存\n cache = {};\n}\n\nexport function loadRenderer(schema: Schema, path: string) {\n return (\n <Alert level=\"danger\">\n <p>Error: 找不到对应的渲染器</p>\n <p>Path: {path}</p>\n <pre>\n <code>{JSON.stringify(schema, null, 2)}</code>\n </pre>\n </Alert>\n );\n}\n\nconst defaultOptions: RenderOptions = {\n session: 'global',\n affixOffsetTop: 0,\n affixOffsetBottom: 0,\n richTextToken: '',\n useMobileUI: true, // 是否启用移动端原生 UI\n enableAMISDebug:\n (window as any).enableAMISDebug ??\n location.search.indexOf('amisDebug=1') !== -1 ??\n false,\n loadRenderer,\n fetcher() {\n return Promise.reject('fetcher is required');\n },\n // 使用 WebSocket 来实时获取数据\n wsFetcher(ws, onMessage, onError) {\n if (ws) {\n const socket = new WebSocket(ws.url);\n socket.onopen = event => {\n if (ws.body) {\n socket.send(JSON.stringify(ws.body));\n }\n };\n socket.onmessage = event => {\n if (event.data) {\n let data;\n try {\n data = JSON.parse(event.data);\n } catch (error) {}\n if (typeof data !== 'object') {\n let key = ws.responseKey || 'data';\n data = {\n [key]: event.data\n };\n }\n\n onMessage(data);\n }\n };\n socket.onerror = onError;\n return {\n close: socket.close\n };\n } else {\n return {\n close: () => {}\n };\n }\n },\n isCancel() {\n console.error(\n 'Please implement isCancel. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97'\n );\n return false;\n },\n updateLocation() {\n console.error(\n 'Please implement updateLocation. see https://baidu.gitee.io/amis/docs/start/getting-started#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97'\n );\n },\n alert,\n confirm,\n notify: (type, msg, conf) =>\n toast[type] ? toast[type](msg, conf) : console.warn('[Notify]', type, msg),\n\n jumpTo: (to: string, action?: any) => {\n if (to === 'goBack') {\n return window.history.back();\n }\n to = normalizeLink(to);\n if (action && action.actionType === 'url') {\n action.blank === false ? (window.location.href = to) : window.open(to);\n return;\n }\n if (/^https?:\\/\\//.test(to)) {\n window.location.replace(to);\n } else {\n location.href = to;\n }\n },\n isCurrentUrl: (to: string) => {\n if (!to) {\n return false;\n }\n\n const link = normalizeLink(to);\n const location = window.location;\n let pathname = link;\n let search = '';\n const idx = link.indexOf('?');\n if (~idx) {\n pathname = link.substring(0, idx);\n search = link.substring(idx);\n }\n if (search) {\n if (pathname !== location.pathname || !location.search) {\n return false;\n }\n const query = qsparse(search.substring(1));\n const currentQuery = qsparse(location.search.substring(1));\n return Object.keys(query).every(key => query[key] === currentQuery[key]);\n } else if (pathname === location.pathname) {\n return true;\n }\n return false;\n },\n copy(contents: string) {\n console.error('copy contents', contents);\n },\n // 用于跟踪用户在界面中的各种操作\n tracker(eventTrack: EventTrack, props: PlainObject) {},\n rendererResolver: resolveRenderer,\n replaceTextIgnoreKeys: [\n 'type',\n 'name',\n 'mode',\n 'target',\n 'reload',\n 'persistData'\n ],\n /**\n * 过滤 html 标签,可用来添加 xss 保护逻辑\n */\n filterHtml: (input: string) => input\n};\nlet stores: {\n [propName: string]: IRendererStore;\n} = {};\nexport function render(\n schema: Schema,\n props: RootRenderProps = {},\n options: RenderOptions = {},\n pathPrefix: string = ''\n): JSX.Element {\n let locale = props.locale || getDefaultLocale();\n // 兼容 locale 的不同写法\n locale = locale.replace('_', '-');\n locale = locale === 'en' ? 'en-US' : locale;\n locale = locale === 'zh' ? 'zh-CN' : locale;\n locale = locale === 'cn' ? 'zh-CN' : locale;\n const translate = props.translate || makeTranslator(locale);\n let store = stores[options.session || 'global'];\n\n // 根据环境覆盖 schema,这个要在最前面做,不然就无法覆盖 validations\n envOverwrite(schema, locale);\n\n if (!store) {\n options = {\n ...defaultOptions,\n ...options,\n fetcher: options.fetcher\n ? wrapFetcher(options.fetcher, options.tracker)\n : defaultOptions.fetcher,\n confirm: promisify(\n options.confirm || defaultOptions.confirm || window.confirm\n ),\n locale,\n translate\n } as any;\n\n if (options.enableAMISDebug) {\n // 因为里面还有 render\n setTimeout(() => {\n enableDebug();\n }, 10);\n }\n\n store = RendererStore.create({}, options);\n stores[options.session || 'global'] = store;\n }\n\n (window as any).amisStore = store; // 为了方便 debug.\n const env = getEnv(store);\n\n let theme = props.theme || options.theme || 'cxd';\n if (theme === 'default') {\n theme = 'cxd';\n }\n env.theme = getTheme(theme);\n\n if (props.locale !== undefined) {\n env.translate = translate;\n env.locale = locale;\n }\n\n // 默认将开启移动端原生 UI\n if (typeof options.useMobileUI) {\n props.useMobileUI = true;\n }\n\n // 进行文本替换\n if (env.replaceText && isObject(env.replaceText)) {\n const replaceKeys = Object.keys(env.replaceText);\n replaceKeys.sort((a, b) => b.length - a.length); // 避免用户将短的放前面\n const replaceTextIgnoreKeys = new Set(env.replaceTextIgnoreKeys || []);\n JSONTraverse(schema, (value: any, key: string, object: any) => {\n if (typeof value === 'string' && !replaceTextIgnoreKeys.has(key)) {\n for (const replaceKey of replaceKeys) {\n if (~value.indexOf(replaceKey)) {\n value = object[key] = value.replaceAll(\n replaceKey,\n env.replaceText[replaceKey]\n );\n }\n }\n }\n });\n }\n\n return (\n <EnvContext.Provider value={env}>\n <ScopedRootRenderer\n {...props}\n schema={schema}\n pathPrefix={pathPrefix}\n rootStore={store}\n env={env}\n theme={theme}\n locale={locale}\n translate={translate}\n />\n </EnvContext.Provider>\n );\n}\n\n// 默认 env 会被缓存,所以新传入的 env 不会替换旧的。\n// 除非先删了旧的,新的才会生效。\nexport function clearStoresCache(\n sessions: Array<string> | string = Object.keys(stores)\n) {\n if (!Array.isArray(sessions)) {\n sessions = [sessions];\n }\n\n sessions.forEach(key => {\n const store = stores[key];\n\n // @ts-ignore\n delete stores[key];\n\n store && destroy(store);\n });\n}\n\n// 当然也可以直接这样更新。\n// 主要是有时候第一次创建的时候并没有准备多少接口,\n// 可以后续补充点,比如 amis 自己实现的,prompt 里面的表单。\nexport function updateEnv(options: Partial<RenderOptions>, session = 'global') {\n options = {\n ...options\n };\n\n if (options.fetcher) {\n options.fetcher = wrapFetcher(options.fetcher, options.tracker) as any;\n }\n\n if (options.confirm) {\n options.confirm = promisify(options.confirm);\n }\n\n let store = stores[options.session || session];\n if (!store) {\n store = RendererStore.create({}, options);\n stores[options.session || session] = store;\n } else {\n const env = getEnv(store);\n Object.assign(env, options);\n }\n}\n\nlet cache: {[propName: string]: RendererConfig} = {};\nexport function resolveRenderer(\n path: string,\n schema?: Schema\n): null | RendererConfig {\n const type = typeof schema?.type == 'string' ? schema.type.toLowerCase() : '';\n\n if (type && cache[type]) {\n return cache[type];\n } else if (cache[path]) {\n return cache[path];\n } else if (path && path.length > 1024) {\n throw new Error('Path太长是不是死循环了?');\n }\n\n let renderer: null | RendererConfig = null;\n\n renderers.some(item => {\n let matched = false;\n\n // 直接匹配类型,后续注册渲染都应该用这个方式而不是之前的判断路径。\n if (item.type && type) {\n matched = item.type === type;\n\n // 如果是type来命中的,那么cache的key直接用 type 即可。\n if (matched) {\n cache[type] = item;\n }\n } else if (typeof item.test === 'function') {\n // 不应该搞得这么复杂的,让每个渲染器唯一 id,自己不晕别人用起来也不晕。\n matched = item.test(path, schema, resolveRenderer);\n } else if (item.test instanceof RegExp) {\n matched = item.test.test(path);\n }\n\n if (matched) {\n renderer = item;\n }\n\n return matched;\n });\n\n // 只能缓存纯正则表达式的后者方法中没有用到第二个参数的,\n // 因为自定义 test 函数的有可能依赖 schema 的结果\n if (\n renderer !== null &&\n ((renderer as RendererConfig).type ||\n (renderer as RendererConfig).test instanceof RegExp ||\n (typeof (renderer as RendererConfig).test === 'function' &&\n ((renderer as RendererConfig).test as Function).length < 2))\n ) {\n cache[path] = renderer;\n }\n\n return renderer;\n}\n\nexport function getRenderers() {\n return renderers.concat();\n}\n\nexport function getRendererByName(name: string) {\n return find(renderers, item => item.name === name);\n}\n\nsetRenderSchemaFn((controls, value, callback, scopeRef, theme) => {\n return render(\n {\n name: 'form',\n type: 'form',\n wrapWithPanel: false,\n mode: 'horizontal',\n controls,\n messages: {\n validateFailed: ''\n }\n },\n {\n data: value,\n onFinished: callback,\n scopeRef,\n theme\n },\n {\n session: 'prompt'\n }\n );\n});\n\nexport {RendererEnv};\n"
|
12
12
|
]
|
13
13
|
}
|