d2coreui 21.0.33 → 23.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/clipboard/clipboardUtils.d.ts +4 -3
- package/components/clipboard/clipboardUtils.js +47 -22
- package/components/clipboard/clipboardUtils.js.map +1 -1
- package/components/codemirror/SyntaxHighlighter.d.ts +21 -21
- package/components/codemirror/SyntaxHighlighter.js +45 -44
- package/components/codemirror/SyntaxHighlighter.js.map +1 -1
- package/components/collapse/expandable.d.ts +13 -12
- package/components/collapse/expandable.js +20 -20
- package/components/collapse/expandable.js.map +1 -1
- package/components/color/colorPicker.d.ts +20 -20
- package/components/color/colorPicker.js +53 -53
- package/components/color/colorPicker.js.map +1 -1
- package/components/color/colorSwatch.d.ts +13 -12
- package/components/color/colorSwatch.js +62 -62
- package/components/color/colorSwatch.js.map +1 -1
- package/components/color/colorUtils.d.ts +7 -7
- package/components/color/colorUtils.js +43 -43
- package/components/color/colorUtils.js.map +1 -1
- package/components/date/dateRangeInput.d.ts +66 -64
- package/components/date/dateRangeInput.js +292 -297
- package/components/date/dateRangeInput.js.map +1 -1
- package/components/date/dateRangeInputAdvancedPanel.d.ts +27 -26
- package/components/date/dateRangeInputAdvancedPanel.js +130 -115
- package/components/date/dateRangeInputAdvancedPanel.js.map +1 -1
- package/components/date/dateRangeInputConfirm.d.ts +31 -29
- package/components/date/dateRangeInputConfirm.js +132 -121
- package/components/date/dateRangeInputConfirm.js.map +1 -1
- package/components/date/dateTimeInput.d.ts +72 -69
- package/components/date/dateTimeInput.js +440 -412
- package/components/date/dateTimeInput.js.map +1 -1
- package/components/date/durationInput.d.ts +59 -56
- package/components/date/durationInput.js +269 -280
- package/components/date/durationInput.js.map +1 -1
- package/components/form/NiceFormItem.d.ts +14 -14
- package/components/form/NiceFormItem.js +28 -31
- package/components/form/NiceFormItem.js.map +1 -1
- package/components/grid/cell/beanAccessor.d.ts +9 -0
- package/components/grid/cell/beanAccessor.js +13 -0
- package/components/grid/cell/beanAccessor.js.map +1 -0
- package/components/grid/cell/cellEditorUtils.d.ts +4 -4
- package/components/grid/cell/cellEditorUtils.js +8 -8
- package/components/grid/cell/customEnumCellEditor.d.ts +4 -26
- package/components/grid/cell/customEnumCellEditor.js +82 -91
- package/components/grid/cell/customEnumCellEditor.js.map +1 -1
- package/components/grid/cell/dataGridCellEditorComponent.d.ts +14 -0
- package/components/grid/cell/dataGridCellEditorComponent.js +49 -0
- package/components/grid/cell/dataGridCellEditorComponent.js.map +1 -0
- package/components/grid/cell/dateCellEditor.d.ts +4 -25
- package/components/grid/cell/dateCellEditor.js +53 -72
- package/components/grid/cell/dateCellEditor.js.map +1 -1
- package/components/grid/cell/durationCellEditor.d.ts +4 -24
- package/components/grid/cell/durationCellEditor.js +74 -97
- package/components/grid/cell/durationCellEditor.js.map +1 -1
- package/components/grid/cell/hexaOctetStringCellEditor.d.ts +4 -24
- package/components/grid/cell/hexaOctetStringCellEditor.js +70 -94
- package/components/grid/cell/hexaOctetStringCellEditor.js.map +1 -1
- package/components/grid/cell/hexaValueCellEditor.d.ts +4 -24
- package/components/grid/cell/hexaValueCellEditor.js +65 -89
- package/components/grid/cell/hexaValueCellEditor.js.map +1 -1
- package/components/grid/cell/numberCellEditor.d.ts +4 -27
- package/components/grid/cell/numberCellEditor.js +73 -95
- package/components/grid/cell/numberCellEditor.js.map +1 -1
- package/components/grid/cell/rangeSelector.d.ts +78 -78
- package/components/grid/cell/rangeSelector.js +526 -518
- package/components/grid/cell/rangeSelector.js.map +1 -1
- package/components/grid/cell/simpleStatusTextCellEditor.d.ts +4 -32
- package/components/grid/cell/simpleStatusTextCellEditor.js +106 -116
- package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
- package/components/grid/cell/statusTextCellEditor.d.ts +4 -32
- package/components/grid/cell/statusTextCellEditor.js +136 -159
- package/components/grid/cell/statusTextCellEditor.js.map +1 -1
- package/components/grid/cell/tableDefaultRowStyleRules.d.ts +20 -20
- package/components/grid/cell/tableDefaultRowStyleRules.js +29 -18
- package/components/grid/cell/tableDefaultRowStyleRules.js.map +1 -1
- package/components/grid/cell/textCellEditor.d.ts +4 -21
- package/components/grid/cell/textCellEditor.js +63 -85
- package/components/grid/cell/textCellEditor.js.map +1 -1
- package/components/grid/cell/withAgGridHooks.d.ts +3 -0
- package/components/grid/cell/withAgGridHooks.js +15 -0
- package/components/grid/cell/withAgGridHooks.js.map +1 -0
- package/components/grid/columnUtils.d.ts +5 -5
- package/components/grid/columnUtils.js +26 -26
- package/components/grid/columnUtils.js.map +1 -1
- package/components/grid/config/columnTransfer.d.ts +21 -22
- package/components/grid/config/columnTransfer.js +205 -201
- package/components/grid/config/columnTransfer.js.map +1 -1
- package/components/grid/config/dataGridEditor.d.ts +41 -41
- package/components/grid/config/dataGridEditor.js +181 -160
- package/components/grid/config/dataGridEditor.js.map +1 -1
- package/components/grid/config/rowHeightCalculator.d.ts +8 -0
- package/components/grid/config/rowHeightCalculator.js +20 -0
- package/components/grid/config/rowHeightCalculator.js.map +1 -0
- package/components/grid/config/rowStylePicker.d.ts +27 -25
- package/components/grid/config/rowStylePicker.js +127 -109
- package/components/grid/config/rowStylePicker.js.map +1 -1
- package/components/grid/dataGrid.d.ts +218 -206
- package/components/grid/dataGrid.js +1629 -1538
- package/components/grid/dataGrid.js.map +1 -1
- package/components/grid/detail/detailHeaderPanel.d.ts +13 -13
- package/components/grid/detail/detailHeaderPanel.js +25 -25
- package/components/grid/detail/detailHeaderPanel.js.map +1 -1
- package/components/grid/export/contextMenu.d.ts +18 -24
- package/components/grid/export/contextMenu.js +116 -113
- package/components/grid/export/contextMenu.js.map +1 -1
- package/components/grid/export/progressPopup.d.ts +29 -29
- package/components/grid/export/progressPopup.js +93 -93
- package/components/grid/export/progressPopup.js.map +1 -1
- package/components/grid/export/worker/clipboardExport.d.ts +1 -1
- package/components/grid/export/worker/clipboardExport.js +8 -8
- package/components/grid/export/worker/csvExport.d.ts +1 -1
- package/components/grid/export/worker/csvExport.js +8 -8
- package/components/grid/export/worker/pdfExport.d.ts +1 -1
- package/components/grid/export/worker/pdfExport.js +81 -81
- package/components/grid/export/worker/pdfExport.js.map +1 -1
- package/components/grid/export/worker/txtExport.d.ts +1 -1
- package/components/grid/export/worker/txtExport.js +19 -19
- package/components/grid/extendedDataGrid.d.ts +140 -140
- package/components/grid/extendedDataGrid.js +704 -695
- package/components/grid/extendedDataGrid.js.map +1 -1
- package/components/grid/filter/customColumnFilter.d.ts +5 -21
- package/components/grid/filter/customColumnFilter.js +11 -82
- package/components/grid/filter/customColumnFilter.js.map +1 -1
- package/components/grid/filter/dataGridColumnFilter.d.ts +17 -0
- package/components/grid/filter/dataGridColumnFilter.js +49 -0
- package/components/grid/filter/dataGridColumnFilter.js.map +1 -0
- package/components/grid/filter/dateColumnFilter.d.ts +7 -11
- package/components/grid/filter/dateColumnFilter.js +22 -56
- package/components/grid/filter/dateColumnFilter.js.map +1 -1
- package/components/grid/filter/textColumnFilter.d.ts +8 -20
- package/components/grid/filter/textColumnFilter.js +24 -76
- package/components/grid/filter/textColumnFilter.js.map +1 -1
- package/components/grid/filter/wildcardQuickFilterEngine.d.ts +7 -0
- package/components/grid/filter/wildcardQuickFilterEngine.js +48 -0
- package/components/grid/filter/wildcardQuickFilterEngine.js.map +1 -0
- package/components/grid/header/simpleHeader.d.ts +17 -16
- package/components/grid/header/simpleHeader.js +230 -186
- package/components/grid/header/simpleHeader.js.map +1 -1
- package/components/grid/panel/dataGridPagination.d.ts +16 -16
- package/components/grid/panel/dataGridPagination.js +58 -58
- package/components/grid/panel/dataGridPagination.js.map +1 -1
- package/components/grid/panel/loadingOverlay.d.ts +6 -6
- package/components/grid/panel/loadingOverlay.js +10 -10
- package/components/grid/panel/loadingOverlay.js.map +1 -1
- package/components/grid/panel/noRecordsOverlay.d.ts +6 -6
- package/components/grid/panel/noRecordsOverlay.js +10 -10
- package/components/grid/panel/noRecordsOverlay.js.map +1 -1
- package/components/grid/panel/tablePagination.d.ts +10 -10
- package/components/grid/panel/tablePagination.js +45 -45
- package/components/grid/panel/tablePagination.js.map +1 -1
- package/components/icons/dropdownArrow.d.ts +8 -0
- package/components/icons/dropdownArrow.js +59 -0
- package/components/icons/dropdownArrow.js.map +1 -0
- package/components/icons/undoIcon.d.ts +8 -8
- package/components/icons/undoIcon.js +6 -6
- package/components/input/autoCompleteInput.d.ts +35 -35
- package/components/input/autoCompleteInput.js +122 -121
- package/components/input/autoCompleteInput.js.map +1 -1
- package/components/input/draftUtils.d.ts +4 -4
- package/components/input/draftUtils.js +48 -48
- package/components/input/draftUtils.js.map +1 -1
- package/components/input/draftail.d.ts +1 -1
- package/components/input/draftail.js +1 -1
- package/components/input/hexaFormattedInput.d.ts +16 -16
- package/components/input/hexaFormattedInput.js +54 -54
- package/components/input/hexaFormattedInput.js.map +1 -1
- package/components/input/mask/helpers.d.ts +28 -28
- package/components/input/mask/helpers.js +112 -112
- package/components/input/mask/helpers.js.map +1 -1
- package/components/input/mask/inputMaskCore.d.ts +46 -46
- package/components/input/mask/inputMaskCore.js +278 -278
- package/components/input/mask/inputMaskCore.js.map +1 -1
- package/components/input/mask/pattern.d.ts +20 -20
- package/components/input/mask/pattern.js +78 -78
- package/components/input/mask/pattern.js.map +1 -1
- package/components/input/maskedInput.d.ts +373 -351
- package/components/input/maskedInput.js +224 -224
- package/components/input/maskedInput.js.map +1 -1
- package/components/input/passwordInput.d.ts +9 -9
- package/components/input/passwordInput.js +55 -55
- package/components/input/passwordInput.js.map +1 -1
- package/components/input/simpleAutoComplete.d.ts +12 -12
- package/components/input/simpleAutoComplete.js +41 -43
- package/components/input/simpleAutoComplete.js.map +1 -1
- package/components/input/textarea/extractSpansOfClasses.d.ts +15 -15
- package/components/input/textarea/extractSpansOfClasses.js +96 -96
- package/components/input/textarea/extractSpansOfClasses.js.map +1 -1
- package/components/input/textarea/getRanges.d.ts +1 -1
- package/components/input/textarea/getRanges.js +73 -73
- package/components/input/textarea/getRanges.js.map +1 -1
- package/components/input/textarea/getType.d.ts +1 -1
- package/components/input/textarea/getType.js +26 -26
- package/components/input/textarea/getType.js.map +1 -1
- package/components/input/textarea/highlighedContents.d.ts +6 -6
- package/components/input/textarea/highlighedContents.js +10 -10
- package/components/input/textarea/mentionsWithHighlighting.d.ts +27 -27
- package/components/input/textarea/mentionsWithHighlighting.js +60 -60
- package/components/input/textarea/mentionsWithHighlighting.js.map +1 -1
- package/components/keyboard/keyboardUtils.d.ts +5 -5
- package/components/keyboard/keyboardUtils.js +32 -32
- package/components/modal/draggableModalProvider.d.ts +4 -4
- package/components/modal/draggableModalProvider.js +21 -21
- package/components/modal/draggableModalProvider.js.map +1 -1
- package/components/modal/impl/clamp.d.ts +1 -1
- package/components/modal/impl/clamp.js +1 -1
- package/components/modal/impl/clamp.js.map +1 -1
- package/components/modal/impl/draggableModal.d.ts +12 -12
- package/components/modal/impl/draggableModal.js +17 -17
- package/components/modal/impl/draggableModal.js.map +1 -1
- package/components/modal/impl/draggableModalContext.d.ts +9 -9
- package/components/modal/impl/draggableModalContext.js +2 -2
- package/components/modal/impl/draggableModalContext.js.map +1 -1
- package/components/modal/impl/draggableModalInner.d.ts +15 -13
- package/components/modal/impl/draggableModalInner.js +57 -55
- package/components/modal/impl/draggableModalInner.js.map +1 -1
- package/components/modal/impl/draggableModalReducer.d.ts +66 -62
- package/components/modal/impl/draggableModalReducer.js +77 -78
- package/components/modal/impl/draggableModalReducer.js.map +1 -1
- package/components/modal/impl/getWindowSize.d.ts +4 -4
- package/components/modal/impl/getWindowSize.js +4 -4
- package/components/modal/impl/getWindowSize.js.map +1 -1
- package/components/modal/impl/index.d.ts +3 -3
- package/components/modal/impl/index.js +3 -3
- package/components/modal/impl/index.js.map +1 -1
- package/components/modal/impl/resizeHandle.d.ts +3 -3
- package/components/modal/impl/resizeHandle.js +4 -4
- package/components/modal/impl/resizeHandle.js.map +1 -1
- package/components/modal/impl/useDrag.d.ts +5 -5
- package/components/modal/impl/useDrag.js +42 -42
- package/components/modal/impl/useDrag.js.map +1 -1
- package/components/modal/impl/usePrevious.d.ts +1 -1
- package/components/modal/impl/usePrevious.js +8 -8
- package/components/modal/impl/usePrevious.js.map +1 -1
- package/components/modal/impl/useResize.d.ts +7 -7
- package/components/modal/impl/useResize.js +46 -46
- package/components/modal/impl/useResize.js.map +1 -1
- package/components/modal/modalDialog.d.ts +49 -49
- package/components/modal/modalDialog.js +152 -152
- package/components/modal/modalDialog.js.map +1 -1
- package/components/picker/enumValuePicker.d.ts +16 -16
- package/components/picker/enumValuePicker.js +34 -34
- package/components/picker/enumValuePicker.js.map +1 -1
- package/components/platformSpecific.d.ts +10 -10
- package/components/platformSpecific.js +27 -27
- package/components/scrollTo/onlyText.d.ts +4 -4
- package/components/scrollTo/onlyText.js +30 -30
- package/components/scrollTo/onlyText.js.map +1 -1
- package/components/scrollTo/scrollTo.d.ts +41 -39
- package/components/scrollTo/scrollTo.js +264 -264
- package/components/scrollTo/scrollTo.js.map +1 -1
- package/components/style/withCss.d.ts +9 -0
- package/components/style/withCss.js +6 -0
- package/components/style/withCss.js.map +1 -0
- package/components/style/withInputNumberCss.d.ts +6 -0
- package/components/style/withInputNumberCss.js +13 -0
- package/components/style/withInputNumberCss.js.map +1 -0
- package/components/table/dragSortingTable.d.ts +13 -14
- package/components/table/dragSortingTable.js +96 -82
- package/components/table/dragSortingTable.js.map +1 -1
- package/components/text/impl/innerSize.d.ts +2 -2
- package/components/text/impl/innerSize.js +12 -12
- package/components/text/impl/series.d.ts +1 -1
- package/components/text/impl/series.js +28 -28
- package/components/text/impl/shallowEqual.d.ts +1 -1
- package/components/text/impl/shallowEqual.js +18 -18
- package/components/text/impl/shallowEqual.js.map +1 -1
- package/components/text/impl/uniqueId.d.ts +1 -1
- package/components/text/impl/uniqueId.js +4 -4
- package/components/text/impl/whilst.d.ts +1 -1
- package/components/text/impl/whilst.js +19 -19
- package/components/text/impl/whilst.js.map +1 -1
- package/components/text/textFit.d.ts +38 -38
- package/components/text/textFit.js +165 -168
- package/components/text/textFit.js.map +1 -1
- package/i18n/components.cs.json +101 -100
- package/i18n/components.sk.json +101 -100
- package/i18n/components.uk.json +101 -100
- package/i18n/componentsLocaleHolder.d.ts +3 -3
- package/i18n/componentsLocaleHolder.js +28 -28
- package/i18n/componentsLocaleHolder.js.map +1 -1
- package/package.json +71 -70
- package/style/index.less +274 -298
- package/style/modal/DraggableModal.css +43 -40
- package/style/modal/ResizeHandle.css +27 -19
- package/tsconfig.build.json +24 -24
- package/tsconfig.json +11 -11
- package/components/grid/cell/wildcardQuickFilter.d.ts +0 -11
- package/components/grid/cell/wildcardQuickFilter.js +0 -61
- package/components/grid/cell/wildcardQuickFilter.js.map +0 -1
- package/components/table/dataTable.d.ts +0 -17
- package/components/table/dataTable.js +0 -79
- package/components/table/dataTable.js.map +0 -1
- package/style/antd/antd-tree-showline.css +0 -25
- package/style/antd/full-height-tabs.scss +0 -63
- package/style/draftail/draftail-editor.css +0 -179
- package/style/table/dragSortingTable.css +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendedDataGrid.js","sourceRoot":"","sources":["../../../../components/grid/extendedDataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\nimport * as FlexLayout from \"flexlayout-react\";\nimport {Actions} from \"flexlayout-react\";\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\nimport {Badge, Button, Empty} from \"antd\";\nimport DataGrid, {\n DataGridFilterProps,\n DataGridProps,\n DataGridSearchProps,\n DataGridViewportChangedEvent,\n OnLoadDataCallback,\n SortItem\n} from \"./dataGrid\";\nimport debounce from \"lodash/debounce\";\nimport i18n from \"d2core/i18n/i18n\";\nimport isEqual from \"lodash/isEqual\"\nimport isEqualWith from \"lodash/isEqualWith\"\nimport cloneDeep from \"lodash/cloneDeep\";\nimport tableDefaultRowStyleRules, {RowStyleRule} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\nimport {\n ColDef,\n ColumnApi,\n ColumnState,\n GridApi,\n GridReadyEvent,\n RowDataUpdatedEvent,\n SelectionChangedEvent,\n TextFilter,\n TextFilterModel,\n ViewportChangedEvent\n} from \"ag-grid-community\";\nimport {Model} from \"flexlayout-react/declarations/model/Model\";\nimport {ColumnUtils} from \"./columnUtils\";\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\n\nconst CONFIGURATION_VERSION = 1;\n\nexport interface GridConfiguration {\n // version of configuration\n version?: number\n // current layout model of panels (filter, table, detail)\n layoutModel?: any\n // current state of table columns\n columnModel?: ColumnState[]\n //current page size of the table\n pageSize: number\n // default page size, applied when user reverts configuration\n defaultPageSize?: number\n // table scrolls to lastly added record automatically\n followLastRecord?: boolean;\n // table sort model applied/required for follow last record functionality\n followLastRecordSortModel?: SortItem[]\n // flag if follow last record feature could be turned on/off by user\n followLastRecordEditable?: boolean\n // allow showing floating column filters beneath column names\n columnSearchVisible?: boolean\n // rules which apply to table rows\n rowStyleRules?: RowStyleRule[]\n // default rules which apply to table rows\n defaultRowStyleRules?: RowStyleRule[]\n // show milliseconds in datetime, time columns\n showMilliseconds?: boolean\n defaultShowMilliseconds?: boolean\n // hide year in date columns\n hideYear?: boolean\n defaultHideYear?: boolean\n}\n\ninterface ExtendedDataGridSearchProps extends DataGridSearchProps {\n initialSearchHistory?: string[]\n}\n\ninterface ExtendedDataGridFilterProps extends DataGridFilterProps {\n quickFilterEnabled?: boolean\n}\n\nexport interface FilterPanelRendererParams {\n defaultFilter?: any,\n // flag if filter is different than default filter\n filterChanged: boolean\n}\n\nexport interface ExtendedDataGridProps extends Omit<DataGridProps, \"paging\"> {\n defaultGridConfiguration: GridConfiguration\n\n // handler called during changes to data grid configuration\n onChangeConfiguration?(gridConfiguration: GridConfiguration): void\n\n // allow changing configuration\n disableConfigurationChange?: boolean\n\n filter?: ExtendedDataGridFilterProps\n search?: ExtendedDataGridSearchProps\n\n paging?: {\n /**\n * Page size change handler\n * @param currentPageSize - current page size represents number rows available\n * @param definedPageSize -\n */\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\n }\n // configuration of filter panel on the left side\n filterPanel?: {\n // default width of filter panel\n defaultWidth?: number\n // flag if panel is hidden, by default it is shown\n hidden?: boolean\n // default filter parameters\n defaultFilter?: any\n // filter panel render function\n renderer?(parameters: FilterPanelRendererParams): ReactElement\n }\n // configuration of detail panel on the right side\n detailPanel?: {\n // default width of detail panel on the left side\n defaultWidth?: number\n // detail panel render function\n renderer(): ReactElement\n }\n // panel placed directly below table, usually contains context buttons\n controlPanel?: {\n // control panel render function\n renderer?(): JSX.Element | null\n }\n\n // handler notifying data of the table has changed\n onDataChanged?(): void\n\n // time between value updates in ms, 0 means no debounce\n updateDataDebounceInterval?: number\n}\n\ninterface ExtendedDataGridState {\n // current layout model of panels (filter, table, detail)\n layoutModel: Model\n // current table configuration\n gridConfiguration: GridConfiguration\n // currently entered search string\n searchString: string\n // history of entered search strings\n searchHistory: string[]\n // default filter parameters\n defaultFilter: any\n // flag if advanced table configuration is visible\n tableConfigVisible: boolean\n // flag if filter has changed, so data doesn't correspond to current filter (color of search button changes to yellow)\n filterChanged: boolean\n // flag renders badge with exclamation after search button to notify user that table data are not actual\n tableNeedToBeReloaded: boolean\n}\n\n/**\n * Transaction class (more correct than RowDataTransaction)\n */\ninterface DataGridTransaction<T> {\n addIndex?: number;\n add: T[];\n remove: T[];\n update: T[];\n}\n\nexport default class ExtendedDataGrid<T extends { id: number | string }> extends React.Component<ExtendedDataGridProps, ExtendedDataGridState> {\n public static defaultProps = {\n rowStyleRules: tableDefaultRowStyleRules()\n };\n\n dataGrid?: DataGrid;\n private gridApi?: GridApi;\n private columnApi?: ColumnApi;\n // flag if data are loaded\n private dataLoaded: boolean;\n // transaction object used to update data from class\n private dataTransaction: DataGridTransaction<T>;\n private flexLayout: any = null;\n\n private _updateDataDebounced?(): void;\n\n constructor(props: Readonly<ExtendedDataGridProps>) {\n super(props);\n let gridConfiguration: GridConfiguration = {\n version: CONFIGURATION_VERSION,\n pageSize: 0\n };\n const gridConfigurationOk = props.defaultGridConfiguration && (!props.defaultGridConfiguration.version || props.defaultGridConfiguration.version === CONFIGURATION_VERSION);\n const layoutModelExists = gridConfigurationOk && !!props.defaultGridConfiguration.layoutModel;\n gridConfiguration.layoutModel = layoutModelExists ? props.defaultGridConfiguration.layoutModel : this._getInitialLayoutModel(props);\n gridConfiguration.columnModel = gridConfigurationOk && props.defaultGridConfiguration.columnModel ? props.defaultGridConfiguration.columnModel : undefined;\n gridConfiguration.pageSize = gridConfigurationOk && props.defaultGridConfiguration.pageSize ? props.defaultGridConfiguration.pageSize : 0;\n gridConfiguration.defaultPageSize = gridConfigurationOk && props.defaultGridConfiguration.defaultPageSize ? props.defaultGridConfiguration.defaultPageSize : undefined;\n gridConfiguration.followLastRecord = gridConfigurationOk && props.defaultGridConfiguration.followLastRecord;\n gridConfiguration.followLastRecordSortModel = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordSortModel ? props.defaultGridConfiguration.followLastRecordSortModel : undefined;\n gridConfiguration.followLastRecordEditable = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordEditable;\n gridConfiguration.columnSearchVisible = gridConfigurationOk && props.defaultGridConfiguration.columnSearchVisible;\n gridConfiguration.rowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.rowStyleRules ? props.defaultGridConfiguration.rowStyleRules : tableDefaultRowStyleRules();\n gridConfiguration.defaultRowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.defaultRowStyleRules ? props.defaultGridConfiguration.defaultRowStyleRules : tableDefaultRowStyleRules();\n gridConfiguration.showMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.showMilliseconds ? props.defaultGridConfiguration.showMilliseconds : false;\n gridConfiguration.defaultShowMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.defaultShowMilliseconds ? props.defaultGridConfiguration.defaultShowMilliseconds : false;\n gridConfiguration.hideYear = gridConfigurationOk && props.defaultGridConfiguration.hideYear ? props.defaultGridConfiguration.hideYear : false;\n gridConfiguration.defaultHideYear = gridConfigurationOk && props.defaultGridConfiguration.defaultHideYear ? props.defaultGridConfiguration.defaultHideYear : false;\n\n // nasty fix to define ids for tabsets due to react-flexlayout library fix: https://github.com/caplin/FlexLayout/commit/3a21b21f6cd5c2a7b52d46084dce6a3880f9af58#diff-92c133bf427754ff04deeab6751b083b7c97ca955e7cc57c740eef5433fd0129\n const layoutLength = gridConfiguration.layoutModel?.layout?.children?.length ?? 0;\n if (layoutLength > 0) {\n for (let i = 0; i < layoutLength; i++) {\n if (!gridConfiguration.layoutModel.layout.children[i].id) {\n gridConfiguration.layoutModel.layout.children[i].id = `#${(i + 1) * 2}`\n }\n }\n }\n\n this.state = {\n layoutModel: FlexLayout.Model.fromJson(gridConfiguration.layoutModel),\n gridConfiguration: gridConfiguration,\n // search context\n searchString: \"\",\n searchHistory: props.search && props.search.initialSearchHistory ? [...props.search.initialSearchHistory] : [],\n // visibility flags\n tableConfigVisible: false,\n\n defaultFilter: this.props.filterPanel && this.props.filterPanel.defaultFilter ? cloneDeep(this.props.filterPanel.defaultFilter) : undefined,\n filterChanged: false,\n tableNeedToBeReloaded: false\n };\n\n if (!layoutModelExists && props.filterPanel && props.filterPanel.hidden) {\n // hide filter panel if it is not explicitly shown\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\n this.state.gridConfiguration.layoutModel.layout.children[0].width = 0;\n }\n if (props.detailPanel) {\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\n }\n\n this.dataLoaded = false;\n this.dataTransaction = {add: [], remove: [], update: []};\n\n const debounceInterval: number = props.updateDataDebounceInterval ?? 500;\n if (debounceInterval > 0) {\n this._updateDataDebounced = debounce(this._updateData.bind(this), debounceInterval, {maxWait: debounceInterval});\n } else {\n this._updateDataDebounced = this._updateData.bind(this);\n }\n\n this.renderToolbarButtons = this.renderToolbarButtons.bind(this);\n this._onLoadData = this._onLoadData.bind(this);\n this._onGridReady = this._onGridReady.bind(this);\n this._onPaginationChanged = this._onPaginationChanged.bind(this);\n this._onSearch = this._onSearch.bind(this);\n this._onSearchStringChanged = this._onSearchStringChanged.bind(this);\n this.renderToolbar = this.renderToolbar.bind(this);\n this._followLastRecordDebounced = debounce(this._followLastRecordDebounced.bind(this), 500, {maxWait: 500});\n this._onRowDataUpdated = this._onRowDataUpdated.bind(this);\n this._onChangeRowStyleRules = this._onChangeRowStyleRules.bind(this);\n this.showFilterPanel = this.showFilterPanel.bind(this);\n this.showDetailPanel = this.showDetailPanel.bind(this);\n this.selectNextPreviousRecord = this.selectNextPreviousRecord.bind(this);\n this._onSelectionChanged = this._onSelectionChanged.bind(this);\n this._onViewportChanged = this._onViewportChanged.bind(this);\n }\n\n _getInitialLayoutModel(props: ExtendedDataGridProps) {\n const renderFilter = props.filterPanel && props.filterPanel.renderer;\n const renderDetail = props.detailPanel;\n const layoutModel: any = {\n global: {\n tabSetEnableTabStrip: false,\n splitterSize: 4,\n },\n borders: [],\n layout: {\n \"type\": \"row\",\n \"weight\": 100,\n \"children\": [{\n \"type\": \"tabset\",\n \"weight\": 100,\n \"selected\": 0,\n \"children\": [\n {\n \"type\": \"tab\",\n \"name\": \"Data\",\n \"component\": \"data-panel\",\n }\n ]\n }]\n }\n };\n if (renderFilter) {\n layoutModel.layout[\"children\"].unshift({\n \"id\": \"#2\",\n \"type\": \"tabset\",\n \"width\": props.filterPanel && props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 228,\n \"selected\": 0,\n \"children\": [\n {\n \"type\": \"tab\",\n \"name\": \"Filter\",\n \"component\": \"filter-panel\",\n }\n ]\n });\n }\n if (renderDetail) {\n layoutModel.layout[\"children\"].push({\n \"id\": props.filterPanel ? \"#6\" : \"#4\",\n \"type\": \"tabset\",\n \"width\": props.detailPanel ? (props.detailPanel.defaultWidth ? props.detailPanel.defaultWidth : 220) : 0,\n \"selected\": 0,\n \"children\": [\n {\n \"type\": \"tab\",\n \"name\": \"Detail\",\n \"component\": \"detail-panel\",\n }\n ]\n },);\n }\n return layoutModel;\n }\n\n getConfiguration(): GridConfiguration {\n return this.state.gridConfiguration;\n }\n\n getSearchContext(): { searchString: string, searchHistory: string[] } {\n // reverse searchHistory before storing it\n const searchHistory = [...this.state.searchHistory];\n searchHistory.reverse();\n return {\n searchString: this.state.searchString,\n searchHistory: searchHistory\n };\n }\n\n loadData(callback?: () => void): void {\n this.dataGrid?.loadData(callback);\n }\n\n isActive(): boolean {\n return !!this.dataGrid && this.dataGrid.isActive();\n }\n\n focus() {\n this.dataGrid?.focus();\n }\n\n private _changeConfiguration(configuration: Partial<GridConfiguration>, callback?: () => void): void {\n if (this.props.disableConfigurationChange) {\n return;\n }\n const newConfiguration = Object.assign(this.state.gridConfiguration, configuration);\n this.setState({gridConfiguration: newConfiguration}, callback);\n if (this.props.onChangeConfiguration) {\n this.props.onChangeConfiguration(this.state.gridConfiguration);\n }\n }\n\n private _onGridReady(event: GridReadyEvent): void {\n this.gridApi = event.api;\n this.columnApi = event.columnApi;\n this._reloadTableConfiguration();\n if (this.props.onGridReady) {\n this.props.onGridReady(event);\n }\n }\n\n private _onLoadData(callback: OnLoadDataCallback): void {\n if (this.state.tableNeedToBeReloaded) {\n this.setState({tableNeedToBeReloaded: false});\n }\n this.props.onLoadData((recordsCount) => {\n this.dataLoaded = true;\n // clear meanwhile dynamically added/removed/updated data records\n this.dataTransaction = {add: [], remove: [], update: []};\n this.followLastRecord();\n callback(recordsCount);\n })\n }\n\n private _onPaginationChanged(currentPageSize: number | null, definedPageSize: number): void {\n if (this.dataLoaded) {\n const definedPageSizeChanged = this.state.gridConfiguration.pageSize !== definedPageSize;\n if (definedPageSizeChanged) {\n this._changeConfiguration({pageSize: definedPageSize});\n this._followLastRecordDebounced();\n }\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(currentPageSize, definedPageSize);\n }\n }\n }\n\n private _onSearchStringChanged(searchString: string): void {\n this.setState({searchString: searchString});\n if (this.props.search && this.props.search.onChange) {\n this.props.search.onChange(searchString);\n }\n }\n\n private _onSearch(): void {\n const currentSearchString = this.state.searchString;\n let searchHistory: string[] = this.state.searchHistory;\n\n // remove search string from history\n searchHistory = searchHistory.filter((searchString) => searchString !== currentSearchString);\n // add new search string to first position in history\n searchHistory.unshift(currentSearchString);\n searchHistory = searchHistory.slice(0, 10);\n this.setState({\n searchHistory: searchHistory,\n });\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }\n\n private _reloadTableConfiguration(): void {\n if (this.gridApi && this.columnApi) {\n if (this.state.gridConfiguration.columnModel) {\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\n this.columnApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\n } else {\n this.columnApi.resetColumnState();\n const columnState = this.columnApi.getColumnState();\n this._changeConfiguration({columnModel: columnState});\n }\n }\n }\n\n clearTransaction() {\n this.dataTransaction.add = [];\n this.dataTransaction.remove = [];\n this.dataTransaction.update = [];\n this.dataTransaction.addIndex = undefined;\n }\n\n removeFromTransaction(item: T) {\n this.dataTransaction.add = this.dataTransaction.add.filter(value => value.id !== item.id);\n this.dataTransaction.remove = this.dataTransaction.remove.filter(value => value.id !== item.id);\n this.dataTransaction.update = this.dataTransaction.update.filter(value => value.id !== item.id);\n }\n\n addRecord(data: T, addIndex?: number): void {\n const markedToRemove = this.dataTransaction.remove.find((value => value.id === data.id));\n if (markedToRemove) {\n this.removeFromTransaction(data);\n this.dataTransaction.update.push(data);\n } else {\n this.removeFromTransaction(data);\n this.dataTransaction.add.push(data);\n if (addIndex !== undefined) {\n this.dataTransaction.addIndex = addIndex;\n }\n }\n if (this._updateDataDebounced) {\n this._updateDataDebounced();\n }\n }\n\n addRecords(dataArray: T[], addIndex?: number): void {\n (addIndex ? dataArray.reverse() : dataArray).forEach(data => this.addRecord(data, addIndex));\n }\n\n removeRecord(data: T): void {\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\n if (markedToAdd) {\n this.removeFromTransaction(data);\n } else {\n this.removeFromTransaction(data);\n this.dataTransaction.remove.push(data);\n }\n if (this._updateDataDebounced) {\n this._updateDataDebounced();\n }\n }\n\n removeRecords(dataList: T[]): void {\n dataList.forEach((data) => {\n this.removeRecord(data);\n })\n }\n\n updateRecord(data: (T & { dataChangeState?: DataChangeStateEnum })) {\n switch (data.dataChangeState) {\n case DataChangeStateEnum.CONFIGURED:\n this.addRecord(data);\n break;\n case DataChangeStateEnum.REMOVED:\n this.removeRecord(data);\n break;\n default:\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\n if (markedToAdd) {\n this.addRecord(data);\n } else {\n this.removeFromTransaction(data);\n this.dataTransaction.update.push(data);\n if (this._updateDataDebounced) {\n this._updateDataDebounced();\n }\n }\n break;\n }\n }\n\n updateRecords(dataList: (T & { dataChangeState?: DataChangeStateEnum })[]) {\n dataList.forEach((data) => {\n this.updateRecord(data);\n });\n }\n\n private _updateData(): void {\n // remove duplicates, preserve last version of object\n this.dataTransaction.update.forEach(data => {\n const rowNode = this.gridApi ? this.gridApi.getRowNode(data.id + \"\") : null;\n if (rowNode) {\n rowNode.updateData(data);\n if (this.props.filter && this.props.filter.quickFilterEnabled) {\n rowNode.resetQuickFilterAggregateText();\n }\n } else {\n this.dataTransaction.add.push(data);\n }\n });\n // we have already processed them\n this.dataTransaction.update = [];\n if (this.dataTransaction.add.length > 0 || this.dataTransaction.remove.length > 0) {\n this.dataTransaction.remove.forEach((object) => {\n const node = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\n if (node && node.isSelected()) {\n node.setSelected(false);\n }\n });\n // upgrade grid\n if (this.gridApi) {\n this.gridApi.applyTransaction(this.dataTransaction);\n }\n if (this.props.rowData) {\n // automatically updating client side array of records\n if (this.dataTransaction.addIndex !== undefined) {\n this.props.rowData.splice(this.dataTransaction.addIndex, 0, ...this.dataTransaction.add);\n } else {\n this.props.rowData.push(...this.dataTransaction.add);\n }\n this.dataTransaction.remove.forEach((object) => {\n const index = this.props.rowData ? this.props.rowData.indexOf(object) : -1;\n if (index >= 0 && this.props.rowData) {\n this.props.rowData.splice(index, 1);\n }\n });\n }\n this.dataTransaction = {add: [], remove: [], update: []};\n }\n if (this.props.onDataChanged) {\n this.props.onDataChanged();\n }\n }\n\n enableFollowLastRecord(enable: boolean): void {\n if (enable) {\n if (this.gridApi && this.state.gridConfiguration.followLastRecordSortModel) {\n this.dataGrid?.setSortModel(this.state.gridConfiguration.followLastRecordSortModel);\n this.gridApi.onSortChanged();\n }\n this._changeConfiguration({followLastRecord: true});\n this._followLastRecordDebounced();\n } else {\n if (this.state.gridConfiguration.followLastRecord) {\n this._changeConfiguration({followLastRecord: false});\n }\n }\n }\n\n _followLastRecordDebounced(): void {\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\n this.followLastRecord();\n }\n }\n\n /**\n * Scrolls table to last record added to the tail of the table\n */\n followLastRecord(): void {\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\n if (this.gridApi) {\n let lastIndex = -1;\n this.gridApi.forEachNodeAfterFilterAndSort((_, index) => {\n lastIndex = index;\n });\n if (lastIndex >= 0) {\n this.gridApi.ensureIndexVisible(lastIndex);\n }\n }\n }\n }\n\n public setColumnModel(columnModel: ColumnState[]) {\n this.dataGrid?.setColumnState(columnModel);\n }\n\n public setSortModel(sortModel: SortItem[]) {\n this.dataGrid?.setSortModel(sortModel);\n }\n\n public getSortModel(): SortItem[] {\n return this.dataGrid?.getSortModel() ?? [];\n }\n\n _onRowDataUpdated(event: RowDataUpdatedEvent): void {\n this._followLastRecordDebounced();\n if (this.props.onRowDataUpdated) {\n this.props.onRowDataUpdated(event);\n }\n }\n\n showFilterPanel(show: boolean): void {\n if (show) {\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: this.props.filterPanel && this.props.filterPanel.defaultWidth ? this.props.filterPanel.defaultWidth : 250}));\n } else {\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\n }\n }\n\n showDetailPanel(show: boolean): void {\n if (show) {\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250}));\n } else {\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\n }\n }\n\n selectNextPreviousRecord(previous: boolean): void {\n let selectedNodes = this.gridApi?.getSelectedNodes();\n if (selectedNodes && selectedNodes.length === 1) {\n let selectedNode = selectedNodes[0];\n if (this.props.rowData && this.props.rowData.length > 0) {\n this.gridApi?.forEachNodeAfterFilterAndSort((node) => {\n if ((!previous && node.childIndex === (selectedNode.childIndex + 1)) || (previous && node.childIndex === (selectedNode.childIndex - 1))) {\n node.setSelected(true, true);\n this.gridApi?.ensureNodeVisible(node);\n }\n });\n } else if (this.props.rowModelType === \"infinite\" && selectedNode.rowIndex !== null) {\n const nextRowIndex = !previous ? selectedNode.rowIndex + 1 : (selectedNode.rowIndex !== 0 ? selectedNode.rowIndex - 1 : 0);\n const nextNode = this.gridApi?.getDisplayedRowAtIndex(nextRowIndex);\n if (nextNode) {\n nextNode.setSelected(true, true);\n this.gridApi?.ensureNodeVisible(nextNode);\n }\n }\n }\n }\n\n changeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\n this.state.gridConfiguration.rowStyleRules = rowStyleRules;\n this.setState({gridConfiguration: this.state.gridConfiguration}, () => {\n this.gridApi?.redrawRows();\n });\n }\n\n _onChangeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\n this.changeRowStyleRules(rowStyleRules);\n if (this.props.onChangeRowStyleRules) {\n this.props.onChangeRowStyleRules(rowStyleRules);\n }\n }\n\n onPanelFilterApplied(newFilter: any): void {\n const filterChanged = !isEqualWith(newFilter, this.state.defaultFilter, this.equalValues);\n if (filterChanged !== this.state.filterChanged) {\n this.setState({filterChanged: filterChanged});\n }\n }\n\n getUiColumnFilterValue(colId: string): string {\n const nameFilterModel: TextFilterModel = (this.gridApi?.getFilterInstance(colId) as TextFilter).getModelFromUi() as TextFilterModel;\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\n }\n\n removeUiColumnFilterValue(colId: string) {\n const filterInstance = this.gridApi?.getFilterInstance(colId) as TextFilter;\n const nameFilterModel: TextFilterModel = filterInstance.getModelFromUi() as TextFilterModel;\n if (nameFilterModel) {\n nameFilterModel.filter = \"\";\n // we need to hack this typescript protected declaration\n // @ts-ignore\n filterInstance.resetUiToDefaults(false);\n }\n }\n\n /**\n * Applies UI column filter values silently without redrawing ag-grid\n * @param colId\n */\n applyUiColumnFilterValue(colId: string) {\n (this.gridApi?.getFilterInstance(colId) as TextFilter)?.applyModel?.();\n }\n\n private equalValues(value: any, otherValue: any): (boolean | undefined) {\n if ((value === undefined || value === null) && (otherValue === undefined || otherValue === null)) {\n return true;\n }\n return undefined;\n }\n\n private _onSelectionChanged(event: SelectionChangedEvent): void {\n if (this.state.gridConfiguration.followLastRecord && this.gridApi && this.gridApi.getSelectedRows().length > 0) {\n this.enableFollowLastRecord(false);\n }\n if (this.props.onSelectionChanged) {\n this.props.onSelectionChanged(event);\n }\n }\n\n private _onViewportChanged(event: ViewportChangedEvent) {\n const dataGridEvent = event as DataGridViewportChangedEvent;\n if (this.state.gridConfiguration.followLastRecord && dataGridEvent.rowsScrollingDelta < 0) {\n this.enableFollowLastRecord(false);\n }\n if (this.props.onViewportChanged) {\n this.props.onViewportChanged(dataGridEvent);\n }\n }\n\n private renderToolbarButtons(): ReactElement {\n const renderFilter = this.props.filterPanel && this.props.filterPanel.renderer;\n const filterPanelVisible = renderFilter && this.isFilterPanelVisible();\n return (\n <React.Fragment>\n {renderFilter && <Button type={filterPanelVisible ? \"primary\" : \"default\"} key=\"filter-button\"\n title={i18n(\"Show/Hide filter panel\")}\n onClick={() => {\n this.showFilterPanel(!filterPanelVisible);\n }}>\n <FilterOutlined/>\n </Button>}\n {this.props.toolbar?.toolbarButtons}\n {this.state.gridConfiguration.followLastRecordEditable &&\n <Button key=\"track-button\"\n title={i18n(\"Track last added record to table\")}\n onClick={(e) => {\n this.enableFollowLastRecord(!this.state.gridConfiguration.followLastRecord);\n (e.target as HTMLButtonElement).blur();\n }}>\n {this.state.gridConfiguration.followLastRecord ? <EyeOutlined/> : <EyeInvisibleOutlined/>}\n </Button>}\n </React.Fragment>\n );\n }\n\n private renderToolbar(originalToolbar: ReactElement): ReactElement {\n let toolbarToRender = originalToolbar;\n if (this.props.toolbar && this.props.toolbar.renderToolbar) {\n const searchBar = this.props.toolbar.renderToolbar(originalToolbar);\n if (searchBar) {\n toolbarToRender = searchBar;\n }\n }\n\n const statsBadge = this.renderSearchBadge();\n return (<div style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\n {toolbarToRender}\n {statsBadge}\n </div>);\n }\n\n private renderSearchBadge(): ReactElement | undefined {\n if (this.state.tableNeedToBeReloaded) {\n return (\n <Badge count={\n <span className=\"ant-badge-count\"\n title={i18n(\"Records has been added or removed, table need to be reloaded in order to see actual records\")}\n style={{color: \"#fa541c\", background: \"#fff2e8\", borderColor: \"#ffbb96\"}}>\n <ExclamationOutlined style={{color: '#fa541c'}}/>\n </span>\n } style={{cursor: \"hand\"}} offset={[10, -10]}/>\n );\n }\n return undefined;\n }\n\n isFilterPanelVisible(): boolean {\n return this.state.gridConfiguration.layoutModel ? this.state.gridConfiguration.layoutModel.layout.children[0].width > 0 : true;\n }\n\n renderDataGrid(): ReactElement {\n const {\n defaultGridConfiguration,\n onGridReady, onLoadData, onSortChanged, onColumnsChanged, onSelectionChanged, onViewportChanged,\n onTableConfigVisible, toolbar,\n paging, filter, search, onChangeConfiguration, onDataChanged, onChangeRowStyleRules,\n filterPanel, controlPanel,\n ...rest\n } = this.props;\n\n return (\n <DataGrid\n {...rest}\n ref={(dataGrid) => {\n this.dataGrid = dataGrid ? dataGrid : undefined;\n }}\n onLoadData={this._onLoadData}\n onGridReady={this._onGridReady}\n paging={{\n pageSize: this.state.gridConfiguration.pageSize,\n defaultPageSize: this.state.gridConfiguration.defaultPageSize,\n onPaginationChanged: this._onPaginationChanged,\n }}\n filter={{\n columnSearchVisible: this.state.gridConfiguration.columnSearchVisible,\n getFilterModel: filter ? filter.getFilterModel : undefined,\n onColumnSearchVisible: (visible) => {\n this._changeConfiguration({columnSearchVisible: visible});\n if (filter?.onColumnSearchVisible) {\n filter.onColumnSearchVisible(visible);\n }\n },\n onFilterModified: filter ? filter.onFilterModified : undefined,\n onFilterChanged: filter ? filter.onFilterChanged : undefined,\n onFilterConfirmed: filter ? filter.onFilterConfirmed : undefined,\n }}\n search={{\n hidden: !!search ? search.hidden : undefined,\n inputReadonly: !!search ? search.inputReadonly : undefined,\n placeholder: !!search ? search.placeholder : undefined,\n searchString: !!search && search.searchString !== undefined ? search.searchString : this.state.searchString,\n stringFormatter: !!search ? search.stringFormatter : undefined,\n searchHistory: !!search && search.searchHistory !== undefined ? search.searchHistory : this.state.searchHistory,\n searchButtonClassName: !!search ? search.searchButtonClassName : undefined,\n searchButtonDisabled: !!search ? search.searchButtonDisabled : undefined,\n searchRenderer: search?.searchRenderer,\n onChange: this._onSearchStringChanged,\n onSearch: this._onSearch\n }}\n toolbar={{\n renderToolbar: this.renderToolbar,\n toolbarButtons: this.renderToolbarButtons(),\n hideRecordCount: toolbar?.hideRecordCount\n }}\n onSortChanged={(event) => {\n const sortModel = this.dataGrid?.getSortModel();\n if (this.state.gridConfiguration.followLastRecord && this.state.gridConfiguration.followLastRecordSortModel && !isEqual(this.state.gridConfiguration.followLastRecordSortModel, sortModel)) {\n this.enableFollowLastRecord(false);\n }\n const columnState = this.columnApi?.getColumnState();\n this._changeConfiguration({columnModel: columnState});\n if (onSortChanged) {\n onSortChanged(event);\n }\n }}\n onColumnsChanged={(columnModel, event) => {\n this._changeConfiguration({columnModel: columnModel});\n if (onColumnsChanged) {\n onColumnsChanged(columnModel, event);\n }\n }}\n onRowDataUpdated={this._onRowDataUpdated}\n tableConfigVisible={this.state.tableConfigVisible}\n onTableConfigVisible={(visible) => {\n this.setState({tableConfigVisible: visible});\n if (onTableConfigVisible) {\n onTableConfigVisible(visible);\n }\n }}\n onSelectionChanged={this._onSelectionChanged}\n rowStyleRules={this.state.gridConfiguration.rowStyleRules as RowStyleRule[]}\n defaultRowStyleRules={this.state.gridConfiguration.defaultRowStyleRules}\n onChangeRowStyleRules={this._onChangeRowStyleRules}\n onViewportChanged={this._onViewportChanged}\n showMilliseconds={this.state.gridConfiguration.showMilliseconds}\n defaultShowMilliseconds={this.state.gridConfiguration.defaultShowMilliseconds}\n onShowMilliseconds={(showMillis, callback) => {\n this._changeConfiguration({showMilliseconds: showMillis}, callback);\n }}\n hideYear={this.state.gridConfiguration.hideYear}\n defaultHideYear={this.state.gridConfiguration.defaultHideYear}\n onShowYear={(showYear, callback) => {\n this._changeConfiguration({hideYear: !showYear}, callback);\n }}\n />\n );\n }\n\n private renderDataGridWithControlPanel() {\n if (this.props.controlPanel && this.props.controlPanel.renderer) {\n return (\n <div key=\"table-with-control-panel\" style={{\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100%\",\n width: \"100%\"\n }}>\n <div key=\"table-with-control-panel-wrapper\" style={{flex: \"1 1 auto\", overflow: \"auto\"}}>\n {this.renderDataGrid()}\n </div>\n {this.props.controlPanel.renderer()}\n </div>);\n }\n return this.renderDataGrid();\n }\n\n componentDidUpdate() {\n // very important nasty fix with flexlayout\n // in AlarmWindow or ObjectHistoryWindow there is ExtendedDataGrid(FlexLayout) placed in upper FlexLayout\n // resize event handling doesn't work in inner FlexLayout(ExtendedDataGrid)\n // I suppose it has something to do wit usage of multiple ResizeObservers, but I am not sure\n // therefore here on any change of state/props we will invoke recalculation of flexlayout size\n // internal logic of this method updateRect is fast and do resize only when it is needed\n this.flexLayout?.updateRect();\n }\n\n render() {\n const {filterPanel, detailPanel} = this.props;\n if (filterPanel || detailPanel) {\n return (\n <FlexLayout.Layout\n ref={(flexLayout)=> {this.flexLayout = flexLayout;}}\n model={this.state.layoutModel}\n onModelChange={(model) => {\n this._changeConfiguration({layoutModel: model.toJson()});\n }}\n onAction={(action) => {\n const node1 = action.data.node1;\n const node2 = action.data.node2;\n let tabset;\n // disable moving splitter if filter or detail panel is hidden (width=0)\n if (action.type === Actions.ADJUST_SPLIT) {\n if (node1 === \"#4\" && node2 === \"#6\") {\n tabset = this.state.layoutModel.getNodeById('#6');\n } else if (node1 === \"#2\" && node2 === \"#4\") {\n tabset = this.state.layoutModel.getNodeById('#2');\n }\n if (tabset) {\n const width = (tabset as any)?._attributes?.width;\n if (width === 0) {\n return undefined;\n }\n }\n }\n return action;\n }}\n factory={(node) => {\n const component = node.getComponent();\n if (component === \"filter-panel\") {\n return filterPanel && filterPanel.renderer && filterPanel.renderer({\n defaultFilter: this.state.defaultFilter,\n filterChanged: this.state.filterChanged\n });\n } else if (component === \"data-panel\") {\n return this.renderDataGridWithControlPanel();\n } else if (component === \"detail-panel\") {\n return detailPanel && detailPanel.renderer();\n }\n return <Empty/>\n }}\n />\n );\n } else {\n return this.renderDataGridWithControlPanel();\n }\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"extendedDataGrid.js","sourceRoot":"","sources":["../../../../components/grid/extendedDataGrid.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AAC1C,OAAO,QAON,MAAM,YAAY,CAAC;AACpB,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,yBAAyC,MAAM,yDAAyD,CAAC;AAahH,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAG1C,MAAM,qBAAqB,GAAG,CAAC,CAAC;AA+HhC,MAAqB,gBAElB,SAAQ,KAAK,CAAC,SAAuD;IAepE,YAAY,KAAsC;;QAC9C,KAAK,CAAC,KAAK,CAAC,CAAC;QALT,eAAU,GAAQ,IAAI,CAAC;QAM3B,IAAI,iBAAiB,GAAsB;YACvC,OAAO,EAAE,qBAAqB;YAC9B,QAAQ,EAAE,CAAC;SACd,CAAC;QACF,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,IAAI,KAAK,CAAC,wBAAwB,CAAC,OAAO,KAAK,qBAAqB,CAAC,CAAC;QAC5K,MAAM,iBAAiB,GAAG,mBAAmB,IAAI,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC;QAC9F,iBAAiB,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACpI,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3J,iBAAiB,CAAC,QAAQ,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,iBAAiB,CAAC,eAAe,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QACvK,iBAAiB,CAAC,gBAAgB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;QAC5G,iBAAiB,CAAC,yBAAyB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;QACrM,iBAAiB,CAAC,wBAAwB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,wBAAwB,CAAC;QAC5H,iBAAiB,CAAC,mBAAmB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,mBAAmB,CAAC;QAClH,iBAAiB,CAAC,aAAa,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC;QACnL,iBAAiB,CAAC,oBAAoB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC;QACxM,iBAAiB,CAAC,gBAAgB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;QACtK,iBAAiB,CAAC,uBAAuB,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3L,iBAAiB,CAAC,QAAQ,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9I,iBAAiB,CAAC,eAAe,GAAG,mBAAmB,IAAI,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;QAGnK,MAAM,YAAY,GAAG,MAAA,MAAA,MAAA,MAAA,iBAAiB,CAAC,WAAW,0CAAE,MAAM,0CAAE,QAAQ,0CAAE,MAAM,mCAAI,CAAC,CAAC;QAClF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACvD,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;gBAC3E,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACrE,iBAAiB,EAAE,iBAAiB;YAEpC,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;YAE9G,kBAAkB,EAAE,KAAK;YAEzB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3I,aAAa,EAAE,KAAK;YACpB,qBAAqB,EAAE,KAAK;SAC/B,CAAC;QAEF,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAEtE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAC1H,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;QAEzD,MAAM,gBAAgB,GAAW,MAAA,KAAK,CAAC,0BAA0B,mCAAI,GAAG,CAAC;QACzE,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAC,OAAO,EAAE,gBAAgB,EAAC,CAAC,CAAC;QACrH,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,sBAAsB,CAAC,KAA4B;QAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;QACrE,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACvC,MAAM,WAAW,GAAQ;YACrB,MAAM,EAAE;gBACJ,oBAAoB,EAAE,KAAK;gBAC3B,YAAY,EAAE,CAAC;aAClB;YACD,OAAO,EAAE,EAAE;YACX,MAAM,EAAE;gBACJ,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,GAAG;gBACb,UAAU,EAAE,CAAC;wBACT,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE,GAAG;wBACb,UAAU,EAAE,CAAC;wBACb,UAAU,EAAE;4BACR;gCACI,MAAM,EAAE,KAAK;gCACb,MAAM,EAAE,MAAM;gCACd,WAAW,EAAE,YAAY;6BAC5B;yBACJ;qBACJ,CAAC;aACL;SACJ,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACf,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBACnC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG;gBACnG,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE;oBACR;wBACI,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,QAAQ;wBAChB,WAAW,EAAE,cAAc;qBAC9B;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACf,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBAChC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBACrC,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE;oBACR;wBACI,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,QAAQ;wBAChB,WAAW,EAAE,cAAc;qBAC9B;iBACJ;aACJ,CAAE,CAAC;QACR,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACxC,CAAC;IAED,gBAAgB;QAEZ,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACpD,aAAa,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,aAAa,EAAE,aAAa;SAC/B,CAAC;IACN,CAAC;IAED,QAAQ,CAAC,QAAqB;;QAC1B,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACJ,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,KAAK;;QACD,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,oBAAoB,CAAC,aAAyC,EAAE,QAAqB;QACzF,IAAI,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;YACxC,OAAO;QACX,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAqB;QACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,QAA4B;QAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,EAAC,qBAAqB,EAAE,KAAK,EAAC,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,eAAe,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;YACzD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,oBAAoB,CAAC,eAA8B,EAAE,eAAuB;QAChF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,KAAK,eAAe,CAAC;YACzF,IAAI,sBAAsB,EAAE,CAAC;gBACzB,IAAI,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAE,eAAe,EAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACtC,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAC5E,CAAC;QACL,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,YAAoB;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAE,YAAY,EAAC,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAEO,SAAS;QACb,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACpD,IAAI,aAAa,GAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QAGvD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,KAAK,mBAAmB,CAAC,CAAC;QAE7F,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3C,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC;YACV,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAEO,yBAAyB;QAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBAC3C,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,UAAsB,CAAC,CAAC;gBAC3G,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAClD,IAAI,CAAC,oBAAoB,CAAC,EAAC,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC9C,CAAC;IAED,qBAAqB,CAAC,IAAO;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,SAAS,CAAC,IAAO,EAAE,QAAiB;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzF,IAAI,cAAc,EAAE,CAAC;YACjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7C,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,SAAc,EAAE,QAAiB;QACxC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjG,CAAC;IAGD,UAAU,CAAC,SAAc;;QAIrB,IAAI,CAAC,eAAe,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;QACzD,MAAA,IAAI,CAAC,QAAQ,0CAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,IAAO;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAAa;QACvB,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,YAAY,CAAC,IAAqD;QAC9D,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B;gBACI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;YACV;gBACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,MAAM;YACV;gBACI,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnF,IAAI,WAAW,EAAE,CAAC;oBACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAChC,CAAC;gBACL,CAAC;gBACD,MAAM;QACd,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAA2D;QACrE,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW;QAEf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC5D,OAAO,CAAC,6BAA6B,EAAE,CAAC;gBAC5C,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAErB,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC7F,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3E,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,MAAe;;QAClC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC;gBACzE,MAAA,IAAI,CAAC,QAAQ,0CAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,EAAC,gBAAgB,EAAE,IAAI,EAAC,CAAC,CAAC;YACpD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;gBAChD,IAAI,CAAC,oBAAoB,CAAC,EAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;IACL,CAAC;IAED,0BAA0B;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAKD,gBAAgB;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;oBACpD,SAAS,GAAG,KAAK,CAAC;gBACtB,CAAC,CAAC,CAAC;gBACH,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,WAA0B;;QAC5C,MAAA,IAAI,CAAC,QAAQ,0CAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEM,YAAY,CAAC,SAAqB;;QACrC,MAAA,IAAI,CAAC,QAAQ,0CAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAEM,YAAY;;QACf,OAAO,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,YAAY,EAAE,mCAAI,EAAE,CAAC;IAC/C,CAAC;IAED,iBAAiB,CAAC,KAA0B;QACxC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,IAAa;QACzB,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC;QACvM,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAC/F,CAAC;IACL,CAAC;IAED,eAAe,CAAC,IAAa;QACzB,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC;QACvO,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAC/H,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,QAAiB;;QACtC,IAAI,aAAa,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,EAAE,CAAC;QACrD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAA,IAAI,CAAC,OAAO,0CAAE,6BAA6B,CAAC,CAAC,IAAI,EAAE,EAAE;;oBACjD,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC7B,MAAA,IAAI,CAAC,OAAO,0CAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,UAAU,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAClF,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3H,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBACpE,IAAI,QAAQ,EAAE,CAAC;oBACX,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACjC,MAAA,IAAI,CAAC,OAAO,0CAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,aAA6B;QAC7C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,GAAG,aAAa,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,EAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAC,EAAE,GAAG,EAAE;;YAClE,MAAA,IAAI,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB,CAAC,aAA6B;QAChD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,SAAc;QAC/B,MAAM,aAAa,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1F,IAAI,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,EAAC,aAAa,EAAE,aAAa,EAAC,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,KAAa;;QAChC,MAAM,eAAe,GAAoB,MAAA,IAAI,CAAC,OAAO,0CAAE,oBAAoB,CAAC,KAAK,CAAoB,CAAC;QACtG,OAAO,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,KAAa;;QACzC,MAAM,cAAc,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,uBAAuB,CAAC,KAAK,CAAC,CAAA,CAAC;QAC1E,MAAM,kBAAkB,GAAG,cAA4B,CAAC;QACxD,MAAM,eAAe,GAAoB,kBAAkB,CAAC,cAAc,EAAqB,CAAC;QAChG,IAAI,eAAe,EAAE,CAAC;YAClB,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;YAG5B,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAMD,KAAK,CAAC,wBAAwB,CAAC,KAAa;;QACxC,MAAM,cAAc,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,uBAAuB,CAAC,KAAK,CAAC,CAAA,CAAC;QAC1E,MAAA,MAAC,CAAA,CAAC,cAAc,CAAC,CAAe,0CAAE,UAAU,kDAAI,CAAC;IACrD,CAAC;IAEO,WAAW,CAAC,KAAU,EAAE,UAAe;QAC3C,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,mBAAmB,CAAC,KAA4B;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7G,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,KAA2B;QAClD,MAAM,aAAa,GAAG,KAAqC,CAAC;QAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,aAAa,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACxF,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAEO,oBAAoB;;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC/E,MAAM,kBAAkB,GAAG,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACvE,OAAO,CACH,oBAAC,KAAK,CAAC,QAAQ;YACV,YAAY,IAAI,oBAAC,MAAM,IAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAC,eAAe,EACrE,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,CAAC;gBACtB,oBAAC,cAAc,OAAE,CACZ,EACR,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO;eAAE,cAAc;YAClC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,wBAAwB;gBAClD,oBAAC,MAAM,IAAC,GAAG,EAAC,cAAc,EAClB,KAAK,EAAE,IAAI,CAAC,kCAAkC,CAAC,EAC/C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wBACX,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;wBAC3E,CAAC,CAAC,MAA4B,CAAC,IAAI,EAAE,CAAC;oBAC3C,CAAC,IACJ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAC,WAAW,OAAE,CAAC,CAAC,CAAC,oBAAC,oBAAoB,OAAE,CACpF,CACA,CACpB,CAAC;IACN,CAAC;IAEO,aAAa,CAAC,eAA6B;QAC/C,IAAI,eAAe,GAAG,eAAe,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YACpE,IAAI,SAAS,EAAE,CAAC;gBACZ,eAAe,GAAG,SAAS,CAAC;YAChC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,OAAO,CAAC,6BAAK,KAAK,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;YACnE,eAAe;YACf,UAAU,CACT,CAAC,CAAC;IACZ,CAAC;IAEO,iBAAiB;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACnC,OAAO,CACH,oBAAC,KAAK,IAAC,KAAK,EACR,8BAAM,SAAS,EAAC,iBAAiB,EAC3B,KAAK,EAAE,IAAI,CAAC,6FAA6F,CAAC,EAC1G,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC;oBAC1E,oBAAC,mBAAmB,IAAC,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,CAClD,EACL,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAClD,CAAC;QACN,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnI,CAAC;IAED,cAAc;QACV,MAAM,KAOF,IAAI,CAAC,KAAK,EAPR,EACF,wBAAwB,EACxB,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAC/F,oBAAoB,EAAE,OAAO,EAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EACnF,WAAW,EAAE,YAAY,OAEf,EADP,IAAI,cANL,4SAOL,CAAa,CAAC;QAEf,OAAO,CACH,oBAAC,QAAQ,oBACD,IAAI,IACR,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,CAAC,EACD,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,MAAM,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ;gBAC/C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe;gBAC7D,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;aACjD,EACD,MAAM,EAAE;gBACJ,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,mBAAmB;gBACrE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;gBAC1D,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC/B,IAAI,CAAC,oBAAoB,CAAC,EAAC,mBAAmB,EAAE,OAAO,EAAC,CAAC,CAAC;oBAC1D,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,qBAAqB,EAAE,CAAC;wBAChC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC;gBACD,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAC9D,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;gBAC5D,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;aACnE,EACD,MAAM,EAAE;gBACJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACtD,YAAY,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;gBAC3G,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;gBAC9D,aAAa,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC/G,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;gBAC1E,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;gBACxE,cAAc,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc;gBACtC,QAAQ,EAAE,IAAI,CAAC,sBAAsB;gBACrC,QAAQ,EAAE,IAAI,CAAC,SAAS;aAC3B,EACD,OAAO,EAAE;gBACL,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,cAAc,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBAC3C,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe;aAC5C,EACD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;;gBACrB,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,YAAY,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,yBAAyB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAE,CAAC;oBACzL,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAc,EAAE,CAAC;gBACnD,IAAI,CAAC,oBAAoB,CAAC,EAAC,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;gBACtD,IAAI,aAAa,EAAE,CAAC;oBAChB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC,EACD,gBAAgB,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;gBACrC,IAAI,CAAC,oBAAoB,CAAC,EAAC,WAAW,EAAE,WAAW,EAAC,CAAC,CAAC;gBACtD,IAAI,gBAAgB,EAAE,CAAC;oBACnB,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;YACL,CAAC,EACD,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EACxC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACjD,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC9B,IAAI,CAAC,QAAQ,CAAC,EAAC,kBAAkB,EAAE,OAAO,EAAC,CAAC,CAAC;gBAC7C,IAAI,oBAAoB,EAAE,CAAC;oBACvB,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC,EACD,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAC5C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAA+B,EAC3E,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,EACvE,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAClD,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAC1C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,EAC/D,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,EAC7E,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;gBACzC,IAAI,CAAC,oBAAoB,CAAC,EAAC,gBAAgB,EAAE,UAAU,EAAC,EAAE,QAAQ,CAAC,CAAC;YACxE,CAAC,EACD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAC/C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,eAAe,EAC7D,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;gBAC/B,IAAI,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAE,CAAC,QAAQ,EAAC,EAAE,QAAQ,CAAC,CAAC;YAC/D,CAAC,IACH,CACL,CAAC;IACN,CAAC;IAEO,8BAA8B;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC9D,OAAO,CACH,6BAAK,GAAG,EAAC,0BAA0B,EAAC,KAAK,EAAE;oBACvC,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,MAAM;iBAChB;gBACG,6BAAK,GAAG,EAAC,kCAAkC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAC,IAClF,IAAI,CAAC,cAAc,EAAE,CACpB;gBACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CACjC,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAED,kBAAkB;;QAOd,MAAA,IAAI,CAAC,UAAU,0CAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,MAAM;QACF,MAAM,EAAC,WAAW,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9C,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;YAC7B,OAAO,CACH,oBAAC,UAAU,CAAC,MAAM,IACd,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBACjC,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrB,IAAI,CAAC,oBAAoB,CAAC,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;gBAC7D,CAAC,EACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;;oBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBAChC,IAAI,MAAM,CAAC;oBAEX,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;wBACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACnC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACtD,CAAC;6BAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BAC1C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACtD,CAAC;wBACD,IAAI,MAAM,EAAE,CAAC;4BACT,MAAM,KAAK,GAAG,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,WAAW,0CAAE,KAAK,CAAC;4BAClD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gCACd,OAAO,SAAS,CAAC;4BACrB,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,OAAO,MAAM,CAAC;gBAClB,CAAC,EACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBACd,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;wBAC/B,OAAO,WAAW,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC;4BAC/D,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;4BACvC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;yBAC1C,CAAC,CAAC;oBACP,CAAC;yBAAM,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;wBACpC,OAAO,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACjD,CAAC;yBAAM,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;wBACtC,OAAO,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACjD,CAAC;oBACD,OAAO,oBAAC,KAAK,OAAE,CAAA;gBACnB,CAAC,GACH,CACL,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACjD,CAAC;IACL,CAAC;;AAxyBa,6BAAY,GAAG;IACzB,aAAa,EAAE,yBAAyB,EAAE;CAC7C,AAFyB,CAExB;eALe,gBAAgB","sourcesContent":["import React, {ReactElement} from \"react\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport {Actions} from \"flexlayout-react\";\r\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\r\nimport {Badge, Button, Empty} from \"antd\";\r\nimport DataGrid, {\r\n DataGridFilterProps,\r\n DataGridProps,\r\n DataGridSearchProps,\r\n DataGridViewportChangedEvent,\r\n OnLoadDataCallback,\r\n SortItem\r\n} from \"./dataGrid\";\r\nimport debounce from \"lodash/debounce\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport isEqual from \"lodash/isEqual\"\r\nimport isEqualWith from \"lodash/isEqualWith\"\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport tableDefaultRowStyleRules, {RowStyleRule} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {\r\n ColDef,\r\n ColumnState,\r\n GridApi,\r\n GridReadyEvent,\r\n RowDataUpdatedEvent,\r\n SelectionChangedEvent,\r\n TextFilter,\r\n TextFilterModel,\r\n ViewportChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {Model} from \"flexlayout-react/declarations/model/Model\";\r\nimport {ColumnUtils} from \"./columnUtils\";\r\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\r\n\r\nconst CONFIGURATION_VERSION = 1;\r\n\r\nexport interface GridConfiguration {\r\n // version of configuration\r\n version?: number\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel?: any\r\n // current state of table columns\r\n columnModel?: ColumnState[]\r\n //current page size of the table\r\n pageSize: number\r\n // default page size, applied when user reverts configuration\r\n defaultPageSize?: number\r\n // table scrolls to lastly added record automatically\r\n followLastRecord?: boolean;\r\n // table sort model applied/required for follow last record functionality\r\n followLastRecordSortModel?: SortItem[]\r\n // flag if follow last record feature could be turned on/off by user\r\n followLastRecordEditable?: boolean\r\n // allow showing floating column filters beneath column names\r\n columnSearchVisible?: boolean\r\n // rules which apply to table rows\r\n rowStyleRules?: RowStyleRule[]\r\n // default rules which apply to table rows\r\n defaultRowStyleRules?: RowStyleRule[]\r\n // show milliseconds in datetime, time columns\r\n showMilliseconds?: boolean\r\n defaultShowMilliseconds?: boolean\r\n // hide year in date columns\r\n hideYear?: boolean\r\n defaultHideYear?: boolean\r\n}\r\n\r\ninterface ExtendedDataGridSearchProps extends DataGridSearchProps {\r\n initialSearchHistory?: string[]\r\n}\r\n\r\ninterface ExtendedDataGridFilterProps extends DataGridFilterProps {\r\n quickFilterEnabled?: boolean\r\n}\r\n\r\nexport interface FilterPanelRendererParams {\r\n defaultFilter?: any,\r\n // flag if filter is different than default filter\r\n filterChanged: boolean\r\n}\r\n\r\nexport interface ExtendedDataGridProps extends Omit<DataGridProps, \"paging\"> {\r\n defaultGridConfiguration: GridConfiguration\r\n\r\n // handler called during changes to data grid configuration\r\n onChangeConfiguration?(gridConfiguration: GridConfiguration): void\r\n\r\n // allow changing configuration\r\n disableConfigurationChange?: boolean\r\n\r\n filter?: ExtendedDataGridFilterProps\r\n search?: ExtendedDataGridSearchProps\r\n\r\n paging?: {\r\n /**\r\n * Page size change handler\r\n * @param currentPageSize - current page size represents number rows available\r\n * @param definedPageSize -\r\n */\r\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\r\n }\r\n // configuration of filter panel on the left side\r\n filterPanel?: {\r\n // default width of filter panel\r\n defaultWidth?: number\r\n // flag if panel is hidden, by default it is shown\r\n hidden?: boolean\r\n // default filter parameters\r\n defaultFilter?: any\r\n // filter panel render function\r\n renderer?(parameters: FilterPanelRendererParams): ReactElement\r\n }\r\n // configuration of detail panel on the right side\r\n detailPanel?: {\r\n // default width of detail panel on the left side\r\n defaultWidth?: number\r\n // detail panel render function\r\n renderer(): ReactElement\r\n }\r\n // panel placed directly below table, usually contains context buttons\r\n controlPanel?: {\r\n // control panel render function\r\n renderer?(): React.ReactElement | null\r\n }\r\n\r\n // handler notifying data of the table has changed\r\n onDataChanged?(): void\r\n\r\n // time between value updates in ms, 0 means no debounce\r\n updateDataDebounceInterval?: number\r\n}\r\n\r\ninterface ExtendedDataGridState {\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel: Model\r\n // current table configuration\r\n gridConfiguration: GridConfiguration\r\n // currently entered search string\r\n searchString: string\r\n // history of entered search strings\r\n searchHistory: string[]\r\n // default filter parameters\r\n defaultFilter: any\r\n // flag if advanced table configuration is visible\r\n tableConfigVisible: boolean\r\n // flag if filter has changed, so data doesn't correspond to current filter (color of search button changes to yellow)\r\n filterChanged: boolean\r\n // flag renders badge with exclamation after search button to notify user that table data are not actual\r\n tableNeedToBeReloaded: boolean\r\n}\r\n\r\n/**\r\n * Transaction class (more correct than RowDataTransaction)\r\n */\r\ninterface DataGridTransaction<T> {\r\n addIndex?: number;\r\n add: T[];\r\n remove: T[];\r\n update: T[];\r\n}\r\n\r\nexport default class ExtendedDataGrid<T extends {\r\n id: number | string\r\n}> extends React.Component<ExtendedDataGridProps, ExtendedDataGridState> {\r\n public static defaultProps = {\r\n rowStyleRules: tableDefaultRowStyleRules()\r\n };\r\n\r\n dataGrid?: DataGrid;\r\n private gridApi?: GridApi;\r\n // flag if data are loaded\r\n private dataLoaded: boolean;\r\n // transaction object used to update data from class\r\n private dataTransaction: DataGridTransaction<T>;\r\n private flexLayout: any = null;\r\n\r\n private _updateDataDebounced?(): void;\r\n\r\n constructor(props: Readonly<ExtendedDataGridProps>) {\r\n super(props);\r\n let gridConfiguration: GridConfiguration = {\r\n version: CONFIGURATION_VERSION,\r\n pageSize: 0\r\n };\r\n const gridConfigurationOk = props.defaultGridConfiguration && (!props.defaultGridConfiguration.version || props.defaultGridConfiguration.version === CONFIGURATION_VERSION);\r\n const layoutModelExists = gridConfigurationOk && !!props.defaultGridConfiguration.layoutModel;\r\n gridConfiguration.layoutModel = layoutModelExists ? props.defaultGridConfiguration.layoutModel : this._getInitialLayoutModel(props);\r\n gridConfiguration.columnModel = gridConfigurationOk && props.defaultGridConfiguration.columnModel ? props.defaultGridConfiguration.columnModel : undefined;\r\n gridConfiguration.pageSize = gridConfigurationOk && props.defaultGridConfiguration.pageSize ? props.defaultGridConfiguration.pageSize : 0;\r\n gridConfiguration.defaultPageSize = gridConfigurationOk && props.defaultGridConfiguration.defaultPageSize ? props.defaultGridConfiguration.defaultPageSize : undefined;\r\n gridConfiguration.followLastRecord = gridConfigurationOk && props.defaultGridConfiguration.followLastRecord;\r\n gridConfiguration.followLastRecordSortModel = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordSortModel ? props.defaultGridConfiguration.followLastRecordSortModel : undefined;\r\n gridConfiguration.followLastRecordEditable = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordEditable;\r\n gridConfiguration.columnSearchVisible = gridConfigurationOk && props.defaultGridConfiguration.columnSearchVisible;\r\n gridConfiguration.rowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.rowStyleRules ? props.defaultGridConfiguration.rowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.defaultRowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.defaultRowStyleRules ? props.defaultGridConfiguration.defaultRowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.showMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.showMilliseconds ? props.defaultGridConfiguration.showMilliseconds : false;\r\n gridConfiguration.defaultShowMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.defaultShowMilliseconds ? props.defaultGridConfiguration.defaultShowMilliseconds : false;\r\n gridConfiguration.hideYear = gridConfigurationOk && props.defaultGridConfiguration.hideYear ? props.defaultGridConfiguration.hideYear : false;\r\n gridConfiguration.defaultHideYear = gridConfigurationOk && props.defaultGridConfiguration.defaultHideYear ? props.defaultGridConfiguration.defaultHideYear : false;\r\n\r\n // nasty fix to define ids for tabsets due to react-flexlayout library fix: https://github.com/caplin/FlexLayout/commit/3a21b21f6cd5c2a7b52d46084dce6a3880f9af58#diff-92c133bf427754ff04deeab6751b083b7c97ca955e7cc57c740eef5433fd0129\r\n const layoutLength = gridConfiguration.layoutModel?.layout?.children?.length ?? 0;\r\n if (layoutLength > 0) {\r\n for (let i = 0; i < layoutLength; i++) {\r\n if (!gridConfiguration.layoutModel.layout.children[i].id) {\r\n gridConfiguration.layoutModel.layout.children[i].id = `#${(i + 1) * 2}`\r\n }\r\n }\r\n }\r\n\r\n this.state = {\r\n layoutModel: FlexLayout.Model.fromJson(gridConfiguration.layoutModel),\r\n gridConfiguration: gridConfiguration,\r\n // search context\r\n searchString: \"\",\r\n searchHistory: props.search && props.search.initialSearchHistory ? [...props.search.initialSearchHistory] : [],\r\n // visibility flags\r\n tableConfigVisible: false,\r\n\r\n defaultFilter: this.props.filterPanel && this.props.filterPanel.defaultFilter ? cloneDeep(this.props.filterPanel.defaultFilter) : undefined,\r\n filterChanged: false,\r\n tableNeedToBeReloaded: false\r\n };\r\n\r\n if (!layoutModelExists && props.filterPanel && props.filterPanel.hidden) {\r\n // hide filter panel if it is not explicitly shown\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n this.state.gridConfiguration.layoutModel.layout.children[0].width = 0;\r\n }\r\n if (props.detailPanel) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n\r\n this.dataLoaded = false;\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n\r\n const debounceInterval: number = props.updateDataDebounceInterval ?? 500;\r\n if (debounceInterval > 0) {\r\n this._updateDataDebounced = debounce(this._updateData.bind(this), debounceInterval, {maxWait: debounceInterval});\r\n } else {\r\n this._updateDataDebounced = this._updateData.bind(this);\r\n }\r\n\r\n this.renderToolbarButtons = this.renderToolbarButtons.bind(this);\r\n this._onLoadData = this._onLoadData.bind(this);\r\n this._onGridReady = this._onGridReady.bind(this);\r\n this._onPaginationChanged = this._onPaginationChanged.bind(this);\r\n this._onSearch = this._onSearch.bind(this);\r\n this._onSearchStringChanged = this._onSearchStringChanged.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n this._followLastRecordDebounced = debounce(this._followLastRecordDebounced.bind(this), 500, {maxWait: 500});\r\n this._onRowDataUpdated = this._onRowDataUpdated.bind(this);\r\n this._onChangeRowStyleRules = this._onChangeRowStyleRules.bind(this);\r\n this.showFilterPanel = this.showFilterPanel.bind(this);\r\n this.showDetailPanel = this.showDetailPanel.bind(this);\r\n this.selectNextPreviousRecord = this.selectNextPreviousRecord.bind(this);\r\n this._onSelectionChanged = this._onSelectionChanged.bind(this);\r\n this._onViewportChanged = this._onViewportChanged.bind(this);\r\n }\r\n\r\n _getInitialLayoutModel(props: ExtendedDataGridProps) {\r\n const renderFilter = props.filterPanel && props.filterPanel.renderer;\r\n const renderDetail = props.detailPanel;\r\n const layoutModel: any = {\r\n global: {\r\n tabSetEnableTabStrip: false,\r\n splitterSize: 4,\r\n },\r\n borders: [],\r\n layout: {\r\n \"type\": \"row\",\r\n \"weight\": 100,\r\n \"children\": [{\r\n \"type\": \"tabset\",\r\n \"weight\": 100,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Data\",\r\n \"component\": \"data-panel\",\r\n }\r\n ]\r\n }]\r\n }\r\n };\r\n if (renderFilter) {\r\n layoutModel.layout[\"children\"].unshift({\r\n \"id\": \"#2\",\r\n \"type\": \"tabset\",\r\n \"width\": props.filterPanel && props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 228,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Filter\",\r\n \"component\": \"filter-panel\",\r\n }\r\n ]\r\n });\r\n }\r\n if (renderDetail) {\r\n layoutModel.layout[\"children\"].push({\r\n \"id\": props.filterPanel ? \"#6\" : \"#4\",\r\n \"type\": \"tabset\",\r\n \"width\": props.detailPanel ? (props.detailPanel.defaultWidth ? props.detailPanel.defaultWidth : 220) : 0,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Detail\",\r\n \"component\": \"detail-panel\",\r\n }\r\n ]\r\n },);\r\n }\r\n return layoutModel;\r\n }\r\n\r\n getConfiguration(): GridConfiguration {\r\n return this.state.gridConfiguration;\r\n }\r\n\r\n getSearchContext(): { searchString: string, searchHistory: string[] } {\r\n // reverse searchHistory before storing it\r\n const searchHistory = [...this.state.searchHistory];\r\n searchHistory.reverse();\r\n return {\r\n searchString: this.state.searchString,\r\n searchHistory: searchHistory\r\n };\r\n }\r\n\r\n loadData(callback?: () => void): void {\r\n this.dataGrid?.loadData(callback);\r\n }\r\n\r\n isActive(): boolean {\r\n return !!this.dataGrid && this.dataGrid.isActive();\r\n }\r\n\r\n focus() {\r\n this.dataGrid?.focus();\r\n }\r\n\r\n private _changeConfiguration(configuration: Partial<GridConfiguration>, callback?: () => void): void {\r\n if (this.props.disableConfigurationChange) {\r\n return;\r\n }\r\n const newConfiguration = Object.assign(this.state.gridConfiguration, configuration);\r\n this.setState({gridConfiguration: newConfiguration}, callback);\r\n if (this.props.onChangeConfiguration) {\r\n this.props.onChangeConfiguration(this.state.gridConfiguration);\r\n }\r\n }\r\n\r\n private _onGridReady(event: GridReadyEvent): void {\r\n this.gridApi = event.api;\r\n this._reloadTableConfiguration();\r\n if (this.props.onGridReady) {\r\n this.props.onGridReady(event);\r\n }\r\n }\r\n\r\n private _onLoadData(callback: OnLoadDataCallback): void {\r\n if (this.state.tableNeedToBeReloaded) {\r\n this.setState({tableNeedToBeReloaded: false});\r\n }\r\n this.props.onLoadData((recordsCount) => {\r\n this.dataLoaded = true;\r\n // clear meanwhile dynamically added/removed/updated data records\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.followLastRecord();\r\n callback(recordsCount);\r\n })\r\n }\r\n\r\n private _onPaginationChanged(currentPageSize: number | null, definedPageSize: number): void {\r\n if (this.dataLoaded) {\r\n const definedPageSizeChanged = this.state.gridConfiguration.pageSize !== definedPageSize;\r\n if (definedPageSizeChanged) {\r\n this._changeConfiguration({pageSize: definedPageSize});\r\n this._followLastRecordDebounced();\r\n }\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(currentPageSize, definedPageSize);\r\n }\r\n }\r\n }\r\n\r\n private _onSearchStringChanged(searchString: string): void {\r\n this.setState({searchString: searchString});\r\n if (this.props.search && this.props.search.onChange) {\r\n this.props.search.onChange(searchString);\r\n }\r\n }\r\n\r\n private _onSearch(): void {\r\n const currentSearchString = this.state.searchString;\r\n let searchHistory: string[] = this.state.searchHistory;\r\n\r\n // remove search string from history\r\n searchHistory = searchHistory.filter((searchString) => searchString !== currentSearchString);\r\n // add new search string to first position in history\r\n searchHistory.unshift(currentSearchString);\r\n searchHistory = searchHistory.slice(0, 10);\r\n this.setState({\r\n searchHistory: searchHistory,\r\n });\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }\r\n\r\n private _reloadTableConfiguration(): void {\r\n if (this.gridApi) {\r\n if (this.state.gridConfiguration.columnModel) {\r\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\r\n this.gridApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\r\n } else {\r\n this.gridApi.resetColumnState();\r\n const columnState = this.gridApi.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n }\r\n }\r\n }\r\n\r\n clearTransaction() {\r\n this.dataTransaction.add = [];\r\n this.dataTransaction.remove = [];\r\n this.dataTransaction.update = [];\r\n this.dataTransaction.addIndex = undefined;\r\n }\r\n\r\n removeFromTransaction(item: T) {\r\n this.dataTransaction.add = this.dataTransaction.add.filter(value => value.id !== item.id);\r\n this.dataTransaction.remove = this.dataTransaction.remove.filter(value => value.id !== item.id);\r\n this.dataTransaction.update = this.dataTransaction.update.filter(value => value.id !== item.id);\r\n }\r\n\r\n addRecord(data: T, addIndex?: number): void {\r\n const markedToRemove = this.dataTransaction.remove.find((value => value.id === data.id));\r\n if (markedToRemove) {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.add.push(data);\r\n if (addIndex !== undefined) {\r\n this.dataTransaction.addIndex = addIndex;\r\n }\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n addRecords(dataArray: T[], addIndex?: number): void {\r\n (addIndex ? dataArray.reverse() : dataArray).forEach(data => this.addRecord(data, addIndex));\r\n }\r\n\r\n /** Set new data to the grid */\r\n setRowData(dataArray: T[]): void {\r\n // reset transaction data received till this new data list is loaded,\r\n // we can do it here, because communication is serialized in one thread\r\n // and all push changes to new list data will come only after this method is finished\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.dataGrid?.setRowData(dataArray);\r\n }\r\n\r\n removeRecord(data: T): void {\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.removeFromTransaction(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.remove.push(data);\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n removeRecords(dataList: T[]): void {\r\n dataList.forEach((data) => {\r\n this.removeRecord(data);\r\n })\r\n }\r\n\r\n updateRecord(data: (T & { dataChangeState?: DataChangeStateEnum })) {\r\n switch (data.dataChangeState) {\r\n case DataChangeStateEnum.CONFIGURED:\r\n this.addRecord(data);\r\n break;\r\n case DataChangeStateEnum.REMOVED:\r\n this.removeRecord(data);\r\n break;\r\n default:\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.addRecord(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n updateRecords(dataList: (T & { dataChangeState?: DataChangeStateEnum })[]) {\r\n dataList.forEach((data) => {\r\n this.updateRecord(data);\r\n });\r\n }\r\n\r\n private _updateData(): void {\r\n // remove duplicates, preserve last version of object\r\n this.dataTransaction.update.forEach(data => {\r\n const rowNode = this.gridApi ? this.gridApi.getRowNode(data.id + \"\") : null;\r\n if (rowNode) {\r\n rowNode.updateData(data);\r\n if (this.props.filter && this.props.filter.quickFilterEnabled) {\r\n rowNode.resetQuickFilterAggregateText();\r\n }\r\n } else {\r\n this.dataTransaction.add.push(data);\r\n }\r\n });\r\n // we have already processed them\r\n this.dataTransaction.update = [];\r\n if (this.dataTransaction.add.length > 0 || this.dataTransaction.remove.length > 0) {\r\n this.dataTransaction.remove.forEach((object) => {\r\n const node = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\r\n if (node && node.isSelected()) {\r\n node.setSelected(false);\r\n }\r\n });\r\n // upgrade grid\r\n if (this.gridApi) {\r\n this.gridApi.applyTransaction(this.dataTransaction);\r\n }\r\n if (this.props.rowData) {\r\n // automatically updating client side array of records\r\n if (this.dataTransaction.addIndex !== undefined) {\r\n this.props.rowData.splice(this.dataTransaction.addIndex, 0, ...this.dataTransaction.add);\r\n } else {\r\n this.props.rowData.push(...this.dataTransaction.add);\r\n }\r\n this.dataTransaction.remove.forEach((object) => {\r\n const index = this.props.rowData ? this.props.rowData.indexOf(object) : -1;\r\n if (index >= 0 && this.props.rowData) {\r\n this.props.rowData.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n }\r\n if (this.props.onDataChanged) {\r\n this.props.onDataChanged();\r\n }\r\n }\r\n\r\n enableFollowLastRecord(enable: boolean): void {\r\n if (enable) {\r\n if (this.gridApi && this.state.gridConfiguration.followLastRecordSortModel) {\r\n this.dataGrid?.setSortModel(this.state.gridConfiguration.followLastRecordSortModel);\r\n this.gridApi.onSortChanged();\r\n }\r\n this._changeConfiguration({followLastRecord: true});\r\n this._followLastRecordDebounced();\r\n } else {\r\n if (this.state.gridConfiguration.followLastRecord) {\r\n this._changeConfiguration({followLastRecord: false});\r\n }\r\n }\r\n }\r\n\r\n _followLastRecordDebounced(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n this.followLastRecord();\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls table to last record added to the tail of the table\r\n */\r\n followLastRecord(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n if (this.gridApi) {\r\n let lastIndex = -1;\r\n this.gridApi.forEachNodeAfterFilterAndSort((_, index) => {\r\n lastIndex = index;\r\n });\r\n if (lastIndex >= 0) {\r\n this.gridApi.ensureIndexVisible(lastIndex);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public setColumnModel(columnModel: ColumnState[]) {\r\n this.dataGrid?.setColumnState(columnModel);\r\n }\r\n\r\n public setSortModel(sortModel: SortItem[]) {\r\n this.dataGrid?.setSortModel(sortModel);\r\n }\r\n\r\n public getSortModel(): SortItem[] {\r\n return this.dataGrid?.getSortModel() ?? [];\r\n }\r\n\r\n _onRowDataUpdated(event: RowDataUpdatedEvent): void {\r\n this._followLastRecordDebounced();\r\n if (this.props.onRowDataUpdated) {\r\n this.props.onRowDataUpdated(event);\r\n }\r\n }\r\n\r\n showFilterPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: this.props.filterPanel && this.props.filterPanel.defaultWidth ? this.props.filterPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n }\r\n }\r\n\r\n showDetailPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n }\r\n\r\n selectNextPreviousRecord(previous: boolean): void {\r\n let selectedNodes = this.gridApi?.getSelectedNodes();\r\n if (selectedNodes && selectedNodes.length === 1) {\r\n let selectedNode = selectedNodes[0];\r\n if (this.props.rowData && this.props.rowData.length > 0) {\r\n this.gridApi?.forEachNodeAfterFilterAndSort((node) => {\r\n if ((!previous && node.childIndex === (selectedNode.childIndex + 1)) || (previous && node.childIndex === (selectedNode.childIndex - 1))) {\r\n node.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(node);\r\n }\r\n });\r\n } else if (this.props.rowModelType === \"infinite\" && selectedNode.rowIndex !== null) {\r\n const nextRowIndex = !previous ? selectedNode.rowIndex + 1 : (selectedNode.rowIndex !== 0 ? selectedNode.rowIndex - 1 : 0);\r\n const nextNode = this.gridApi?.getDisplayedRowAtIndex(nextRowIndex);\r\n if (nextNode) {\r\n nextNode.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(nextNode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n changeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.state.gridConfiguration.rowStyleRules = rowStyleRules;\r\n this.setState({gridConfiguration: this.state.gridConfiguration}, () => {\r\n this.gridApi?.redrawRows();\r\n });\r\n }\r\n\r\n _onChangeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.changeRowStyleRules(rowStyleRules);\r\n if (this.props.onChangeRowStyleRules) {\r\n this.props.onChangeRowStyleRules(rowStyleRules);\r\n }\r\n }\r\n\r\n onPanelFilterApplied(newFilter: any): void {\r\n const filterChanged = !isEqualWith(newFilter, this.state.defaultFilter, this.equalValues);\r\n if (filterChanged !== this.state.filterChanged) {\r\n this.setState({filterChanged: filterChanged});\r\n }\r\n }\r\n\r\n getUiColumnFilterValue(colId: string): string {\r\n const nameFilterModel: TextFilterModel = this.gridApi?.getColumnFilterModel(colId) as TextFilterModel;\r\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\r\n }\r\n\r\n async removeUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n const textFilterInstance = filterInstance as TextFilter;\r\n const nameFilterModel: TextFilterModel = textFilterInstance.getModelFromUi() as TextFilterModel;\r\n if (nameFilterModel) {\r\n nameFilterModel.filter = \"\";\r\n // we need to hack this typescript protected declaration\r\n // @ts-ignore\r\n textFilterInstance.resetUiToDefaults(false);\r\n }\r\n }\r\n\r\n /**\r\n * Applies UI column filter values silently without redrawing ag-grid\r\n * @param colId\r\n */\r\n async applyUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n ((filterInstance) as TextFilter)?.applyModel?.();\r\n }\r\n\r\n private equalValues(value: any, otherValue: any): (boolean | undefined) {\r\n if ((value === undefined || value === null) && (otherValue === undefined || otherValue === null)) {\r\n return true;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _onSelectionChanged(event: SelectionChangedEvent): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.gridApi && this.gridApi.getSelectedRows().length > 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onSelectionChanged) {\r\n this.props.onSelectionChanged(event);\r\n }\r\n }\r\n\r\n private _onViewportChanged(event: ViewportChangedEvent) {\r\n const dataGridEvent = event as DataGridViewportChangedEvent;\r\n if (this.state.gridConfiguration.followLastRecord && dataGridEvent.rowsScrollingDelta < 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onViewportChanged) {\r\n this.props.onViewportChanged(dataGridEvent);\r\n }\r\n }\r\n\r\n private renderToolbarButtons(): ReactElement {\r\n const renderFilter = this.props.filterPanel && this.props.filterPanel.renderer;\r\n const filterPanelVisible = renderFilter && this.isFilterPanelVisible();\r\n return (\r\n <React.Fragment>\r\n {renderFilter && <Button type={filterPanelVisible ? \"primary\" : \"default\"} key=\"filter-button\"\r\n title={i18n(\"Show/Hide filter panel\")}\r\n onClick={() => {\r\n this.showFilterPanel(!filterPanelVisible);\r\n }}>\r\n <FilterOutlined/>\r\n </Button>}\r\n {this.props.toolbar?.toolbarButtons}\r\n {this.state.gridConfiguration.followLastRecordEditable &&\r\n <Button key=\"track-button\"\r\n title={i18n(\"Track last added record to table\")}\r\n onClick={(e) => {\r\n this.enableFollowLastRecord(!this.state.gridConfiguration.followLastRecord);\r\n (e.target as HTMLButtonElement).blur();\r\n }}>\r\n {this.state.gridConfiguration.followLastRecord ? <EyeOutlined/> : <EyeInvisibleOutlined/>}\r\n </Button>}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n private renderToolbar(originalToolbar: ReactElement): ReactElement {\r\n let toolbarToRender = originalToolbar;\r\n if (this.props.toolbar && this.props.toolbar.renderToolbar) {\r\n const searchBar = this.props.toolbar.renderToolbar(originalToolbar);\r\n if (searchBar) {\r\n toolbarToRender = searchBar;\r\n }\r\n }\r\n\r\n const statsBadge = this.renderSearchBadge();\r\n return (<div style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\r\n {toolbarToRender}\r\n {statsBadge}\r\n </div>);\r\n }\r\n\r\n private renderSearchBadge(): ReactElement | undefined {\r\n if (this.state.tableNeedToBeReloaded) {\r\n return (\r\n <Badge count={\r\n <span className=\"ant-badge-count\"\r\n title={i18n(\"Records has been added or removed, table need to be reloaded in order to see actual records\")}\r\n style={{color: \"#fa541c\", background: \"#fff2e8\", borderColor: \"#ffbb96\"}}>\r\n <ExclamationOutlined style={{color: '#fa541c'}}/>\r\n </span>\r\n } style={{cursor: \"hand\"}} offset={[10, -10]}/>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n isFilterPanelVisible(): boolean {\r\n return this.state.gridConfiguration.layoutModel ? this.state.gridConfiguration.layoutModel.layout.children[0].width > 0 : true;\r\n }\r\n\r\n renderDataGrid(): ReactElement {\r\n const {\r\n defaultGridConfiguration,\r\n onGridReady, onLoadData, onSortChanged, onColumnsChanged, onSelectionChanged, onViewportChanged,\r\n onTableConfigVisible, toolbar,\r\n paging, filter, search, onChangeConfiguration, onDataChanged, onChangeRowStyleRules,\r\n filterPanel, controlPanel,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <DataGrid\r\n {...rest}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid ? dataGrid : undefined;\r\n }}\r\n onLoadData={this._onLoadData}\r\n onGridReady={this._onGridReady}\r\n paging={{\r\n pageSize: this.state.gridConfiguration.pageSize,\r\n defaultPageSize: this.state.gridConfiguration.defaultPageSize,\r\n onPaginationChanged: this._onPaginationChanged,\r\n }}\r\n filter={{\r\n columnSearchVisible: this.state.gridConfiguration.columnSearchVisible,\r\n getFilterModel: filter ? filter.getFilterModel : undefined,\r\n onColumnSearchVisible: (visible) => {\r\n this._changeConfiguration({columnSearchVisible: visible});\r\n if (filter?.onColumnSearchVisible) {\r\n filter.onColumnSearchVisible(visible);\r\n }\r\n },\r\n onFilterModified: filter ? filter.onFilterModified : undefined,\r\n onFilterChanged: filter ? filter.onFilterChanged : undefined,\r\n onFilterConfirmed: filter ? filter.onFilterConfirmed : undefined,\r\n }}\r\n search={{\r\n hidden: !!search ? search.hidden : undefined,\r\n inputReadonly: !!search ? search.inputReadonly : undefined,\r\n placeholder: !!search ? search.placeholder : undefined,\r\n searchString: !!search && search.searchString !== undefined ? search.searchString : this.state.searchString,\r\n stringFormatter: !!search ? search.stringFormatter : undefined,\r\n searchHistory: !!search && search.searchHistory !== undefined ? search.searchHistory : this.state.searchHistory,\r\n searchButtonClassName: !!search ? search.searchButtonClassName : undefined,\r\n searchButtonDisabled: !!search ? search.searchButtonDisabled : undefined,\r\n searchRenderer: search?.searchRenderer,\r\n onChange: this._onSearchStringChanged,\r\n onSearch: this._onSearch\r\n }}\r\n toolbar={{\r\n renderToolbar: this.renderToolbar,\r\n toolbarButtons: this.renderToolbarButtons(),\r\n hideRecordCount: toolbar?.hideRecordCount\r\n }}\r\n onSortChanged={(event) => {\r\n const sortModel = this.dataGrid?.getSortModel();\r\n if (this.state.gridConfiguration.followLastRecord && this.state.gridConfiguration.followLastRecordSortModel && !isEqual(this.state.gridConfiguration.followLastRecordSortModel, sortModel)) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n const columnState = this.gridApi?.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n if (onSortChanged) {\r\n onSortChanged(event);\r\n }\r\n }}\r\n onColumnsChanged={(columnModel, event) => {\r\n this._changeConfiguration({columnModel: columnModel});\r\n if (onColumnsChanged) {\r\n onColumnsChanged(columnModel, event);\r\n }\r\n }}\r\n onRowDataUpdated={this._onRowDataUpdated}\r\n tableConfigVisible={this.state.tableConfigVisible}\r\n onTableConfigVisible={(visible) => {\r\n this.setState({tableConfigVisible: visible});\r\n if (onTableConfigVisible) {\r\n onTableConfigVisible(visible);\r\n }\r\n }}\r\n onSelectionChanged={this._onSelectionChanged}\r\n rowStyleRules={this.state.gridConfiguration.rowStyleRules as RowStyleRule[]}\r\n defaultRowStyleRules={this.state.gridConfiguration.defaultRowStyleRules}\r\n onChangeRowStyleRules={this._onChangeRowStyleRules}\r\n onViewportChanged={this._onViewportChanged}\r\n showMilliseconds={this.state.gridConfiguration.showMilliseconds}\r\n defaultShowMilliseconds={this.state.gridConfiguration.defaultShowMilliseconds}\r\n onShowMilliseconds={(showMillis, callback) => {\r\n this._changeConfiguration({showMilliseconds: showMillis}, callback);\r\n }}\r\n hideYear={this.state.gridConfiguration.hideYear}\r\n defaultHideYear={this.state.gridConfiguration.defaultHideYear}\r\n onShowYear={(showYear, callback) => {\r\n this._changeConfiguration({hideYear: !showYear}, callback);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderDataGridWithControlPanel() {\r\n if (this.props.controlPanel && this.props.controlPanel.renderer) {\r\n return (\r\n <div key=\"table-with-control-panel\" style={{\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n width: \"100%\"\r\n }}>\r\n <div key=\"table-with-control-panel-wrapper\" style={{flex: \"1 1 auto\", overflow: \"auto\"}}>\r\n {this.renderDataGrid()}\r\n </div>\r\n {this.props.controlPanel.renderer()}\r\n </div>);\r\n }\r\n return this.renderDataGrid();\r\n }\r\n\r\n componentDidUpdate() {\r\n // very important nasty fix with flexlayout\r\n // in AlarmWindow or ObjectHistoryWindow there is ExtendedDataGrid(FlexLayout) placed in upper FlexLayout\r\n // resize event handling doesn't work in inner FlexLayout(ExtendedDataGrid)\r\n // I suppose it has something to do wit usage of multiple ResizeObservers, but I am not sure\r\n // therefore here on any change of state/props we will invoke recalculation of flexlayout size\r\n // internal logic of this method updateRect is fast and do resize only when it is needed\r\n this.flexLayout?.updateRect();\r\n }\r\n\r\n render() {\r\n const {filterPanel, detailPanel} = this.props;\r\n if (filterPanel || detailPanel) {\r\n return (\r\n <FlexLayout.Layout\r\n ref={(flexLayout) => {\r\n this.flexLayout = flexLayout;\r\n }}\r\n model={this.state.layoutModel}\r\n onModelChange={(model) => {\r\n this._changeConfiguration({layoutModel: model.toJson()});\r\n }}\r\n onAction={(action) => {\r\n const node1 = action.data.node1;\r\n const node2 = action.data.node2;\r\n let tabset;\r\n // disable moving splitter if filter or detail panel is hidden (width=0)\r\n if (action.type === Actions.ADJUST_SPLIT) {\r\n if (node1 === \"#4\" && node2 === \"#6\") {\r\n tabset = this.state.layoutModel.getNodeById('#6');\r\n } else if (node1 === \"#2\" && node2 === \"#4\") {\r\n tabset = this.state.layoutModel.getNodeById('#2');\r\n }\r\n if (tabset) {\r\n const width = (tabset as any)?._attributes?.width;\r\n if (width === 0) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n return action;\r\n }}\r\n factory={(node) => {\r\n const component = node.getComponent();\r\n if (component === \"filter-panel\") {\r\n return filterPanel && filterPanel.renderer && filterPanel.renderer({\r\n defaultFilter: this.state.defaultFilter,\r\n filterChanged: this.state.filterChanged\r\n });\r\n } else if (component === \"data-panel\") {\r\n return this.renderDataGridWithControlPanel();\r\n } else if (component === \"detail-panel\") {\r\n return detailPanel && detailPanel.renderer();\r\n }\r\n return <Empty/>\r\n }}\r\n />\r\n );\r\n } else {\r\n return this.renderDataGridWithControlPanel();\r\n }\r\n }\r\n}"]}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class CustomColumnFilter extends
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
filterParams: {};
|
|
7
|
-
floatingFilterComponentParams: {
|
|
8
|
-
suppressFilterButton: boolean;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
constructor(props: Readonly<any>);
|
|
12
|
-
componentDidMount(): void;
|
|
13
|
-
onValueChanged(event: ChangeEvent): void;
|
|
14
|
-
changeValue(newValue: string): void;
|
|
15
|
-
onSearch(): void;
|
|
16
|
-
setModel(model: any): void;
|
|
17
|
-
getModel(): any;
|
|
18
|
-
isFilterActive(): boolean;
|
|
19
|
-
onParentModelChanged(parentModel: any): void;
|
|
20
|
-
render(): React.ReactNode;
|
|
21
|
-
}
|
|
1
|
+
import DataGridColumnFilter, { DataGridColumnFilterProps, DataGridColumnFilterState } from "./dataGridColumnFilter";
|
|
2
|
+
export default class CustomColumnFilter extends DataGridColumnFilter<DataGridColumnFilterProps, DataGridColumnFilterState> {
|
|
3
|
+
constructor(props: Readonly<DataGridColumnFilterProps>);
|
|
4
|
+
render(): import("react").ReactNode;
|
|
5
|
+
}
|
|
@@ -1,83 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class CustomColumnFilter extends
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
;
|
|
14
|
-
constructor(props) {
|
|
15
|
-
super(props);
|
|
16
|
-
this.state = {
|
|
17
|
-
currentValue: ""
|
|
18
|
-
};
|
|
19
|
-
this.onValueChanged = this.onValueChanged.bind(this);
|
|
20
|
-
this.onSearch = this.onSearch.bind(this);
|
|
21
|
-
this.changeValue = this.changeValue.bind(this);
|
|
22
|
-
}
|
|
23
|
-
componentDidMount() {
|
|
24
|
-
this.props.parentFilterInstance((instance) => {
|
|
25
|
-
this.setState({ currentValue: instance.eValue1.value });
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
onValueChanged(event) {
|
|
29
|
-
this.setState({
|
|
30
|
-
currentValue: event.target.value
|
|
31
|
-
}, () => {
|
|
32
|
-
const currentValue = this.state.currentValue;
|
|
33
|
-
this.props.parentFilterInstance((instance) => {
|
|
34
|
-
instance.setValueFromFloatingFilter(currentValue);
|
|
35
|
-
instance.setTypeFromFloatingFilter('contains');
|
|
36
|
-
instance.onUiChanged(false);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
;
|
|
41
|
-
changeValue(newValue) {
|
|
42
|
-
this.setState({
|
|
43
|
-
currentValue: newValue
|
|
44
|
-
}, () => {
|
|
45
|
-
const currentValue = this.state.currentValue;
|
|
46
|
-
this.props.parentFilterInstance((instance) => {
|
|
47
|
-
instance.setValueFromFloatingFilter(currentValue);
|
|
48
|
-
instance.setTypeFromFloatingFilter('contains');
|
|
49
|
-
instance.onUiChanged(false);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
onSearch() {
|
|
54
|
-
const currentValue = this.state.currentValue;
|
|
55
|
-
this.props.parentFilterInstance((instance) => {
|
|
56
|
-
instance.onFloatingFilterChanged('contains', currentValue);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
setModel(model) {
|
|
60
|
-
this.setState({
|
|
61
|
-
currentValue: !model ? "" : model.filter
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
getModel() {
|
|
65
|
-
return {
|
|
66
|
-
filter: this.state.currentValue
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
isFilterActive() {
|
|
70
|
-
return !!this.state.currentValue;
|
|
71
|
-
}
|
|
72
|
-
onParentModelChanged(parentModel) {
|
|
73
|
-
this.setState({
|
|
74
|
-
currentValue: !parentModel ? "" : parentModel.filter
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
render() {
|
|
78
|
-
var _a;
|
|
79
|
-
const colDef = this.props.column.colDef;
|
|
80
|
-
return (_a = colDef === null || colDef === void 0 ? void 0 : colDef.renderFilter) === null || _a === void 0 ? void 0 : _a.call(colDef, this.state.currentValue ? this.state.currentValue : "", this.changeValue, this.onSearch);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
import DataGridColumnFilter from "./dataGridColumnFilter";
|
|
2
|
+
export default class CustomColumnFilter extends DataGridColumnFilter {
|
|
3
|
+
constructor(props) {
|
|
4
|
+
super(props);
|
|
5
|
+
}
|
|
6
|
+
render() {
|
|
7
|
+
var _a;
|
|
8
|
+
const colDef = this.props.column.getColDef();
|
|
9
|
+
return (_a = colDef === null || colDef === void 0 ? void 0 : colDef.renderFilter) === null || _a === void 0 ? void 0 : _a.call(colDef, this.state.currentValue ? this.state.currentValue : "", this.changeValue, this.onSearch);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
83
12
|
//# sourceMappingURL=customColumnFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customColumnFilter.js","sourceRoot":"","sources":["../../../../../components/grid/filter/customColumnFilter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"customColumnFilter.js","sourceRoot":"","sources":["../../../../../components/grid/filter/customColumnFilter.tsx"],"names":[],"mappings":"AACA,OAAO,oBAA4E,MAAM,wBAAwB,CAAC;AAElH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,oBAA0E;IAEtH,YAAY,KAA0C;QAClD,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAoB,CAAC;QAC/D,OAAO,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,uDAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3H,CAAC;CACJ","sourcesContent":["import {DataGridColDef} from \"../dataGrid\";\r\nimport DataGridColumnFilter, {DataGridColumnFilterProps, DataGridColumnFilterState} from \"./dataGridColumnFilter\";\r\n\r\nexport default class CustomColumnFilter extends DataGridColumnFilter<DataGridColumnFilterProps, DataGridColumnFilterState> {\r\n\r\n constructor(props: Readonly<DataGridColumnFilterProps>) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const colDef = this.props.column.getColDef() as DataGridColDef;\r\n return colDef?.renderFilter?.(this.state.currentValue ? this.state.currentValue : \"\", this.changeValue, this.onSearch);\r\n }\r\n}"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CustomFloatingFilterProps } from "ag-grid-react";
|
|
3
|
+
import { ProvidedFilterParams } from "ag-grid-community";
|
|
4
|
+
export interface DataGridColumnFilterProps extends CustomFloatingFilterProps {
|
|
5
|
+
}
|
|
6
|
+
export interface DataGridColumnFilterState {
|
|
7
|
+
currentValue: string;
|
|
8
|
+
}
|
|
9
|
+
export default class DataGridColumnFilter<P extends DataGridColumnFilterProps, S extends DataGridColumnFilterState> extends React.Component<P, S> {
|
|
10
|
+
constructor(props: Readonly<P>);
|
|
11
|
+
componentDidMount(): void;
|
|
12
|
+
isUseApplyButton(params: ProvidedFilterParams): boolean;
|
|
13
|
+
changeValue(newValue: string): void;
|
|
14
|
+
setValue(newValue: string, forceApply?: boolean): void;
|
|
15
|
+
protected onSearch(): void;
|
|
16
|
+
private createModel;
|
|
17
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AgPromise } from "ag-grid-community";
|
|
3
|
+
export default class DataGridColumnFilter extends React.Component {
|
|
4
|
+
constructor(props) {
|
|
5
|
+
var _a;
|
|
6
|
+
super(props);
|
|
7
|
+
this.state = {
|
|
8
|
+
currentValue: (((_a = props.model) === null || _a === void 0 ? void 0 : _a.value) || "")
|
|
9
|
+
};
|
|
10
|
+
this.changeValue = this.changeValue.bind(this);
|
|
11
|
+
this.onSearch = this.onSearch.bind(this);
|
|
12
|
+
}
|
|
13
|
+
componentDidMount() {
|
|
14
|
+
this.props.parentFilterInstance((instance) => {
|
|
15
|
+
this.setState({ currentValue: instance.getValues(0)[0] });
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
isUseApplyButton(params) {
|
|
19
|
+
return !!params.buttons && params.buttons.indexOf('apply') >= 0;
|
|
20
|
+
}
|
|
21
|
+
changeValue(newValue) {
|
|
22
|
+
this.setState({ currentValue: newValue }, () => {
|
|
23
|
+
const newValue = this.state.currentValue;
|
|
24
|
+
this.setValue(newValue);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
setValue(newValue, forceApply) {
|
|
28
|
+
const autoApply = !this.isUseApplyButton(this.props.filterParams);
|
|
29
|
+
if (autoApply || forceApply) {
|
|
30
|
+
this.props.onModelChange(this.createModel(newValue));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.props.parentFilterInstance((instance) => {
|
|
34
|
+
(instance.setModel(this.createModel(newValue)) || AgPromise.resolve()).then(() => {
|
|
35
|
+
instance.onUiChanged(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
onSearch() {
|
|
41
|
+
this.setValue(this.state.currentValue, true);
|
|
42
|
+
}
|
|
43
|
+
createModel(newValue) {
|
|
44
|
+
return newValue === '' ? null : Object.assign(Object.assign({}, (this.props.model || {
|
|
45
|
+
type: 'contains',
|
|
46
|
+
})), { filter: newValue });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=dataGridColumnFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataGridColumnFilter.js","sourceRoot":"","sources":["../../../../../components/grid/filter/dataGridColumnFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,SAAS,EAAuB,MAAM,mBAAmB,CAAC;AASlE,MAAM,CAAC,OAAO,OAAO,oBAA+F,SAAQ,KAAK,CAAC,SAAe;IAE7I,YAAY,KAAkB;;QAC1B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACT,YAAY,EAAE,CAAC,CAAA,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,KAAI,EAAE,CAAW;SACrD,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAa,EAAE,EAAE;YAC9C,IAAI,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,gBAAgB,CAAC,MAA4B;QACzC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,QAAgB;QACxB,IAAI,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAE,QAAQ,EAAC,EAClC,GAAG,EAAE;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,UAAoB;QAC3C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAa,EAAE,EAAE;gBAC9C,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAG7E,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAES,QAAQ;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,QAAgB;QAChC,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,iCAEpB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;YACpB,IAAI,EAAE,UAAU;SACnB,CAAC,KACF,MAAM,EAAE,QAAQ,GACnB,CAAC;IACV,CAAC;CACJ","sourcesContent":["import React from \"react\";\r\nimport {CustomFloatingFilterProps} from \"ag-grid-react\";\r\nimport {AgPromise, ProvidedFilterParams} from \"ag-grid-community\";\r\n\r\nexport interface DataGridColumnFilterProps extends CustomFloatingFilterProps {\r\n}\r\n\r\nexport interface DataGridColumnFilterState {\r\n currentValue: string\r\n}\r\n\r\nexport default class DataGridColumnFilter<P extends DataGridColumnFilterProps, S extends DataGridColumnFilterState> extends React.Component<P, S> {\r\n\r\n constructor(props: Readonly<P>) {\r\n super(props);\r\n // @ts-ignore\r\n this.state = {\r\n currentValue: (props.model?.value || \"\") as string\r\n };\r\n this.changeValue = this.changeValue.bind(this);\r\n this.onSearch = this.onSearch.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.props.parentFilterInstance((instance: any) => {\r\n this.setState({currentValue: instance.getValues(0)[0]});\r\n });\r\n }\r\n\r\n isUseApplyButton(params: ProvidedFilterParams): boolean {\r\n return !!params.buttons && params.buttons.indexOf('apply') >= 0;\r\n }\r\n\r\n changeValue(newValue: string) {\r\n this.setState({currentValue: newValue},\r\n () => {\r\n const newValue = this.state.currentValue;\r\n this.setValue(newValue);\r\n });\r\n }\r\n\r\n setValue(newValue: string, forceApply?: boolean) {\r\n const autoApply = !this.isUseApplyButton(this.props.filterParams);\r\n if (autoApply || forceApply) {\r\n this.props.onModelChange(this.createModel(newValue));\r\n } else {\r\n this.props.parentFilterInstance((instance: any) => {\r\n (instance.setModel(this.createModel(newValue)) || AgPromise.resolve()).then(() => {\r\n // instance.setValueFromFloatingFilter(newValue);\r\n // instance.setTypeFromFloatingFilter('contains');\r\n instance.onUiChanged(false);\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected onSearch() {\r\n this.setValue(this.state.currentValue, true);\r\n }\r\n\r\n private createModel(newValue: string) {\r\n return newValue === '' ? null :\r\n {\r\n ...(this.props.model || {\r\n type: 'contains',\r\n }),\r\n filter: newValue,\r\n };\r\n }\r\n}"]}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { ChangeEvent
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
isFilterActive(): boolean;
|
|
9
|
-
onParentModelChanged(parentModel: any): void;
|
|
10
|
-
render(): JSX.Element;
|
|
11
|
-
}
|
|
1
|
+
import React, { ChangeEvent } from "react";
|
|
2
|
+
import DataGridColumnFilter, { DataGridColumnFilterProps, DataGridColumnFilterState } from "./dataGridColumnFilter";
|
|
3
|
+
export default class DateColumnFilter extends DataGridColumnFilter<DataGridColumnFilterProps, DataGridColumnFilterState> {
|
|
4
|
+
constructor(props: Readonly<any>);
|
|
5
|
+
onValueChanged(event: ChangeEvent): void;
|
|
6
|
+
render(): React.JSX.Element;
|
|
7
|
+
}
|