@platforma-sdk/model 1.63.1 → 1.64.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/dist/_virtual/_rolldown/runtime.cjs +12 -22
- package/dist/_virtual/_rolldown/runtime.js +6 -11
- package/dist/annotations/converter.cjs +4 -5
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts.map +1 -0
- package/dist/annotations/converter.js +1 -2
- package/dist/annotations/converter.js.map +1 -1
- package/dist/annotations/index.cjs +1 -1
- package/dist/annotations/index.js +1 -1
- package/dist/annotations/types.d.ts +0 -1
- package/dist/annotations/types.d.ts.map +1 -0
- package/dist/bconfig/index.cjs +2 -2
- package/dist/bconfig/index.js +2 -2
- package/dist/bconfig/lambdas.d.ts +0 -1
- package/dist/bconfig/lambdas.d.ts.map +1 -0
- package/dist/bconfig/normalization.cjs +4 -5
- package/dist/bconfig/normalization.cjs.map +1 -1
- package/dist/bconfig/normalization.d.ts.map +1 -0
- package/dist/bconfig/normalization.js +1 -2
- package/dist/bconfig/normalization.js.map +1 -1
- package/dist/bconfig/types.cjs +1 -2
- package/dist/bconfig/types.cjs.map +1 -1
- package/dist/bconfig/types.d.ts +0 -1
- package/dist/bconfig/types.d.ts.map +1 -0
- package/dist/bconfig/types.js +1 -1
- package/dist/bconfig/util.d.ts.map +1 -0
- package/dist/bconfig/v3.d.ts.map +1 -0
- package/dist/block_api_v1.d.ts.map +1 -0
- package/dist/block_api_v2.d.ts.map +1 -0
- package/dist/block_api_v3.d.ts.map +1 -0
- package/dist/block_migrations.cjs +2 -3
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts.map +1 -0
- package/dist/block_migrations.js +1 -2
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +16 -17
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +0 -2
- package/dist/block_model.d.ts.map +1 -0
- package/dist/block_model.js +4 -5
- package/dist/block_model.js.map +1 -1
- package/dist/block_model_legacy.cjs +10 -11
- package/dist/block_model_legacy.cjs.map +1 -1
- package/dist/block_model_legacy.d.ts +0 -3
- package/dist/block_model_legacy.d.ts.map +1 -0
- package/dist/block_model_legacy.js +1 -2
- package/dist/block_model_legacy.js.map +1 -1
- package/dist/block_state_patch.d.ts.map +1 -0
- package/dist/block_state_util.cjs +1 -2
- package/dist/block_state_util.cjs.map +1 -1
- package/dist/block_state_util.d.ts.map +1 -0
- package/dist/block_state_util.js +1 -1
- package/dist/block_state_util.js.map +1 -1
- package/dist/block_storage.cjs +5 -12
- package/dist/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts.map +1 -0
- package/dist/block_storage.js +5 -11
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_callbacks.cjs +4 -5
- package/dist/block_storage_callbacks.cjs.map +1 -1
- package/dist/block_storage_callbacks.js +3 -4
- package/dist/block_storage_callbacks.js.map +1 -1
- package/dist/block_storage_facade.cjs +2 -3
- package/dist/block_storage_facade.cjs.map +1 -1
- package/dist/block_storage_facade.d.ts +0 -1
- package/dist/block_storage_facade.d.ts.map +1 -0
- package/dist/block_storage_facade.js +1 -2
- package/dist/block_storage_facade.js.map +1 -1
- package/dist/columns/column_collection_builder.cjs +111 -99
- package/dist/columns/column_collection_builder.cjs.map +1 -1
- package/dist/columns/column_collection_builder.d.ts +13 -12
- package/dist/columns/column_collection_builder.d.ts.map +1 -0
- package/dist/columns/column_collection_builder.js +108 -96
- package/dist/columns/column_collection_builder.js.map +1 -1
- package/dist/columns/column_selector.cjs +9 -82
- package/dist/columns/column_selector.cjs.map +1 -1
- package/dist/columns/column_selector.d.ts +6 -14
- package/dist/columns/column_selector.d.ts.map +1 -0
- package/dist/columns/column_selector.js +7 -78
- package/dist/columns/column_selector.js.map +1 -1
- package/dist/columns/column_snapshot.cjs +4 -5
- package/dist/columns/column_snapshot.cjs.map +1 -1
- package/dist/columns/column_snapshot.d.ts +3 -3
- package/dist/columns/column_snapshot.d.ts.map +1 -0
- package/dist/columns/column_snapshot.js +4 -4
- package/dist/columns/column_snapshot.js.map +1 -1
- package/dist/columns/column_snapshot_provider.cjs +2 -3
- package/dist/columns/column_snapshot_provider.cjs.map +1 -1
- package/dist/columns/column_snapshot_provider.d.ts +8 -8
- package/dist/columns/column_snapshot_provider.d.ts.map +1 -0
- package/dist/columns/column_snapshot_provider.js +2 -2
- package/dist/columns/column_snapshot_provider.js.map +1 -1
- package/dist/columns/ctx_column_sources.cjs +3 -4
- package/dist/columns/ctx_column_sources.cjs.map +1 -1
- package/dist/columns/ctx_column_sources.d.ts +2 -2
- package/dist/columns/ctx_column_sources.d.ts.map +1 -0
- package/dist/columns/ctx_column_sources.js +1 -2
- package/dist/columns/ctx_column_sources.js.map +1 -1
- package/dist/columns/expand_by_partition.cjs +106 -0
- package/dist/columns/expand_by_partition.cjs.map +1 -0
- package/dist/columns/expand_by_partition.d.ts +33 -0
- package/dist/columns/expand_by_partition.d.ts.map +1 -0
- package/dist/columns/expand_by_partition.js +105 -0
- package/dist/columns/expand_by_partition.js.map +1 -0
- package/dist/columns/index.cjs +6 -5
- package/dist/columns/index.d.ts +4 -3
- package/dist/columns/index.js +6 -5
- package/dist/components/PFrameForGraphs.cjs +4 -5
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +0 -1
- package/dist/components/PFrameForGraphs.d.ts.map +1 -0
- package/dist/components/PFrameForGraphs.js +2 -3
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -0
- package/dist/components/PlAnnotations/filters_ui.cjs +1 -2
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +0 -2
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -0
- package/dist/components/PlAnnotations/filters_ui.js +1 -1
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +26 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +25 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +68 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +67 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +28 -18
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +4 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +22 -12
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +262 -181
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +37 -23
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +261 -177
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +64 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +63 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.cjs +4 -4
- package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.js +3 -3
- package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs +109 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +19 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.js +102 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs +1 -2
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +0 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.js +1 -1
- package/dist/components/PlDataTable/index.cjs +7 -5
- package/dist/components/PlDataTable/index.d.ts +4 -2
- package/dist/components/PlDataTable/index.js +7 -5
- package/dist/components/PlDataTable/labels.cjs +27 -14
- package/dist/components/PlDataTable/labels.cjs.map +1 -1
- package/dist/components/PlDataTable/labels.js +26 -13
- package/dist/components/PlDataTable/labels.js.map +1 -1
- package/dist/components/PlDataTable/state-migration.cjs +8 -6
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
- package/dist/components/PlDataTable/state-migration.js +5 -3
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/typesV4.d.ts.map +1 -0
- package/dist/components/PlDataTable/typesV5.d.ts +5 -5
- package/dist/components/PlDataTable/typesV5.d.ts.map +1 -0
- package/dist/components/PlMultiSequenceAlignment.cjs +2 -3
- package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -0
- package/dist/components/PlMultiSequenceAlignment.js +1 -2
- package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
- package/dist/components/PlSelectionModel.cjs +1 -2
- package/dist/components/PlSelectionModel.cjs.map +1 -1
- package/dist/components/PlSelectionModel.d.ts.map +1 -0
- package/dist/components/PlSelectionModel.js +1 -1
- package/dist/components/index.cjs +13 -11
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +12 -10
- package/dist/config/actions.cjs +1 -2
- package/dist/config/actions.cjs.map +1 -1
- package/dist/config/actions.d.ts.map +1 -0
- package/dist/config/actions.js +1 -1
- package/dist/config/actions_kinds.d.ts.map +1 -0
- package/dist/config/index.cjs +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/model.d.ts.map +1 -0
- package/dist/config/model_meta.d.ts.map +1 -0
- package/dist/config/type_engine.d.ts.map +1 -0
- package/dist/config/type_util.d.ts.map +1 -0
- package/dist/env_value.cjs +1 -2
- package/dist/env_value.cjs.map +1 -1
- package/dist/env_value.d.ts.map +1 -0
- package/dist/env_value.js +1 -1
- package/dist/env_value.js.map +1 -1
- package/dist/filters/converters/filterToQuery.cjs +3 -4
- package/dist/filters/converters/filterToQuery.cjs.map +1 -1
- package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
- package/dist/filters/converters/filterToQuery.js +1 -2
- package/dist/filters/converters/filterToQuery.js.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.cjs +3 -4
- package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
- package/dist/filters/converters/filterUiToExpressionImpl.js +1 -2
- package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
- package/dist/filters/converters/index.cjs +2 -2
- package/dist/filters/converters/index.js +2 -2
- package/dist/filters/distill.cjs +3 -4
- package/dist/filters/distill.cjs.map +1 -1
- package/dist/filters/distill.d.ts.map +1 -0
- package/dist/filters/distill.js +1 -2
- package/dist/filters/distill.js.map +1 -1
- package/dist/filters/index.cjs +4 -4
- package/dist/filters/index.d.ts +0 -1
- package/dist/filters/index.js +3 -3
- package/dist/filters/traverse.cjs +1 -2
- package/dist/filters/traverse.cjs.map +1 -1
- package/dist/filters/traverse.js +1 -1
- package/dist/filters/traverse.js.map +1 -1
- package/dist/filters/types.d.ts.map +1 -0
- package/dist/index.cjs +89 -83
- package/dist/index.d.ts +8 -15
- package/dist/index.js +8 -9
- package/dist/internal.cjs +1 -2
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/labels/derive_distinct_labels.cjs +41 -30
- package/dist/labels/derive_distinct_labels.cjs.map +1 -1
- package/dist/labels/derive_distinct_labels.d.ts +15 -15
- package/dist/labels/derive_distinct_labels.d.ts.map +1 -0
- package/dist/labels/derive_distinct_labels.js +40 -29
- package/dist/labels/derive_distinct_labels.js.map +1 -1
- package/dist/labels/index.cjs +1 -2
- package/dist/labels/index.d.ts +1 -2
- package/dist/labels/index.js +1 -2
- package/dist/package.cjs +7 -8
- package/dist/package.js +2 -2
- package/dist/pframe.cjs +2 -3
- package/dist/pframe.cjs.map +1 -1
- package/dist/pframe.d.ts.map +1 -0
- package/dist/pframe.js +1 -2
- package/dist/pframe.js.map +1 -1
- package/dist/pframe_utils/axes.cjs +2 -3
- package/dist/pframe_utils/axes.cjs.map +1 -1
- package/dist/pframe_utils/axes.d.ts +0 -1
- package/dist/pframe_utils/axes.d.ts.map +1 -0
- package/dist/pframe_utils/axes.js +1 -2
- package/dist/pframe_utils/axes.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +5 -6
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +0 -1
- package/dist/pframe_utils/columns.d.ts.map +1 -0
- package/dist/pframe_utils/columns.js +1 -2
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +3 -4
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts.map +1 -0
- package/dist/pframe_utils/index.js +2 -3
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/platforma.d.ts.map +1 -0
- package/dist/plugin_handle.cjs +1 -2
- package/dist/plugin_handle.cjs.map +1 -1
- package/dist/plugin_handle.d.ts.map +1 -0
- package/dist/plugin_handle.js +1 -1
- package/dist/plugin_model.cjs +3 -4
- package/dist/plugin_model.cjs.map +1 -1
- package/dist/plugin_model.d.ts +0 -1
- package/dist/plugin_model.d.ts.map +1 -0
- package/dist/plugin_model.js +1 -2
- package/dist/plugin_model.js.map +1 -1
- package/dist/raw_globals.cjs +3 -4
- package/dist/raw_globals.cjs.map +1 -1
- package/dist/raw_globals.d.ts.map +1 -0
- package/dist/raw_globals.js +1 -2
- package/dist/raw_globals.js.map +1 -1
- package/dist/ref_util.cjs +3 -4
- package/dist/ref_util.cjs.map +1 -1
- package/dist/ref_util.d.ts +0 -2
- package/dist/ref_util.d.ts.map +1 -0
- package/dist/ref_util.js +1 -2
- package/dist/ref_util.js.map +1 -1
- package/dist/render/accessor.cjs +4 -5
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts.map +1 -0
- package/dist/render/accessor.js +1 -2
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +20 -14
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +2 -3
- package/dist/render/api.d.ts.map +1 -0
- package/dist/render/api.js +11 -5
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.cjs +2 -3
- package/dist/render/future.cjs.map +1 -1
- package/dist/render/future.d.ts.map +1 -0
- package/dist/render/future.js +1 -2
- package/dist/render/future.js.map +1 -1
- package/dist/render/index.cjs +8 -8
- package/dist/render/index.d.ts +1 -2
- package/dist/render/index.js +7 -7
- package/dist/render/internal.cjs +7 -9
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts.map +1 -0
- package/dist/render/internal.js +1 -2
- package/dist/render/internal.js.map +1 -1
- package/dist/render/traversal_ops.d.ts.map +1 -0
- package/dist/render/util/axis_filtering.cjs +1 -2
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.d.ts.map +1 -0
- package/dist/render/util/axis_filtering.js +1 -1
- package/dist/render/util/column_collection.cjs +8 -9
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +0 -1
- package/dist/render/util/column_collection.d.ts.map +1 -0
- package/dist/render/util/column_collection.js +4 -5
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.cjs +4 -4
- package/dist/render/util/index.js +4 -4
- package/dist/render/util/label.cjs +4 -5
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts.map +1 -0
- package/dist/render/util/label.js +3 -4
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +9 -10
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +2 -2
- package/dist/render/util/pcolumn_data.d.ts.map +1 -0
- package/dist/render/util/pcolumn_data.js +7 -8
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/render/util/pframe_upgraders.cjs +1 -2
- package/dist/render/util/pframe_upgraders.cjs.map +1 -1
- package/dist/render/util/pframe_upgraders.js +1 -1
- package/dist/render/util/split_selectors.d.ts.map +1 -0
- package/dist/services/block_services.cjs +2 -3
- package/dist/services/block_services.cjs.map +1 -1
- package/dist/services/block_services.d.ts +2 -2
- package/dist/services/block_services.d.ts.map +1 -0
- package/dist/services/block_services.js +1 -2
- package/dist/services/block_services.js.map +1 -1
- package/dist/services/index.cjs +2 -2
- package/dist/services/index.js +2 -2
- package/dist/services/service_bridge.cjs +1 -2
- package/dist/services/service_bridge.cjs.map +1 -1
- package/dist/services/service_bridge.d.ts.map +1 -0
- package/dist/services/service_bridge.js +1 -1
- package/dist/services/service_resolve.d.ts.map +1 -0
- package/dist/version.cjs +2 -4
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +1 -2
- package/dist/version.js.map +1 -1
- package/package.json +13 -13
- package/src/columns/column_collection_builder.test.ts +40 -27
- package/src/columns/column_collection_builder.ts +176 -131
- package/src/columns/column_selector.test.ts +17 -399
- package/src/columns/column_selector.ts +14 -127
- package/src/columns/column_snapshot.ts +5 -5
- package/src/columns/column_snapshot_provider.ts +11 -10
- package/src/columns/ctx_column_sources.ts +2 -2
- package/src/columns/expand_by_partition.test.ts +4 -4
- package/src/columns/expand_by_partition.ts +4 -3
- package/src/columns/index.ts +1 -0
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +42 -0
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +89 -0
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +39 -11
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +502 -313
- package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +122 -0
- package/src/components/PlDataTable/createPlDataTable/index.ts +4 -2
- package/src/components/PlDataTable/createPlDataTable/utils.test.ts +257 -0
- package/src/components/PlDataTable/createPlDataTable/utils.ts +160 -0
- package/src/components/PlDataTable/index.ts +13 -2
- package/src/components/PlDataTable/labels.ts +29 -18
- package/src/components/PlDataTable/state-migration.ts +3 -1
- package/src/components/PlDataTable/typesV5.ts +4 -4
- package/src/labels/derive_distinct_labels.test.ts +143 -45
- package/src/labels/derive_distinct_labels.ts +102 -49
- package/src/labels/index.ts +0 -1
- package/src/render/api.ts +15 -5
- package/src/render/util/column_collection.ts +4 -3
- package/src/render/util/label.ts +2 -2
- package/src/render/util/pcolumn_data.ts +5 -3
- package/dist/labels/write_labels_to_specs.cjs +0 -15
- package/dist/labels/write_labels_to_specs.cjs.map +0 -1
- package/dist/labels/write_labels_to_specs.d.ts +0 -9
- package/dist/labels/write_labels_to_specs.js +0 -14
- package/dist/labels/write_labels_to_specs.js.map +0 -1
- package/src/labels/write_labels_to_specs.ts +0 -12
|
@@ -1,39 +1,53 @@
|
|
|
1
|
+
import { DeriveLabelsOptions } from "../../../labels/derive_distinct_labels.js";
|
|
1
2
|
import { RenderCtxBase } from "../../../render/api.js";
|
|
2
|
-
import "../../../render/index.js";
|
|
3
3
|
import { PlDataTableFilters, PlDataTableModel } from "../typesV5.js";
|
|
4
4
|
import { PlDataTableStateV2 } from "../state-migration.js";
|
|
5
|
-
import {
|
|
6
|
-
import { MatchingMode } from "../../../columns/column_collection_builder.js";
|
|
7
|
-
import "
|
|
8
|
-
import {
|
|
5
|
+
import { ColumnSnapshot } from "../../../columns/column_snapshot.js";
|
|
6
|
+
import { ColumnMatch, MatchingMode } from "../../../columns/column_collection_builder.js";
|
|
7
|
+
import { DiscoveredTableColumnOptions } from "./discoverColumns.js";
|
|
8
|
+
import { MultiColumnSelector, PColumnSpec, PObjectId, PTableSorting, RequireServices, SUniversalPColumnId, Services } from "@milaboratories/pl-model-common";
|
|
9
|
+
import { Nil } from "@milaboratories/helpers";
|
|
9
10
|
|
|
10
11
|
//#region src/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
type createPlDataTableOptionsV3 = ({
|
|
13
|
+
discoverColumnOptions: DiscoveredTableColumnOptions;
|
|
14
|
+
} | {
|
|
15
|
+
columns: Nil | TableColumnSnapshot<SUniversalPColumnId>[];
|
|
16
|
+
}) & {
|
|
17
|
+
filters?: PlDataTableFilters;
|
|
18
|
+
sorting?: PTableSorting[];
|
|
19
|
+
primaryJoinType?: "inner" | "full";
|
|
20
|
+
tableState?: PlDataTableStateV2;
|
|
21
|
+
labelsOptions?: DeriveLabelsOptions;
|
|
22
|
+
columnsDisplayOptions?: ColumnsDisplayOptions;
|
|
23
|
+
};
|
|
19
24
|
/** Structured source config — selectors/anchors instead of raw ColumnSource. */
|
|
20
25
|
type ColumnsSelectorConfig = {
|
|
21
26
|
include?: MultiColumnSelector | MultiColumnSelector[];
|
|
22
27
|
exclude?: MultiColumnSelector | MultiColumnSelector[];
|
|
23
|
-
anchors?: Record<string, PlRef | PObjectId | PColumnSpec>;
|
|
24
28
|
mode?: MatchingMode;
|
|
25
29
|
maxHops?: number;
|
|
26
30
|
};
|
|
27
|
-
type
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
state?: PlDataTableStateV2;
|
|
31
|
+
type ColumnsDisplayOptions = {
|
|
32
|
+
/** Column ordering rules. Higher priority = further left. First matching rule wins. */ordering?: ColumnOrderRule[]; /** Column visibility rules. First matching rule wins. Unmatched columns use default visibility. */
|
|
33
|
+
visibility?: ColumnVisibilityRule[];
|
|
34
|
+
};
|
|
35
|
+
type ColumnOrderRule = {
|
|
36
|
+
match: ColumnMatcher; /** Higher number = further left in table */
|
|
37
|
+
priority: number;
|
|
35
38
|
};
|
|
39
|
+
type ColumnVisibilityRule = {
|
|
40
|
+
match: ColumnMatcher;
|
|
41
|
+
visibility: "default" | "optional" | "hidden";
|
|
42
|
+
};
|
|
43
|
+
type ColumnMatcher = (spec: PColumnSpec) => boolean;
|
|
36
44
|
declare function createPlDataTableV3<A, U, S extends RequireServices<typeof Services.PFrameSpec>>(ctx: RenderCtxBase<A, U, S>, options: createPlDataTableOptionsV3): PlDataTableModel | undefined;
|
|
45
|
+
/** A single column discovered from sources — normalized from raw ColumnSnapshot/ColumnMatch. */
|
|
46
|
+
type TableColumnSnapshot<Id extends PObjectId | SUniversalPColumnId> = ColumnSnapshot<Id> & {
|
|
47
|
+
readonly isPrimary?: boolean;
|
|
48
|
+
readonly originalId?: PObjectId;
|
|
49
|
+
readonly linkerPath?: ColumnMatch["path"];
|
|
50
|
+
};
|
|
37
51
|
//#endregion
|
|
38
|
-
export {
|
|
52
|
+
export { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, TableColumnSnapshot, createPlDataTableOptionsV3, createPlDataTableV3 };
|
|
39
53
|
//# sourceMappingURL=createPlDataTableV3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPlDataTableV3.d.ts","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts"],"mappings":";;;;;;;;;;;KA0CY,0BAAA;EAEN,qBAAA,EAAuB,4BAAA;AAAA;EAGvB,OAAA,EAAS,GAAA,GAAM,mBAAA,CAAoB,mBAAA;AAAA;EAGvC,OAAA,GAAU,kBAAA;EACV,OAAA,GAAU,aAAA;EACV,eAAA;EAEA,UAAA,GAAa,kBAAA;EACb,aAAA,GAAgB,mBAAA;EAChB,qBAAA,GAAwB,qBAAA;AAAA;;KAId,qBAAA;EACV,OAAA,GAAU,mBAAA,GAAsB,mBAAA;EAChC,OAAA,GAAU,mBAAA,GAAsB,mBAAA;EAChC,IAAA,GAAO,YAAA;EACP,OAAA;AAAA;AAAA,KAGU,qBAAA;EApBN,uFAsBJ,QAAA,GAAW,eAAA,IAtBQ;EAwBnB,UAAA,GAAa,oBAAA;AAAA;AAAA,KAGH,eAAA;EACV,KAAA,EAAO,aAAA,EAxBG;EA0BV,QAAA;AAAA;AAAA,KAGU,oBAAA;EACV,KAAA,EAAO,aAAA;EACP,UAAA;AAAA;AAAA,KAGU,aAAA,IAAiB,IAAA,EAAM,WAAA;AAAA,iBAInB,mBAAA,iBAAoC,eAAA,QAAuB,QAAA,CAAS,UAAA,EAAA,CAClF,GAAA,EAAK,aAAA,CAAc,CAAA,EAAG,CAAA,EAAG,CAAA,GACzB,OAAA,EAAS,0BAAA,GACR,gBAAA;;KA2HS,mBAAA,YAA+B,SAAA,GAAY,mBAAA,IAAuB,cAAA,CAAe,EAAA;EAAA,SAClF,SAAA;EAAA,SACA,UAAA,GAAa,SAAA;EAAA,SACb,UAAA,GAAa,WAAA;AAAA"}
|
|
@@ -1,200 +1,284 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../../render/index.js";
|
|
3
|
-
import { collectFilterSpecColumns } from "../../../filters/traverse.js";
|
|
4
|
-
import { filterSpecToSpecQueryExpr } from "../../../filters/converters/filterToQuery.js";
|
|
5
|
-
import { distillFilterSpec } from "../../../filters/distill.js";
|
|
6
|
-
import "../../../filters/index.js";
|
|
1
|
+
import { collectFilterSpecColumns, traverseFilterSpec } from "../../../filters/traverse.js";
|
|
7
2
|
import { upgradePlDataTableStateV2 } from "../state-migration.js";
|
|
8
3
|
import { getAllLabelColumns, getMatchingLabelColumns } from "../labels.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import "
|
|
13
|
-
import {
|
|
4
|
+
import { createPTableDefV3 } from "./createPTableDefV3.js";
|
|
5
|
+
import { deriveAllLabels, isColumnHidden, isColumnOptional, withLabelAnnotations, withTableVisualAnnotations } from "./utils.js";
|
|
6
|
+
import { discoverTableColumnSnaphots } from "./discoverColumns.js";
|
|
7
|
+
import { canonicalizeJson, getAxisId, getColumnIdAndSpec, parseJson, uniqueBy } from "@milaboratories/pl-model-common";
|
|
8
|
+
import { isNil, throwError } from "@milaboratories/helpers";
|
|
14
9
|
import { isEmpty } from "es-toolkit/compat";
|
|
15
|
-
import { isFunction, isNil } from "es-toolkit";
|
|
16
|
-
|
|
17
10
|
//#region src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
function createPlDataTableV3(ctx, options) {
|
|
12
|
+
const state = upgradePlDataTableStateV2(options.tableState);
|
|
13
|
+
const primaryJoinType = options.primaryJoinType ?? "full";
|
|
14
|
+
const discovered = "discoverColumnOptions" in options ? discoverTableColumnSnaphots(ctx, options.discoverColumnOptions) : options.columns;
|
|
15
|
+
if (isNil(discovered) || discovered.length === 0) return void 0;
|
|
16
|
+
const resolved = resolveDiscoveredColumns(splitDiscoveredColumns(discovered), discovered);
|
|
17
|
+
const labelColumns = getMatchingLabelColumns(resolved.all, getAllLabelColumns(ctx));
|
|
18
|
+
const annotated = annotateColumnGroups(resolved, labelColumns, deriveAllLabels({
|
|
19
|
+
columns: discovered.map((dc) => ({
|
|
20
|
+
id: dc.id,
|
|
21
|
+
spec: dc.spec,
|
|
22
|
+
linkerPath: dc.linkerPath?.map((lp) => ({ spec: lp.linker.spec }))
|
|
23
|
+
})),
|
|
24
|
+
labelColumns,
|
|
25
|
+
deriveLabelsOptions: {
|
|
26
|
+
includeNativeLabel: true,
|
|
27
|
+
...options.labelsOptions
|
|
28
|
+
}
|
|
29
|
+
}), options.columnsDisplayOptions);
|
|
30
|
+
const columnIsAvailable = createColumnValidationById([
|
|
31
|
+
...annotated.direct,
|
|
32
|
+
...annotated.linked.flatMap((lc) => [...annotated.linkers.get(lc.id) ?? [], lc]),
|
|
33
|
+
...annotated.labels
|
|
34
|
+
]);
|
|
35
|
+
const filters = mergeFilters(state.pTableParams.filters, remapFilterColumnIds(options.filters, discovered));
|
|
36
|
+
validateFilters(filters, columnIsAvailable);
|
|
37
|
+
const sorting = resolveSorting(state.pTableParams.sorting, remapSortingColumnIds(options.sorting, discovered));
|
|
38
|
+
validateSorting(sorting, columnIsAvailable);
|
|
39
|
+
const primaryColumnIds = new Set(discovered.filter((dc) => dc.isPrimary).map((dc) => dc.id));
|
|
40
|
+
const primaryColumns = annotated.direct.filter((c) => primaryColumnIds.has(c.id));
|
|
41
|
+
const secondaryColumns = annotated.direct.filter((c) => !primaryColumnIds.has(c.id));
|
|
42
|
+
if (primaryColumns.length === 0) return void 0;
|
|
43
|
+
const fullDef = createPTableDefV3({
|
|
44
|
+
primaryJoinType,
|
|
45
|
+
primaryColumns,
|
|
46
|
+
secondaryGroups: [
|
|
47
|
+
...secondaryColumns.map((c) => [c]),
|
|
48
|
+
...annotated.linked.map((lc) => [...annotated.linkers.get(lc.id) ?? [], lc]),
|
|
49
|
+
...annotated.labels.map((c) => [c])
|
|
50
|
+
],
|
|
51
|
+
filters,
|
|
52
|
+
sorting
|
|
53
|
+
});
|
|
54
|
+
const fullHandle = ctx.createPTableV2(fullDef);
|
|
55
|
+
const pframeHandle = ctx.createPFrame([
|
|
56
|
+
...annotated.direct,
|
|
57
|
+
...annotated.linked,
|
|
58
|
+
...annotated.labels,
|
|
59
|
+
...uniqueBy([...annotated.linkers.values()].flat(), (c) => c.id)
|
|
60
|
+
]);
|
|
61
|
+
if (!fullHandle || !pframeHandle) return void 0;
|
|
62
|
+
const hiddenSpecs = state.pTableParams.hiddenColIds;
|
|
63
|
+
const hiddenColumnIds = computeHiddenColumns([...annotated.direct, ...annotated.linked], sorting, filters, hiddenSpecs);
|
|
64
|
+
const visible = buildVisibleColumns(annotated, hiddenColumnIds, labelColumns);
|
|
65
|
+
const visibleNonCoreDirect = secondaryColumns.filter((c) => !hiddenColumnIds.has(c.id));
|
|
66
|
+
const visibleLinkedGroups = buildVisibleLinkedGroups(visible.direct, visible.linked, annotated.linkers, hiddenSpecs);
|
|
67
|
+
const visibleDef = createPTableDefV3({
|
|
68
|
+
primaryJoinType,
|
|
69
|
+
primaryColumns,
|
|
70
|
+
secondaryGroups: [
|
|
71
|
+
...visibleNonCoreDirect.map((c) => [c]),
|
|
72
|
+
...visibleLinkedGroups,
|
|
73
|
+
...visible.labels.map((c) => [c])
|
|
74
|
+
],
|
|
75
|
+
filters,
|
|
76
|
+
sorting
|
|
77
|
+
});
|
|
78
|
+
const visibleHandle = ctx.createPTableV2(visibleDef);
|
|
79
|
+
if (!visibleHandle) return void 0;
|
|
80
|
+
return {
|
|
81
|
+
sourceId: state.pTableParams.sourceId,
|
|
82
|
+
fullTableHandle: fullHandle,
|
|
83
|
+
fullPframeHandle: pframeHandle,
|
|
84
|
+
visibleTableHandle: visibleHandle
|
|
23
85
|
};
|
|
86
|
+
}
|
|
87
|
+
/** Split discovered columns into direct (no linker path) and linked (with linker path). */
|
|
88
|
+
function splitDiscoveredColumns(columns) {
|
|
24
89
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
90
|
+
direct: columns.filter((dc) => isNil(dc.linkerPath) || dc.linkerPath.length === 0),
|
|
91
|
+
linked: columns.filter((dc) => !isNil(dc.linkerPath) && dc.linkerPath.length > 0)
|
|
27
92
|
};
|
|
28
93
|
}
|
|
29
|
-
/**
|
|
30
|
-
function
|
|
94
|
+
/** Resolve DiscoveredColumn snapshots into PColumn objects with lazily-evaluated data. */
|
|
95
|
+
function resolveDiscoveredColumns(split, allDiscovered) {
|
|
96
|
+
const linked = split.linked.map(resolveSnapshot);
|
|
97
|
+
const linkers = new Map(split.linked.filter((dc) => !isNil(dc.linkerPath)).map((dc, i) => [linked[i].id, dc.linkerPath.map((s) => resolveSnapshot(s.linker))]));
|
|
31
98
|
return {
|
|
32
|
-
|
|
33
|
-
|
|
99
|
+
all: allDiscovered.map(resolveSnapshot),
|
|
100
|
+
direct: split.direct.map(resolveSnapshot),
|
|
101
|
+
linked,
|
|
102
|
+
linkers
|
|
34
103
|
};
|
|
35
104
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
secondaryColumns.push(...params.labelColumns);
|
|
45
|
-
let query = {
|
|
46
|
-
type: "outerJoin",
|
|
47
|
-
primary: joinEntry({
|
|
48
|
-
type: params.coreJoinType === "inner" ? "innerJoin" : "fullJoin",
|
|
49
|
-
entries: coreColumns.map((c) => joinEntry({
|
|
50
|
-
type: "column",
|
|
51
|
-
column: c
|
|
52
|
-
}))
|
|
53
|
-
}),
|
|
54
|
-
secondary: secondaryColumns.map((c) => joinEntry({
|
|
55
|
-
type: "column",
|
|
56
|
-
column: c
|
|
57
|
-
}))
|
|
105
|
+
/** Annotate all column groups with derived labels and display options. */
|
|
106
|
+
function annotateColumnGroups(resolved, labelColumns, derivedLabels, displayOptions) {
|
|
107
|
+
return {
|
|
108
|
+
direct: withTableVisualAnnotations(displayOptions, withLabelAnnotations(derivedLabels, resolved.direct)),
|
|
109
|
+
linked: withTableVisualAnnotations(displayOptions, withLabelAnnotations(derivedLabels, resolved.linked)),
|
|
110
|
+
linkers: new Map([...resolved.linkers].map(([id, cols]) => [id, withLabelAnnotations(derivedLabels, cols)])),
|
|
111
|
+
labels: withLabelAnnotations(derivedLabels, labelColumns)
|
|
58
112
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
type: "sort",
|
|
73
|
-
input: query,
|
|
74
|
-
sortBy: params.sorting.map((s) => ({
|
|
75
|
-
expression: columnIdToExpr(s.column),
|
|
76
|
-
ascending: s.ascending,
|
|
77
|
-
nullsFirst: !s.naAndAbsentAreLeastValues
|
|
78
|
-
}))
|
|
113
|
+
}
|
|
114
|
+
/** Build an index of all valid column IDs (axes + columns) for filter/sorting validation. */
|
|
115
|
+
function createColumnValidationById(fullColumns) {
|
|
116
|
+
const allIds = [...uniqueBy(fullColumns.flatMap((c) => c.spec.axesSpec.map(getAxisId)), (a) => canonicalizeJson(a)).map((a) => ({
|
|
117
|
+
type: "axis",
|
|
118
|
+
id: a
|
|
119
|
+
})), ...fullColumns.map((c) => ({
|
|
120
|
+
type: "column",
|
|
121
|
+
id: c.id
|
|
122
|
+
}))];
|
|
123
|
+
const validIdSet = new Set(allIds.map((c) => canonicalizeJson(c)));
|
|
124
|
+
return (id) => {
|
|
125
|
+
return validIdSet.has(id);
|
|
79
126
|
};
|
|
80
|
-
return { query };
|
|
81
127
|
}
|
|
82
|
-
/**
|
|
83
|
-
function
|
|
84
|
-
|
|
128
|
+
/** Merge filters from table state and options into a single filter spec. */
|
|
129
|
+
function mergeFilters(stateFilters, optionsFilters) {
|
|
130
|
+
const normalized = optionsFilters ?? null;
|
|
131
|
+
return stateFilters !== null && normalized !== null ? {
|
|
132
|
+
type: "and",
|
|
133
|
+
filters: [stateFilters, normalized]
|
|
134
|
+
} : stateFilters ?? normalized;
|
|
85
135
|
}
|
|
86
|
-
/**
|
|
87
|
-
function
|
|
88
|
-
|
|
136
|
+
/** Validate that all column references in filters exist in the table. */
|
|
137
|
+
function validateFilters(filters, isValidColumnId) {
|
|
138
|
+
if (filters == null) return;
|
|
139
|
+
const firstInvalid = collectFilterSpecColumns(filters).find((col) => !isValidColumnId(col));
|
|
140
|
+
if (firstInvalid !== void 0) throw new Error(`Invalid filter column ${firstInvalid}: column reference does not match the table columns`);
|
|
89
141
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
142
|
+
/** Pick user sorting from state if non-empty, otherwise fall back to options default. */
|
|
143
|
+
function resolveSorting(userSorting, defaultSorting) {
|
|
144
|
+
return (isEmpty(userSorting) ? defaultSorting : userSorting) ?? [];
|
|
145
|
+
}
|
|
146
|
+
/** Validate that all column references in sorting exist in the table. */
|
|
147
|
+
function validateSorting(sorting, isValidColumnId) {
|
|
148
|
+
const firstInvalid = sorting.find((s) => !isValidColumnId(canonicalizeJson(s.column)));
|
|
149
|
+
if (firstInvalid !== void 0) throw new Error(`Invalid sorting column ${JSON.stringify(firstInvalid.column)}: column reference does not match the table columns`);
|
|
150
|
+
}
|
|
151
|
+
/** Determine which columns should be hidden based on state or optional-column defaults. */
|
|
152
|
+
function computeHiddenColumns(columns, sorting, filters, hiddenSpecs) {
|
|
153
|
+
const alwaysHidden = columns.filter((c) => isColumnHidden(c.spec)).map((c) => c.id);
|
|
154
|
+
const optionalHidden = !isNil(hiddenSpecs) ? hiddenSpecs.filter((s) => s.type === "column").map((s) => s.id) : columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);
|
|
155
|
+
const initial = [...alwaysHidden, ...optionalHidden];
|
|
156
|
+
const preserved = collectPreservedColumnIds(sorting, filters);
|
|
157
|
+
return new Set(initial.filter((id) => !preserved.has(id)));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Build visible linked column groups. Non-hidden groups are included fully;
|
|
161
|
+
* hidden groups are trimmed to only the prefix that brings axes not yet
|
|
162
|
+
* covered by earlier groups (visible or previously trimmed).
|
|
163
|
+
*/
|
|
164
|
+
function buildVisibleLinkedGroups(direct, linked, linkers, hiddenSpecs) {
|
|
165
|
+
const result = [];
|
|
166
|
+
const coveredAxisIds = /* @__PURE__ */ new Set();
|
|
167
|
+
const collectAxes = (group) => {
|
|
168
|
+
for (const col of group) for (const as of col.spec.axesSpec) coveredAxisIds.add(canonicalizeJson(getAxisId(as)));
|
|
169
|
+
};
|
|
170
|
+
collectAxes(direct);
|
|
171
|
+
for (const lc of linked) {
|
|
172
|
+
const group = [...linkers.get(lc.id) ?? [], lc];
|
|
173
|
+
result.push(group);
|
|
174
|
+
collectAxes(group);
|
|
175
|
+
}
|
|
176
|
+
for (const group of linkers.values()) {
|
|
177
|
+
const trimmed = trimGroupByVisibleAxes(group, hiddenSpecs, coveredAxisIds);
|
|
178
|
+
if (trimmed.length > 0) {
|
|
179
|
+
result.push(trimmed);
|
|
180
|
+
collectAxes(trimmed);
|
|
116
181
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
columns: visibleColumns,
|
|
174
|
-
labelColumns: visibleLabelColumns,
|
|
175
|
-
coreJoinType,
|
|
176
|
-
filters,
|
|
177
|
-
sorting,
|
|
178
|
-
coreColumnPredicate
|
|
179
|
-
});
|
|
180
|
-
const visibleHandle = ctx.createPTableV2(visibleDef);
|
|
181
|
-
if (!visibleHandle) return void 0;
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* For a linked column group [linker1, ..., linkerN, column], find the rightmost
|
|
187
|
+
* element that has at least one non-hidden and not-yet-covered axis.
|
|
188
|
+
* Return the prefix up to and including that element.
|
|
189
|
+
* If no element has such an axis, return empty array.
|
|
190
|
+
*/
|
|
191
|
+
function trimGroupByVisibleAxes(group, hiddenSpecs, coveredAxisIds) {
|
|
192
|
+
if (hiddenSpecs === null) return group;
|
|
193
|
+
const hiddenAxisIds = new Set(hiddenSpecs.filter((s) => s.type === "axis").map((s) => canonicalizeJson(s.id)));
|
|
194
|
+
const uncoveredAxisIds = new Set(group.flatMap((c) => c.spec.axesSpec.map((as) => canonicalizeJson(getAxisId(as)))).filter((id) => !hiddenAxisIds.has(id) && !coveredAxisIds.has(id)));
|
|
195
|
+
let lastNeeded = -1;
|
|
196
|
+
for (let i = 0; i < group.length; i++) {
|
|
197
|
+
const newAxes = group[i].spec.axesSpec.map((as) => canonicalizeJson(getAxisId(as))).filter((id) => uncoveredAxisIds.has(id));
|
|
198
|
+
if (newAxes.length > 0) {
|
|
199
|
+
for (const id of newAxes) uncoveredAxisIds.delete(id);
|
|
200
|
+
lastNeeded = i;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return lastNeeded === -1 ? [] : group.slice(0, lastNeeded + 1);
|
|
204
|
+
}
|
|
205
|
+
/** Collect IDs of columns that must remain visible (sorted, filtered). */
|
|
206
|
+
function collectPreservedColumnIds(sorting, filters) {
|
|
207
|
+
const sortedIds = (sorting ?? []).map((s) => s.column).filter((c) => c.type === "column").map((c) => c.id);
|
|
208
|
+
const filterIds = !isNil(filters) ? collectFilterSpecColumns(filters).flatMap((c) => {
|
|
209
|
+
const obj = parseJson(c);
|
|
210
|
+
return obj.type === "column" ? [obj.id] : [];
|
|
211
|
+
}) : [];
|
|
212
|
+
return new Set([...sortedIds, ...filterIds]);
|
|
213
|
+
}
|
|
214
|
+
/** Filter annotated columns to only visible ones, re-matching label columns for the visible subset. */
|
|
215
|
+
function buildVisibleColumns(annotated, hiddenColumns, originalLabelColumns) {
|
|
216
|
+
const direct = annotated.direct.filter((c) => !hiddenColumns.has(c.id));
|
|
217
|
+
const linked = annotated.linked.filter((c) => !hiddenColumns.has(c.id));
|
|
218
|
+
return {
|
|
219
|
+
direct,
|
|
220
|
+
linked,
|
|
221
|
+
labels: getMatchingLabelColumns([...direct, ...linked].map(getColumnIdAndSpec), originalLabelColumns)
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/** Resolve a ColumnSnapshot to a PColumn with lazily-evaluated data. */
|
|
225
|
+
function resolveSnapshot(snap) {
|
|
226
|
+
return {
|
|
227
|
+
id: snap.id,
|
|
228
|
+
spec: snap.spec,
|
|
229
|
+
data: snap.data?.get()
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/** Remap column references in sorting entries. */
|
|
233
|
+
function remapSortingColumnIds(sorting, columns) {
|
|
234
|
+
return sorting?.map((s) => {
|
|
235
|
+
if (s.column.type === "axis") return s;
|
|
236
|
+
const id = s.column.id;
|
|
237
|
+
const column = columns.find((c) => (c.originalId ?? c.id) === id) ?? throwError(`Column ID "${id}" in sorting does not match any discovered column`);
|
|
182
238
|
return {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
239
|
+
...s,
|
|
240
|
+
column: {
|
|
241
|
+
type: "column",
|
|
242
|
+
id: column.id
|
|
243
|
+
}
|
|
187
244
|
};
|
|
188
|
-
}
|
|
189
|
-
collection.dispose();
|
|
190
|
-
}
|
|
245
|
+
});
|
|
191
246
|
}
|
|
192
|
-
/**
|
|
193
|
-
function
|
|
194
|
-
if (
|
|
195
|
-
|
|
247
|
+
/** Remap column references in a filter tree. */
|
|
248
|
+
function remapFilterColumnIds(filters, columns) {
|
|
249
|
+
if (isNil(filters)) return filters;
|
|
250
|
+
const map = (tableColumnId) => {
|
|
251
|
+
const parsed = parseJson(tableColumnId);
|
|
252
|
+
if (parsed.type === "axis") return tableColumnId;
|
|
253
|
+
const originalId = parsed.id;
|
|
254
|
+
return canonicalizeJson({
|
|
255
|
+
type: "column",
|
|
256
|
+
id: (columns.find((c) => (c.originalId ?? c.id) === originalId) ?? throwError(`Column ID "${parsed.id}" in filters does not match any discovered column`)).id
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
return traverseFilterSpec(filters, {
|
|
260
|
+
leaf: (leaf) => {
|
|
261
|
+
if (leaf.type === void 0) return leaf;
|
|
262
|
+
const result = { ...leaf };
|
|
263
|
+
if ("column" in result) result.column = map(result.column);
|
|
264
|
+
if ("rhs" in result) result.rhs = map(result.rhs);
|
|
265
|
+
return result;
|
|
266
|
+
},
|
|
267
|
+
and: (results) => ({
|
|
268
|
+
type: "and",
|
|
269
|
+
filters: results
|
|
270
|
+
}),
|
|
271
|
+
or: (results) => ({
|
|
272
|
+
type: "or",
|
|
273
|
+
filters: results
|
|
274
|
+
}),
|
|
275
|
+
not: (result) => ({
|
|
276
|
+
type: "not",
|
|
277
|
+
filter: result
|
|
278
|
+
})
|
|
279
|
+
});
|
|
196
280
|
}
|
|
197
|
-
|
|
198
281
|
//#endregion
|
|
199
|
-
export {
|
|
282
|
+
export { createPlDataTableV3 };
|
|
283
|
+
|
|
200
284
|
//# sourceMappingURL=createPlDataTableV3.js.map
|