@platforma-sdk/model 1.82.0 → 1.83.9
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/annotations/converter.d.ts +1 -3
- package/dist/annotations/converter.d.ts.map +1 -1
- package/dist/annotations/types.d.ts +5 -6
- package/dist/annotations/types.d.ts.map +1 -1
- package/dist/bconfig/index.d.ts +2 -2
- package/dist/bconfig/lambdas.d.ts +11 -21
- package/dist/bconfig/lambdas.d.ts.map +1 -1
- package/dist/bconfig/normalization.d.ts +3 -5
- package/dist/bconfig/normalization.d.ts.map +1 -1
- package/dist/bconfig/types.d.ts +4 -5
- package/dist/bconfig/types.d.ts.map +1 -1
- package/dist/bconfig/util.d.ts +1 -3
- package/dist/bconfig/util.d.ts.map +1 -1
- package/dist/bconfig/v3.d.ts +4 -6
- package/dist/bconfig/v3.d.ts.map +1 -1
- package/dist/block_api_v1.d.ts +2 -4
- package/dist/block_api_v1.d.ts.map +1 -1
- package/dist/block_api_v2.d.ts +1 -3
- package/dist/block_api_v2.d.ts.map +1 -1
- package/dist/block_api_v3.d.ts +1 -3
- package/dist/block_api_v3.d.ts.map +1 -1
- package/dist/block_migrations.d.ts +20 -36
- package/dist/block_migrations.d.ts.map +1 -1
- package/dist/block_model.cjs +2 -2
- package/dist/block_model.d.ts +10 -10
- package/dist/block_model.d.ts.map +1 -1
- package/dist/block_model.js +2 -2
- package/dist/block_state_patch.d.ts +6 -6
- package/dist/block_state_patch.d.ts.map +1 -1
- package/dist/block_state_util.d.ts +4 -6
- package/dist/block_state_util.d.ts.map +1 -1
- package/dist/block_storage.d.ts +24 -23
- package/dist/block_storage.d.ts.map +1 -1
- package/dist/block_storage_facade.d.ts +11 -12
- package/dist/block_storage_facade.d.ts.map +1 -1
- package/dist/columns/column.d.ts +5 -6
- package/dist/columns/column.d.ts.map +1 -1
- package/dist/columns/column_providers/index.d.ts +5 -6
- package/dist/columns/column_providers/index.d.ts.map +1 -1
- package/dist/columns/column_providers/providers.d.ts +10 -11
- package/dist/columns/column_providers/providers.d.ts.map +1 -1
- package/dist/columns/column_providers/types.d.ts +2 -3
- package/dist/columns/column_providers/types.d.ts.map +1 -1
- package/dist/columns/column_recipes/column_discovered_recipe.d.ts +1 -3
- package/dist/columns/column_recipes/column_discovered_recipe.d.ts.map +1 -1
- package/dist/columns/column_recipes/column_filtered_recipe.d.ts +1 -3
- package/dist/columns/column_recipes/column_filtered_recipe.d.ts.map +1 -1
- package/dist/columns/column_recipes/column_overrided_recipe.d.ts +2 -3
- package/dist/columns/column_recipes/column_overrided_recipe.d.ts.map +1 -1
- package/dist/columns/column_recipes/index.d.ts +3 -4
- package/dist/columns/column_recipes/index.d.ts.map +1 -1
- package/dist/columns/column_recipes/types.d.ts +5 -6
- package/dist/columns/column_recipes/types.d.ts.map +1 -1
- package/dist/columns/columns_collection.d.ts +7 -8
- package/dist/columns/columns_collection.d.ts.map +1 -1
- package/dist/columns/data_column.d.ts +12 -16
- package/dist/columns/data_column.d.ts.map +1 -1
- package/dist/columns/derive_axis_values_labels.d.ts +2 -3
- package/dist/columns/derive_axis_values_labels.d.ts.map +1 -1
- package/dist/columns/split_by_axes.d.ts +3 -5
- package/dist/columns/split_by_axes.d.ts.map +1 -1
- package/dist/columns/utils.d.ts +10 -12
- package/dist/columns/utils.d.ts.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +5 -5
- package/dist/components/PFrameForGraphs.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts +59 -40
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +18 -18
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
- package/dist/components/PlDataTable/columnResolver.cjs +2 -4
- package/dist/components/PlDataTable/columnResolver.cjs.map +1 -1
- package/dist/components/PlDataTable/columnResolver.js +2 -4
- package/dist/components/PlDataTable/columnResolver.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +3 -4
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +13 -10
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +5 -5
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +4 -4
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +8 -7
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +2 -3
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts +6 -7
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV4.d.ts +73 -42
- package/dist/components/PlDataTable/typesV4.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV5.d.ts +3 -5
- package/dist/components/PlDataTable/typesV5.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV6.d.ts +4 -6
- package/dist/components/PlDataTable/typesV6.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV7.d.ts +45 -27
- package/dist/components/PlDataTable/typesV7.d.ts.map +1 -1
- package/dist/components/PlDataTable/typesV8.d.ts +80 -45
- package/dist/components/PlDataTable/typesV8.d.ts.map +1 -1
- package/dist/components/PlDatasetSelector/build_dataset_options.d.ts +7 -6
- package/dist/components/PlDatasetSelector/build_dataset_options.d.ts.map +1 -1
- package/dist/components/PlDatasetSelector/dataset_selection.d.ts +4 -6
- package/dist/components/PlDatasetSelector/dataset_selection.d.ts.map +1 -1
- package/dist/components/PlDatasetSelector/filter_discovery.d.ts +9 -8
- package/dist/components/PlDatasetSelector/filter_discovery.d.ts.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts +6 -13
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -1
- package/dist/components/PlSelectionModel.d.ts +6 -6
- package/dist/components/PlSelectionModel.d.ts.map +1 -1
- package/dist/components/index.d.ts +3 -0
- package/dist/config/index.d.ts +2 -6
- package/dist/config/model.d.ts +28 -30
- package/dist/config/model.d.ts.map +1 -1
- package/dist/config/type_engine.d.ts +8 -31
- package/dist/config/type_engine.d.ts.map +1 -1
- package/dist/env_value.d.ts +1 -2
- package/dist/env_value.d.ts.map +1 -1
- package/dist/filters/converters/filterToQuery.d.ts +6 -7
- package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts +2 -4
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -1
- package/dist/filters/distill.d.ts +1 -3
- package/dist/filters/distill.d.ts.map +1 -1
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/types.d.ts +3 -4
- package/dist/filters/types.d.ts.map +1 -1
- package/dist/index.cjs +20 -60
- package/dist/index.d.ts +14 -11
- package/dist/index.js +4 -8
- package/dist/labels/derive_distinct_labels.d.ts +28 -17
- package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
- package/dist/labels/derive_distinct_tooltips.d.ts +11 -8
- package/dist/labels/derive_distinct_tooltips.d.ts.map +1 -1
- package/dist/labels/linked_column_postfix.d.ts +3 -5
- package/dist/labels/linked_column_postfix.d.ts.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/pframe.d.ts +1 -3
- package/dist/pframe.d.ts.map +1 -1
- package/dist/pframe_utils/axes.d.ts +4 -5
- package/dist/pframe_utils/axes.d.ts.map +1 -1
- package/dist/pframe_utils/columns.d.ts +3 -7
- package/dist/pframe_utils/columns.d.ts.map +1 -1
- package/dist/pframe_utils/index.d.ts +9 -10
- package/dist/pframe_utils/index.d.ts.map +1 -1
- package/dist/platforma.d.ts +19 -21
- package/dist/platforma.d.ts.map +1 -1
- package/dist/plugin_handle.d.ts +11 -13
- package/dist/plugin_handle.d.ts.map +1 -1
- package/dist/plugin_model.d.ts +21 -22
- package/dist/plugin_model.d.ts.map +1 -1
- package/dist/raw_globals.d.ts +3 -4
- package/dist/raw_globals.d.ts.map +1 -1
- package/dist/render/accessor.d.ts +2 -4
- package/dist/render/accessor.d.ts.map +1 -1
- package/dist/render/api.cjs +0 -22
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +13 -21
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +1 -22
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.d.ts +2 -4
- package/dist/render/future.d.ts.map +1 -1
- package/dist/render/index.cjs +0 -1
- package/dist/render/index.d.ts +3 -2
- package/dist/render/index.js +2 -2
- package/dist/render/internal.d.ts +11 -13
- package/dist/render/internal.d.ts.map +1 -1
- package/dist/render/traversal_ops.d.ts +14 -11
- package/dist/render/traversal_ops.d.ts.map +1 -1
- package/dist/render/util/axis_filtering.d.ts +5 -7
- package/dist/render/util/axis_filtering.d.ts.map +1 -1
- package/dist/render/util/column_collection.d.ts +14 -12
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/label.d.ts +2 -3
- package/dist/render/util/label.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +24 -25
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/split_selectors.d.ts +4 -6
- package/dist/render/util/split_selectors.d.ts.map +1 -1
- package/dist/services/block_services.d.ts +3 -4
- package/dist/services/block_services.d.ts.map +1 -1
- package/dist/services/get_services.d.ts +1 -3
- package/dist/services/get_services.d.ts.map +1 -1
- package/dist/services/service_bridge.d.ts +3 -5
- package/dist/services/service_bridge.d.ts.map +1 -1
- package/dist/services/service_resolve.d.ts +6 -7
- package/dist/services/service_resolve.d.ts.map +1 -1
- package/dist/version.d.ts +3 -4
- package/dist/version.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/bconfig/lambdas.ts +1 -25
- package/src/components/PlDataTable/columnResolver.test.ts +3 -5
- package/src/components/PlDataTable/columnResolver.ts +2 -12
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +1 -4
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +5 -4
- package/src/config/index.ts +0 -4
- package/src/config/type_engine.ts +6 -49
- package/src/index.ts +0 -2
- package/src/render/api.ts +0 -32
- package/src/typing.test.ts +4 -143
- package/dist/block_model_legacy.cjs +0 -240
- package/dist/block_model_legacy.cjs.map +0 -1
- package/dist/block_model_legacy.d.ts +0 -115
- package/dist/block_model_legacy.d.ts.map +0 -1
- package/dist/block_model_legacy.js +0 -240
- package/dist/block_model_legacy.js.map +0 -1
- package/dist/config/actions.cjs +0 -232
- package/dist/config/actions.cjs.map +0 -1
- package/dist/config/actions.d.ts +0 -48
- package/dist/config/actions.d.ts.map +0 -1
- package/dist/config/actions.js +0 -201
- package/dist/config/actions.js.map +0 -1
- package/dist/config/actions_kinds.d.ts +0 -116
- package/dist/config/actions_kinds.d.ts.map +0 -1
- package/dist/config/index.cjs +0 -33
- package/dist/config/index.js +0 -2
- package/dist/config/model_meta.d.ts +0 -9
- package/dist/config/model_meta.d.ts.map +0 -1
- package/dist/config/type_util.d.ts +0 -14
- package/dist/config/type_util.d.ts.map +0 -1
- package/dist/ref_util.cjs +0 -21
- package/dist/ref_util.cjs.map +0 -1
- package/dist/ref_util.d.ts +0 -19
- package/dist/ref_util.d.ts.map +0 -1
- package/dist/ref_util.js +0 -20
- package/dist/ref_util.js.map +0 -1
- package/src/block_model_legacy.ts +0 -465
- package/src/config/actions.ts +0 -468
- package/src/config/actions_kinds.ts +0 -264
- package/src/config/model_meta.ts +0 -5
- package/src/config/type_util.ts +0 -25
- package/src/ref_util.ts +0 -17
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { SUniversalPColumnId } from "@milaboratories/pl-model-common";
|
|
2
|
-
|
|
3
2
|
//#region src/components/PlAnnotations/filter.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Represents an equals predicate for pattern filtering.
|
|
6
5
|
* Checks if the pattern exactly matches the provided value.
|
|
7
6
|
* Can handle both string literals and biological sequences with wildcards.
|
|
8
7
|
*/
|
|
9
|
-
type PatternPredicateEquals = {
|
|
10
|
-
type: "equals";
|
|
8
|
+
export type PatternPredicateEquals = {
|
|
9
|
+
type: "equals";
|
|
10
|
+
/** The exact pattern value to match */
|
|
11
11
|
value: string;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
@@ -15,21 +15,24 @@ type PatternPredicateEquals = {
|
|
|
15
15
|
* Checks if the pattern contains the provided subsequence.
|
|
16
16
|
* Can handle both string literals and biological sequences with wildcards.
|
|
17
17
|
*/
|
|
18
|
-
type PatternPredicateContainSubsequence = {
|
|
19
|
-
type: "containSubsequence";
|
|
18
|
+
export type PatternPredicateContainSubsequence = {
|
|
19
|
+
type: "containSubsequence";
|
|
20
|
+
/** The subpattern to search for within the target pattern */
|
|
20
21
|
value: string;
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
23
24
|
* Union type for pattern predicates that can be applied to both sequence and string data.
|
|
24
25
|
*/
|
|
25
|
-
type PatternPredicate = PatternPredicateEquals | PatternPredicateContainSubsequence;
|
|
26
|
+
export type PatternPredicate = PatternPredicateEquals | PatternPredicateContainSubsequence;
|
|
26
27
|
/**
|
|
27
28
|
* Filter for pattern data, specifying the column to filter and the predicate to apply.
|
|
28
29
|
* Works with both biological sequences (with wildcards) and regular strings.
|
|
29
30
|
*/
|
|
30
|
-
type PatternFilter = {
|
|
31
|
-
type: "pattern";
|
|
32
|
-
|
|
31
|
+
export type PatternFilter = {
|
|
32
|
+
type: "pattern";
|
|
33
|
+
/** The column identifier to apply the filter to */
|
|
34
|
+
column: SUniversalPColumnId;
|
|
35
|
+
/** The predicate defining the filtering logic */
|
|
33
36
|
predicate: PatternPredicate;
|
|
34
37
|
};
|
|
35
38
|
/**
|
|
@@ -43,9 +46,11 @@ type PatternFilter = {
|
|
|
43
46
|
*
|
|
44
47
|
* The ranked values can be used in numerical comparison filters.
|
|
45
48
|
*/
|
|
46
|
-
type ValueRank = {
|
|
47
|
-
transformer: "rank";
|
|
48
|
-
|
|
49
|
+
export type ValueRank = {
|
|
50
|
+
transformer: "rank";
|
|
51
|
+
/** The column identifier to apply the ranking to */
|
|
52
|
+
column: SUniversalPColumnId;
|
|
53
|
+
/** If true, sorts highest values first (highest value gets rank 1) */
|
|
49
54
|
descending?: true;
|
|
50
55
|
};
|
|
51
56
|
/**
|
|
@@ -58,9 +63,11 @@ type ValueRank = {
|
|
|
58
63
|
*
|
|
59
64
|
* The cumulative values can be used in numerical comparison filters.
|
|
60
65
|
*/
|
|
61
|
-
type SortedCumulativeSum = {
|
|
62
|
-
transformer: "sortedCumulativeSum";
|
|
63
|
-
|
|
66
|
+
export type SortedCumulativeSum = {
|
|
67
|
+
transformer: "sortedCumulativeSum";
|
|
68
|
+
/** The column identifier to apply the cumulative sum to */
|
|
69
|
+
column: SUniversalPColumnId;
|
|
70
|
+
/** If true, sorts values in descending order before calculating the cumulative sum */
|
|
64
71
|
descending?: true;
|
|
65
72
|
};
|
|
66
73
|
/**
|
|
@@ -72,8 +79,9 @@ type SortedCumulativeSum = {
|
|
|
72
79
|
* The log10-transformed values can be used in numerical comparison filters.
|
|
73
80
|
* Note: The behavior for non-positive input values (<= 0) results in -Infinity.
|
|
74
81
|
*/
|
|
75
|
-
type Log10 = {
|
|
76
|
-
transformer: "log10";
|
|
82
|
+
export type Log10 = {
|
|
83
|
+
transformer: "log10";
|
|
84
|
+
/** The column identifier to apply the log10 transformation to */
|
|
77
85
|
column: SUniversalPColumnId;
|
|
78
86
|
};
|
|
79
87
|
/**
|
|
@@ -82,7 +90,7 @@ type Log10 = {
|
|
|
82
90
|
* operations such as "top N" or "first X%" queries.
|
|
83
91
|
* Any NA values are propagated to the transformed column, and ignored in ranks and cumulative sums.
|
|
84
92
|
*/
|
|
85
|
-
type TransformedColumn = ValueRank | SortedCumulativeSum | Log10;
|
|
93
|
+
export type TransformedColumn = ValueRank | SortedCumulativeSum | Log10;
|
|
86
94
|
/**
|
|
87
95
|
* Defines a numerical comparison between two values that can be column references or constants.
|
|
88
96
|
*
|
|
@@ -100,26 +108,31 @@ type TransformedColumn = ValueRank | SortedCumulativeSum | Log10;
|
|
|
100
108
|
* - The minDiff parameter can only be used when both sides are columns or transformed columns
|
|
101
109
|
* - Use allowEqual=true to include equality in the comparison (<=)
|
|
102
110
|
*/
|
|
103
|
-
type NumericalComparisonFilter = {
|
|
104
|
-
type: "numericalComparison";
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
111
|
+
export type NumericalComparisonFilter = {
|
|
112
|
+
type: "numericalComparison";
|
|
113
|
+
/** The first column to compare (left side of comparison) */
|
|
114
|
+
lhs: SUniversalPColumnId | TransformedColumn | number;
|
|
115
|
+
/** The second column to compare (right side of comparison) */
|
|
116
|
+
rhs: SUniversalPColumnId | TransformedColumn | number;
|
|
117
|
+
/** The minimum difference between lhs and rhs values */
|
|
118
|
+
minDiff?: number;
|
|
119
|
+
/** Whether equality is permitted in the comparison */
|
|
108
120
|
allowEqual?: true;
|
|
109
121
|
};
|
|
110
122
|
/**
|
|
111
123
|
* Represents a filter that checks if a column's values are NA (not available).
|
|
112
124
|
* This filter is useful for filtering out records where a specific column has no value / clonotype is not present.
|
|
113
125
|
*/
|
|
114
|
-
type IsNA = {
|
|
115
|
-
type: "isNA";
|
|
126
|
+
export type IsNA = {
|
|
127
|
+
type: "isNA";
|
|
128
|
+
/** The column identifier to check for NA values */
|
|
116
129
|
column: SUniversalPColumnId;
|
|
117
130
|
};
|
|
118
131
|
/**
|
|
119
132
|
* Represents a logical OR operation between multiple filters.
|
|
120
133
|
* A record matches if at least one of the contained filters matches.
|
|
121
134
|
*/
|
|
122
|
-
interface OrFilter {
|
|
135
|
+
export interface OrFilter {
|
|
123
136
|
type: "or";
|
|
124
137
|
/** Array of filters to combine with OR logic */
|
|
125
138
|
filters: AnnotationFilter[];
|
|
@@ -128,7 +141,7 @@ interface OrFilter {
|
|
|
128
141
|
* Represents a logical AND operation between multiple filters.
|
|
129
142
|
* A record matches only if all of the contained filters match.
|
|
130
143
|
*/
|
|
131
|
-
interface AndFilter {
|
|
144
|
+
export interface AndFilter {
|
|
132
145
|
type: "and";
|
|
133
146
|
/** Array of filters to combine with AND logic */
|
|
134
147
|
filters: AnnotationFilter[];
|
|
@@ -137,7 +150,7 @@ interface AndFilter {
|
|
|
137
150
|
* Represents a logical NOT operation on a filter.
|
|
138
151
|
* A record matches if it does not match the contained filter.
|
|
139
152
|
*/
|
|
140
|
-
interface NotFilter {
|
|
153
|
+
export interface NotFilter {
|
|
141
154
|
type: "not";
|
|
142
155
|
/** The filter to negate */
|
|
143
156
|
filter: AnnotationFilter;
|
|
@@ -145,27 +158,29 @@ interface NotFilter {
|
|
|
145
158
|
/**
|
|
146
159
|
* Union type for all supported annotation filters.
|
|
147
160
|
*/
|
|
148
|
-
type AnnotationFilter = IsNA | PatternFilter | NumericalComparisonFilter | OrFilter | AndFilter | NotFilter;
|
|
161
|
+
export type AnnotationFilter = IsNA | PatternFilter | NumericalComparisonFilter | OrFilter | AndFilter | NotFilter;
|
|
149
162
|
/**
|
|
150
163
|
* Represents a single step in the annotation process.
|
|
151
164
|
* Each step consists of a filter to select records and a label to assign to those records.
|
|
152
165
|
*/
|
|
153
|
-
type AnnotationStep = {
|
|
154
|
-
/** The filter to apply for selecting records */
|
|
166
|
+
export type AnnotationStep = {
|
|
167
|
+
/** The filter to apply for selecting records */
|
|
168
|
+
filter: AnnotationFilter;
|
|
169
|
+
/** The label to assign to records that match the filter */
|
|
155
170
|
label: string;
|
|
156
171
|
};
|
|
157
172
|
/**
|
|
158
173
|
* Specifies which entity to annotate: either entire clonotypes or clonotypes within specific samples.
|
|
159
174
|
* This choice affects how filtering and labeling will be applied across your dataset.
|
|
160
175
|
*/
|
|
161
|
-
type AnnotationMode =
|
|
176
|
+
export type AnnotationMode =
|
|
162
177
|
/**
|
|
163
178
|
* Annotates entire clonotypes globally, regardless of which samples they appear in.
|
|
164
179
|
* A clonotype will either be fully included or excluded across all samples.
|
|
165
180
|
* The resulting column will have the following shape:
|
|
166
181
|
* [clonotype_key] -> label
|
|
167
182
|
*/
|
|
168
|
-
"byClonotype"
|
|
183
|
+
"byClonotype" |
|
|
169
184
|
/**
|
|
170
185
|
* Annotates clonotypes independently within each sample.
|
|
171
186
|
* This allows sample-specific filtering, where a clonotype might be included in one sample
|
|
@@ -175,22 +190,26 @@ type AnnotationMode =
|
|
|
175
190
|
* The resulting column will have the following shape:
|
|
176
191
|
* [sample_id, clonotype_key] -> label
|
|
177
192
|
*/
|
|
178
|
-
|
|
193
|
+
"bySampleAndClonotype";
|
|
179
194
|
/**
|
|
180
195
|
* Represents a complete annotation configuration.
|
|
181
196
|
* Contains a series of annotation steps that are applied in sequence.
|
|
182
197
|
* Annotations are applied from lower indices to higher indices (earlier steps are processed first),
|
|
183
198
|
* with later steps taking precedence when multiple steps match the same record.
|
|
184
199
|
*/
|
|
185
|
-
type AnnotationScript = {
|
|
186
|
-
/** The title of the annotation */
|
|
187
|
-
|
|
200
|
+
export type AnnotationScript = {
|
|
201
|
+
/** The title of the annotation */
|
|
202
|
+
title: string;
|
|
203
|
+
/** The mode of annotation to apply */
|
|
204
|
+
mode: AnnotationMode;
|
|
205
|
+
/** Ordered list of annotation steps to apply */
|
|
188
206
|
steps: AnnotationStep[];
|
|
189
207
|
};
|
|
190
|
-
type AnnotationScript2<S extends AnnotationStep> = {
|
|
191
|
-
/** The mode of annotation to apply */
|
|
208
|
+
export type AnnotationScript2<S extends AnnotationStep> = {
|
|
209
|
+
/** The mode of annotation to apply */
|
|
210
|
+
mode: AnnotationMode;
|
|
211
|
+
/** Ordered list of annotation steps to apply */
|
|
192
212
|
steps: S[];
|
|
193
213
|
};
|
|
194
214
|
//#endregion
|
|
195
|
-
export { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationStep, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, SortedCumulativeSum, TransformedColumn, ValueRank };
|
|
196
215
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","names":[],"sources":["../../../src/components/PlAnnotations/filter.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter.d.ts","names":[],"sources":["../../../src/components/PlAnnotations/filter.ts"],"mappings":";;;;;;;YAWY;EACV;;EAEA;;;;;;;YAQU;EACV;;EAEA;;;;;YAMU,mBAAmB,yBAAyB;;;;;YAM5C;EACV;;EAEA,QAAQ;;EAER,WAAW;;;;;;;;;;;;;YAkBD;EACV;;EAEA,QAAQ;;EAER;;;;;;;;;;;;YAaU;EACV;;EAEA,QAAQ;;EAER;;;;;;;;;;;YAYU;EACV;;EAEA,QAAQ;;;;;;;;YASE,oBAAoB,YAAY,sBAAsB;;;;;;;;;;;;;;;;;;YAmBtD;EACV;;EAEA,KAAK,sBAAsB;;EAE3B,KAAK,sBAAsB;;EAE3B;;EAEA;;;;;;YAOU;EACV;;EAEA,QAAQ;;;;;;iBAWO;EACf;;EAEA,SAAS;;;;;;iBAOM;EACf;;EAEA,SAAS;;;;;;iBAOM;EACf;;EAEA,QAAQ;;;;;YAME,mBACR,OACA,gBACA,4BACA,WACA,YACA;;;;;YAUQ;;EAEV,QAAQ;;EAER;;;;;;YAOU;;;;;;;;;;;;;;;;;;;;;;;;YAyBA;;EAEV;;EAEA,MAAM;;EAEN,OAAO;;YAGG,kBAAkB,UAAU;;EAEtC,MAAM;;EAEN,OAAO"}
|
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
import { AnnotationFilter, AnnotationMode, AnnotationScript, PatternPredicate } from "./filter.js";
|
|
2
2
|
import { FilterSpec as FilterSpec$1, FilterSpecLeaf as FilterSpecLeaf$1 } from "../../filters/types.js";
|
|
3
|
+
import "../../filters/index.js";
|
|
3
4
|
import { FilterSpecUi } from "../../annotations/types.js";
|
|
5
|
+
import "../../annotations/index.js";
|
|
4
6
|
import { SUniversalPColumnId } from "@milaboratories/pl-model-common";
|
|
5
|
-
|
|
6
7
|
//#region src/components/PlAnnotations/filters_ui.d.ts
|
|
7
|
-
type FilterUi = FilterSpec$1<Extract<FilterSpecLeaf$1, {
|
|
8
|
+
export type FilterUi = FilterSpec$1<Extract<FilterSpecLeaf$1, {
|
|
8
9
|
type: "lessThan" | "greaterThan" | "lessThanOrEqual" | "greaterThanOrEqual" | "lessThanColumn" | "lessThanColumnOrEqual" | "patternContainSubsequence" | "patternNotContainSubsequence" | "patternEquals" | "patternNotEquals" | "topN" | "bottomN" | "isNA" | "isNotNA";
|
|
9
10
|
}>, {
|
|
10
11
|
id: number;
|
|
11
12
|
name?: string;
|
|
12
13
|
isExpanded?: boolean;
|
|
13
14
|
}>;
|
|
14
|
-
type FilterUiType = Exclude<FilterUi, {
|
|
15
|
+
export type FilterUiType = Exclude<FilterUi, {
|
|
15
16
|
type: undefined;
|
|
16
17
|
}>["type"];
|
|
17
|
-
type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, {
|
|
18
|
+
export type FilterUiOfType<T extends FilterUiType> = Extract<FilterUi, {
|
|
18
19
|
type: T;
|
|
19
20
|
}>;
|
|
20
|
-
declare function unreachable(x: never): never;
|
|
21
|
-
type TypeToLiteral<T> = [T] extends [FilterUiType] ? "FilterUiType" : [T] extends [SUniversalPColumnId] ? "SUniversalPColumnId" : [T] extends [PatternPredicate] ? "PatternPredicate" : [T] extends [AnnotationFilter[]] ? "AnnotationFilter[]" : [T] extends [AnnotationFilter] ? "AnnotationFilter" : [T] extends [number] ? "number" : [T] extends [number | undefined] ? "number?" : [T] extends [string] ? "string" : [T] extends [string | undefined] ? "string?" : [T] extends [boolean] ? "boolean" : [T] extends [boolean | undefined] ? "boolean?" : [T] extends [unknown[]] ? "unknown[]" : T extends number ? "number" : T extends string ? "string" : T extends boolean ? "boolean" : T extends Record<string, unknown> ? "form" : "unknown";
|
|
22
|
-
type TypeField<V> = {
|
|
21
|
+
export declare function unreachable(x: never): never;
|
|
22
|
+
export type TypeToLiteral<T> = [T] extends [FilterUiType] ? "FilterUiType" : [T] extends [SUniversalPColumnId] ? "SUniversalPColumnId" : [T] extends [PatternPredicate] ? "PatternPredicate" : [T] extends [AnnotationFilter[]] ? "AnnotationFilter[]" : [T] extends [AnnotationFilter] ? "AnnotationFilter" : [T] extends [number] ? "number" : [T] extends [number | undefined] ? "number?" : [T] extends [string] ? "string" : [T] extends [string | undefined] ? "string?" : [T] extends [boolean] ? "boolean" : [T] extends [boolean | undefined] ? "boolean?" : [T] extends [unknown[]] ? "unknown[]" : T extends number ? "number" : T extends string ? "string" : T extends boolean ? "boolean" : T extends Record<string, unknown> ? "form" : "unknown";
|
|
23
|
+
export type TypeField<V> = {
|
|
23
24
|
fieldType: TypeToLiteral<V>;
|
|
24
25
|
label: string;
|
|
25
26
|
defaultValue: () => V | undefined;
|
|
26
27
|
};
|
|
27
|
-
type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]
|
|
28
|
-
type TypeForm<T> = { [P in keyof T]: T[P] extends Record<string, unknown> ? {
|
|
28
|
+
export type TypeFieldRecord<T extends FilterUi> = { [K in keyof T]: TypeField<T[K]>; };
|
|
29
|
+
export type TypeForm<T> = { [P in keyof T]: T[P] extends Record<string, unknown> ? {
|
|
29
30
|
fieldType: "form";
|
|
30
31
|
label?: string;
|
|
31
32
|
form?: T[P] extends Record<string, unknown> ? TypeForm<T[P]> : undefined;
|
|
32
33
|
defaultValue: () => T[P];
|
|
33
|
-
} : TypeField<T[P]
|
|
34
|
-
type FormField = {
|
|
34
|
+
} : TypeField<T[P]>; };
|
|
35
|
+
export type FormField = {
|
|
35
36
|
fieldType: "form";
|
|
36
37
|
form?: Record<string, FormField>;
|
|
37
38
|
defaultValue: () => Record<string, unknown>;
|
|
38
39
|
} | TypeField<FilterUiType> | TypeField<string> | TypeField<number> | TypeField<number | undefined> | TypeField<boolean> | TypeField<boolean | undefined> | TypeField<SUniversalPColumnId>;
|
|
39
|
-
type AnyForm = Record<string, FormField>;
|
|
40
|
-
type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, {
|
|
40
|
+
export type AnyForm = Record<string, FormField>;
|
|
41
|
+
export type AnnotationStepUi = FilterSpecUi<Extract<FilterUi, {
|
|
41
42
|
type: "and" | "or";
|
|
42
43
|
}>> & {
|
|
43
44
|
id: number;
|
|
44
45
|
};
|
|
45
|
-
type AnnotationScriptUi = {
|
|
46
|
+
export type AnnotationScriptUi = {
|
|
46
47
|
isCreated?: boolean;
|
|
47
48
|
title: string;
|
|
48
49
|
mode: AnnotationMode;
|
|
49
50
|
steps: AnnotationStepUi[];
|
|
50
51
|
};
|
|
51
|
-
declare function compileFilter(ui: FilterUi): AnnotationFilter;
|
|
52
|
-
declare function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[];
|
|
53
|
-
declare function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript;
|
|
52
|
+
export declare function compileFilter(ui: FilterUi): AnnotationFilter;
|
|
53
|
+
export declare function compileFilters(uiFilters: FilterUi[]): AnnotationFilter[];
|
|
54
|
+
export declare function compileAnnotationScript(uiScript: AnnotationScriptUi): AnnotationScript;
|
|
54
55
|
//#endregion
|
|
55
|
-
export { AnnotationScriptUi, AnnotationStepUi, AnyForm, FilterUi, FilterUiOfType, FilterUiType, FormField, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, compileAnnotationScript, compileFilter, compileFilters, unreachable };
|
|
56
56
|
//# sourceMappingURL=filters_ui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters_ui.d.ts","names":[],"sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"filters_ui.d.ts","names":[],"sources":["../../../src/components/PlAnnotations/filters_ui.ts"],"mappings":";;;;;;;YAgBY,WAAW,aACrB,QACE;EAGE;;EAiBF;EAAY;EAAe;;YAGnB,eAAe,QAAQ;EAAY;;YAEnC,eAAe,UAAU,gBAAgB,QAAQ;EAAY,MAAM;;wBAG/D,YAAY;YAKhB,cAAc,MAAM,YAAY,kCAEvC,YAAY,gDAEV,YAAY,0CAEV,YAAY,8CAEV,YAAY,0CAEV,kCAEE,+CAEE,kCAEE,+CAEE,oCAEE,iDAEE,uCAGC,8BAEE,8BAEE,gCAEE,UAAU;YAK9B,UAAU;EACpB,WAAW,cAAc;EACzB;EACA,oBAAoB;;YAGV,gBAAgB,UAAU,eAAe,WAAW,IAAI,UAAU,EAAE;YAEpE,SAAS,QAClB,WAAW,IAAI,EAAE,WAAW;EAEvB;EACA;EACA,OAAO,EAAE,WAAW,0BAA0B,SAAS,EAAE;EACzD,oBAAoB,EAAE;IAExB,UAAU,EAAE;YAGN;EAEN;EACA,OAAO,eAAe;EACtB,oBAAoB;IAEtB,UAAU,gBACV,oBACA,oBACA,gCACA,qBACA,iCACA,UAAU;YAEF,UAAU,eAAe;YAEzB,mBAAmB,aAAa,QAAQ;EAAY;;EAC9D;;YAGU;EACV;EACA;EACA,MAAM;EACN,OAAO;;wBAGO,cAAc,IAAI,WAAW;wBAmK7B,eAAe,WAAW,aAAa;wBAIvC,wBAAwB,UAAU,qBAAqB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
2
2
|
//#region src/components/PlDataTable/columnResolver.ts
|
|
3
|
-
function createColumnResolver(columns
|
|
3
|
+
function createColumnResolver(columns) {
|
|
4
4
|
const axisIds = [];
|
|
5
5
|
for (const c of columns) for (const ax of c.getSpec().axesSpec) axisIds.push((0, _milaboratories_pl_model_common.getAxisId)(ax));
|
|
6
6
|
const byFullId = /* @__PURE__ */ new Map();
|
|
@@ -8,9 +8,7 @@ function createColumnResolver(columns, deps) {
|
|
|
8
8
|
for (const c of columns) {
|
|
9
9
|
byFullId.set(c.id, c);
|
|
10
10
|
const pid = (0, _milaboratories_pl_model_common.extractPObjectId)(c.id);
|
|
11
|
-
|
|
12
|
-
if (existing === void 0) byPObjectId.set(pid, c);
|
|
13
|
-
else if (existing.id !== c.id) deps?.warn?.(`Ambiguous PObjectId ${pid}: recipe ids ${existing.id} and ${c.id} both match — keeping first.`);
|
|
11
|
+
if (!byPObjectId.has(pid)) byPObjectId.set(pid, c);
|
|
14
12
|
}
|
|
15
13
|
return (ref) => {
|
|
16
14
|
if (ref.type === "axis") return axisIds.some((a) => (0, _milaboratories_pl_model_common.matchAxisId)(ref.id, a)) ? ref : void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnResolver.cjs","names":[],"sources":["../../../src/components/PlDataTable/columnResolver.ts"],"sourcesContent":["import type {\n AxisId,\n ColumnUniversalId,\n PObjectId,\n PTableColumnId,\n PTableColumnIdColumn,\n} from \"@milaboratories/pl-model-common\";\nimport { extractPObjectId, getAxisId, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { ColumnRecipe } from \"../../columns\";\n\n/**\n * Resolves a user-supplied PTableColumnId against the discovered set of\n * columns and axes. For column refs, accepts either the full recipe id (rich\n * {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref\n * carrying the recipe's full id — the same id that appears as the leaf in the\n * emitted SpecQuery, so engine-side dedup is consistent with the resolver's\n * view. Axis refs are checked against the union of axes spanned by the\n * columns and pass through unchanged on hit.\n * Returns `undefined` when the reference cannot be matched.\n */\nexport type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;\n\nexport function createColumnResolver(
|
|
1
|
+
{"version":3,"file":"columnResolver.cjs","names":[],"sources":["../../../src/components/PlDataTable/columnResolver.ts"],"sourcesContent":["import type {\n AxisId,\n ColumnUniversalId,\n PObjectId,\n PTableColumnId,\n PTableColumnIdColumn,\n} from \"@milaboratories/pl-model-common\";\nimport { extractPObjectId, getAxisId, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { ColumnRecipe } from \"../../columns\";\n\n/**\n * Resolves a user-supplied PTableColumnId against the discovered set of\n * columns and axes. For column refs, accepts either the full recipe id (rich\n * {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref\n * carrying the recipe's full id — the same id that appears as the leaf in the\n * emitted SpecQuery, so engine-side dedup is consistent with the resolver's\n * view. Axis refs are checked against the union of axes spanned by the\n * columns and pass through unchanged on hit.\n * Returns `undefined` when the reference cannot be matched.\n */\nexport type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;\n\nexport function createColumnResolver(columns: ColumnRecipe[]): ColumnResolver {\n const axisIds: AxisId[] = [];\n for (const c of columns) {\n for (const ax of c.getSpec().axesSpec) {\n axisIds.push(getAxisId(ax));\n }\n }\n\n const byFullId = new Map<ColumnUniversalId, ColumnRecipe>();\n const byPObjectId = new Map<PObjectId, ColumnRecipe>();\n for (const c of columns) {\n byFullId.set(c.id, c);\n const pid = extractPObjectId(c.id);\n if (!byPObjectId.has(pid)) byPObjectId.set(pid, c);\n }\n\n return (ref: PTableColumnId): PTableColumnId | undefined => {\n if (ref.type === \"axis\") {\n return axisIds.some((a) => matchAxisId(ref.id, a)) ? ref : undefined;\n }\n const hit = byFullId.get(ref.id) ?? byPObjectId.get(extractPObjectId(ref.id));\n if (hit === undefined) return undefined;\n return { type: \"column\", id: hit.id } satisfies PTableColumnIdColumn;\n };\n}\n"],"mappings":";;AAsBA,SAAgB,qBAAqB,SAAyC;CAC5E,MAAM,UAAoB,CAAC;CAC3B,KAAK,MAAM,KAAK,SACd,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,UAC3B,QAAQ,MAAA,GAAA,gCAAA,UAAA,CAAe,EAAE,CAAC;CAI9B,MAAM,2BAAW,IAAI,IAAqC;CAC1D,MAAM,8BAAc,IAAI,IAA6B;CACrD,KAAK,MAAM,KAAK,SAAS;EACvB,SAAS,IAAI,EAAE,IAAI,CAAC;EACpB,MAAM,OAAA,GAAA,gCAAA,iBAAA,CAAuB,EAAE,EAAE;EACjC,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,YAAY,IAAI,KAAK,CAAC;CACnD;CAEA,QAAQ,QAAoD;EAC1D,IAAI,IAAI,SAAS,QACf,OAAO,QAAQ,MAAM,OAAA,GAAA,gCAAA,YAAA,CAAkB,IAAI,IAAI,CAAC,CAAC,IAAI,MAAM,KAAA;EAE7D,MAAM,MAAM,SAAS,IAAI,IAAI,EAAE,KAAK,YAAY,KAAA,GAAA,gCAAA,iBAAA,CAAqB,IAAI,EAAE,CAAC;EAC5E,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;EAC9B,OAAO;GAAE,MAAM;GAAU,IAAI,IAAI;EAAG;CACtC;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { extractPObjectId, getAxisId, matchAxisId } from "@milaboratories/pl-model-common";
|
|
2
2
|
//#region src/components/PlDataTable/columnResolver.ts
|
|
3
|
-
function createColumnResolver(columns
|
|
3
|
+
function createColumnResolver(columns) {
|
|
4
4
|
const axisIds = [];
|
|
5
5
|
for (const c of columns) for (const ax of c.getSpec().axesSpec) axisIds.push(getAxisId(ax));
|
|
6
6
|
const byFullId = /* @__PURE__ */ new Map();
|
|
@@ -8,9 +8,7 @@ function createColumnResolver(columns, deps) {
|
|
|
8
8
|
for (const c of columns) {
|
|
9
9
|
byFullId.set(c.id, c);
|
|
10
10
|
const pid = extractPObjectId(c.id);
|
|
11
|
-
|
|
12
|
-
if (existing === void 0) byPObjectId.set(pid, c);
|
|
13
|
-
else if (existing.id !== c.id) deps?.warn?.(`Ambiguous PObjectId ${pid}: recipe ids ${existing.id} and ${c.id} both match — keeping first.`);
|
|
11
|
+
if (!byPObjectId.has(pid)) byPObjectId.set(pid, c);
|
|
14
12
|
}
|
|
15
13
|
return (ref) => {
|
|
16
14
|
if (ref.type === "axis") return axisIds.some((a) => matchAxisId(ref.id, a)) ? ref : void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnResolver.js","names":[],"sources":["../../../src/components/PlDataTable/columnResolver.ts"],"sourcesContent":["import type {\n AxisId,\n ColumnUniversalId,\n PObjectId,\n PTableColumnId,\n PTableColumnIdColumn,\n} from \"@milaboratories/pl-model-common\";\nimport { extractPObjectId, getAxisId, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { ColumnRecipe } from \"../../columns\";\n\n/**\n * Resolves a user-supplied PTableColumnId against the discovered set of\n * columns and axes. For column refs, accepts either the full recipe id (rich\n * {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref\n * carrying the recipe's full id — the same id that appears as the leaf in the\n * emitted SpecQuery, so engine-side dedup is consistent with the resolver's\n * view. Axis refs are checked against the union of axes spanned by the\n * columns and pass through unchanged on hit.\n * Returns `undefined` when the reference cannot be matched.\n */\nexport type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;\n\nexport function createColumnResolver(
|
|
1
|
+
{"version":3,"file":"columnResolver.js","names":[],"sources":["../../../src/components/PlDataTable/columnResolver.ts"],"sourcesContent":["import type {\n AxisId,\n ColumnUniversalId,\n PObjectId,\n PTableColumnId,\n PTableColumnIdColumn,\n} from \"@milaboratories/pl-model-common\";\nimport { extractPObjectId, getAxisId, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { ColumnRecipe } from \"../../columns\";\n\n/**\n * Resolves a user-supplied PTableColumnId against the discovered set of\n * columns and axes. For column refs, accepts either the full recipe id (rich\n * {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref\n * carrying the recipe's full id — the same id that appears as the leaf in the\n * emitted SpecQuery, so engine-side dedup is consistent with the resolver's\n * view. Axis refs are checked against the union of axes spanned by the\n * columns and pass through unchanged on hit.\n * Returns `undefined` when the reference cannot be matched.\n */\nexport type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;\n\nexport function createColumnResolver(columns: ColumnRecipe[]): ColumnResolver {\n const axisIds: AxisId[] = [];\n for (const c of columns) {\n for (const ax of c.getSpec().axesSpec) {\n axisIds.push(getAxisId(ax));\n }\n }\n\n const byFullId = new Map<ColumnUniversalId, ColumnRecipe>();\n const byPObjectId = new Map<PObjectId, ColumnRecipe>();\n for (const c of columns) {\n byFullId.set(c.id, c);\n const pid = extractPObjectId(c.id);\n if (!byPObjectId.has(pid)) byPObjectId.set(pid, c);\n }\n\n return (ref: PTableColumnId): PTableColumnId | undefined => {\n if (ref.type === \"axis\") {\n return axisIds.some((a) => matchAxisId(ref.id, a)) ? ref : undefined;\n }\n const hit = byFullId.get(ref.id) ?? byPObjectId.get(extractPObjectId(ref.id));\n if (hit === undefined) return undefined;\n return { type: \"column\", id: hit.id } satisfies PTableColumnIdColumn;\n };\n}\n"],"mappings":";;AAsBA,SAAgB,qBAAqB,SAAyC;CAC5E,MAAM,UAAoB,CAAC;CAC3B,KAAK,MAAM,KAAK,SACd,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,UAC3B,QAAQ,KAAK,UAAU,EAAE,CAAC;CAI9B,MAAM,2BAAW,IAAI,IAAqC;CAC1D,MAAM,8BAAc,IAAI,IAA6B;CACrD,KAAK,MAAM,KAAK,SAAS;EACvB,SAAS,IAAI,EAAE,IAAI,CAAC;EACpB,MAAM,MAAM,iBAAiB,EAAE,EAAE;EACjC,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,YAAY,IAAI,KAAK,CAAC;CACnD;CAEA,QAAQ,QAAoD;EAC1D,IAAI,IAAI,SAAS,QACf,OAAO,QAAQ,MAAM,MAAM,YAAY,IAAI,IAAI,CAAC,CAAC,IAAI,MAAM,KAAA;EAE7D,MAAM,MAAM,SAAS,IAAI,IAAI,EAAE,KAAK,YAAY,IAAI,iBAAiB,IAAI,EAAE,CAAC;EAC5E,IAAI,QAAQ,KAAA,GAAW,OAAO,KAAA;EAC9B,OAAO;GAAE,MAAM;GAAU,IAAI,IAAI;EAAG;CACtC;AACF"}
|
|
@@ -41,7 +41,7 @@ function createPlDataTableV2(ctx, columns, tableState, options) {
|
|
|
41
41
|
};
|
|
42
42
|
});
|
|
43
43
|
const fullColumns = [...columns, ...fullLabelColumns];
|
|
44
|
-
const resolver = require_columnResolver.createColumnResolver(fullColumns.map((c) => require_data_column.DataColumn.fromColumn(c))
|
|
44
|
+
const resolver = require_columnResolver.createColumnResolver(fullColumns.map((c) => require_data_column.DataColumn.fromColumn(c)));
|
|
45
45
|
const rawFilters = tableStateNormalized.pTableParams.filters;
|
|
46
46
|
const rawDefaultFilters = options?.filters ?? void 0;
|
|
47
47
|
const filters = remapFiltersThrowing(rawFilters, resolver, "filter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPlDataTableV2.cjs","names":["upgradePlDataTableStateV2","getMatchingLabelColumns","deriveLabels","identity","Annotation","createColumnResolver","DataColumn","createPTableDefV2","isColumnOptional","getColumnIdAndSpec","allPColumnsReady","traverseFilterSpec","PColumnCollection","PColumnName"],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n FilterSpecNode,\n PColumn,\n PTableColumnIdColumn,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n getColumnIdAndSpec,\n isLinkerColumn,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n} from \"../../../render\";\nimport { allPColumnsReady, deriveLabels, PColumnCollection } from \"../../../render\";\nimport { identity } from \"es-toolkit\";\nimport type {\n CreatePlDataTableOps,\n PlDataTableFilters,\n PlDataTableFilterSpecLeaf,\n PlDataTableModel,\n} from \"../typesV8\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration\";\nimport type { PlDataTableStateV2 } from \"../state-migration\";\nimport { getMatchingLabelColumns } from \"../labels\";\nimport { collectFilterSpecColumns, traverseFilterSpec } from \"../../../filters/traverse\";\nimport { createPTableDefV2 } from \"./createPTableDefV2\";\nimport { isColumnOptional } from \"./utils\";\nimport { DataColumn } from \"../../../columns\";\nimport { createColumnResolver, type ColumnResolver } from \"../columnResolver\";\nimport { isNil, type Nil } from \"@milaboratories/helpers\";\n\n/**\n * @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.\n */\nexport type createPlDataTableOptionsV2 = {\n columns: PColumn<PColumnDataUniversal>[];\n tableState?: PlDataTableStateV2;\n options?: CreatePlDataTableOps;\n};\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: createPlDataTableOptionsV2[\"columns\"],\n tableState?: createPlDataTableOptionsV2[\"tableState\"],\n options?: createPlDataTableOptionsV2[\"options\"],\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n const allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\n let fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const resolver = createColumnResolver(\n fullColumns.map((c) => DataColumn.fromColumn(c)),\n { warn: ctx.logWarn.bind(ctx) },\n );\n\n // -- Filtering: rewrite via resolver, throw if any reference is unresolved --\n const rawFilters = tableStateNormalized.pTableParams.filters;\n const rawDefaultFilters = options?.filters ?? undefined;\n const filters = remapFiltersThrowing(rawFilters, resolver, \"filter\");\n const defaultFilters = remapFiltersThrowing(\n rawDefaultFilters ?? null,\n resolver,\n \"default filter\",\n );\n\n // -- Sorting: rewrite via resolver, throw if any reference is unresolved --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];\n const sorting = remapSortingThrowing(rawSorting, resolver);\n\n const coreJoinType = options?.coreJoinType ?? \"full\";\n const fullDef = createPTableDefV2({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate: options?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n const pframeHandle = ctx.createPFrame(fullColumns);\n if (!fullHandle || !pframeHandle) return undefined;\n\n const hiddenColumns = new Set<ColumnUniversalId>(\n ((): ColumnUniversalId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds !== null) {\n return hiddenColIds\n .filter((s): s is PTableColumnIdColumn => s.type === \"column\")\n .map((s) => s.id);\n }\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = options?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => (c.type === \"column\" ? [c.id] : []))\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDefV2({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n fullPframeHandle: pframeHandle,\n visibleTableHandle: visibleHandle,\n defaultFilters: defaultFilters ?? undefined,\n } satisfies PlDataTableModel;\n}\n\n/** Rewrite filter column refs through the resolver; throw on any unresolved ref. */\nfunction remapFiltersThrowing(\n filters: Nil | PlDataTableFilters,\n resolver: ColumnResolver,\n label: string,\n): Nil | PlDataTableFilters {\n if (isNil(filters)) return filters;\n\n type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;\n return traverseFilterSpec(filters, {\n leaf: (leaf): Node => {\n if (leaf.type === undefined) return leaf;\n const result = { ...leaf };\n if (\"column\" in result) {\n const c = resolver(result.column);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,\n );\n result.column = c;\n }\n if (\"rhs\" in result) {\n const c = resolver(result.rhs);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,\n );\n result.rhs = c;\n }\n return result;\n },\n and: (results): Node => ({ type: \"and\", filters: results }),\n or: (results): Node => ({ type: \"or\", filters: results }),\n not: (result): Node => ({ type: \"not\", filter: result }),\n }) as PlDataTableFilters;\n}\n\n/** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */\nfunction remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {\n return sorting.map((s) => {\n const c = resolver(s.column);\n if (isNil(c))\n throw new Error(\n `Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,\n );\n return { ...s, column: c };\n });\n}\n\nfunction getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns(\n {\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n },\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createPlDataTableV2.cjs","names":["upgradePlDataTableStateV2","getMatchingLabelColumns","deriveLabels","identity","Annotation","createColumnResolver","DataColumn","createPTableDefV2","isColumnOptional","getColumnIdAndSpec","allPColumnsReady","traverseFilterSpec","PColumnCollection","PColumnName"],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n FilterSpecNode,\n PColumn,\n PTableColumnIdColumn,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n getColumnIdAndSpec,\n isLinkerColumn,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n} from \"../../../render\";\nimport { allPColumnsReady, deriveLabels, PColumnCollection } from \"../../../render\";\nimport { identity } from \"es-toolkit\";\nimport type {\n CreatePlDataTableOps,\n PlDataTableFilters,\n PlDataTableFilterSpecLeaf,\n PlDataTableModel,\n} from \"../typesV8\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration\";\nimport type { PlDataTableStateV2 } from \"../state-migration\";\nimport { getMatchingLabelColumns } from \"../labels\";\nimport { collectFilterSpecColumns, traverseFilterSpec } from \"../../../filters/traverse\";\nimport { createPTableDefV2 } from \"./createPTableDefV2\";\nimport { isColumnOptional } from \"./utils\";\nimport { DataColumn } from \"../../../columns\";\nimport { createColumnResolver, type ColumnResolver } from \"../columnResolver\";\nimport { isNil, type Nil } from \"@milaboratories/helpers\";\n\n/**\n * @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.\n */\nexport type createPlDataTableOptionsV2 = {\n columns: PColumn<PColumnDataUniversal>[];\n tableState?: PlDataTableStateV2;\n options?: CreatePlDataTableOps;\n};\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: createPlDataTableOptionsV2[\"columns\"],\n tableState?: createPlDataTableOptionsV2[\"tableState\"],\n options?: createPlDataTableOptionsV2[\"options\"],\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n const allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\n let fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const resolver = createColumnResolver(fullColumns.map((c) => DataColumn.fromColumn(c)));\n\n // -- Filtering: rewrite via resolver, throw if any reference is unresolved --\n const rawFilters = tableStateNormalized.pTableParams.filters;\n const rawDefaultFilters = options?.filters ?? undefined;\n const filters = remapFiltersThrowing(rawFilters, resolver, \"filter\");\n const defaultFilters = remapFiltersThrowing(\n rawDefaultFilters ?? null,\n resolver,\n \"default filter\",\n );\n\n // -- Sorting: rewrite via resolver, throw if any reference is unresolved --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];\n const sorting = remapSortingThrowing(rawSorting, resolver);\n\n const coreJoinType = options?.coreJoinType ?? \"full\";\n const fullDef = createPTableDefV2({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate: options?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n const pframeHandle = ctx.createPFrame(fullColumns);\n if (!fullHandle || !pframeHandle) return undefined;\n\n const hiddenColumns = new Set<ColumnUniversalId>(\n ((): ColumnUniversalId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds !== null) {\n return hiddenColIds\n .filter((s): s is PTableColumnIdColumn => s.type === \"column\")\n .map((s) => s.id);\n }\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = options?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => (c.type === \"column\" ? [c.id] : []))\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDefV2({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n fullPframeHandle: pframeHandle,\n visibleTableHandle: visibleHandle,\n defaultFilters: defaultFilters ?? undefined,\n } satisfies PlDataTableModel;\n}\n\n/** Rewrite filter column refs through the resolver; throw on any unresolved ref. */\nfunction remapFiltersThrowing(\n filters: Nil | PlDataTableFilters,\n resolver: ColumnResolver,\n label: string,\n): Nil | PlDataTableFilters {\n if (isNil(filters)) return filters;\n\n type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;\n return traverseFilterSpec(filters, {\n leaf: (leaf): Node => {\n if (leaf.type === undefined) return leaf;\n const result = { ...leaf };\n if (\"column\" in result) {\n const c = resolver(result.column);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,\n );\n result.column = c;\n }\n if (\"rhs\" in result) {\n const c = resolver(result.rhs);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,\n );\n result.rhs = c;\n }\n return result;\n },\n and: (results): Node => ({ type: \"and\", filters: results }),\n or: (results): Node => ({ type: \"or\", filters: results }),\n not: (result): Node => ({ type: \"not\", filter: result }),\n }) as PlDataTableFilters;\n}\n\n/** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */\nfunction remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {\n return sorting.map((s) => {\n const c = resolver(s.column);\n if (isNil(c))\n throw new Error(\n `Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,\n );\n return { ...s, column: c };\n });\n}\n\nfunction getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns(\n {\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n },\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { PColumnDataUniversal } from "../../../render/internal.js";
|
|
2
2
|
import { RenderCtxBase } from "../../../render/api.js";
|
|
3
|
+
import "../../../render/index.js";
|
|
3
4
|
import { CreatePlDataTableOps, PlDataTableModel } from "../typesV8.js";
|
|
4
5
|
import { PlDataTableStateV2 } from "../state-migration.js";
|
|
5
6
|
import { PColumn } from "@milaboratories/pl-model-common";
|
|
6
|
-
|
|
7
7
|
//#region src/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts
|
|
8
8
|
/**
|
|
9
9
|
* @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.
|
|
10
10
|
*/
|
|
11
|
-
type createPlDataTableOptionsV2 = {
|
|
11
|
+
export type createPlDataTableOptionsV2 = {
|
|
12
12
|
columns: PColumn<PColumnDataUniversal>[];
|
|
13
13
|
tableState?: PlDataTableStateV2;
|
|
14
14
|
options?: CreatePlDataTableOps;
|
|
@@ -22,7 +22,6 @@ type createPlDataTableOptionsV2 = {
|
|
|
22
22
|
* @param tableState table ui state
|
|
23
23
|
* @returns PlAgDataTableV2 table source
|
|
24
24
|
*/
|
|
25
|
-
declare function createPlDataTableV2<A, U>(ctx: RenderCtxBase<A, U>, columns: createPlDataTableOptionsV2["columns"], tableState?: createPlDataTableOptionsV2["tableState"], options?: createPlDataTableOptionsV2["options"]): PlDataTableModel | undefined;
|
|
25
|
+
export declare function createPlDataTableV2<A, U>(ctx: RenderCtxBase<A, U>, columns: createPlDataTableOptionsV2["columns"], tableState?: createPlDataTableOptionsV2["tableState"], options?: createPlDataTableOptionsV2["options"]): PlDataTableModel | undefined;
|
|
26
26
|
//#endregion
|
|
27
|
-
export { createPlDataTableOptionsV2, createPlDataTableV2 };
|
|
28
27
|
//# sourceMappingURL=createPlDataTableV2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPlDataTableV2.d.ts","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createPlDataTableV2.d.ts","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"mappings":";;;;;;;;;;YAwCY;EACV,SAAS,QAAQ;EACjB,aAAa;EACb,UAAU;;;;;;;;;;;wBAYI,oBAAoB,GAAG,GACrC,KAAK,cAAc,GAAG,IACtB,SAAS,uCACT,aAAa,0CACb,UAAU,wCACT"}
|
|
@@ -41,7 +41,7 @@ function createPlDataTableV2(ctx, columns, tableState, options) {
|
|
|
41
41
|
};
|
|
42
42
|
});
|
|
43
43
|
const fullColumns = [...columns, ...fullLabelColumns];
|
|
44
|
-
const resolver = createColumnResolver(fullColumns.map((c) => DataColumn.fromColumn(c))
|
|
44
|
+
const resolver = createColumnResolver(fullColumns.map((c) => DataColumn.fromColumn(c)));
|
|
45
45
|
const rawFilters = tableStateNormalized.pTableParams.filters;
|
|
46
46
|
const rawDefaultFilters = options?.filters ?? void 0;
|
|
47
47
|
const filters = remapFiltersThrowing(rawFilters, resolver, "filter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPlDataTableV2.js","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n FilterSpecNode,\n PColumn,\n PTableColumnIdColumn,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n getColumnIdAndSpec,\n isLinkerColumn,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n} from \"../../../render\";\nimport { allPColumnsReady, deriveLabels, PColumnCollection } from \"../../../render\";\nimport { identity } from \"es-toolkit\";\nimport type {\n CreatePlDataTableOps,\n PlDataTableFilters,\n PlDataTableFilterSpecLeaf,\n PlDataTableModel,\n} from \"../typesV8\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration\";\nimport type { PlDataTableStateV2 } from \"../state-migration\";\nimport { getMatchingLabelColumns } from \"../labels\";\nimport { collectFilterSpecColumns, traverseFilterSpec } from \"../../../filters/traverse\";\nimport { createPTableDefV2 } from \"./createPTableDefV2\";\nimport { isColumnOptional } from \"./utils\";\nimport { DataColumn } from \"../../../columns\";\nimport { createColumnResolver, type ColumnResolver } from \"../columnResolver\";\nimport { isNil, type Nil } from \"@milaboratories/helpers\";\n\n/**\n * @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.\n */\nexport type createPlDataTableOptionsV2 = {\n columns: PColumn<PColumnDataUniversal>[];\n tableState?: PlDataTableStateV2;\n options?: CreatePlDataTableOps;\n};\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: createPlDataTableOptionsV2[\"columns\"],\n tableState?: createPlDataTableOptionsV2[\"tableState\"],\n options?: createPlDataTableOptionsV2[\"options\"],\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n const allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\n let fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const resolver = createColumnResolver(\n fullColumns.map((c) => DataColumn.fromColumn(c)),\n { warn: ctx.logWarn.bind(ctx) },\n );\n\n // -- Filtering: rewrite via resolver, throw if any reference is unresolved --\n const rawFilters = tableStateNormalized.pTableParams.filters;\n const rawDefaultFilters = options?.filters ?? undefined;\n const filters = remapFiltersThrowing(rawFilters, resolver, \"filter\");\n const defaultFilters = remapFiltersThrowing(\n rawDefaultFilters ?? null,\n resolver,\n \"default filter\",\n );\n\n // -- Sorting: rewrite via resolver, throw if any reference is unresolved --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];\n const sorting = remapSortingThrowing(rawSorting, resolver);\n\n const coreJoinType = options?.coreJoinType ?? \"full\";\n const fullDef = createPTableDefV2({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate: options?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n const pframeHandle = ctx.createPFrame(fullColumns);\n if (!fullHandle || !pframeHandle) return undefined;\n\n const hiddenColumns = new Set<ColumnUniversalId>(\n ((): ColumnUniversalId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds !== null) {\n return hiddenColIds\n .filter((s): s is PTableColumnIdColumn => s.type === \"column\")\n .map((s) => s.id);\n }\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = options?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => (c.type === \"column\" ? [c.id] : []))\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDefV2({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n fullPframeHandle: pframeHandle,\n visibleTableHandle: visibleHandle,\n defaultFilters: defaultFilters ?? undefined,\n } satisfies PlDataTableModel;\n}\n\n/** Rewrite filter column refs through the resolver; throw on any unresolved ref. */\nfunction remapFiltersThrowing(\n filters: Nil | PlDataTableFilters,\n resolver: ColumnResolver,\n label: string,\n): Nil | PlDataTableFilters {\n if (isNil(filters)) return filters;\n\n type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;\n return traverseFilterSpec(filters, {\n leaf: (leaf): Node => {\n if (leaf.type === undefined) return leaf;\n const result = { ...leaf };\n if (\"column\" in result) {\n const c = resolver(result.column);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,\n );\n result.column = c;\n }\n if (\"rhs\" in result) {\n const c = resolver(result.rhs);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,\n );\n result.rhs = c;\n }\n return result;\n },\n and: (results): Node => ({ type: \"and\", filters: results }),\n or: (results): Node => ({ type: \"or\", filters: results }),\n not: (result): Node => ({ type: \"not\", filter: result }),\n }) as PlDataTableFilters;\n}\n\n/** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */\nfunction remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {\n return sorting.map((s) => {\n const c = resolver(s.column);\n if (isNil(c))\n throw new Error(\n `Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,\n );\n return { ...s, column: c };\n });\n}\n\nfunction getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns(\n {\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n },\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createPlDataTableV2.js","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n FilterSpecNode,\n PColumn,\n PTableColumnIdColumn,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n getColumnIdAndSpec,\n isLinkerColumn,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n} from \"../../../render\";\nimport { allPColumnsReady, deriveLabels, PColumnCollection } from \"../../../render\";\nimport { identity } from \"es-toolkit\";\nimport type {\n CreatePlDataTableOps,\n PlDataTableFilters,\n PlDataTableFilterSpecLeaf,\n PlDataTableModel,\n} from \"../typesV8\";\nimport { upgradePlDataTableStateV2 } from \"../state-migration\";\nimport type { PlDataTableStateV2 } from \"../state-migration\";\nimport { getMatchingLabelColumns } from \"../labels\";\nimport { collectFilterSpecColumns, traverseFilterSpec } from \"../../../filters/traverse\";\nimport { createPTableDefV2 } from \"./createPTableDefV2\";\nimport { isColumnOptional } from \"./utils\";\nimport { DataColumn } from \"../../../columns\";\nimport { createColumnResolver, type ColumnResolver } from \"../columnResolver\";\nimport { isNil, type Nil } from \"@milaboratories/helpers\";\n\n/**\n * @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.\n */\nexport type createPlDataTableOptionsV2 = {\n columns: PColumn<PColumnDataUniversal>[];\n tableState?: PlDataTableStateV2;\n options?: CreatePlDataTableOps;\n};\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: createPlDataTableOptionsV2[\"columns\"],\n tableState?: createPlDataTableOptionsV2[\"tableState\"],\n options?: createPlDataTableOptionsV2[\"options\"],\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n const allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];\n\n let fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const resolver = createColumnResolver(fullColumns.map((c) => DataColumn.fromColumn(c)));\n\n // -- Filtering: rewrite via resolver, throw if any reference is unresolved --\n const rawFilters = tableStateNormalized.pTableParams.filters;\n const rawDefaultFilters = options?.filters ?? undefined;\n const filters = remapFiltersThrowing(rawFilters, resolver, \"filter\");\n const defaultFilters = remapFiltersThrowing(\n rawDefaultFilters ?? null,\n resolver,\n \"default filter\",\n );\n\n // -- Sorting: rewrite via resolver, throw if any reference is unresolved --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];\n const sorting = remapSortingThrowing(rawSorting, resolver);\n\n const coreJoinType = options?.coreJoinType ?? \"full\";\n const fullDef = createPTableDefV2({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate: options?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n const pframeHandle = ctx.createPFrame(fullColumns);\n if (!fullHandle || !pframeHandle) return undefined;\n\n const hiddenColumns = new Set<ColumnUniversalId>(\n ((): ColumnUniversalId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds !== null) {\n return hiddenColIds\n .filter((s): s is PTableColumnIdColumn => s.type === \"column\")\n .map((s) => s.id);\n }\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = options?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => (c.type === \"column\" ? [c.id] : []))\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDefV2({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters: filters ?? null,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n fullPframeHandle: pframeHandle,\n visibleTableHandle: visibleHandle,\n defaultFilters: defaultFilters ?? undefined,\n } satisfies PlDataTableModel;\n}\n\n/** Rewrite filter column refs through the resolver; throw on any unresolved ref. */\nfunction remapFiltersThrowing(\n filters: Nil | PlDataTableFilters,\n resolver: ColumnResolver,\n label: string,\n): Nil | PlDataTableFilters {\n if (isNil(filters)) return filters;\n\n type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;\n return traverseFilterSpec(filters, {\n leaf: (leaf): Node => {\n if (leaf.type === undefined) return leaf;\n const result = { ...leaf };\n if (\"column\" in result) {\n const c = resolver(result.column);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,\n );\n result.column = c;\n }\n if (\"rhs\" in result) {\n const c = resolver(result.rhs);\n if (isNil(c))\n throw new Error(\n `Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,\n );\n result.rhs = c;\n }\n return result;\n },\n and: (results): Node => ({ type: \"and\", filters: results }),\n or: (results): Node => ({ type: \"or\", filters: results }),\n not: (result): Node => ({ type: \"not\", filter: result }),\n }) as PlDataTableFilters;\n}\n\n/** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */\nfunction remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {\n return sorting.map((s) => {\n const c = resolver(s.column);\n if (isNil(c))\n throw new Error(\n `Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,\n );\n return { ...s, column: c };\n });\n}\n\nfunction getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): undefined | PColumn<undefined | PColumnDataUniversal>[] {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns(\n {\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n },\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n );\n}\n"],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ function createPlDataTableV3(ctx, options) {
|
|
|
37
37
|
...primary,
|
|
38
38
|
...direct,
|
|
39
39
|
...linked.flatMap((lc) => [...require_utils.collectLinkerColumns(lc), lc])
|
|
40
|
-
]
|
|
40
|
+
]);
|
|
41
41
|
const remapedDefaultFilters = remapFilterColumnIds(options.filters, resolver);
|
|
42
42
|
const filters = filterFilters(concatFilters(state.pTableParams.filters, state.pTableParams.defaultFilters ?? remapedDefaultFilters), resolver);
|
|
43
43
|
const sorting = filterSorting(resolveSorting(state.pTableParams.sorting, remapSortingColumnIds(options.sorting, resolver)), resolver);
|