@pega/lists-core 9.0.0-build.9.8 → 9.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/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/src/core/RsCore.d.ts +1 -1
- package/lib/src/core/RsCore.js +1 -1
- package/lib/src/core/RsCore.js.map +1 -1
- package/lib/src/core/RsInternal.d.ts +23 -0
- package/lib/src/core/RsInternal.d.ts.map +1 -1
- package/lib/src/core/RsInternal.js +18 -2
- package/lib/src/core/RsInternal.js.map +1 -1
- package/lib/src/core/RsProps.d.ts +0 -7
- package/lib/src/core/RsProps.d.ts.map +1 -1
- package/lib/src/core/RsProps.js +0 -7
- package/lib/src/core/RsProps.js.map +1 -1
- package/lib/src/core/RsStore.d.ts +5 -1
- package/lib/src/core/RsStore.d.ts.map +1 -1
- package/lib/src/core/RsStore.js +12 -0
- package/lib/src/core/RsStore.js.map +1 -1
- package/lib/src/core/StateResolver.d.ts +0 -1
- package/lib/src/core/StateResolver.d.ts.map +1 -1
- package/lib/src/core/StateResolver.js +19 -9
- package/lib/src/core/StateResolver.js.map +1 -1
- package/lib/src/core/a11y/BaseA11y.d.ts +25 -6
- package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -1
- package/lib/src/core/a11y/BaseA11y.js +39 -8
- package/lib/src/core/a11y/BaseA11y.js.map +1 -1
- package/lib/src/core/actions/actionConstants.d.ts +7 -4
- package/lib/src/core/actions/actionConstants.d.ts.map +1 -1
- package/lib/src/core/actions/actionConstants.js +8 -5
- package/lib/src/core/actions/actionConstants.js.map +1 -1
- package/lib/src/core/actions/actions.d.ts +35 -34
- package/lib/src/core/actions/actions.d.ts.map +1 -1
- package/lib/src/core/actions/actions.js +47 -40
- package/lib/src/core/actions/actions.js.map +1 -1
- package/lib/src/core/actions/actions.types.d.ts +34 -27
- package/lib/src/core/actions/actions.types.d.ts.map +1 -1
- package/lib/src/core/actions/actions.types.js.map +1 -1
- package/lib/src/core/config/config.d.ts +1 -1
- package/lib/src/core/config/config.d.ts.map +1 -1
- package/lib/src/core/config/config.js +5 -2
- package/lib/src/core/config/config.js.map +1 -1
- package/lib/src/core/constants.d.ts +4 -0
- package/lib/src/core/constants.d.ts.map +1 -1
- package/lib/src/core/constants.js +22 -5
- package/lib/src/core/constants.js.map +1 -1
- package/lib/src/core/defaultTranslations.d.ts +6 -1
- package/lib/src/core/defaultTranslations.d.ts.map +1 -1
- package/lib/src/core/defaultTranslations.js +6 -1
- package/lib/src/core/defaultTranslations.js.map +1 -1
- package/lib/src/core/features/featureFactory.d.ts +6 -2
- package/lib/src/core/features/featureFactory.d.ts.map +1 -1
- package/lib/src/core/features/featureFactory.js +9 -8
- package/lib/src/core/features/featureFactory.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/animation.js +11 -2
- package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts +2 -16
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +48 -89
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +3 -4
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +83 -45
- package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js +2 -2
- package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts +4 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js +15 -14
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js +10 -2
- package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js +5 -4
- package/lib/src/core/features/uIFeatures/beforeRender/animation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts +13 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts.map +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js +40 -0
- package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js.map +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts +2 -0
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js +14 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js +7 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js +13 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +20 -17
- package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +2 -4
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +61 -40
- package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js +10 -5
- package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js +4 -4
- package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js +9 -8
- package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js +22 -8
- package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js +9 -6
- package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts +1 -0
- package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/filter.js +13 -3
- package/lib/src/core/features/uIFeatures/beforeRender/filter.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js +14 -9
- package/lib/src/core/features/uIFeatures/beforeRender/freeze.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +23 -24
- package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +32 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +128 -32
- package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js +4 -4
- package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +14 -10
- package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts +16 -4
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +124 -72
- package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts +2 -2
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +116 -37
- package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
- package/lib/src/core/features/uIFeatures/index.d.ts +2 -3
- package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
- package/lib/src/core/features/uIFeatures/index.js +2 -4
- package/lib/src/core/features/uIFeatures/index.js.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.d.ts +15 -21
- package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.js +32 -95
- package/lib/src/core/generators/ColumnGenerator.js.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.types.d.ts +16 -13
- package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -1
- package/lib/src/core/generators/GroupGenerator.d.ts +5 -1
- package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/GroupGenerator.js +20 -0
- package/lib/src/core/generators/GroupGenerator.js.map +1 -1
- package/lib/src/core/generators/RowGenerator.d.ts +2 -2
- package/lib/src/core/generators/RowGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/RowGenerator.js +3 -4
- package/lib/src/core/generators/RowGenerator.js.map +1 -1
- package/lib/src/core/generators/RowGenerator.types.d.ts +2 -1
- package/lib/src/core/generators/RowGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/RowGenerator.types.js.map +1 -1
- package/lib/src/core/generators/ViewGenerator.d.ts +42 -28
- package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
- package/lib/src/core/generators/ViewGenerator.js +101 -61
- package/lib/src/core/generators/ViewGenerator.js.map +1 -1
- package/lib/src/core/generators/ViewGenerator.types.d.ts +13 -1
- package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
- package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
- package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts +3 -0
- package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts.map +1 -1
- package/lib/src/core/generators/viewUtilityMethods.d.ts +23 -10
- package/lib/src/core/generators/viewUtilityMethods.d.ts.map +1 -1
- package/lib/src/core/generators/viewUtilityMethods.js +50 -11
- package/lib/src/core/generators/viewUtilityMethods.js.map +1 -1
- package/lib/src/core/index.d.ts.map +1 -1
- package/lib/src/core/index.js +1 -2
- package/lib/src/core/index.js.map +1 -1
- package/lib/src/core/reducers/changeTemplate.d.ts +5 -0
- package/lib/src/core/reducers/changeTemplate.d.ts.map +1 -0
- package/lib/src/core/reducers/changeTemplate.js +14 -0
- package/lib/src/core/reducers/changeTemplate.js.map +1 -0
- package/lib/src/core/reducers/dragDrop.d.ts.map +1 -1
- package/lib/src/core/reducers/dragDrop.js +5 -4
- package/lib/src/core/reducers/dragDrop.js.map +1 -1
- package/lib/src/core/reducers/error.d.ts +8 -4
- package/lib/src/core/reducers/error.d.ts.map +1 -1
- package/lib/src/core/reducers/{edit.d.ts → galleryView.d.ts} +1 -1
- package/lib/src/core/reducers/galleryView.d.ts.map +1 -0
- package/lib/src/core/reducers/galleryView.js +11 -0
- package/lib/src/core/reducers/galleryView.js.map +1 -0
- package/lib/src/core/reducers/grouping.d.ts.map +1 -1
- package/lib/src/core/reducers/grouping.js +7 -0
- package/lib/src/core/reducers/grouping.js.map +1 -1
- package/lib/src/core/reducers/index.d.ts +8 -4
- package/lib/src/core/reducers/index.d.ts.map +1 -1
- package/lib/src/core/reducers/index.js +5 -3
- package/lib/src/core/reducers/index.js.map +1 -1
- package/lib/src/core/reducers/personalizationDirtyReducer.d.ts.map +1 -1
- package/lib/src/core/reducers/personalizationDirtyReducer.js +8 -4
- package/lib/src/core/reducers/personalizationDirtyReducer.js.map +1 -1
- package/lib/src/core/reducers/personalizationReducer.d.ts +3 -2
- package/lib/src/core/reducers/personalizationReducer.d.ts.map +1 -1
- package/lib/src/core/reducers/personalizationReducer.js +12 -4
- package/lib/src/core/reducers/personalizationReducer.js.map +1 -1
- package/lib/src/core/reducers/renderFormatter.d.ts.map +1 -1
- package/lib/src/core/reducers/renderFormatter.js +13 -3
- package/lib/src/core/reducers/renderFormatter.js.map +1 -1
- package/lib/src/core/reducers/rowSelect.d.ts.map +1 -1
- package/lib/src/core/reducers/rowSelect.js +0 -8
- package/lib/src/core/reducers/rowSelect.js.map +1 -1
- package/lib/src/core/reducers/versioning/index.d.ts +1 -1
- package/lib/src/core/reducers/versioning/index.d.ts.map +1 -1
- package/lib/src/core/reducers/versioning/index.js +1 -1
- package/lib/src/core/reducers/versioning/index.js.map +1 -1
- package/lib/src/core/reducers/visibility.d.ts +2 -1
- package/lib/src/core/reducers/visibility.d.ts.map +1 -1
- package/lib/src/core/reducers/visibility.js +69 -19
- package/lib/src/core/reducers/visibility.js.map +1 -1
- package/lib/src/core/test/junitMocks.d.ts +1322 -0
- package/lib/src/core/test/junitMocks.d.ts.map +1 -1
- package/lib/src/core/test/junitMocks.js +32 -51
- package/lib/src/core/test/junitMocks.js.map +1 -1
- package/lib/src/core/utils/condition-utils.d.ts +1 -1
- package/lib/src/core/utils/condition-utils.d.ts.map +1 -1
- package/lib/src/core/utils/condition-utils.js +5 -3
- package/lib/src/core/utils/condition-utils.js.map +1 -1
- package/lib/src/core/utils/util.d.ts +58 -9
- package/lib/src/core/utils/util.d.ts.map +1 -1
- package/lib/src/core/utils/util.js +151 -18
- package/lib/src/core/utils/util.js.map +1 -1
- package/lib/types/ApiContext.types.d.ts +69 -7
- package/lib/types/ApiContext.types.d.ts.map +1 -1
- package/lib/types/ApiContext.types.js.map +1 -1
- package/lib/types/Meta.types.d.ts +153 -11
- package/lib/types/Meta.types.d.ts.map +1 -1
- package/lib/types/Meta.types.js +7 -1
- package/lib/types/Meta.types.js.map +1 -1
- package/lib/types/RsCoreBootArgs.types.d.ts +11 -13
- package/lib/types/RsCoreBootArgs.types.d.ts.map +1 -1
- package/lib/types/RsCoreBootArgs.types.js.map +1 -1
- package/lib/types/State.types.d.ts +32 -30
- package/lib/types/State.types.d.ts.map +1 -1
- package/lib/types/State.types.js.map +1 -1
- package/lib/types.d.ts +10 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +6 -8
- package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts +0 -12
- package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/edit.js +0 -94
- package/lib/src/core/features/uIFeatures/beforeRender/edit.js.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts +0 -12
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts.map +0 -1
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js +0 -51
- package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js.map +0 -1
- package/lib/src/core/reducers/edit.d.ts.map +0 -1
- package/lib/src/core/reducers/edit.js +0 -65
- package/lib/src/core/reducers/edit.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/core/utils/util.ts"],"names":[],"mappings":"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","sourcesContent":["import fastDeepEqual from 'fast-deep-equal/es6';\n\nimport {\n splitConditionTree,\n type Condition,\n type LeafCondition\n} from '@pega/cosmos-react-condition-builder';\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport { filterParams, comparatorMap, type FilterConfig } from '../config/filterConfig';\nimport {\n EXTERNAL_FILTERS,\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n rowErrorColumnMeta,\n rowSelectColumnMeta,\n SELECTION_MODES,\n TEMPLATES\n} from '../constants';\nimport ActionTypes, { type ActionType } from '../actions/actionConstants';\nimport type View from '../generators/ViewGenerator';\nimport type { State, Group, Personalization, CustomField } from '../../../types/State.types';\nimport type { Action, PaginateAction, PaginationPayload } from '../actions/actions.types';\nimport type { FieldDef, Meta, StyleFormat } from '../../../types/Meta.types';\nimport type {\n SupportedConsumerPayloads,\n SupportedConsumerActionType,\n RefreshNotificationForConsumer\n} from '../generators/viewUtilityMethods';\nimport type { DefaultConfigType } from '../config/config';\nimport type { RowData } from '../generators/RowGenerator.types';\nimport type Column from '../generators/ColumnGenerator';\nimport type RsInternal from '../RsInternal';\n\nimport type {\n FeatureMap,\n FilterInfo,\n FilterInitializers,\n AddFilterParams,\n GenericObject,\n DefaultConfigKeys,\n DefaultFieldDefKeys,\n PassablePromise,\n DeepNonNullableArray,\n MemoizedFunctionParameters,\n FunctionToBeMemoized,\n MemoizedFunction\n} from './util.types';\nimport evaluateConditionLocally from './condition-utils';\n\nexport const EXCLUDED_NUMERIC_TYPES = ['Currency'];\nexport const OOTB_COLUMNS = [\n rowDragDropColumnMeta.field.id,\n rowErrorColumnMeta.field.id,\n rowActionColumnMeta.field.id,\n rowSelectColumnMeta.field.id\n];\n\nconst groupBySeparator = '||'; // To avoid any ambiguities\n\n/**\n * Creates an object mapping for each property in `propertiesArr` to a boolean flag indicating whether the feature is enabled.\n * The flag is derived from `fieldDefs`.\n * The flag is `true` if in any `fieldDef` the value of the property is true; otherwise, it is `false`.\n * @param propertiesArr Array of features which needs to be checked in the fieldDefs\n * @param fieldDefs Array of {@link FieldDef}.\n * @returns An object containing the key as feature from `propertiesArr` and value as boolean indicating the feature is enabled or not.\n */\nfunction getEnabledFeatures(propertiesArr: (keyof FieldDef)[], fieldDefs: FieldDef[]): FeatureMap {\n const featuresMap = {} as FeatureMap;\n propertiesArr.forEach(prop => {\n for (const element of fieldDefs) {\n const value = element[prop];\n if (value) {\n featuresMap[prop] = true;\n break;\n }\n }\n });\n return featuresMap;\n}\n\n/**\n * Memoizes a function, returning a memoized version that caches the result based on dependencies.\n *\n * The memoized function accepts two arguments: [arguments], [dependencies].\n * If dependencies are not provided explicitly, arguments are defaulted to dependencies.\n * If a compare function is passed as the last argument, it decides whether to return a memoized value or not.\n *\n * @param fn - The function to memoize.\n * @returns The memoized function.\n */\nexport function withMemoization<P extends any[], R>(\n fn: FunctionToBeMemoized<P, R>\n): MemoizedFunction<P, R> {\n let value: R;\n let before: any[];\n const sameAsBefore = (v: any, index: number) => {\n return v === before[index];\n };\n return function inner(\n this: ThisParameterType<FunctionToBeMemoized<P, R>>,\n ...args: MemoizedFunctionParameters<P>\n ) {\n // accepts two arguments ([arguments], [dependencies])\n // if dependencies are not provided explicitly, arguments are defaulted to dependencies\n const deps = args && (args[1] && typeof args[1] !== 'function' ? [...args[1]] : [...args[0]]);\n\n // if compare function is passed through, that will decide whether return a memoized value or not.\n const compareFunc = args && args[args.length - 1];\n if (compareFunc && typeof compareFunc === 'function') {\n if (!before || !compareFunc(before, deps)) value = fn.apply(this, [args[0]]);\n before = deps;\n } else if ((!deps || !deps.length) && !before) {\n before = [];\n value = fn.apply(this, [args[0]]);\n } else if (!before || deps.length !== before.length || !deps.every(sameAsBefore)) {\n before = deps;\n value = fn.apply(this, [args[0]]);\n }\n return value;\n };\n}\n\n/**\n * Picks specific properties from an object and returns a new object containing only those properties.\n * If the object is null or undefined, it returns undefined.\n *\n * @param obj - The source object from which properties are picked.\n * @param props - An array of property names to be picked from the object.\n * @returns A new object with only the picked properties, or `undefined` if the source object is null or undefined.\n */\nexport function pickProperties<T extends object, K extends keyof T>(\n obj: T | null | undefined,\n props: K[]\n): Pick<T, K> | undefined {\n if (!obj) {\n return undefined;\n }\n\n return props.reduce(\n (accumulator, prop) => {\n if (obj[prop] !== undefined) {\n accumulator[prop] = obj[prop];\n }\n return accumulator;\n },\n {} as Pick<T, K>\n );\n}\n\n// Storing the caching at module level so that all consumers of this function will get the cached values.\n// Since this function attaches the element on the document, it's assumed that the scrollbars styling is same on the document.\nlet previousWindowHeight = window.innerHeight;\nlet previousWindowWidth = window.innerWidth;\nlet cachedScrollBarWidth: number;\n/**\n * Returns the scrollbar width for a given browser/application.\n * @returns The scrollbar width in number.\n */\nexport function getScrollbarWidth(): number {\n if (\n previousWindowHeight === window.innerHeight &&\n previousWindowWidth === window.innerWidth &&\n cachedScrollBarWidth\n ) {\n return cachedScrollBarWidth;\n }\n\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode?.removeChild(outer);\n\n previousWindowHeight = window.innerHeight;\n previousWindowWidth = window.innerWidth;\n\n cachedScrollBarWidth = scrollbarWidth;\n return scrollbarWidth;\n}\n\n/**\n * Performs a deep comparison between two values to determine if they are equal.\n * A wrapper on fast-deep-equal\n *\n * @param x - First item to compare\n * @param y - Second item to compare\n * @returns Deep comparison result\n */\nexport function deepEqual(x: any, y: any): boolean {\n return fastDeepEqual(x, y);\n}\n\n/**\n * Creates a deep copy of an object or array.\n *\n * This function recursively copies all properties and elements from the source object or array to a new object or array.\n *\n * @param oldObj - The object or array to be copied.\n * @returns A deep copy of the input object or array.\n */\nexport function deepCopy<T>(oldObj: T): T {\n let newObj = oldObj;\n if (oldObj && typeof oldObj === 'object') {\n newObj = Array.isArray(oldObj) ? ([] as unknown as T) : ({} as T);\n Object.keys(oldObj).forEach(i => {\n (newObj as any)[i] = deepCopy((oldObj as any)[i]);\n });\n }\n return newObj;\n}\n\n/**\n * Checks if the provided value is a function.\n *\n * @param obj - The value to be checked.\n * @returns `true` if the value is a function, `false` otherwise.\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/**\n * Checks if the provided value is a plain object.\n *\n * This function returns `true` if the value is an object that is not a function or an array.\n *\n * @param obj - The value to be checked.\n * @returns - `true` if the value is a plain object, `false` otherwise.\n */\nexport function isObject(obj: unknown): boolean {\n return obj === Object(obj) && !(isFunction(obj) || Array.isArray(obj));\n}\n\n/**\n * Checks if the provided value is empty.\n *\n * The value is considered empty if it is:\n * - `null` or `undefined`\n * - An array or string with length 0\n * - An object with no own properties.\n *\n * @param value - The value to be checked.\n * @returns - `true` if the value is empty, `false` otherwise.\n */\nexport function isEmpty(value: any): boolean {\n return (\n // null or undefined\n value === null ||\n value === undefined ||\n ((Array.isArray(value) || typeof value === 'string') && value.length === 0) ||\n // is an Object and has no keys\n (value.constructor === Object && Object.keys(value).length === 0)\n );\n}\n\n/**\n * Removes empty values from an array.\n *\n * This function recursively filters out empty values from the array. Empty values include:\n * - `null` or `undefined`\n * - Empty strings or arrays\n * - Empty objects\n *\n * @param arr - The array on which the empty values needs to be removed.\n * @returns - A new array with empty values removed.\n */\nexport function removeEmptyValues<T>(arr: T[]): DeepNonNullableArray<T>[] {\n return arr\n .map(item => (Array.isArray(item) ? removeEmptyValues(item) : item))\n .filter(\n t => (Array.isArray(t) && t.length) || (!Array.isArray(t) && t)\n ) as DeepNonNullableArray<T>[];\n}\n\n/* Start : APIs specific to condition builder */\n\n/**\n * Retrieves an array of fields on which a filter is applied. If a comparator is provided, the function returns only the fields that have the specified comparator applied in the `filterExpression`.\n *\n * @param params - The parameters for the method.\n * @param params.filterExpression - The filter expression used to determine which fields are included. For more details, see {@link State.filterExpression}.\n * @param [params.comparator=null] - An optional comparator. If provided, the function will filter fields that have this comparator in the filter expression.\n *\n * @returns An array of field names on which the filter is applied. If a comparator is specified, it returns only the fields that use that comparator.\n */\nexport function getFilters({ filterExpression, comparator = null }: FilterInfo): string[] {\n const filters: string[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key].lhs.field);\n }\n } else {\n filters.push(conditions[key].lhs.field);\n }\n });\n return filters;\n}\n\n/**\n * Retrieves all filter conditions from the provided `filterExpression`. If a `comparator` is provided,\n * only the filter conditions that match the given comparator will be collected.\n *\n * @param params Method arguments object.\n * @param params.filterExpression The filterExpression.\n * @param params.comparator An optional comparator to filter conditions by. If not provided, all conditions will be collected.\n *\n * @returns An array of filter conditions that match the specified criteria.\n */\nexport function getFilterConditions({ filterExpression, comparator = null }: FilterInfo) {\n const filters: LeafCondition[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key]);\n }\n } else {\n filters.push(conditions[key]);\n }\n });\n return filters;\n}\n\n/**\n Retrieves the filter properties for a specified column from the {@link State.filterExpression filterExpression} state as an array.\n * The returned array includes:\n * - The input values associated with the filter for the specified column.\n * - The comparator configured for the filter of that column.\n * - The leaf condition for that column within the {@link State.filterExpression filterExpression}.\n * - The entire {@link State.filterExpression filterExpression} object from the state.\n * @param column The column for which filter information is to be retrieved.\n */\n// returning filter initializer values for any type of filter\nexport function getFilterInitializers(column: Column): FilterInitializers | [] {\n if (!column) return [];\n const filterExpression = column?.getFilterProperties()?.filterExpression!;\n const filters = getFilterConditions({ filterExpression });\n const filter = filters.find(f => f.lhs?.field === column.field.name);\n const fInput = filter\n ? (\n filter.rhs as {\n value: string | number;\n }\n )?.value || (filter.rhs as { values: string[] | number[] })?.values\n : [];\n const fValue = filter\n ? (Object.keys(comparatorMap) as (keyof FilterConfig['comparatorMap'])[]).find(\n key => comparatorMap[key] === filter.comparator\n )\n : null;\n return [fInput, fValue, filter, filterExpression];\n}\n\n/**\n * Determines if filter is applied on the given `column` in the given `filterExpression`.\n * @param column\n * @param filterExpression\n * @returns true if filter is applied; otherwise false.\n */\nexport function isFilterApplied(column: Column, filterExpression: Condition): boolean {\n if (!column.field.id) {\n return false;\n }\n\n const fields = getFilters({\n filterExpression\n });\n return fields.includes(column.field.name);\n}\n\n/* AND condition with filter expression */\n/**\n * Prepares a filter expression for a given `column`, `comparator`, and `input`.\n * Returns the same filter expression or appends it to the given `filterExpression`.\n *\n * @param param - Method argument object.\n * @param param.filterExpression - Existing filter expression to which the new condition may be appended.\n * @param param.column - Column on which the filter is to be applied.\n * @param param.comparator - Comparator for the filter expression (e.g., equals, greater than).\n * @param param.input - List of possible values for the column on which the filter expression should be prepared. It can be a single value, an array of values, or null.\n * @returns A new filter expression or the modified existing filter expression. Returns null if the input is invalid based on the comparator.\n */\nexport function addFilter({\n filterExpression,\n column,\n comparator,\n input\n}: AddFilterParams): Condition | null {\n const filter: { condition: LeafCondition } = {} as { condition: LeafCondition };\n\n // We might need to refactor the way we are managing filters with comparators\n // Comparator needs to categorized based on no of operand and type of operand it needs\n // Making this fix to resolve BUG-640981\n if (\n (input === '' ||\n input === undefined ||\n input === null ||\n Number.isNaN(input) ||\n (Array.isArray(input) && !input.length)) &&\n comparator !== comparatorMap.isNull &&\n comparator !== comparatorMap.isNotNull &&\n comparator !== comparatorMap.isTrue &&\n comparator !== comparatorMap.isFalse\n ) {\n return null;\n }\n\n if (input === null || input === undefined) {\n filter.condition = {\n comparator,\n lhs: { field: column.field.name }\n };\n } else {\n const rhsFieldName = Array.isArray(input) ? 'values' : 'value';\n filter.condition = {\n comparator,\n lhs: { field: column.field.name },\n rhs: { [rhsFieldName]: input } as { value: string | number } | { values: string[] | number[] }\n };\n }\n\n /* if filter expression has conditions or operators */\n if (filterExpression && Object.keys(filterExpression).length > 0) {\n return { AND: [filter, filterExpression] };\n }\n return filter;\n}\n\n/* End : APIs specific to condition builder */\n\n/**\n * Retrieves the visible fields in the current view by considering the hidden columns state.\n * This function also accounts for columns from custom fields that are visible.\n *\n * @param fieldDefs - The {@link Meta.fieldDefs fieldDefs}.\n * @param hiddenColumns - The list of {@link State.hiddenColumns hiddenColumns}.\n * @param customFields - The {@link State.customFields customFields}.\n * @returns The list of visible fields.\n */\nexport const getVisibileFields = (\n fieldDefs: FieldDef[] = [],\n hiddenColumns: State['hiddenColumns'] = [],\n customFields: State['customFields'] = []\n): FieldDef[] => {\n const fieldMap = fieldDefs.reduce<{ [key: string]: FieldDef }>((acc, field) => {\n acc[field.id] = field;\n return acc;\n }, {});\n const visibleFields = fieldDefs.filter(({ id }) => !hiddenColumns.includes(id));\n const fieldIdsFromCustomField = (customField: CustomField): string[] =>\n customField?.expression.filter(item => !Array.isArray(item)) as string[]; // taking all non template items\n const visibleUnderCustomFields = [\n ...new Set(\n customFields\n .filter(({ id }) => !hiddenColumns.includes(id)) // Only visible custom fields\n .map(field => fieldIdsFromCustomField(field))\n .flat() // flat the multiple custom field fieldIds\n ) // Getting unique fieldIds\n ]\n .filter(fieldId => hiddenColumns.includes(fieldId)) // taking only, which are hidden in state to avoid duplicates\n .map(fieldId => fieldMap[fieldId]);\n return [...visibleFields, ...visibleUnderCustomFields];\n};\n\n/**\n * Retrieves the data of the closest row to the `targetElement` from the view {@link View.data data}.\n *\n * This function is useful for scenarios where you need to determine the row data related to a specific DOM element.\n * It searches through the provided data and pagination options to find the row that is closest to the given target element.\n *\n * @param data - The data of the view containing all row entries.\n * @param paginationOptions - The {@link State.paginationOptions pagination options}\n * @param targetElement - The target element for which the closest row data is required.\n *\n * @returns - The data of the closest row element to the target element.\n */\nexport const getRowContextData = (\n data: RowData[],\n paginationOptions: NonNullable<State['paginationOptions']>,\n targetElement: HTMLElement\n): RowData => {\n // get nearest row to target element.\n const row = targetElement.closest('[role=\"row\"]');\n // use aria-rowindex as data-index is added for group header as well\n // which is misaligned with the data object indexes.\n const ariaRowIndex = Number(row?.getAttribute('aria-rowindex')) - 1;\n\n // get starting index in pagination option\n // TODO why reduce is required with initial value as null. This can be refactored.\n const offset = Object.values(paginationOptions).reduce<null | number>((acc, { startIndex }) => {\n if (acc === null || acc < startIndex) {\n return startIndex;\n }\n return acc;\n }, null);\n return data[ariaRowIndex - offset!];\n};\n\n/**\n * Compares two objects to determine if they are equal based on the specified properties.\n * If no properties are specified, it compares all properties.\n *\n * @param t1 - The first object to compare.\n * @param t2 - The second object to compare.\n * @param props - An optional array of property names to compare. If null, all properties are compared.\n * @returns A boolean indicating whether the objects are equal.\n */\nexport function compareObjects<T extends { [key in keyof T]: unknown }>(\n t1: T,\n t2: T,\n props: (keyof T)[] | null = null\n): boolean {\n if (!props && Object.keys(t1).length !== Object.keys(t2).length) return false;\n return (props || Object.keys(t1)).every(k => {\n const key = k as keyof T;\n const ty1 = Object.prototype.toString.call(t1[key]);\n const ty2 = Object.prototype.toString.call(t2[key]);\n if (ty1 !== ty2) return false;\n\n if (ty1 === '[object Array]')\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return compareArray(t1[key] as unknown[], t2[key] as unknown[], null);\n if (ty1 === '[object Object]') return compareObjects(t1[key], t2[key], null);\n return t2[key] === t1[key];\n });\n}\n\n/**\n * Compares two arrays for equality, considering nested arrays and objects.\n * If both arrays are equal, it returns true; otherwise, it returns false.\n *\n * @param t1 - The first array to compare.\n * @param t2 - The second array to compare.\n * @param props - Additional properties for comparison (currently unused).\n * @returns `true` if the arrays are equal, `false` otherwise.\n */\n// TODO props is never used.\nexport function compareArray<T extends unknown>(t1: T[], t2: T[], props = null): boolean {\n if (t1 === t2) return true;\n if (t1?.length !== t2?.length) return false;\n return t1?.every((val, i) => {\n const ty1 = Object.prototype.toString.call(val);\n const ty2 = Object.prototype.toString.call(t2?.[i]);\n if (ty1 === ty2) {\n if (ty1 === '[object Array]') return compareArray(val as any[], t2?.[i] as any[], props);\n if (ty1 === '[object Object]') return compareObjects(val, t2?.[i], props);\n return val === t2?.[i];\n }\n return false;\n });\n}\n\n/**\n * calculates the hash for the given string\n * @param string for which hash to be calculated\n * @returns calculated hash\n */\nexport function generateHash(string: string): number {\n let hash = 0;\n for (let charIdx = 0; charIdx < string.length; charIdx += 1) {\n // eslint-disable-next-line no-bitwise\n hash = (Math.imul(31, hash) + string.charCodeAt(charIdx)) | 0;\n }\n return hash;\n}\n\n/**\n * Updates the Meta settings based on the provided field definitions and default configuration.\n *\n * This function performs the following operations:\n *\n * - Computes the value for feature flags such as {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}\n * based on the values in `FieldDef`. If any of the `FieldDef` entries have the flag enabled, the flag is enabled for `Meta` as well.\n * - Sets the {@link Meta.locale locale} in `Meta` from the document's language attribute.\n * - Sets the values of other keys in `Meta` using {@link defaultConfig}, if they are not already set.\n *\n * @param meta - The RS meta object.\n * @param defaultConfig - The default configuration object used to set default values in `Meta`.\n */\nfunction updateMetaSettings(meta: Meta, defaultConfig: DefaultConfigType): void {\n // Deduce freezeField global setting from within the fields\n const featureMap = getEnabledFeatures(['freeze', 'editable'], meta.fieldDefs);\n if (featureMap.freeze) {\n meta.freezeFields = true;\n }\n\n if (featureMap.editable) {\n meta.editable = true;\n }\n\n // Setting locale value for localisation\n if (!meta.locale) {\n const htmlLang = document.documentElement.lang;\n meta.locale = htmlLang.split('-')[1] ? htmlLang : defaultConfig.locale;\n }\n const properties: DefaultConfigKeys[] = Object.keys(defaultConfig) as DefaultConfigKeys[];\n properties.forEach(key => {\n if (meta[key] === undefined || meta[key] === null) {\n // is null check required or consumers want that?\n // @ts-expect-error\n meta[key] = defaultConfig[key];\n }\n });\n}\n\n/**\n * Normalizes the {@link FieldDef} with {@link defaultFieldDef defaultFieldDef config} if not already set.\n *\n * @param field The fieldDef object\n * @param defaultFieldDef The default config of the FieldDef.\n *\n * @returns The normalized fieldDef object with the updated configurations.\n */\nexport function normalizeFieldDef(\n field: FieldDef,\n defaultFieldDef: NonNullable<DefaultConfigType['defaultFieldDef']>\n): void {\n const properties: DefaultFieldDefKeys[] = Object.keys(defaultFieldDef) as DefaultFieldDefKeys[];\n field.idHash = generateHash(field.id);\n\n properties.forEach((prop: DefaultFieldDefKeys) => {\n // @ts-expect-error Type 'number | boolean' is not assignable to type 'undefined'. Type 'number' is not assignable to type 'undefined'. Check this.\n field[prop] = field[prop] ?? defaultFieldDef[prop];\n if (prop === 'autosize' && field.width) {\n field[prop] = false;\n }\n });\n\n // Assign filters to each field based on their types\n if (field.filterPickList) {\n field.filterParams = structuredClone(filterParams.pickList);\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n } else if (field.type in filterParams && filterParams[field.type]) {\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n field.filterParams = structuredClone(filterParams[field.type]);\n } else {\n field.filterParams = undefined;\n }\n}\n\n/**\n * Normalizes the RS meta with the {@link defaultConfig default configuration} if not already set:\n * - Updates the {@link Meta.minheight minHeight} option from the {@link defaultConfig}.\n * - Adds a comparatorMap to the meta.\n * - Updates keys of individual FieldDef with {@link DefaultConfigType.defaultFieldDef defaultFieldDef} from {@link defaultConfig}.\n * - Enables/Disables feature flags (e.g. {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}) in RS meta by considering the values of feature flags from fieldDef or its values in defaultConfig.\n *\n * @param _meta - The RS meta object.\n * @param defaultConfig - The default configuration object containing the default settings to be used.\n * @returns The normalized RS meta object with the updated configurations.\n */\nexport function normalizeMeta(\n _meta: Meta & { isPreset?: boolean },\n defaultConfig: DefaultConfigType\n): Meta {\n const { height, ...restMeta } = _meta;\n const meta = deepCopy<Meta>(restMeta);\n meta.height = { ...height };\n meta.comparatorMap = comparatorMap;\n meta.height.minHeight = meta.height.minHeight ?? defaultConfig.height.minHeight;\n meta.defaultFieldDef = { ...defaultConfig.defaultFieldDef, ...meta.defaultFieldDef };\n\n // Handle if fieldDefs is null or undefined\n meta.fieldDefs = meta.fieldDefs ?? [];\n meta.fieldDefs.forEach((column: FieldDef) => {\n normalizeFieldDef(column, meta.defaultFieldDef!);\n });\n updateMetaSettings(meta, defaultConfig);\n return meta;\n}\n\n/**\n * Removes entries from the given object that have null, undefined, or empty object as values.\n * This function mutates the original object by deleting properties that are either null, undefined,\n * or objects with does not have own properties.\n *\n * @param obj - The object from which empty entries should be removed.\n * @returns void\n */\nexport function removeEmptyValuesFromObject(obj: GenericObject): void {\n if (!obj) return;\n const propNames = Object.getOwnPropertyNames(obj);\n for (const element of propNames) {\n const propName = element;\n if (\n obj[propName] === null ||\n obj[propName] === undefined ||\n !Object.keys(obj[propName] as GenericObject).length\n ) {\n delete obj[propName];\n }\n }\n}\n\n/**\n * Retrieves the scrollable element of the virtualizer, i.e. parent container.\n * from the {@link View.virtualizeElements virtualizeElements} property of the provided {@link view} and,\n * if available, returns the parent container of the root virtualizer.\n * @param view The {@link View} object.\n * @returns The scrollable element, if it exists. Otherwise, returns undefined.\n */\nexport const getScrollerElem = (view: View): HTMLElement | undefined => {\n const { virtualizeElements } = view;\n let scrollerElem;\n if (virtualizeElements && !isEmpty(virtualizeElements?.rootVirtualiser)) {\n scrollerElem = virtualizeElements?.rootVirtualiser?.getParentContainer?.();\n }\n return scrollerElem;\n};\n\nexport const dateFunctionLabels = {\n YEARS: 'Year',\n QUARTERS: 'Quarter',\n MONTHS: 'Month',\n WEEKS: 'Week',\n DAYS: 'Day',\n HOURS: 'Hour',\n MINUTES: 'Minute',\n MONTHS_OF_YEAR: 'Month of year',\n DAYS_OF_MONTH: 'Day of month',\n DAYS_OF_WEEK: 'Day of week',\n HOURS_OF_DAY: 'Hour of day'\n};\n\n/**\n * Retrieves the valid externalState keys from RS {@link Meta}.\n *\n * Supported external state keys:\n * - Value of {@link Meta.externalFilters externalFilters} in Meta.\n *\n * @param tableMeta RS Meta\n * @returns Array of valid externalState keys.\n */\nexport function getExternalStateKeys(tableMeta: Meta): string[] {\n const externalStateKeys: string[] = [];\n if (tableMeta[EXTERNAL_FILTERS]) {\n externalStateKeys.push(tableMeta[EXTERNAL_FILTERS]);\n }\n return externalStateKeys;\n}\n\n/**\n * Validates the payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n *\n * @param payload The payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n * @param externalStateKeys An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nfunction validateExternalStateAction(\n payload: NonNullable<State['externalState']>,\n externalStateKeys?: string[]\n): void {\n if (!isObject(payload)) {\n throw Error(\n `payload for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should be of object type only.`\n );\n }\n const payloadKeys = Object.keys(payload);\n if (payloadKeys.length !== 1) {\n throw Error(\n `payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should contain exactly one key.`\n );\n }\n if (!externalStateKeys?.includes(payloadKeys[0])) {\n throw Error(\n `The key '${payloadKeys[0]}' in the payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} is invalid.`\n );\n }\n}\n\nconst validateRefreshNotificationAction = (payload: RefreshNotificationForConsumer) => {\n const isValidPayload =\n isObject(payload) && hasProp(payload, 'message') && hasProp(payload, 'refreshActionLabel');\n\n if (!isValidPayload) {\n throw Error(\n `payload for action ${ActionTypes.NOTIFY_DATA_REFRESH} should be an object with 'message' and 'refreshActionLabel' properties.`\n );\n }\n};\n\n/**\n * Validates an action by ensuring that the provided payload is supported for the given action type.\n * This function checks if the action and payload match the supported actions.\n *\n * @param action - The action to be validated.\n * @param payload - The payload associated with the action. The payload must confirm to the expected structure for the given action.\n * @param externalStateKeys - An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nexport function validateAction<T extends SupportedConsumerActionType>(\n action: T,\n payload?: SupportedConsumerPayloads[T],\n externalStateKeys?: string[]\n): void {\n switch (action) {\n case ActionTypes.UPDATE_DEBUG_INFO:\n case ActionTypes.TOGGLE_REQUIRED:\n case ActionTypes.USER_CONFIRMATION_ACTION:\n if (!isObject(payload)) {\n throw Error(`payload for action ${action} should be of object type only!`);\n }\n break;\n\n case ActionTypes.TOGGLE_DISABLE_SELECTION:\n if (typeof payload !== 'boolean')\n throw Error(`payload for action ${action} should be of type boolean only!`);\n break;\n case ActionTypes.NOTIFY_DATA_REFRESH:\n validateRefreshNotificationAction(payload as RefreshNotificationForConsumer);\n break;\n case ActionTypes.UPDATE_SELECTED_ROWS:\n if (typeof payload !== 'undefined') {\n throw Error(`No payload is required for action ${action}`);\n }\n break;\n case ActionTypes.SET_IN_EXTERNAL_STATE:\n validateExternalStateAction(\n payload as NonNullable<State['externalState']>,\n externalStateKeys\n );\n break;\n default:\n throw Error(`Action ${action} is not supported!`);\n }\n}\n\n/**\n * Retrieves the default preset ID from all personalizations.\n * @param stateAllPersonalization\n * @returns The id of the default preset if found, otherwise `undefined`.\n */\nexport function getDefaultPresetIdFromStatePersonalisation(\n stateAllPersonalization: Personalization['allPersonalizations'] = {}\n): string | undefined {\n return Object.keys(stateAllPersonalization).find(\n item => stateAllPersonalization[item].isDefaultPreset\n );\n}\n\n/** Determines if the given {@link array} contains any duplicate elements.\n * @param array The array to be checked for duplicate elements.\n * @returns Returns `true` if duplicates are found, otherwise returns `false`.\n */\nexport function hasDuplicates<T>(array?: T[]): boolean {\n return !!(array && new Set<T>(array).size !== array.length);\n}\n\n/**\n * Creates a passable promise, which is an array containing a promise object, and its corresponding resolve and reject functions.\n *\n * @returns An array where:\n * - The first element is the created promise.\n * - The second element is the resolve function for the promise.\n * - The third element is the reject function for the promise.\n */\nexport function passablePromise<T>(): PassablePromise<T> {\n let resolveRef!: PassablePromise<T>[1];\n let rejectRef!: PassablePromise<T>[2];\n const promise = new Promise<T>((resolve, reject) => {\n resolveRef = resolve;\n rejectRef = reject;\n });\n return [promise, resolveRef, rejectRef];\n}\n\n/**\n * Logs the given {@link cleanedUpFieldIds invalid column ids} to console as warning.\n * @param cleanedUpFieldIds invalid column ids.\n *\n */\nexport function logInvalidFields(cleanedUpFieldIds: string[]): void {\n // eslint-disable-next-line no-console\n if (cleanedUpFieldIds.length !== 0 && console?.warn) {\n // eslint-disable-next-line no-console\n console.warn(\n `Columns with following id are not found. \\n ${[...new Set(cleanedUpFieldIds)].join(\n ', '\n )}\\n Resulting outcome might not be correct. Please check the configuration.`\n );\n }\n}\n\n/**\n * Determines if the filter criteria has changed in the latest state compared to the previous state.\n *\n * This function checks the following state keys to determine changes:\n * - {@link State.filterExpression filterExpression}\n * - {@link State.search search}\n * - The value of {@link Meta.externalFilters external filters} in {@link State.externalState externalState}\n *\n * @param meta - The RS meta object.\n * @param previousState - The previous state object to compare against.\n * @param latestState - The latest state object to check for changes.\n * @returns Returns true if the filter criteria has changed; otherwise, returns false.\n */\nexport function isFilterCriteriaChanged(\n meta: Meta,\n previousState: State,\n latestState: State\n): boolean {\n const { filterExpression, search: { query } = {}, externalState } = latestState;\n const {\n filterExpression: previousFilterExpression,\n search: { query: previousQuery } = {},\n externalState: previousExternalState\n } = previousState;\n\n const searchChanged = () => query !== previousQuery;\n const filterExpressionChanged = () => !deepEqual(previousFilterExpression, filterExpression);\n const externalFilterChanged = () =>\n meta?.externalFilters &&\n !deepEqual(\n previousExternalState?.[meta?.externalFilters],\n externalState?.[meta?.externalFilters]\n );\n\n return !!(searchChanged() || filterExpressionChanged() || externalFilterChanged());\n}\n\n/**\n * Calculates the overlapping area from given {@link previousIndexes} and {@link newIndexes}.\n * @param previousIndexes\n * @param newIndexes\n * @returns A number indicating the overlapping area.\n */\nexport function getOverlappingIndexes(\n previousIndexes: PaginationPayload = {} as PaginationPayload,\n newIndexes: PaginationPayload = {} as PaginationPayload\n): number {\n const { startIndex: previousStartIndex, endIndex: previousEndIndex } = previousIndexes;\n const { startIndex: latestStartIndex, endIndex: latestEndIndex } = newIndexes;\n\n if (previousEndIndex < latestStartIndex || latestEndIndex < previousStartIndex) {\n return 0;\n }\n\n const overlapStartIndex = Math.max(previousStartIndex, latestStartIndex);\n const overlapEndIndex = Math.min(previousEndIndex, latestEndIndex);\n const overlapArea = overlapEndIndex - overlapStartIndex;\n\n if (overlapArea <= 0) {\n return 0;\n }\n\n return overlapArea;\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @param action\n * @param latestActions\n * @returns true if the {@link action} exists in the {@link latestActions} otherwise false.\n */\n// TODO This is some what same as isStaleAction. Revisit both the methods.\nexport function isSameActionPresent(\n action: Action,\n latestActions: Map<ActionType, Action>\n): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Removes actions from the {@link latestActions} that have already been executed and are present in the {@link executedActionsQueue}.\n * This function ensures that only pending actions remain in the {@link latestActions}.\n * @param latestActions\n * @param executedActionsQueue\n */\nexport function clearProcessedActionsFromLatestActions(\n latestActions: Map<ActionType, Action>,\n executedActionsQueue: Action[]\n): void {\n executedActionsQueue.forEach(executedAction => {\n if (isSameActionPresent(executedAction, latestActions)) {\n latestActions.delete(executedAction.type);\n }\n });\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @returns\n * - false if {@link action} does not already exists.\n * - false if {@link action} already exists and payload matches\n * - true if {@link action} already exists but payload does not match.\n */\n// TODO revisit this method again. It is not checking only for stale actions.\nexport function isStaleAction(action: Action, latestActions: Map<ActionType, Action>): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n // TODO why ! is added in front of deepEqual. Ideally for an existing action if the payload is exactly same then it should be marked as stale.\n !deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Determines if the overlapping area of pagination indexes between the old and new pagination payloads in current queue is less than 50%.\n * This function helps determine if a significant portion of the pagination area has changed due to recent actions.\n *\n * For detailed usage and examples, refer [pagination-action-optimizations.md](../../../docs/pagination-action-optimizations.md).\n * @param latestActions - A map of the latest actions being executed in the queue, which may include pagination actions.\n * @param previousExecutedActionQueue - The queue of previously executed actions.\n * @returns Returns true if the overlapping area is less than 50%, otherwise returns false.\n */\nexport function isSignificantPaginationOverlap(\n latestActions: Map<ActionType, Action>,\n previousExecutedActionQueue: Action[]\n): boolean {\n const lastExecutedPaginationActionIndex = previousExecutedActionQueue\n .map(action => action.type)\n .lastIndexOf(ActionTypes.PAGINATE);\n if (!latestActions.has(ActionTypes.PAGINATE) || lastExecutedPaginationActionIndex < 0)\n return false;\n\n const lastExecutedPaginationPayload = (\n previousExecutedActionQueue[lastExecutedPaginationActionIndex] as PaginateAction\n ).payload;\n const latestPaginatePayload = (latestActions.get(ActionTypes.PAGINATE) as PaginateAction).payload;\n\n const overlappingIndexes = getOverlappingIndexes(\n lastExecutedPaginationPayload,\n latestPaginatePayload\n );\n const { startIndex, endIndex } = latestPaginatePayload;\n // if the api response matches at least 50% with the latest pagination size, we can use that to display some rows until the next set of rows arrive\n return !(overlappingIndexes >= (endIndex - startIndex) * 0.5);\n}\n\n/**\n * Returns a unique key for a given group.\n * @param {Group} group\n */\nexport const getGroupKey = (group: Group): string => {\n if (group.dateFunction) {\n return `${group.columnId}${groupBySeparator}${group.dateFunction}`;\n }\n\n if (group.customFunction) {\n return `${group.columnId}${groupBySeparator}${group.customFunction.type}${groupBySeparator}${group.customFunction.id}`;\n }\n return group.columnId;\n};\n\n/**\n * Returns {@link Group group information} from {@link Group groups} based on {@link groupBy} key\n * @param groupBy - unique key for a given group\n * @param groups - groups info from table state\n * @returns matched group\n */\nexport const getGroupFromKey = (groupBy: string, groups: State['groups']): Group | undefined => {\n return groups?.find(group => {\n return getGroupKey(group) === groupBy;\n });\n};\n\n/**\n * Checks if the column widths have been calculated.\n *\n * @returns True if the column widths have been calculated; otherwise, false.\n */\nexport const areColumnWidthsCalculated = (columnWidths: State['columnWidths']): boolean => {\n if (!columnWidths || isEmpty(columnWidths)) return false;\n const keys = Object.keys(columnWidths);\n // TODO why only rowDragDropcolumn is excluded from OOTB columns set, why not other OOTB columns ?\n return !(keys.length === 1 && keys[0] === rowDragDropColumnMeta.field.id);\n};\n\n// TODO: temporary method, till meta.dragHandle is completely removed(currently deprecated).\nexport const isRowReorderFieldEnabled = (meta: Meta): boolean => {\n return meta.dragHandle || !!meta.rowReorderField;\n};\n\n// TODO: temporary method, till meta.showErrorField is completely removed(currently deprecated).\nexport const isRowErrorFieldEnabled = (meta: Meta): boolean => {\n return meta.showErrorField || !!meta.rowErrorField;\n};\n\n/**\n * Returns the {@link StyleFormat} for a given {@link styleFormatId} from {@link View.styleFormats}\n * @param styleFormatId\n * @param styleFormats\n * @returns StyleFormat or `undefined`\n */\nconst getStyleFormat = (\n styleFormatId: string,\n styleFormats: NonNullable<View['styleFormats']>\n): StyleFormat | undefined => {\n return styleFormats.find(styleFormat => styleFormat.id === styleFormatId);\n};\n\n/**\n * Evaluates the style format applicable to a cell based on {@link Column.getExecutionContext current execution context} and {@link Column.conditionalStyleFormats conditionalStyleFormats}\n * @param column Column on which styles need to be evaluated.\n * @param rsInternal RsInternal object\n * @returns - {@link StyleFormat} or `undefined\n */\nexport const evaluateStyleFormatForCell = (\n column: Column,\n rsInternal: RsInternal\n): StyleFormat | undefined => {\n const { conditionalStyleFormats } = column;\n const { getRsProps, getRsStateResolver, getView } = rsInternal;\n const { apiContext } = getRsProps();\n const { meta } = getView();\n const { getState } = getRsStateResolver();\n const data = column.getExecutionContext()?.getValue?.();\n\n if (!data || !conditionalStyleFormats) return;\n\n const firstMatchingStyleFormat = conditionalStyleFormats.find(({ condition }) =>\n apiContext.evaluateCondition\n ? apiContext.evaluateCondition(getState(), meta, { condition, data })\n : evaluateConditionLocally(meta, { condition, data })\n );\n\n return (\n firstMatchingStyleFormat &&\n getStyleFormat(firstMatchingStyleFormat.styleFormatId, column.parent.styleFormats!)\n );\n};\n\nexport const isRowSelectFieldEnabled = (meta: Meta): boolean => {\n const { selectionMode, template } = meta;\n return !!(\n selectionMode &&\n SELECTION_MODES[selectionMode] &&\n !(template === TEMPLATES.GALLERY && selectionMode === SELECTION_MODES.multi_on_hover) &&\n template !== TEMPLATES.TIMELINE\n );\n};\n\nexport const isFreezingEnabled = (meta: Meta): boolean => {\n return (\n meta.freezeFields ||\n isRowErrorFieldEnabled(meta) ||\n isRowReorderFieldEnabled(meta) ||\n isRowSelectFieldEnabled(meta)\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/core/utils/util.ts"],"names":[],"mappings":"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","sourcesContent":["import fastDeepEqual from 'fast-deep-equal/es6';\n\nimport {\n splitConditionTree,\n type Condition,\n type LeafCondition\n} from '@pega/cosmos-react-condition-builder';\nimport { hasProp, type ExcludeStrict } from '@pega/cosmos-react-core';\n\nimport { filterParams, comparatorMap, type FilterConfig } from '../config/filterConfig';\nimport {\n EXTERNAL_FILTERS,\n rowActionColumnMeta,\n rowDeleteColumnMeta,\n rowDragDropColumnMeta,\n rowErrorColumnMeta,\n rowSelectColumnMeta,\n SELECTION_MODES,\n TEMPLATES\n} from '../constants';\nimport ActionTypes, { type ActionType } from '../actions/actionConstants';\nimport type View from '../generators/ViewGenerator';\nimport type { State, Group, Personalization, CustomField } from '../../../types/State.types';\nimport type { Action, PaginateAction, PaginationPayload } from '../actions/actions.types';\nimport {\n FieldType,\n REPEATING_STRUCTURE_TEMPLATES,\n ActionColumnPlacement,\n type FieldDef,\n type Meta,\n type StyleFormat\n} from '../../../types/Meta.types';\nimport type {\n SupportedConsumerPayloads,\n SupportedConsumerActionType,\n RefreshNotificationForConsumer\n} from '../generators/viewUtilityMethods';\nimport type { DefaultConfigType } from '../config/config';\nimport type { RowData } from '../generators/RowGenerator.types';\nimport type Column from '../generators/ColumnGenerator';\nimport type RsInternal from '../RsInternal';\nimport defaultTranslations from '../defaultTranslations';\n\nimport evaluateConditionLocally from './condition-utils';\nimport type {\n FeatureMap,\n FilterInfo,\n FilterInitializers,\n AddFilterParams,\n GenericObject,\n DefaultConfigKeys,\n DefaultFieldDefKeys,\n PassablePromise,\n DeepNonNullableArray,\n MemoizedFunctionParameters,\n FunctionToBeMemoized,\n MemoizedFunction\n} from './util.types';\n\nexport const EXCLUDED_NUMERIC_TYPES = ['Currency'];\nexport const OOTB_COLUMNS = [\n rowDragDropColumnMeta.field.id,\n rowErrorColumnMeta.field.id,\n rowActionColumnMeta.field.id,\n rowSelectColumnMeta.field.id,\n rowDeleteColumnMeta.field.id\n];\n\nconst groupBySeparator = '||'; // To avoid any ambiguities\n\nconst UNSUPPORTED_OBJECT_TYPE_FIELD_ANALYTICAL_FEATURES = ['sort', 'filter', 'grouping'];\n\n/**\n * Creates an object mapping for each property in `propertiesArr` to a boolean flag indicating whether the feature is enabled.\n * The flag is derived from `fieldDefs`.\n * The flag is `true` if in any `fieldDef` the value of the property is true; otherwise, it is `false`.\n * @param propertiesArr Array of features which needs to be checked in the fieldDefs\n * @param fieldDefs Array of {@link FieldDef}.\n * @returns An object containing the key as feature from `propertiesArr` and value as boolean indicating the feature is enabled or not.\n */\nfunction getEnabledFeatures(propertiesArr: (keyof FieldDef)[], fieldDefs: FieldDef[]): FeatureMap {\n const featuresMap = {} as FeatureMap;\n propertiesArr.forEach(prop => {\n for (const element of fieldDefs) {\n const value = element[prop];\n if (value) {\n featuresMap[prop] = true;\n break;\n }\n }\n });\n return featuresMap;\n}\n\n/**\n * Memoizes a function, returning a memoized version that caches the result based on dependencies.\n *\n * The memoized function accepts two arguments: [arguments], [dependencies].\n * If dependencies are not provided explicitly, arguments are defaulted to dependencies.\n * If a compare function is passed as the last argument, it decides whether to return a memoized value or not.\n *\n * @param fn - The function to memoize.\n * @returns The memoized function.\n */\nexport function withMemoization<P extends any[], R>(\n fn: FunctionToBeMemoized<P, R>\n): MemoizedFunction<P, R> {\n let value: R;\n let before: any[];\n const sameAsBefore = (v: any, index: number) => {\n return v === before[index];\n };\n return function inner(\n this: ThisParameterType<FunctionToBeMemoized<P, R>>,\n ...args: MemoizedFunctionParameters<P>\n ) {\n // accepts two arguments ([arguments], [dependencies])\n // if dependencies are not provided explicitly, arguments are defaulted to dependencies\n const deps = args && (args[1] && typeof args[1] !== 'function' ? [...args[1]] : [...args[0]]);\n\n // if compare function is passed through, that will decide whether return a memoized value or not.\n const compareFunc = args && args[args.length - 1];\n if (compareFunc && typeof compareFunc === 'function') {\n if (!before || !compareFunc(before, deps)) value = fn.apply(this, [args[0]]);\n before = deps;\n } else if ((!deps || !deps.length) && !before) {\n before = [];\n value = fn.apply(this, [args[0]]);\n } else if (!before || deps.length !== before.length || !deps.every(sameAsBefore)) {\n before = deps;\n value = fn.apply(this, [args[0]]);\n }\n return value;\n };\n}\n\n/**\n * Picks specific properties from an object and returns a new object containing only those properties.\n * If the object is null or undefined, it returns undefined.\n *\n * @param obj - The source object from which properties are picked.\n * @param props - An array of property names to be picked from the object.\n * @returns A new object with only the picked properties, or `undefined` if the source object is null or undefined.\n */\nexport function pickProperties<T extends object, K extends keyof T>(\n obj: T | null | undefined,\n props: K[]\n): Pick<T, K> | undefined {\n if (!obj) {\n return undefined;\n }\n\n return props.reduce(\n (accumulator, prop) => {\n if (obj[prop] !== undefined) {\n accumulator[prop] = obj[prop];\n }\n return accumulator;\n },\n {} as Pick<T, K>\n );\n}\n\n// Storing the caching at module level so that all consumers of this function will get the cached values.\n// Since this function attaches the element on the document, it's assumed that the scrollbars styling is same on the document.\nlet previousWindowHeight = window.innerHeight;\nlet previousWindowWidth = window.innerWidth;\nlet cachedScrollBarWidth: number;\n\n/**\n * Returns the scrollbar width for a given browser/application.\n * @returns The scrollbar width in number.\n */\nexport function getScrollbarWidth(): number {\n if (\n previousWindowHeight === window.innerHeight &&\n previousWindowWidth === window.innerWidth &&\n cachedScrollBarWidth\n ) {\n return cachedScrollBarWidth;\n }\n\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode?.removeChild(outer);\n\n previousWindowHeight = window.innerHeight;\n previousWindowWidth = window.innerWidth;\n\n cachedScrollBarWidth = scrollbarWidth;\n return scrollbarWidth;\n}\n\n/**\n * Performs a deep comparison between two values to determine if they are equal.\n * A wrapper on fast-deep-equal\n *\n * @param x - First item to compare\n * @param y - Second item to compare\n * @returns Deep comparison result\n */\nexport function deepEqual(x: any, y: any): boolean {\n return fastDeepEqual(x, y);\n}\n\n/**\n * Creates a deep copy of an object or array.\n *\n * This function recursively copies all properties and elements from the source object or array to a new object or array.\n *\n * @param oldObj - The object or array to be copied.\n * @returns A deep copy of the input object or array.\n */\nexport function deepCopy<T>(oldObj: T): T {\n let newObj = oldObj;\n if (oldObj && typeof oldObj === 'object') {\n newObj = Array.isArray(oldObj) ? ([] as unknown as T) : ({} as T);\n Object.keys(oldObj).forEach(i => {\n (newObj as any)[i] = deepCopy((oldObj as any)[i]);\n });\n }\n return newObj;\n}\n\n/**\n * Checks if the provided value is a function.\n *\n * @param obj - The value to be checked.\n * @returns `true` if the value is a function, `false` otherwise.\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/**\n * Checks if the provided value is a plain object.\n *\n * This function returns `true` if the value is an object that is not a function or an array.\n *\n * @param obj - The value to be checked.\n * @returns - `true` if the value is a plain object, `false` otherwise.\n */\nexport function isObject(obj: unknown): boolean {\n return obj === Object(obj) && !(isFunction(obj) || Array.isArray(obj));\n}\n\n/**\n * Checks if the provided value is empty.\n *\n * The value is considered empty if it is:\n * - `null` or `undefined`\n * - An array or string with length 0\n * - An object with no own properties.\n *\n * @param value - The value to be checked.\n * @returns - `true` if the value is empty, `false` otherwise.\n */\nexport function isEmpty(value: any): boolean {\n return (\n // null or undefined\n value === null ||\n value === undefined ||\n ((Array.isArray(value) || typeof value === 'string') && value.length === 0) ||\n // is an Object and has no keys\n (value.constructor === Object && Object.keys(value).length === 0)\n );\n}\n\n/**\n * Removes empty values from an array.\n *\n * This function recursively filters out empty values from the array. Empty values include:\n * - `null` or `undefined`\n * - Empty strings or arrays\n * - Empty objects\n *\n * @param arr - The array on which the empty values needs to be removed.\n * @returns - A new array with empty values removed.\n */\nexport function removeEmptyValues<T>(arr: T[]): DeepNonNullableArray<T>[] {\n return arr\n .map(item => (Array.isArray(item) ? removeEmptyValues(item) : item))\n .filter(\n t => (Array.isArray(t) && t.length) || (!Array.isArray(t) && t)\n ) as DeepNonNullableArray<T>[];\n}\n\n/* Start : APIs specific to condition builder */\n\n/**\n * Retrieves an array of fields on which a filter is applied. If a comparator is provided, the function returns only the fields that have the specified comparator applied in the `filterExpression`.\n *\n * @param params - The parameters for the method.\n * @param params.filterExpression - The filter expression used to determine which fields are included. For more details, see {@link State.filterExpression}.\n * @param params.comparator - An optional comparator. If provided, the function will filter fields that have this comparator in the filter expression.\n *\n * @returns An array of field names on which the filter is applied. If a comparator is specified, it returns only the fields that use that comparator.\n */\nexport function getFilters({ filterExpression, comparator = null }: FilterInfo): string[] {\n const filters: string[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key].lhs.field);\n }\n } else {\n filters.push(conditions[key].lhs.field);\n }\n });\n return filters;\n}\n\n/**\n * Retrieves all filter conditions from the provided `filterExpression`. If a `comparator` is provided,\n * only the filter conditions that match the given comparator will be collected.\n *\n * @param params Method arguments object.\n * @param params.filterExpression The filterExpression.\n * @param params.comparator An optional comparator to filter conditions by. If not provided, all conditions will be collected.\n *\n * @returns An array of filter conditions that match the specified criteria.\n */\nexport function getFilterConditions({ filterExpression, comparator = null }: FilterInfo) {\n const filters: LeafCondition[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key]);\n }\n } else {\n filters.push(conditions[key]);\n }\n });\n return filters;\n}\n\n/**\n Retrieves the filter properties for a specified column from the {@link State.filterExpression filterExpression} state as an array.\n * The returned array includes:\n * - The input values associated with the filter for the specified column.\n * - The comparator configured for the filter of that column.\n * - The leaf condition for that column within the {@link State.filterExpression filterExpression}.\n * - The entire {@link State.filterExpression filterExpression} object from the state.\n * @param column The column for which filter information is to be retrieved.\n */\n// returning filter initializer values for any type of filter\nexport function getFilterInitializers(column: Column): FilterInitializers | [] {\n if (!column) return [];\n const filterExpression = column?.getFilterProperties()?.filterExpression!;\n const filters = getFilterConditions({ filterExpression });\n const filter = filters.find(f => f.lhs?.field === column.field.name);\n const fInput = filter\n ? (\n filter.rhs as {\n value: string | number;\n }\n )?.value || (filter.rhs as { values: string[] | number[] })?.values\n : [];\n const fValue = filter\n ? (Object.keys(comparatorMap) as (keyof FilterConfig['comparatorMap'])[]).find(\n key => comparatorMap[key] === filter.comparator\n )\n : null;\n return [fInput, fValue, filter, filterExpression];\n}\n\n/**\n * Determines if filter is applied on the given `column` in the given `filterExpression`.\n * @param column\n * @param filterExpression\n * @returns true if filter is applied; otherwise false.\n */\nexport function isFilterApplied(column: Column, filterExpression: Condition): boolean {\n if (!column.field.id) {\n return false;\n }\n\n const fields = getFilters({\n filterExpression\n });\n return fields.includes(column.field.name);\n}\n\n/* AND condition with filter expression */\n/**\n * Prepares a filter expression for a given `column`, `comparator`, and `input`.\n * Returns the same filter expression or appends it to the given `filterExpression`.\n *\n * @param param - Method argument object.\n * @param param.filterExpression - Existing filter expression to which the new condition may be appended.\n * @param param.column - Column on which the filter is to be applied.\n * @param param.comparator - Comparator for the filter expression (e.g., equals, greater than).\n * @param param.input - List of possible values for the column on which the filter expression should be prepared. It can be a single value, an array of values, or null.\n * @returns A new filter expression or the modified existing filter expression. Returns null if the input is invalid based on the comparator.\n */\nexport function addFilter({\n filterExpression,\n column,\n comparator,\n input\n}: AddFilterParams): Condition | null {\n const filter: { condition: LeafCondition } = {} as { condition: LeafCondition };\n\n // We might need to refactor the way we are managing filters with comparators\n // Comparator needs to categorized based on no of operand and type of operand it needs\n // Making this fix to resolve BUG-640981\n if (\n (input === '' ||\n input === undefined ||\n input === null ||\n Number.isNaN(input) ||\n (Array.isArray(input) && !input.length)) &&\n comparator !== comparatorMap.isNull &&\n comparator !== comparatorMap.isNotNull &&\n comparator !== comparatorMap.isTrue &&\n comparator !== comparatorMap.isFalse\n ) {\n return null;\n }\n\n if (input === null || input === undefined) {\n filter.condition = {\n comparator,\n lhs: { field: column.field.name }\n };\n } else {\n const rhsFieldName = Array.isArray(input) ? 'values' : 'value';\n filter.condition = {\n comparator,\n lhs: { field: column.field.name },\n rhs: { [rhsFieldName]: input } as { value: string | number } | { values: string[] | number[] }\n };\n }\n\n /* if filter expression has conditions or operators */\n if (filterExpression && Object.keys(filterExpression).length > 0) {\n return { AND: [filter, filterExpression] };\n }\n return filter;\n}\n\n/* End : APIs specific to condition builder */\n\n/**\n * Retrieves the visible fields in the current view by considering the hidden columns state.\n * This function also accounts for columns from custom fields that are visible.\n *\n * @param fieldDefs - The {@link Meta.fieldDefs fieldDefs}.\n * @param hiddenColumns - The list of {@link State.hiddenColumns hiddenColumns}.\n * @param customFields - The {@link State.customFields customFields}.\n * @returns The list of visible fields.\n */\nexport const getVisibileFields = (\n fieldDefs: FieldDef[] = [],\n hiddenColumns: State['hiddenColumns'] = [],\n customFields: State['customFields'] = []\n): FieldDef[] => {\n const fieldMap = fieldDefs.reduce<{ [key: string]: FieldDef }>((acc, field) => {\n acc[field.id] = field;\n return acc;\n }, {});\n const visibleFields = fieldDefs.filter(({ id }) => !hiddenColumns.includes(id));\n const fieldIdsFromCustomField = (customField: CustomField): string[] =>\n customField?.expression.filter(item => !Array.isArray(item)) as string[]; // taking all non template items\n const visibleUnderCustomFields = [\n ...new Set(\n customFields\n .filter(({ id }) => !hiddenColumns.includes(id)) // Only visible custom fields\n .map(field => fieldIdsFromCustomField(field))\n .flat() // flat the multiple custom field fieldIds\n ) // Getting unique fieldIds\n ]\n .filter(fieldId => hiddenColumns.includes(fieldId)) // taking only, which are hidden in state to avoid duplicates\n .map(fieldId => fieldMap[fieldId]);\n return [...visibleFields, ...visibleUnderCustomFields];\n};\n\n/**\n * Retrieves the data of the closest row to the `targetElement` from the view {@link View.data data}.\n *\n * This function is useful for scenarios where you need to determine the row data related to a specific DOM element.\n * It searches through the provided data and pagination options to find the row that is closest to the given target element.\n *\n * @param data - The data of the view containing all row entries.\n * @param paginationOptions - The {@link State.paginationOptions pagination options}\n * @param targetElement - The target element for which the closest row data is required.\n *\n * @returns - The data of the closest row element to the target element.\n */\nexport const getRowContextData = (\n data: RowData[],\n paginationOptions: NonNullable<State['paginationOptions']>,\n targetElement: HTMLElement\n): RowData => {\n // get nearest row to target element.\n const row = targetElement.closest('[role=\"row\"]');\n // use aria-rowindex as data-index is added for group header as well\n // which is misaligned with the data object indexes.\n const ariaRowIndex = Number(row?.getAttribute('aria-rowindex')) - 1;\n\n // get starting index in pagination option\n // TODO why reduce is required with initial value as null. This can be refactored.\n const offset = Object.values(paginationOptions).reduce<null | number>((acc, { startIndex }) => {\n if (acc === null || acc < startIndex) {\n return startIndex;\n }\n return acc;\n }, null);\n return data[ariaRowIndex - offset!];\n};\n\n/**\n * Compares two objects to determine if they are equal based on the specified properties.\n * If no properties are specified, it compares all properties.\n *\n * @param t1 - The first object to compare.\n * @param t2 - The second object to compare.\n * @param props - An optional array of property names to compare. If null, all properties are compared.\n * @returns A boolean indicating whether the objects are equal.\n */\nexport function compareObjects<T extends { [key in keyof T]: unknown }>(\n t1: T,\n t2: T,\n props: (keyof T)[] | null = null\n): boolean {\n if (!props && Object.keys(t1).length !== Object.keys(t2).length) return false;\n return (props || Object.keys(t1)).every(k => {\n const key = k as keyof T;\n const ty1 = Object.prototype.toString.call(t1[key]);\n const ty2 = Object.prototype.toString.call(t2[key]);\n if (ty1 !== ty2) return false;\n\n if (ty1 === '[object Array]')\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return compareArray(t1[key] as unknown[], t2[key] as unknown[], null);\n if (ty1 === '[object Object]') return compareObjects(t1[key], t2[key], null);\n return t2[key] === t1[key];\n });\n}\n\n/**\n * Compares two arrays for equality, considering nested arrays and objects.\n * If both arrays are equal, it returns true; otherwise, it returns false.\n *\n * @param t1 - The first array to compare.\n * @param t2 - The second array to compare.\n * @param props - Additional properties for comparison (currently unused).\n * @returns `true` if the arrays are equal, `false` otherwise.\n */\n// TODO props is never used.\nexport function compareArray<T extends unknown>(t1: T[], t2: T[], props = null): boolean {\n if (t1 === t2) return true;\n if (t1?.length !== t2?.length) return false;\n return t1?.every((val, i) => {\n const ty1 = Object.prototype.toString.call(val);\n const ty2 = Object.prototype.toString.call(t2?.[i]);\n if (ty1 === ty2) {\n if (ty1 === '[object Array]') return compareArray(val as any[], t2?.[i] as any[], props);\n if (ty1 === '[object Object]') return compareObjects(val, t2?.[i], props);\n return val === t2?.[i];\n }\n return false;\n });\n}\n\n/**\n * calculates the hash for the given string\n * @param string for which hash to be calculated\n * @returns calculated hash\n */\nexport function generateHash(string: string): number {\n let hash = 0;\n for (let charIdx = 0; charIdx < string.length; charIdx += 1) {\n // eslint-disable-next-line no-bitwise\n hash = (Math.imul(31, hash) + string.charCodeAt(charIdx)) | 0;\n }\n return hash;\n}\n\n/**\n * Updates the Meta settings based on the provided field definitions and default configuration.\n *\n * This function performs the following operations:\n *\n * - Computes the value for feature flags such as {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}\n * based on the values in `FieldDef`. If any of the `FieldDef` entries have the flag enabled, the flag is enabled for `Meta` as well.\n * - Sets the {@link Meta.locale locale} in `Meta` from the document's language attribute.\n * - Sets the values of other keys in `Meta` using {@link defaultConfig}, if they are not already set.\n *\n * @param meta - The RS meta object.\n * @param defaultConfig - The default configuration object used to set default values in `Meta`.\n */\nfunction updateMetaSettings(meta: Meta, defaultConfig: DefaultConfigType): void {\n // Deduce freezeField global setting from within the fields\n const featureMap = getEnabledFeatures(['freeze', 'editable'], meta.fieldDefs);\n if (featureMap.freeze) {\n meta.freezeFields = true;\n }\n\n if (featureMap.editable) {\n meta.editable = true;\n }\n\n // Setting locale value for localisation\n if (!meta.locale) {\n const htmlLang = document.documentElement.lang;\n meta.locale = htmlLang.split('-')[1] ? htmlLang : defaultConfig.locale;\n }\n const properties: DefaultConfigKeys[] = Object.keys(defaultConfig) as DefaultConfigKeys[];\n properties.forEach(key => {\n if (meta[key] === undefined || meta[key] === null) {\n // is null check required or consumers want that?\n // @ts-expect-error\n meta[key] = defaultConfig[key];\n }\n });\n}\n\nconst prepareDefaultFieldConfig = (\n defaultFieldConfig: NonNullable<DefaultConfigType['defaultFieldDef']>,\n field: FieldDef\n) => {\n return Object.fromEntries(\n Object.entries(defaultFieldConfig).map(([key, value]) => {\n // By default, sorting, filtering and grouping should be disabled for object type fields.\n if (UNSUPPORTED_OBJECT_TYPE_FIELD_ANALYTICAL_FEATURES.includes(key)) {\n value = field.type !== FieldType.OBJECT;\n }\n\n // By default, aggregation is supported only for number and currency type fields\n if (key === 'aggregation') {\n value = field.type === FieldType.NUMBER || field.type === FieldType.CURRENCY;\n }\n\n // By default, only text type fields are searchable via global search\n if (key === 'searchable') {\n value = field.type === FieldType.TEXT;\n }\n\n return [key, value];\n })\n );\n};\n\n/**\n * Normalizes the {@link FieldDef} with {@link defaultFieldDef defaultFieldDef config} if not already set.\n *\n * @param field The fieldDef object\n * @param defaultFieldDef The default config of the FieldDef.\n *\n * @returns The normalized fieldDef object with the updated configurations.\n */\nexport function normalizeFieldDef(\n field: FieldDef,\n defaultFieldDef: NonNullable<DefaultConfigType['defaultFieldDef']>\n): void {\n const properties: DefaultFieldDefKeys[] = Object.keys(defaultFieldDef) as DefaultFieldDefKeys[];\n field.idHash = generateHash(field.id);\n\n properties.forEach((prop: DefaultFieldDefKeys) => {\n // @ts-expect-error Type 'number | boolean' is not assignable to type 'undefined'. Type 'number' is not assignable to type 'undefined'. Check this.\n field[prop] = field[prop] ?? defaultFieldDef[prop];\n if (prop === 'autosize' && field.width) {\n field[prop] = false;\n }\n });\n\n // Assign filters to each field based on their types\n if (field.filterPickList) {\n field.filterParams = structuredClone(filterParams.pickList);\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n } else if (field.type in filterParams && filterParams[field.type]) {\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n field.filterParams = structuredClone(filterParams[field.type]);\n } else {\n field.filterParams = undefined;\n }\n}\n\n/**\n * Normalizes the RS meta with the {@link defaultConfig default configuration} if not already set:\n * - Updates the {@link Meta.minheight minHeight} option from the {@link defaultConfig}.\n * - Adds a comparatorMap to the meta.\n * - Updates keys of individual FieldDef with {@link DefaultConfigType.defaultFieldDef defaultFieldDef} from {@link defaultConfig}.\n * - Enables/Disables feature flags (e.g. {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}) in RS meta by considering the values of feature flags from fieldDef or its values in defaultConfig.\n *\n * @param _meta - The RS meta object.\n * @param defaultConfig - The default configuration object containing the default settings to be used.\n * @returns The normalized RS meta object with the updated configurations.\n */\nexport function normalizeMeta(\n _meta: Meta & { isPreset?: boolean },\n defaultConfig: DefaultConfigType\n): Meta {\n const { height, ...restMeta } = _meta;\n const meta = deepCopy<Meta>(restMeta);\n meta.height = { ...height };\n meta.comparatorMap = comparatorMap;\n meta.height.minHeight = meta.height.minHeight ?? defaultConfig.height.minHeight;\n\n // Handle if fieldDefs is null or undefined\n meta.fieldDefs = meta.fieldDefs ?? [];\n meta.fieldDefs.forEach((column: FieldDef) => {\n normalizeFieldDef(column, {\n ...prepareDefaultFieldConfig(defaultConfig.defaultFieldDef, column),\n /*\n TODO: Deprecation - The defaultFieldDef in meta is no longer necessary and is not utilized by any consumers.\n - Consumers should provide the exact fieldDef configuration instead of relying on explicit defaults in meta.\n - Only the in-house defaultFieldDef from `defaultConfig.defaultFieldDef` will be honored.\n */\n ...meta.defaultFieldDef\n });\n });\n updateMetaSettings(meta, defaultConfig);\n return meta;\n}\n\n/**\n * Removes entries from the given object that have null, undefined, or empty object as values.\n * This function mutates the original object by deleting properties that are either null, undefined,\n * or objects with does not have own properties.\n *\n * @param obj - The object from which empty entries should be removed.\n * @returns void\n */\nexport function removeEmptyValuesFromObject(obj: GenericObject): void {\n if (!obj) return;\n const propNames = Object.getOwnPropertyNames(obj);\n for (const element of propNames) {\n const propName = element;\n if (\n obj[propName] === null ||\n obj[propName] === undefined ||\n !Object.keys(obj[propName] as GenericObject).length\n ) {\n delete obj[propName];\n }\n }\n}\n\n/**\n * Retrieves the scrollable element of the virtualizer, i.e. parent container.\n * from the {@link View.virtualizeElements virtualizeElements} property of the provided {@link view} and,\n * if available, returns the parent container of the root virtualizer.\n * @param view The {@link View} object.\n * @returns The scrollable element, if it exists. Otherwise, returns undefined.\n */\nexport const getScrollerElem = (view: View): HTMLElement | undefined => {\n const { virtualizeElements } = view;\n let scrollerElem;\n if (virtualizeElements && !isEmpty(virtualizeElements?.rootVirtualiser)) {\n scrollerElem = virtualizeElements?.rootVirtualiser?.getParentContainer?.();\n }\n return scrollerElem;\n};\n\nexport const dateFunctionLabels = {\n YEARS: 'Year',\n QUARTERS: 'Quarter',\n MONTHS: 'Month',\n WEEKS: 'Week',\n DAYS: 'Day',\n HOURS: 'Hour',\n MINUTES: 'Minute',\n SECONDS: 'Second',\n MONTHS_OF_YEAR: 'Month of year',\n DAYS_OF_MONTH: 'Day of month',\n DAYS_OF_WEEK: 'Day of week',\n HOURS_OF_DAY: 'Hour of day'\n};\n\n/**\n * Retrieves the valid externalState keys from RS {@link Meta}.\n *\n * Supported external state keys:\n * - Value of {@link Meta.externalFilters externalFilters} in Meta.\n *\n * @param tableMeta RS Meta\n * @returns Array of valid externalState keys.\n */\nexport function getExternalStateKeys(tableMeta: Meta): string[] {\n const externalStateKeys: string[] = [];\n if (tableMeta[EXTERNAL_FILTERS]) {\n externalStateKeys.push(tableMeta[EXTERNAL_FILTERS]);\n }\n return externalStateKeys;\n}\n\n/**\n * Validates the payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n *\n * @param payload The payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n * @param externalStateKeys An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nfunction validateExternalStateAction(\n payload: NonNullable<State['externalState']>,\n externalStateKeys?: string[]\n): void {\n if (!isObject(payload)) {\n throw Error(\n `payload for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should be of object type only.`\n );\n }\n const payloadKeys = Object.keys(payload);\n if (payloadKeys.length !== 1) {\n throw Error(\n `payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should contain exactly one key.`\n );\n }\n if (!externalStateKeys?.includes(payloadKeys[0])) {\n throw Error(\n `The key '${payloadKeys[0]}' in the payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} is invalid.`\n );\n }\n}\n\nconst validateRefreshNotificationAction = (payload: RefreshNotificationForConsumer) => {\n const isValidPayload =\n isObject(payload) && hasProp(payload, 'message') && hasProp(payload, 'refreshActionLabel');\n\n if (!isValidPayload) {\n throw Error(\n `payload for action ${ActionTypes.NOTIFY_DATA_REFRESH} should be an object with 'message' and 'refreshActionLabel' properties.`\n );\n }\n};\n\n/**\n * Validates an action by ensuring that the provided payload is supported for the given action type.\n * This function checks if the action and payload match the supported actions.\n *\n * @param action - The action to be validated.\n * @param payload - The payload associated with the action. The payload must confirm to the expected structure for the given action.\n * @param externalStateKeys - An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nexport function validateAction<T extends SupportedConsumerActionType>(\n action: T,\n payload?: SupportedConsumerPayloads[T],\n externalStateKeys?: string[]\n): void {\n switch (action) {\n case ActionTypes.UPDATE_DEBUG_INFO:\n case ActionTypes.TOGGLE_REQUIRED:\n case ActionTypes.USER_CONFIRMATION_ACTION:\n if (!isObject(payload)) {\n throw Error(`payload for action ${action} should be of object type only!`);\n }\n break;\n\n case ActionTypes.TOGGLE_DISABLE_SELECTION:\n if (typeof payload !== 'boolean')\n throw Error(`payload for action ${action} should be of type boolean only!`);\n break;\n case ActionTypes.NOTIFY_DATA_REFRESH:\n validateRefreshNotificationAction(payload as RefreshNotificationForConsumer);\n break;\n case ActionTypes.UPDATE_SELECTED_ROWS:\n if (typeof payload !== 'undefined') {\n throw Error(`No payload is required for action ${action}`);\n }\n break;\n case ActionTypes.SET_IN_EXTERNAL_STATE:\n validateExternalStateAction(\n payload as NonNullable<State['externalState']>,\n externalStateKeys\n );\n break;\n case ActionTypes.SET_WARNING_MESSAGES:\n break;\n default:\n throw Error(`Action ${action} is not supported!`);\n }\n}\n\n/**\n * Retrieves the default preset ID from all personalizations.\n * @param stateAllPersonalization\n * @returns The id of the default preset if found, otherwise `undefined`.\n */\nexport function getDefaultPresetIdFromStatePersonalisation(\n stateAllPersonalization: Personalization['allPersonalizations'] = {}\n): string | undefined {\n return Object.keys(stateAllPersonalization).find(\n item => stateAllPersonalization[item].isDefaultPreset\n );\n}\n\n/** Determines if the given {@link array} contains any duplicate elements.\n * @param array The array to be checked for duplicate elements.\n * @returns Returns `true` if duplicates are found, otherwise returns `false`.\n */\nexport function hasDuplicates<T>(array?: T[]): boolean {\n return !!(array && new Set<T>(array).size !== array.length);\n}\n\n/**\n * Creates a passable promise, which is an array containing a promise object, and its corresponding resolve and reject functions.\n *\n * @returns An array where:\n * - The first element is the created promise.\n * - The second element is the resolve function for the promise.\n * - The third element is the reject function for the promise.\n */\nexport function passablePromise<T>(): PassablePromise<T> {\n let resolveRef!: PassablePromise<T>[1];\n let rejectRef!: PassablePromise<T>[2];\n const promise = new Promise<T>((resolve, reject) => {\n resolveRef = resolve;\n rejectRef = reject;\n });\n return [promise, resolveRef, rejectRef];\n}\n\n/**\n * Determines if the filter criteria has changed in the latest state compared to the previous state.\n *\n * This function checks the following state keys to determine changes:\n * - {@link State.filterExpression filterExpression}\n * - {@link State.search search}\n * - The value of {@link Meta.externalFilters external filters} in {@link State.externalState externalState}\n *\n * @param meta - The RS meta object.\n * @param previousState - The previous state object to compare against.\n * @param latestState - The latest state object to check for changes.\n * @returns Returns true if the filter criteria has changed; otherwise, returns false.\n */\nexport function isFilterCriteriaChanged(\n meta: Meta,\n previousState: State,\n latestState: State\n): boolean {\n const { filterExpression, search: { query } = {}, externalState } = latestState;\n const {\n filterExpression: previousFilterExpression,\n search: { query: previousQuery } = {},\n externalState: previousExternalState\n } = previousState;\n\n const searchChanged = () => query !== previousQuery;\n const filterExpressionChanged = () => !deepEqual(previousFilterExpression, filterExpression);\n const externalFilterChanged = () =>\n meta?.externalFilters &&\n !deepEqual(\n previousExternalState?.[meta?.externalFilters],\n externalState?.[meta?.externalFilters]\n );\n\n return !!(searchChanged() || filterExpressionChanged() || externalFilterChanged());\n}\n\n/**\n * Calculates the overlapping area from given {@link previousIndexes} and {@link newIndexes}.\n * @param previousIndexes\n * @param newIndexes\n * @returns A number indicating the overlapping area.\n */\nexport function getOverlappingIndexes(\n previousIndexes: PaginationPayload = {} as PaginationPayload,\n newIndexes: PaginationPayload = {} as PaginationPayload\n): number {\n const { startIndex: previousStartIndex, endIndex: previousEndIndex } = previousIndexes;\n const { startIndex: latestStartIndex, endIndex: latestEndIndex } = newIndexes;\n\n if (previousEndIndex < latestStartIndex || latestEndIndex < previousStartIndex) {\n return 0;\n }\n\n const overlapStartIndex = Math.max(previousStartIndex, latestStartIndex);\n const overlapEndIndex = Math.min(previousEndIndex, latestEndIndex);\n const overlapArea = overlapEndIndex - overlapStartIndex;\n\n if (overlapArea <= 0) {\n return 0;\n }\n\n return overlapArea;\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @param action\n * @param latestActions\n * @returns true if the {@link action} exists in the {@link latestActions} otherwise false.\n */\n// TODO This is some what same as isStaleAction. Revisit both the methods.\nexport function isSameActionPresent(\n action: Action,\n latestActions: Map<ActionType, Action>\n): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Removes actions from the {@link latestActions} that have already been executed and are present in the {@link executedActionsQueue}.\n * This function ensures that only pending actions remain in the {@link latestActions}.\n * @param latestActions\n * @param executedActionsQueue\n */\nexport function clearProcessedActionsFromLatestActions(\n latestActions: Map<ActionType, Action>,\n executedActionsQueue: Action[]\n): void {\n executedActionsQueue.forEach(executedAction => {\n if (isSameActionPresent(executedAction, latestActions)) {\n latestActions.delete(executedAction.type);\n }\n });\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @returns\n * - false if {@link action} does not already exists.\n * - false if {@link action} already exists and payload matches\n * - true if {@link action} already exists but payload does not match.\n */\n// TODO revisit this method again. It is not checking only for stale actions.\nexport function isStaleAction(action: Action, latestActions: Map<ActionType, Action>): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n // TODO why ! is added in front of deepEqual. Ideally for an existing action if the payload is exactly same then it should be marked as stale.\n !deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Determines if the overlapping area of pagination indexes between the old and new pagination payloads in current queue is less than 50%.\n * This function helps determine if a significant portion of the pagination area has changed due to recent actions.\n *\n * For detailed usage and examples, refer [pagination-action-optimizations.md](../../../docs/pagination-action-optimizations.md).\n * @param latestActions - A map of the latest actions being executed in the queue, which may include pagination actions.\n * @param previousExecutedActionQueue - The queue of previously executed actions.\n * @returns Returns true if the overlapping area is less than 50%, otherwise returns false.\n */\nexport function isSignificantPaginationOverlap(\n latestActions: Map<ActionType, Action>,\n previousExecutedActionQueue: Action[]\n): boolean {\n const lastExecutedPaginationActionIndex = previousExecutedActionQueue\n .map(action => action.type)\n .lastIndexOf(ActionTypes.PAGINATE);\n if (!latestActions.has(ActionTypes.PAGINATE) || lastExecutedPaginationActionIndex < 0)\n return false;\n\n const lastExecutedPaginationPayload = (\n previousExecutedActionQueue[lastExecutedPaginationActionIndex] as PaginateAction\n ).payload;\n const latestPaginatePayload = (latestActions.get(ActionTypes.PAGINATE) as PaginateAction).payload;\n\n const overlappingIndexes = getOverlappingIndexes(\n lastExecutedPaginationPayload,\n latestPaginatePayload\n );\n const { startIndex, endIndex } = latestPaginatePayload;\n // if the api response matches at least 50% with the latest pagination size, we can use that to display some rows until the next set of rows arrive\n return !(overlappingIndexes >= (endIndex - startIndex) * 0.5);\n}\n\n/**\n * Returns a unique key for a given group.\n * @param group\n */\nexport const getGroupKey = (group: Group): string => {\n if (group.dateFunction) {\n return `${group.columnId}${groupBySeparator}${group.dateFunction}`;\n }\n\n if (group.customFunction) {\n return `${group.columnId}${groupBySeparator}${group.customFunction.type}${groupBySeparator}${group.customFunction.id}`;\n }\n return group.columnId;\n};\n\n/**\n * Returns {@link Group group information} from {@link Group groups} based on {@link groupBy} key\n * @param groupBy - unique key for a given group\n * @param groups - groups info from table state\n * @returns matched group\n */\nexport const getGroupFromKey = (groupBy: string, groups: State['groups']): Group | undefined => {\n return groups?.find(group => {\n return getGroupKey(group) === groupBy;\n });\n};\n\n/**\n * Checks if the column widths have been calculated.\n *\n * @returns True if the column widths have been calculated; otherwise, false.\n */\nexport const areColumnWidthsCalculated = (columnWidths: State['columnWidths']): boolean => {\n if (!columnWidths || isEmpty(columnWidths)) return false;\n const keys = Object.keys(columnWidths);\n // TODO why only rowDragDropcolumn is excluded from OOTB columns set, why not other OOTB columns ?\n return !(keys.length === 1 && keys[0] === rowDragDropColumnMeta.field.id);\n};\n\n// TODO: temporary method, till meta.dragHandle is completely removed(currently deprecated).\nexport const isRowReorderFieldEnabled = (meta: Meta): boolean => {\n return meta.dragHandle || !!meta.rowReorderField;\n};\n\n/**\n * Determines whether the row reorder field is visible.\n *\n * @param meta - View meta containing row reorder field configuration.\n * @returns `true` if the row reorder field is visible; otherwise falls back to the deprecated `dragHandle`.\n */\nexport const isRowReorderFieldVisible = (meta: Meta): boolean => {\n return meta.rowReorderField ? !!meta.rowReorderField.show : !!meta.dragHandle;\n};\n\n/**\n * Determines whether the row error field is visible.\n *\n * @param meta - View meta containing row error field configuration.\n * @returns `true` if the row error field is visible; otherwise falls back to the deprecated `showErrorField`.\n */\nexport const isRowErrorFieldVisible = (meta: Meta): boolean => {\n return meta.rowErrorField ? !!meta.rowErrorField.show : !!meta.showErrorField;\n};\n\n// TODO: temporary method, till meta.showErrorField is completely removed(currently deprecated).\nexport const isRowErrorFieldEnabled = (meta: Meta): boolean => {\n return meta.showErrorField || !!meta.rowErrorField;\n};\n\n/**\n * Returns the {@link StyleFormat} for a given {@link styleFormatId} from {@link View.styleFormats}\n * @param styleFormatId\n * @param styleFormats\n * @returns StyleFormat or `undefined`\n */\nconst getStyleFormat = (\n styleFormatId: string,\n styleFormats: NonNullable<View['styleFormats']>\n): StyleFormat | undefined => {\n return styleFormats.find(styleFormat => styleFormat.id === styleFormatId);\n};\n\n/**\n * Evaluates the style format applicable to a cell based on {@link Column.getExecutionContext current execution context} and {@link Column.conditionalStyleFormats conditionalStyleFormats}\n * @param column Column on which styles need to be evaluated.\n * @param rsInternal RsInternal object\n * @returns - {@link StyleFormat} or `undefined\n */\nexport const evaluateStyleFormatForCell = (\n column: Column,\n rsInternal: RsInternal\n): StyleFormat | undefined => {\n const { conditionalStyleFormats } = column;\n const { getRsProps, getRsStateResolver, getView } = rsInternal;\n const { apiContext } = getRsProps();\n const { meta } = getView();\n const { getState } = getRsStateResolver();\n const data = column.getExecutionContext()?.getValue?.();\n\n if (!data || !conditionalStyleFormats) return;\n\n const firstMatchingStyleFormat = conditionalStyleFormats.find(({ condition }) =>\n apiContext.evaluateCondition\n ? apiContext.evaluateCondition(getState(), meta, { condition, data })\n : evaluateConditionLocally(meta, { condition, data })\n );\n\n return (\n firstMatchingStyleFormat &&\n getStyleFormat(firstMatchingStyleFormat.styleFormatId, column.parent.styleFormats!)\n );\n};\n\nexport const isRowSelectFieldEnabled = (meta: Meta): boolean => {\n const { selectionMode, template } = meta;\n return !!(\n selectionMode &&\n SELECTION_MODES[selectionMode] &&\n !(template === TEMPLATES.GALLERY && selectionMode === SELECTION_MODES.multi_on_hover) &&\n template !== TEMPLATES.TIMELINE\n );\n};\n\nexport const isActionConfig = (\n action: Meta['editing'] | Meta['deleting']\n): action is NonNullable<ExcludeStrict<Meta['editing'] | Meta['deleting'], boolean>> => {\n return !!action && typeof action === 'object' && 'placement' in action;\n};\n\nexport const isDeletingColumnPlacement = (meta: Meta): boolean => {\n if (isActionConfig(meta.deleting)) {\n return meta.deleting.placement === ActionColumnPlacement.COLUMN;\n }\n return false;\n};\n\nexport const isRowDeleteFieldEnabled = (meta: Meta): boolean => {\n return !!meta.deleting && isDeletingColumnPlacement(meta);\n};\n\nexport const isRowDeleteFieldVisible = (meta: Meta): boolean => {\n if (isActionConfig(meta.deleting)) {\n return meta.deleting.placement === ActionColumnPlacement.COLUMN && !!meta.deleting.show;\n }\n\n return !!meta.deleting;\n};\n\n// Compatibility alias for existing call sites.\nexport const isRowActionFieldEnabled = (meta: Meta): boolean => {\n const isEditingEnabled = isActionConfig(meta.editing)\n ? meta.editing.placement === ActionColumnPlacement.MENU\n : !!meta.editing;\n const isDeletingEnabled = isActionConfig(meta.deleting)\n ? meta.deleting.placement === ActionColumnPlacement.MENU\n : false;\n return isEditingEnabled || isDeletingEnabled;\n};\n\nexport const isFreezingEnabled = (meta: Meta): boolean => {\n return (\n meta.freezeFields ||\n isRowErrorFieldEnabled(meta) ||\n isRowReorderFieldEnabled(meta) ||\n isRowSelectFieldEnabled(meta)\n );\n};\n\n/**\n * Derives visible column IDs from fieldDefs by excluding hidden columns.\n *\n * @param meta - View meta containing fieldDefs.\n * @param hiddenColumns - Array of hidden column IDs.\n * @returns Array of visible column IDs.\n */\nexport function getVisibleColumnsFromHidden(\n meta: Meta,\n hiddenColumns: State['hiddenColumns']\n): string[] {\n return meta.fieldDefs\n .filter(fieldDef => !hiddenColumns?.includes(fieldDef.id))\n .map(fieldDef => fieldDef.id);\n}\n\n/**\n * Derives visible column IDs from fieldDefs where show is true.\n *\n * @param meta - View meta containing fieldDefs.\n * @returns Array of visible column IDs.\n */\nexport function getVisibleColumnsFromFieldDefs(meta: Meta): string[] {\n return meta.fieldDefs.filter(fieldDef => fieldDef.show).map(fieldDef => fieldDef.id);\n}\n\nexport const isTranslationKey = (key: string): key is keyof typeof defaultTranslations =>\n key in defaultTranslations;\n\n/**\n * Translates a label if it is a known translation key, otherwise returns it as-is.\n *\n * @param label - The label string to translate.\n * @param translate - The translation function from the RS store.\n */\nexport const translateLabel = (\n label: string,\n translate: (key: keyof typeof defaultTranslations) => string\n): string => (isTranslationKey(label) ? translate(label) : label);\n\n/**\n * Returns true if a column should still be created for the given fieldDef\n * even when the field is not visible (`show = false`).\n *\n * This happens when the field is required by the current template configuration\n * (e.g., Timeline, Gallery, Map) or when it is marked as a row header.\n *\n * TODO: Refactor, move template-field resolution into the RS layer (e.g. `useRepeat`).\n */\nexport const shouldCreateColumnForField = (meta: Meta, fieldDef: FieldDef): boolean => {\n if (fieldDef.show || fieldDef.isRowHeader || fieldDef.filterPickList) return true;\n\n const template = meta.template;\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.TIMELINE) {\n const { timelineFields = {} } = meta;\n\n const referenceNames = [\n timelineFields.title?.name,\n timelineFields.date?.name,\n timelineFields.content?.name,\n timelineFields.status?.name,\n timelineFields.icon?.name\n ].filter(Boolean);\n\n return referenceNames.includes(fieldDef.name);\n }\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {\n const { galleryConfig = {} } = meta;\n\n const referenceIds = [\n galleryConfig.header?.field,\n galleryConfig.heroImage?.source?.field\n ].filter(Boolean);\n\n return referenceIds.includes(fieldDef.id);\n }\n\n if (template === REPEATING_STRUCTURE_TEMPLATES.MAP) {\n const { mapFieldIds = {} } = meta;\n\n const referenceIds = [mapFieldIds.location, mapFieldIds.label, mapFieldIds.content].filter(\n Boolean\n );\n\n return referenceIds.includes(fieldDef.id);\n }\n\n return false;\n};\n"]}
|
|
@@ -2,7 +2,8 @@ import type { ModalManagerContextValue } from '@pega/cosmos-react-core/lib/compo
|
|
|
2
2
|
import type { Condition } from '@pega/cosmos-react-condition-builder';
|
|
3
3
|
import type { RowData } from '../src/core/generators/RowGenerator.types';
|
|
4
4
|
import type { UtilityFunctions } from '../src/core/generators/viewUtilityMethods';
|
|
5
|
-
import type
|
|
5
|
+
import type Column from '../src/core/generators/ColumnGenerator';
|
|
6
|
+
import type { Personalization, PersonalizationInfo, PersonalizedState, State, Group, GroupFilter, GroupAdditionalField } from './State.types';
|
|
6
7
|
import type { Meta, RowAction, FieldDef } from './Meta.types';
|
|
7
8
|
/**
|
|
8
9
|
* Represents information about the currently active view in the repeating structures.
|
|
@@ -21,6 +22,7 @@ type ActiveViewInfo = {
|
|
|
21
22
|
*/
|
|
22
23
|
isDirty: boolean;
|
|
23
24
|
};
|
|
25
|
+
type ColumnActionType = 'RowReorder' | 'RowDeleteAction';
|
|
24
26
|
export type RsApi = {
|
|
25
27
|
/**
|
|
26
28
|
* Refreshes the current view.
|
|
@@ -51,6 +53,11 @@ export type RsApi = {
|
|
|
51
53
|
setHiddenColumns?: (columns: string[], ootbColumns?: {
|
|
52
54
|
dragHandle: boolean;
|
|
53
55
|
}) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Sets visible columns of the view.
|
|
58
|
+
* @param columns - An array of column IDs to show.
|
|
59
|
+
*/
|
|
60
|
+
setVisibleColumns?: (columns: string[]) => void;
|
|
54
61
|
/**
|
|
55
62
|
* Sets Column order of the view.
|
|
56
63
|
* @param columns - An array of column IDs to reorder.
|
|
@@ -82,10 +89,18 @@ export type RsApi = {
|
|
|
82
89
|
*/
|
|
83
90
|
setAggregations: (agg: State['aggregationInfo']) => void;
|
|
84
91
|
/**
|
|
85
|
-
* Sets
|
|
86
|
-
*
|
|
92
|
+
* Sets visibility of row reorder OOTB column.
|
|
93
|
+
*
|
|
94
|
+
* @deprecated Use {@link setActionColumnVisibility} instead.
|
|
95
|
+
* @param visibility - Whether the row reorder column should be visible.
|
|
87
96
|
*/
|
|
88
97
|
setRowReorderFieldVisibility: (visibility: boolean) => void;
|
|
98
|
+
/**
|
|
99
|
+
* Sets the visibility of an OOTB column.
|
|
100
|
+
* @param columnType - OOTB column type to toggle.
|
|
101
|
+
* @param visibility - Whether the OOTB column should be visible.
|
|
102
|
+
*/
|
|
103
|
+
setActionColumnVisibility: (columnType: ColumnActionType, visibility: boolean) => void;
|
|
89
104
|
/**
|
|
90
105
|
* Updates the visibility of specific columns.
|
|
91
106
|
* @param {Object} columns - A mapping of column IDs to their visibility state.
|
|
@@ -98,7 +113,15 @@ export type RsApi = {
|
|
|
98
113
|
* @param columnId - Column ID
|
|
99
114
|
* @param formatterName - ID of the formatter/renderer
|
|
100
115
|
*/
|
|
101
|
-
setRenderFormatter: (columnId: string,
|
|
116
|
+
setRenderFormatter: (columnId: string, formatter: string | {
|
|
117
|
+
type: string;
|
|
118
|
+
config: unknown;
|
|
119
|
+
}) => void;
|
|
120
|
+
/**
|
|
121
|
+
* Removes the `renderFormatter` for the given column.
|
|
122
|
+
* @param columnId - Column ID
|
|
123
|
+
*/
|
|
124
|
+
removeRenderFormatter: (columnId: string) => void;
|
|
102
125
|
/**
|
|
103
126
|
* Sets the conditional style formats of the view.
|
|
104
127
|
* @param conditionalStyleFormats - The conditional style formats to apply.
|
|
@@ -107,7 +130,13 @@ export type RsApi = {
|
|
|
107
130
|
};
|
|
108
131
|
export interface ApiOptions {
|
|
109
132
|
signal?: AbortSignal;
|
|
110
|
-
/** Indicates current
|
|
133
|
+
/** Indicates that the current API call should invalidate the cache and reload the data.
|
|
134
|
+
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* There is an alternative method for signaling the `ApiContext` to invalidate the cache and refresh the data:
|
|
137
|
+
* - The {@link ApiContext.onBeforeRefresh onBeforeRefresh} API in {@link ApiContext}, which is invoked just prior to refreshing the data.
|
|
138
|
+
* Consumers have the option to use either of these methods to invalidate the cache and refresh the data. Prefer `onBeforeRefresh` when using a class-based API context with centralized cache invalidation; use api options for stateless or function-based APIs.
|
|
139
|
+
*/
|
|
111
140
|
invalidateCache?: boolean;
|
|
112
141
|
/** A unique token or version identifier that changes whenever a refresh is triggered. Unlike a boolean `invalidateCache` flag, the `invalidateCacheToken` ensures that multiple APIs triggered
|
|
113
142
|
in the same refresh cycle receive the same identifier. */
|
|
@@ -193,6 +222,12 @@ export type PersonalizationResponse = Pick<Personalization, 'defaultPersonalizat
|
|
|
193
222
|
};
|
|
194
223
|
};
|
|
195
224
|
};
|
|
225
|
+
export interface GroupAdditionalFieldUniqueValues {
|
|
226
|
+
/** Unique values for the group additional field. */
|
|
227
|
+
values: (string | number | boolean | Date)[];
|
|
228
|
+
/** Indicates if there are more values. */
|
|
229
|
+
hasMore: boolean;
|
|
230
|
+
}
|
|
196
231
|
export interface ApiContext {
|
|
197
232
|
/**
|
|
198
233
|
* This api is used to fetch a list of raw data rows (excluding aggregations) for a given group or at the top level when no groups.
|
|
@@ -262,9 +297,10 @@ export interface ApiContext {
|
|
|
262
297
|
* @param {Meta} rsMeta - Repeating structures {@link Meta}.
|
|
263
298
|
* @param {string} key - A unique identifier for a given row. This is equal to {@link Meta.itemKey 'itemKey'}
|
|
264
299
|
* @param {string} value - The value for the given {@link Meta.itemKey 'itemKey'} for given row.
|
|
300
|
+
* @param {RowData} existingRowData - Existing row data for the given row.
|
|
265
301
|
* @returns {Promise<RowData[]>} It should return a promise of type {@link RowData} array containing the data for a given row.Only 0th index is considered from the array.
|
|
266
302
|
*/
|
|
267
|
-
fetchRowData?: (rsState: State, rsMeta: Meta, key: string, value: string, apiOptions: ApiOptions) => Promise<RowData[]>;
|
|
303
|
+
fetchRowData?: (rsState: State, rsMeta: Meta, key: string, value: string, existingRowData: RowData, apiOptions: ApiOptions) => Promise<RowData[]>;
|
|
268
304
|
/**
|
|
269
305
|
* This api is used to fetch the latest data for given set of rows identified uniquely by itemKey in {@link FieldDef}. This is passed as callback to all the {@link BulkAction.onClick bulk actions 'onClick'} method with {@link ApiContext.clearSelectedRows clearSelectedRows} api.
|
|
270
306
|
* @requireWhen {@link Meta.allowBulkActions 'allowBulkActions'} is set to true.
|
|
@@ -467,7 +503,7 @@ export interface ApiContext {
|
|
|
467
503
|
* @param {Meta} rsMeta - Repeating structures meta {@link Meta}.
|
|
468
504
|
* @returns {void} void
|
|
469
505
|
*/
|
|
470
|
-
exportData?: (rsState: State, rsMeta: Meta, apiOptions: ApiOptions) => Promise<void>;
|
|
506
|
+
exportData?: (rsState: State, rsMeta: Meta, apiOptions: ApiOptions, renderFormatters?: Record<string, Column['formatterConfig']>) => Promise<void>;
|
|
471
507
|
/** This api is called on click of 'Export to CSV' option in repeating structures toolbar and should export the data into a CSV file.
|
|
472
508
|
* @requireWhen {@link Meta.showExportToCSVOption showExportToCSVOption} is set to true in Meta.
|
|
473
509
|
* @invokedWhen "Export to CSV" button is clicked in the repeating structures toolbar
|
|
@@ -494,6 +530,32 @@ export interface ApiContext {
|
|
|
494
530
|
* @returns {Promise<boolean> | boolean} - Returns `true` if the data satisfies the condition, otherwise `false`.
|
|
495
531
|
*/
|
|
496
532
|
evaluateCondition?: (rsState: State, rsMeta: Meta, config: ConditionConfig) => boolean;
|
|
533
|
+
/**
|
|
534
|
+
* This api is used to fetch unique values for a particular group additional field. It is generally called for a group additional field which has more than 1 value.
|
|
535
|
+
* It should return unique values for the additional field along with hasMore flag to indicate if there are more values.
|
|
536
|
+
* @param additionalField - The group additional field for which unique values needs to be fetched.
|
|
537
|
+
* @param groupFilters - The current group filters on which the additional field is set.
|
|
538
|
+
* @param rsState - The state of the Repeating Structures.
|
|
539
|
+
* @param rsMeta - The meta information of the Repeating Structures.
|
|
540
|
+
* @param options - Extra api options provided by repeating structures.
|
|
541
|
+
* @returns GroupAdditionalFieldUniqueValues - It should return a promise of type {@link GroupAdditionalFieldUniqueValues}
|
|
542
|
+
*/
|
|
543
|
+
fetchGroupAdditionalFieldUniqueValues?: (additionalField: GroupAdditionalField, groupFilters: GroupFilter['filters'], rsState: State, rsMeta: Meta, options?: ApiOptions) => Promise<GroupAdditionalFieldUniqueValues>;
|
|
544
|
+
/**
|
|
545
|
+
* This API is invoked just before refreshing the data in repeating structures. The refresh in Repeating Structures can occur in two ways:
|
|
546
|
+
* - Through the Refresh button in the Toolbar.
|
|
547
|
+
* - By clicking the refresh notification dispatched via the NOTIFY_DATA_REFRESH action.
|
|
548
|
+
* The implementation of this method should include clearing any caches maintained by the consumer to ensure that fresh data is fetched when the repeating structures refresh the data.
|
|
549
|
+
* @requireWhen Optional
|
|
550
|
+
* @invokedWhen Before Repeating Structures refresh the data.
|
|
551
|
+
* @returns void
|
|
552
|
+
*
|
|
553
|
+
* @remarks
|
|
554
|
+
* There is an alternative way for signaling the `ApiContext` to invalidate the cache is available.
|
|
555
|
+
* - The `invalidateCache` or `invalidateCacheToken` boolean flag in {@link ApiOptions} indicates that the current API call should invalidate the cache, as it is triggered by the refresh of the Repeating Structures.
|
|
556
|
+
* Consumers can choose to implement either of the two approaches to clear their caches. Prefer `onBeforeRefresh` when using a class-based API context with centralized cache invalidation; use api options for stateless or function-based APIs.
|
|
557
|
+
*/
|
|
558
|
+
onBeforeRefresh?: () => void;
|
|
497
559
|
}
|
|
498
560
|
export {};
|
|
499
561
|
//# sourceMappingURL=ApiContext.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiContext.types.d.ts","sourceRoot":"","sources":["../../types/ApiContext.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiContext.types.d.ts","sourceRoot":"","sources":["../../types/ApiContext.types.ts"],"names":[],"mappings":"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"}
|