@platforma-sdk/model 1.59.3 → 1.60.2
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/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts +1 -11
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_callbacks.cjs.map +1 -1
- package/dist/block_storage_callbacks.js.map +1 -1
- package/dist/columns/column_collection_builder.cjs +215 -0
- package/dist/columns/column_collection_builder.cjs.map +1 -0
- package/dist/columns/column_collection_builder.d.ts +112 -0
- package/dist/columns/column_collection_builder.js +214 -0
- package/dist/columns/column_collection_builder.js.map +1 -0
- package/dist/columns/column_selector.cjs +122 -0
- package/dist/columns/column_selector.cjs.map +1 -0
- package/dist/columns/column_selector.d.ts +41 -0
- package/dist/columns/column_selector.js +118 -0
- package/dist/columns/column_selector.js.map +1 -0
- package/dist/columns/column_snapshot.cjs +20 -0
- package/dist/columns/column_snapshot.cjs.map +1 -0
- package/dist/columns/column_snapshot.d.ts +39 -0
- package/dist/columns/column_snapshot.js +18 -0
- package/dist/columns/column_snapshot.js.map +1 -0
- package/dist/columns/column_snapshot_provider.cjs +112 -0
- package/dist/columns/column_snapshot_provider.cjs.map +1 -0
- package/dist/columns/column_snapshot_provider.d.ts +73 -0
- package/dist/columns/column_snapshot_provider.js +107 -0
- package/dist/columns/column_snapshot_provider.js.map +1 -0
- package/dist/columns/ctx_column_sources.cjs +84 -0
- package/dist/columns/ctx_column_sources.cjs.map +1 -0
- package/dist/columns/ctx_column_sources.d.ts +33 -0
- package/dist/columns/ctx_column_sources.js +82 -0
- package/dist/columns/ctx_column_sources.js.map +1 -0
- package/dist/columns/index.cjs +5 -0
- package/dist/columns/index.d.ts +5 -0
- package/dist/columns/index.js +5 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +111 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +25 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +110 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -0
- package/dist/components/PlDataTable/{table.cjs → createPlDataTable/createPlDataTableV3.cjs} +54 -54
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +39 -0
- package/dist/components/PlDataTable/{table.js → createPlDataTable/createPlDataTableV3.js} +53 -53
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.cjs +12 -0
- package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +15 -0
- package/dist/components/PlDataTable/createPlDataTable/index.js +12 -0
- package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs +18 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +11 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.js +17 -0
- package/dist/components/PlDataTable/createPlDataTableSheet.js.map +1 -0
- package/dist/components/PlDataTable/index.cjs +4 -1
- package/dist/components/PlDataTable/index.d.ts +5 -2
- package/dist/components/PlDataTable/index.js +4 -1
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts +2 -2
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/{v4.d.ts → typesV4.d.ts} +2 -2
- package/dist/components/PlDataTable/{v5.d.ts → typesV5.d.ts} +2 -2
- package/dist/components/index.cjs +4 -1
- package/dist/components/index.d.ts +5 -2
- package/dist/components/index.js +4 -1
- package/dist/index.cjs +44 -16
- package/dist/index.d.ts +17 -5
- package/dist/index.js +15 -3
- package/dist/labels/derive_distinct_labels.cjs +156 -0
- package/dist/labels/derive_distinct_labels.cjs.map +1 -0
- package/dist/labels/derive_distinct_labels.d.ts +29 -0
- package/dist/labels/derive_distinct_labels.js +155 -0
- package/dist/labels/derive_distinct_labels.js.map +1 -0
- package/dist/labels/index.cjs +2 -0
- package/dist/labels/index.d.ts +2 -0
- package/dist/labels/index.js +2 -0
- package/dist/labels/write_labels_to_specs.cjs +15 -0
- package/dist/labels/write_labels_to_specs.cjs.map +1 -0
- package/dist/labels/write_labels_to_specs.d.ts +9 -0
- package/dist/labels/write_labels_to_specs.js +14 -0
- package/dist/labels/write_labels_to_specs.js.map +1 -0
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/render/api.cjs +11 -2
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +9 -5
- package/dist/render/api.js +12 -3
- package/dist/render/api.js.map +1 -1
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.js +1 -1
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +5 -2
- package/dist/render/internal.js.map +1 -1
- package/dist/render/util/column_collection.cjs +3 -3
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +3 -2
- package/dist/render/util/column_collection.js +4 -4
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.d.ts +2 -1
- package/dist/render/util/index.js +1 -1
- package/dist/render/util/label.cjs +7 -134
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts +5 -50
- package/dist/render/util/label.js +8 -132
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/split_selectors.d.ts +2 -2
- package/package.json +9 -7
- package/src/block_storage.ts +0 -11
- package/src/block_storage_callbacks.ts +1 -1
- package/src/columns/column_collection_builder.test.ts +427 -0
- package/src/columns/column_collection_builder.ts +455 -0
- package/src/columns/column_selector.test.ts +472 -0
- package/src/columns/column_selector.ts +212 -0
- package/src/columns/column_snapshot.ts +55 -0
- package/src/columns/column_snapshot_provider.ts +177 -0
- package/src/columns/ctx_column_sources.ts +107 -0
- package/src/columns/expand_by_partition.test.ts +289 -0
- package/src/columns/expand_by_partition.ts +187 -0
- package/src/columns/index.ts +5 -0
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +193 -0
- package/src/components/PlDataTable/{table.ts → createPlDataTable/createPlDataTableV3.ts} +134 -70
- package/src/components/PlDataTable/createPlDataTable/index.ts +27 -0
- package/src/components/PlDataTable/createPlDataTableSheet.ts +20 -0
- package/src/components/PlDataTable/index.ts +6 -4
- package/src/components/PlDataTable/state-migration.ts +2 -2
- package/src/index.ts +2 -1
- package/src/labels/derive_distinct_labels.test.ts +461 -0
- package/src/labels/derive_distinct_labels.ts +289 -0
- package/src/labels/index.ts +2 -0
- package/src/labels/write_labels_to_specs.ts +12 -0
- package/src/render/api.ts +25 -3
- package/src/render/internal.ts +20 -1
- package/src/render/util/column_collection.ts +9 -6
- package/src/render/util/label.test.ts +1 -1
- package/src/render/util/label.ts +19 -235
- package/src/render/util/split_selectors.ts +3 -3
- package/dist/components/PlDataTable/table.cjs.map +0 -1
- package/dist/components/PlDataTable/table.d.ts +0 -30
- package/dist/components/PlDataTable/table.js.map +0 -1
- /package/src/components/PlDataTable/{v4.ts → typesV4.ts} +0 -0
- /package/src/components/PlDataTable/{v5.ts → typesV5.ts} +0 -0
|
@@ -2,7 +2,10 @@ const require_axes = require('../pframe_utils/axes.cjs');
|
|
|
2
2
|
const require_PFrameForGraphs = require('./PFrameForGraphs.cjs');
|
|
3
3
|
const require_filters_ui = require('./PlAnnotations/filters_ui.cjs');
|
|
4
4
|
const require_state_migration = require('./PlDataTable/state-migration.cjs');
|
|
5
|
-
const
|
|
5
|
+
const require_createPlDataTableSheet = require('./PlDataTable/createPlDataTableSheet.cjs');
|
|
6
|
+
const require_createPlDataTableV3 = require('./PlDataTable/createPlDataTable/createPlDataTableV3.cjs');
|
|
7
|
+
const require_createPlDataTableV2 = require('./PlDataTable/createPlDataTable/createPlDataTableV2.cjs');
|
|
8
|
+
const require_index = require('./PlDataTable/createPlDataTable/index.cjs');
|
|
6
9
|
require('./PlDataTable/index.cjs');
|
|
7
10
|
const require_PlMultiSequenceAlignment = require('./PlMultiSequenceAlignment.cjs');
|
|
8
11
|
const require_PlSelectionModel = require('./PlSelectionModel.cjs');
|
|
@@ -3,9 +3,12 @@ import { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn }
|
|
|
3
3
|
import { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationStep, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, SortedCumulativeSum, TransformedColumn, ValueRank } from "./PlAnnotations/filter.js";
|
|
4
4
|
import { AnnotationScriptUi, AnnotationStepUi, AnyForm, FilterUi, FilterUiOfType, FilterUiType, FormField, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, compileAnnotationScript, compileFilter, compileFilters, unreachable } from "./PlAnnotations/filters_ui.js";
|
|
5
5
|
import "./PlAnnotations/index.js";
|
|
6
|
-
import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnId, PlTableColumnIdJson } from "./PlDataTable/
|
|
6
|
+
import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnId, PlTableColumnIdJson } from "./PlDataTable/typesV5.js";
|
|
7
7
|
import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./PlDataTable/state-migration.js";
|
|
8
|
-
import { createPlDataTableSheet
|
|
8
|
+
import { createPlDataTableSheet } from "./PlDataTable/createPlDataTableSheet.js";
|
|
9
|
+
import { createPlDataTableV2 } from "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
10
|
+
import { createPlDataTableV3, isColumnHidden, isColumnOptional } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
11
|
+
import { createPlDataTable } from "./PlDataTable/createPlDataTable/index.js";
|
|
9
12
|
import "./PlDataTable/index.js";
|
|
10
13
|
import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./PlSelectionModel.js";
|
|
11
14
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./PlMultiSequenceAlignment.js";
|
package/dist/components/index.js
CHANGED
|
@@ -2,7 +2,10 @@ import { enrichCompatible, getAvailableWithLinkersAxes } from "../pframe_utils/a
|
|
|
2
2
|
import { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn } from "./PFrameForGraphs.js";
|
|
3
3
|
import { compileAnnotationScript, compileFilter, compileFilters, unreachable } from "./PlAnnotations/filters_ui.js";
|
|
4
4
|
import { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./PlDataTable/state-migration.js";
|
|
5
|
-
import { createPlDataTableSheet
|
|
5
|
+
import { createPlDataTableSheet } from "./PlDataTable/createPlDataTableSheet.js";
|
|
6
|
+
import { createPlDataTableV3, isColumnHidden, isColumnOptional } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
7
|
+
import { createPlDataTableV2 } from "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
8
|
+
import { createPlDataTable } from "./PlDataTable/createPlDataTable/index.js";
|
|
6
9
|
import "./PlDataTable/index.js";
|
|
7
10
|
import { createRowSelectionColumn } from "./PlMultiSequenceAlignment.js";
|
|
8
11
|
import { createPlSelectionModel } from "./PlSelectionModel.js";
|
package/dist/index.cjs
CHANGED
|
@@ -10,6 +10,7 @@ const require_future = require('./render/future.cjs');
|
|
|
10
10
|
const require_accessor = require('./render/accessor.cjs');
|
|
11
11
|
const require_internal = require('./render/internal.cjs');
|
|
12
12
|
const require_axis_filtering = require('./render/util/axis_filtering.cjs');
|
|
13
|
+
const require_derive_distinct_labels = require('./labels/derive_distinct_labels.cjs');
|
|
13
14
|
const require_label = require('./render/util/label.cjs');
|
|
14
15
|
const require_pcolumn_data = require('./render/util/pcolumn_data.cjs');
|
|
15
16
|
const require_column_collection = require('./render/util/column_collection.cjs');
|
|
@@ -31,25 +32,38 @@ const require_filterUiToExpressionImpl = require('./filters/converters/filterUiT
|
|
|
31
32
|
const require_distill = require('./filters/distill.cjs');
|
|
32
33
|
require('./filters/index.cjs');
|
|
33
34
|
const require_state_migration = require('./components/PlDataTable/state-migration.cjs');
|
|
34
|
-
const
|
|
35
|
+
const require_createPlDataTableSheet = require('./components/PlDataTable/createPlDataTableSheet.cjs');
|
|
36
|
+
const require_column_snapshot = require('./columns/column_snapshot.cjs');
|
|
37
|
+
const require_column_snapshot_provider = require('./columns/column_snapshot_provider.cjs');
|
|
38
|
+
const require_column_selector = require('./columns/column_selector.cjs');
|
|
39
|
+
const require_column_collection_builder = require('./columns/column_collection_builder.cjs');
|
|
40
|
+
const require_ctx_column_sources = require('./columns/ctx_column_sources.cjs');
|
|
41
|
+
require('./columns/index.cjs');
|
|
42
|
+
const require_createPlDataTableV3 = require('./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs');
|
|
43
|
+
const require_createPlDataTableV2 = require('./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs');
|
|
44
|
+
const require_index$5 = require('./components/PlDataTable/createPlDataTable/index.cjs');
|
|
35
45
|
const require_PlMultiSequenceAlignment = require('./components/PlMultiSequenceAlignment.cjs');
|
|
36
46
|
const require_PlSelectionModel = require('./components/PlSelectionModel.cjs');
|
|
37
47
|
require('./components/index.cjs');
|
|
38
48
|
const require_pframe = require('./pframe.cjs');
|
|
49
|
+
const require_write_labels_to_specs = require('./labels/write_labels_to_specs.cjs');
|
|
50
|
+
require('./labels/index.cjs');
|
|
39
51
|
const require_ref_util = require('./ref_util.cjs');
|
|
40
52
|
const require_raw_globals = require('./raw_globals.cjs');
|
|
41
53
|
const require_converter = require('./annotations/converter.cjs');
|
|
42
54
|
require('./annotations/index.cjs');
|
|
43
|
-
const require_index$
|
|
55
|
+
const require_index$9 = require('./pframe_utils/index.cjs');
|
|
44
56
|
const require_env_value = require('./env_value.cjs');
|
|
45
57
|
|
|
46
58
|
exports.Args = require_actions.Args;
|
|
59
|
+
exports.ArrayColumnProvider = require_column_snapshot_provider.ArrayColumnProvider;
|
|
47
60
|
exports.BLOCK_STORAGE_FACADE_VERSION = require_block_storage_facade.BLOCK_STORAGE_FACADE_VERSION;
|
|
48
61
|
exports.BlockModel = require_block_model_legacy.BlockModel;
|
|
49
62
|
exports.BlockModelV3 = require_block_model.BlockModelV3;
|
|
50
63
|
exports.BlockRenderCtx = require_api.BlockRenderCtx;
|
|
51
64
|
exports.BlockStorageFacadeCallbacks = require_block_storage_facade.BlockStorageFacadeCallbacks;
|
|
52
65
|
exports.BlockStorageFacadeHandles = require_block_storage_facade.BlockStorageFacadeHandles;
|
|
66
|
+
exports.ColumnCollectionBuilder = require_column_collection_builder.ColumnCollectionBuilder;
|
|
53
67
|
exports.CurrentSdkInfo = require_version.CurrentSdkInfo;
|
|
54
68
|
exports.DataModel = require_block_migrations.DataModel;
|
|
55
69
|
exports.DataModelBuilder = require_block_migrations.DataModelBuilder;
|
|
@@ -62,6 +76,7 @@ Object.defineProperty(exports, 'JsRenderInternal', {
|
|
|
62
76
|
}
|
|
63
77
|
});
|
|
64
78
|
exports.MainOutputs = require_actions.MainOutputs;
|
|
79
|
+
exports.OutputColumnProvider = require_column_snapshot_provider.OutputColumnProvider;
|
|
65
80
|
exports.OutputError = require_block_state_util.OutputError;
|
|
66
81
|
exports.PColumnCollection = require_column_collection.PColumnCollection;
|
|
67
82
|
exports.PFrameImpl = require_pframe.PFrameImpl;
|
|
@@ -82,13 +97,15 @@ exports.RT_RESOURCE_MAP_PARTITIONED = require_pcolumn_data.RT_RESOURCE_MAP_PARTI
|
|
|
82
97
|
exports.RenderCtxBase = require_api.RenderCtxBase;
|
|
83
98
|
exports.RenderCtxLegacy = require_api.RenderCtxLegacy;
|
|
84
99
|
exports.ResultPool = require_api.ResultPool;
|
|
100
|
+
exports.ResultPoolColumnSnapshotProvider = require_ctx_column_sources.ResultPoolColumnSnapshotProvider;
|
|
101
|
+
exports.SnapshotColumnProvider = require_column_snapshot_provider.SnapshotColumnProvider;
|
|
85
102
|
exports.StagingOutputs = require_actions.StagingOutputs;
|
|
86
|
-
exports.Trace = require_label.Trace;
|
|
87
|
-
exports.TraceEntry = require_label.TraceEntry;
|
|
88
103
|
exports.TreeNodeAccessor = require_accessor.TreeNodeAccessor;
|
|
89
104
|
exports.UiState = require_actions.UiState;
|
|
90
105
|
exports.allPColumnsReady = require_pcolumn_data.allPColumnsReady;
|
|
91
106
|
exports.and = require_actions.and;
|
|
107
|
+
exports.collectCtxColumnSnapshotProviders = require_ctx_column_sources.collectCtxColumnSnapshotProviders;
|
|
108
|
+
exports.columnSelectorsToPredicate = require_column_selector.columnSelectorsToPredicate;
|
|
92
109
|
exports.compileAnnotationScript = require_filters_ui.compileAnnotationScript;
|
|
93
110
|
exports.compileFilter = require_filters_ui.compileFilter;
|
|
94
111
|
exports.compileFilters = require_filters_ui.compileFilters;
|
|
@@ -97,14 +114,19 @@ exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.conve
|
|
|
97
114
|
exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
|
|
98
115
|
exports.convertOrParsePColumnData = require_pcolumn_data.convertOrParsePColumnData;
|
|
99
116
|
exports.createBlockStorage = require_block_storage.createBlockStorage;
|
|
117
|
+
exports.createColumnSnapshot = require_column_snapshot.createColumnSnapshot;
|
|
100
118
|
exports.createDefaultPTableParams = require_state_migration.createDefaultPTableParams;
|
|
101
119
|
exports.createPFrameForGraphs = require_PFrameForGraphs.createPFrameForGraphs;
|
|
102
|
-
exports.
|
|
120
|
+
exports.createPlDataTable = require_index$5.createPlDataTable;
|
|
121
|
+
exports.createPlDataTableSheet = require_createPlDataTableSheet.createPlDataTableSheet;
|
|
103
122
|
exports.createPlDataTableStateV2 = require_state_migration.createPlDataTableStateV2;
|
|
104
|
-
exports.createPlDataTableV2 =
|
|
123
|
+
exports.createPlDataTableV2 = require_createPlDataTableV2.createPlDataTableV2;
|
|
124
|
+
exports.createPlDataTableV3 = require_createPlDataTableV3.createPlDataTableV3;
|
|
105
125
|
exports.createPlSelectionModel = require_PlSelectionModel.createPlSelectionModel;
|
|
126
|
+
exports.createReadyColumnData = require_column_snapshot.createReadyColumnData;
|
|
106
127
|
exports.createRowSelectionColumn = require_PlMultiSequenceAlignment.createRowSelectionColumn;
|
|
107
128
|
exports.deriveDataFromStorage = require_block_storage.deriveDataFromStorage;
|
|
129
|
+
exports.deriveDistinctLabels = require_derive_distinct_labels.deriveDistinctLabels;
|
|
108
130
|
exports.deriveLabels = require_label.deriveLabels;
|
|
109
131
|
exports.distillFilterSpec = require_distill.distillFilterSpec;
|
|
110
132
|
exports.downgradeCfgOrLambda = require_normalization.downgradeCfgOrLambda;
|
|
@@ -118,14 +140,14 @@ exports.fromPlOption = require_ref_util.fromPlOption;
|
|
|
118
140
|
exports.fromPlRef = require_ref_util.fromPlRef;
|
|
119
141
|
exports.getAllRelatedColumns = require_columns.getAllRelatedColumns;
|
|
120
142
|
exports.getAvailableWithLinkersAxes = require_axes.getAvailableWithLinkersAxes;
|
|
121
|
-
exports.getAxisUniqueValues = require_index$
|
|
143
|
+
exports.getAxisUniqueValues = require_index$9.getAxisUniqueValues;
|
|
122
144
|
exports.getBlobContent = require_actions.getBlobContent;
|
|
123
145
|
exports.getBlobContentAsJson = require_actions.getBlobContentAsJson;
|
|
124
146
|
exports.getBlobContentAsString = require_actions.getBlobContentAsString;
|
|
125
|
-
exports.getColumnOrAxisValueLabelsId = require_index$
|
|
126
|
-
exports.getColumnSpecById = require_index$
|
|
127
|
-
exports.getColumnUniqueValues = require_index$
|
|
128
|
-
exports.getColumnsFull = require_index$
|
|
147
|
+
exports.getColumnOrAxisValueLabelsId = require_index$9.getColumnOrAxisValueLabelsId;
|
|
148
|
+
exports.getColumnSpecById = require_index$9.getColumnSpecById;
|
|
149
|
+
exports.getColumnUniqueValues = require_index$9.getColumnUniqueValues;
|
|
150
|
+
exports.getColumnsFull = require_index$9.getColumnsFull;
|
|
129
151
|
exports.getDownloadedBlobContent = require_actions.getDownloadedBlobContent;
|
|
130
152
|
exports.getEnvironmentValue = require_env_value.getEnvironmentValue;
|
|
131
153
|
exports.getFromCfg = require_actions.getFromCfg;
|
|
@@ -142,17 +164,18 @@ exports.getProgressLog = require_actions.getProgressLog;
|
|
|
142
164
|
exports.getProgressLogWithInfo = require_actions.getProgressLogWithInfo;
|
|
143
165
|
exports.getRawPlatformaInstance = require_raw_globals.getRawPlatformaInstance;
|
|
144
166
|
exports.getRelatedColumns = require_columns.getRelatedColumns;
|
|
145
|
-
exports.getRequestColumnsFromSelectedSources = require_index$
|
|
167
|
+
exports.getRequestColumnsFromSelectedSources = require_index$9.getRequestColumnsFromSelectedSources;
|
|
146
168
|
exports.getResourceField = require_actions.getResourceField;
|
|
147
169
|
exports.getResourceValueAsJson = require_actions.getResourceValueAsJson;
|
|
148
|
-
exports.getSingleColumnData = require_index$
|
|
170
|
+
exports.getSingleColumnData = require_index$9.getSingleColumnData;
|
|
149
171
|
exports.getStorageData = require_block_storage.getStorageData;
|
|
150
172
|
exports.getUniquePartitionKeys = require_pcolumn_data.getUniquePartitionKeys;
|
|
151
|
-
exports.getUniqueSourceValuesWithLabels = require_index$
|
|
173
|
+
exports.getUniqueSourceValuesWithLabels = require_index$9.getUniqueSourceValuesWithLabels;
|
|
152
174
|
exports.ifDef = require_accessor.ifDef;
|
|
153
175
|
exports.isBlockStorage = require_block_storage.isBlockStorage;
|
|
154
|
-
exports.isColumnHidden =
|
|
155
|
-
exports.isColumnOptional =
|
|
176
|
+
exports.isColumnHidden = require_createPlDataTableV3.isColumnHidden;
|
|
177
|
+
exports.isColumnOptional = require_createPlDataTableV3.isColumnOptional;
|
|
178
|
+
exports.isColumnSnapshotProvider = require_column_snapshot_provider.isColumnSnapshotProvider;
|
|
156
179
|
exports.isConfigLambda = require_types.isConfigLambda;
|
|
157
180
|
exports.isEmpty = require_actions.isEmpty;
|
|
158
181
|
exports.isHiddenFromGraphColumn = require_PFrameForGraphs.isHiddenFromGraphColumn;
|
|
@@ -165,8 +188,11 @@ exports.makeObject = require_actions.makeObject;
|
|
|
165
188
|
exports.mapArrayValues = require_actions.mapArrayValues;
|
|
166
189
|
exports.mapRecordValues = require_actions.mapRecordValues;
|
|
167
190
|
exports.mapResourceFields = require_actions.mapResourceFields;
|
|
191
|
+
exports.matchColumn = require_column_selector.matchColumn;
|
|
192
|
+
exports.matchColumnSelectors = require_column_selector.matchColumnSelectors;
|
|
168
193
|
exports.migrateBlockStorage = require_block_storage.migrateBlockStorage;
|
|
169
194
|
exports.normalizeBlockStorage = require_block_storage.normalizeBlockStorage;
|
|
195
|
+
exports.normalizeSelectors = require_column_selector.normalizeSelectors;
|
|
170
196
|
exports.not = require_actions.not;
|
|
171
197
|
exports.or = require_actions.or;
|
|
172
198
|
exports.parsePColumnData = require_pcolumn_data.parsePColumnData;
|
|
@@ -175,10 +201,12 @@ exports.pluginOutputKey = require_plugin_handle.pluginOutputKey;
|
|
|
175
201
|
exports.pluginOutputPrefix = require_plugin_handle.pluginOutputPrefix;
|
|
176
202
|
exports.readOutput = require_block_state_util.readOutput;
|
|
177
203
|
exports.registerFacadeCallbacks = require_block_storage_facade.registerFacadeCallbacks;
|
|
204
|
+
exports.toColumnSnapshotProvider = require_column_snapshot_provider.toColumnSnapshotProvider;
|
|
178
205
|
exports.unreachable = require_filters_ui.unreachable;
|
|
179
206
|
exports.updateStorageData = require_block_storage.updateStorageData;
|
|
180
207
|
exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableStateV2;
|
|
181
208
|
exports.wrapOutputs = require_block_state_util.wrapOutputs;
|
|
209
|
+
exports.writeLabelsToSpecs = require_write_labels_to_specs.writeLabelsToSpecs;
|
|
182
210
|
var _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
183
211
|
Object.keys(_milaboratories_pl_model_common).forEach(function (k) {
|
|
184
212
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { BlockStatePatch, Patch, Unionize } from "./block_state_patch.js";
|
|
|
2
2
|
import { OutputError, readOutput, wrapOutputs } from "./block_state_util.js";
|
|
3
3
|
import { InferFactoryData, InferFactoryOutputs, InferFactoryParams, InferPluginHandle, PluginFactoryLike, PluginHandle, isPluginOutputKey, pluginOutputKey, pluginOutputPrefix } from "./plugin_handle.js";
|
|
4
4
|
import { DataModel, DataModelBuilder } from "./block_migrations.js";
|
|
5
|
-
import { BlockStorage, BlockStorageSchemaVersion, MigrateBlockStorageConfig, MigrationFailure, MigrationResult, MigrationSuccess, MutateStoragePayload, PluginName, PluginRegistry,
|
|
5
|
+
import { BlockStorage, BlockStorageSchemaVersion, MigrateBlockStorageConfig, MigrationFailure, MigrationResult, MigrationSuccess, MutateStoragePayload, PluginName, PluginRegistry, VersionedData, createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from "./block_storage.js";
|
|
6
6
|
import { Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgResourceValueAsJson } from "./config/model.js";
|
|
7
7
|
import { ActionResult, ConfAction, ConfigResult, ExtractAction, InferVarTypeSafe, OptionalPlResourceEntry, POCExtractAction, PlResourceEntry, PrimitiveOrConfig, PrimitiveToCfg, TypedConfig } from "./config/type_engine.js";
|
|
8
8
|
import { Checked } from "./config/type_util.js";
|
|
@@ -24,7 +24,8 @@ import { CommonFieldTraverseOps, CommonTraversalOps, FieldTraversalStep, FieldTy
|
|
|
24
24
|
import { PColumnDataUniversal, internal_d_exports } from "./render/internal.js";
|
|
25
25
|
import { ExtractFutureRefType, FutureRef } from "./render/future.js";
|
|
26
26
|
import { TreeNodeAccessor, ifDef } from "./render/accessor.js";
|
|
27
|
-
import {
|
|
27
|
+
import { DeriveLabelsOptions, Entry, Trace, WithLabel, deriveDistinctLabels } from "./labels/derive_distinct_labels.js";
|
|
28
|
+
import { deriveLabels } from "./render/util/label.js";
|
|
28
29
|
import { AxisLabelProvider, ColumnProvider, PColumnCollection, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnLazyUniversal, PColumnLazyWithLabel } from "./render/util/column_collection.js";
|
|
29
30
|
import { BlockRenderCtx, InferRenderFunctionReturn, PluginRenderCtx, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResultPool, UniversalColumnOption, UnwrapFutureRef } from "./render/api.js";
|
|
30
31
|
import { PColumnKeyList, PColumnResourceMapData, PColumnResourceMapEntry, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap } from "./render/util/pcolumn_data.js";
|
|
@@ -46,13 +47,24 @@ import { AnnotationSpec, AnnotationSpecUi, ExpressionSpec, FilterSpecUi } from "
|
|
|
46
47
|
import { convertFilterSpecsToExpressionSpecs } from "./annotations/converter.js";
|
|
47
48
|
import "./annotations/index.js";
|
|
48
49
|
import { AnnotationScriptUi, AnnotationStepUi, AnyForm, FilterUi, FilterUiOfType, FilterUiType, FormField, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, compileAnnotationScript, compileFilter, compileFilters, unreachable } from "./components/PlAnnotations/filters_ui.js";
|
|
49
|
-
import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnId, PlTableColumnIdJson } from "./components/PlDataTable/
|
|
50
|
+
import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnId, PlTableColumnIdJson } from "./components/PlDataTable/typesV5.js";
|
|
50
51
|
import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./components/PlDataTable/state-migration.js";
|
|
51
|
-
import { createPlDataTableSheet
|
|
52
|
+
import { createPlDataTableSheet } from "./components/PlDataTable/createPlDataTableSheet.js";
|
|
53
|
+
import { createPlDataTableV2 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
54
|
+
import { ColumnData, ColumnDataStatus, ColumnSnapshot, createColumnSnapshot, createReadyColumnData } from "./columns/column_snapshot.js";
|
|
55
|
+
import { ArrayColumnProvider, ColumnSnapshotProvider, ColumnSource, OutputColumnProvider, OutputColumnProviderOpts, SnapshotColumnProvider, isColumnSnapshotProvider, toColumnSnapshotProvider } from "./columns/column_snapshot_provider.js";
|
|
56
|
+
import { ColumnSelectorInput, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, StringMatcher, columnSelectorsToPredicate, matchColumn, matchColumnSelectors, normalizeSelectors } from "./columns/column_selector.js";
|
|
57
|
+
import { AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, BuildOptions, ColumnCollection, ColumnCollectionBuilder, ColumnMatch, FindColumnsOptions, MatchQualifications, MatchVariant, MatchingMode } from "./columns/column_collection_builder.js";
|
|
58
|
+
import { ResultPoolColumnSnapshotProvider, collectCtxColumnSnapshotProviders } from "./columns/ctx_column_sources.js";
|
|
59
|
+
import "./columns/index.js";
|
|
60
|
+
import { createPlDataTableV3, isColumnHidden, isColumnOptional } from "./components/PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
61
|
+
import { createPlDataTable } from "./components/PlDataTable/createPlDataTable/index.js";
|
|
52
62
|
import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
53
63
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
54
64
|
import "./components/index.js";
|
|
55
65
|
import { PFrameImpl } from "./pframe.js";
|
|
66
|
+
import { writeLabelsToSpecs } from "./labels/write_labels_to_specs.js";
|
|
67
|
+
import "./labels/index.js";
|
|
56
68
|
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
57
69
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
58
70
|
import { getAllRelatedColumns, getRelatedColumns } from "./pframe_utils/columns.js";
|
|
@@ -60,4 +72,4 @@ import { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, g
|
|
|
60
72
|
import { getEnvironmentValue } from "./env_value.js";
|
|
61
73
|
export * from "@milaboratories/pl-model-common";
|
|
62
74
|
export * from "@milaboratories/pl-error-like";
|
|
63
|
-
export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, AxesVault, AxisLabelProvider, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, Checked, ColumnProvider, CommonFieldTraverseOps, CommonTraversalOps, ConfAction, ConfigRenderLambda, ConfigRenderLambdaFlags, ConfigResult, CurrentSdkInfo, DataModel, DataModelBuilder, DeriveHref, ExpressionSpec, ExtractAction, ExtractFunctionHandleReturn, ExtractFutureRefType, FieldTraversalStep, FieldType, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryOutputs, InferFactoryParams, InferHrefType, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginHandles, InferPluginNames, InferRenderFunctionReturn, InferUiState, InferVarTypeSafe, IsNA, It, internal_d_exports as JsRenderInternal, LabelDerivationOps, Log10, MainOutputs, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, type MutateStoragePayload, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputError, PColumnCollection, PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnLazyUniversal, PColumnLazyWithLabel, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PFrameImpl, POCExtractAction, PTableKey, PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, PlTableColumnId, PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginRecord, type PluginRegistry, PluginRenderCtx, PrimitiveOrConfig, PrimitiveToCfg, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED,
|
|
75
|
+
export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, ArrayColumnProvider, AxesVault, AxisLabelProvider, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, Checked, ColumnCollection, ColumnCollectionBuilder, ColumnData, ColumnDataStatus, ColumnMatch, ColumnProvider, ColumnSelectorInput, ColumnSnapshot, ColumnSnapshotProvider, ColumnSource, CommonFieldTraverseOps, CommonTraversalOps, ConfAction, ConfigRenderLambda, ConfigRenderLambdaFlags, ConfigResult, CurrentSdkInfo, DataModel, DataModelBuilder, DeriveHref, DeriveLabelsOptions, Entry, ExpressionSpec, ExtractAction, ExtractFunctionHandleReturn, ExtractFutureRefType, FieldTraversalStep, FieldType, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FindColumnsOptions, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryOutputs, InferFactoryParams, InferHrefType, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginHandles, InferPluginNames, InferRenderFunctionReturn, InferUiState, InferVarTypeSafe, IsNA, It, internal_d_exports as JsRenderInternal, DeriveLabelsOptions as LabelDerivationOps, Log10, MainOutputs, MatchQualifications, MatchVariant, MatchingMode, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, type MutateStoragePayload, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputColumnProvider, OutputColumnProviderOpts, OutputError, PColumnCollection, PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnLazyUniversal, PColumnLazyWithLabel, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PFrameImpl, POCExtractAction, PTableKey, PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, PlTableColumnId, PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginRecord, type PluginRegistry, PluginRenderCtx, PrimitiveOrConfig, PrimitiveToCfg, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResolveCfgType, ResourceTraversalOps, ResourceType, ResultPool, ResultPoolColumnSnapshotProvider, SdkInfo, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, SnapshotColumnProvider, SortedCumulativeSum, Entry as SpecExtractorResult, StagingOutputs, StdCtx, StdCtxArgsOnly, StringMatcher, Trace, TransformedColumn, TreeNodeAccessor, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, TypedConfig, TypedConfigOrConfigLambda, TypedConfigOrString, UiState, Unionize, UniversalColumnOption, UnwrapFutureRef, ValueRank, type VersionedData, WithLabel, allPColumnsReady, and, collectCtxColumnSnapshotProviders, columnSelectorsToPredicate, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, matchColumn, matchColumnSelectors, migrateBlockStorage, normalizeBlockStorage, normalizeSelectors, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs, writeLabelsToSpecs };
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,8 @@ import { FutureRef } from "./render/future.js";
|
|
|
9
9
|
import { TreeNodeAccessor, ifDef } from "./render/accessor.js";
|
|
10
10
|
import { internal_exports } from "./render/internal.js";
|
|
11
11
|
import { filterDataInfoEntries } from "./render/util/axis_filtering.js";
|
|
12
|
-
import {
|
|
12
|
+
import { deriveDistinctLabels } from "./labels/derive_distinct_labels.js";
|
|
13
|
+
import { deriveLabels } from "./render/util/label.js";
|
|
13
14
|
import { RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap } from "./render/util/pcolumn_data.js";
|
|
14
15
|
import { PColumnCollection } from "./render/util/column_collection.js";
|
|
15
16
|
import { BlockRenderCtx, PluginRenderCtx, RenderCtxBase, RenderCtxLegacy, ResultPool } from "./render/api.js";
|
|
@@ -30,11 +31,22 @@ import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from ".
|
|
|
30
31
|
import { distillFilterSpec } from "./filters/distill.js";
|
|
31
32
|
import "./filters/index.js";
|
|
32
33
|
import { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./components/PlDataTable/state-migration.js";
|
|
33
|
-
import { createPlDataTableSheet
|
|
34
|
+
import { createPlDataTableSheet } from "./components/PlDataTable/createPlDataTableSheet.js";
|
|
35
|
+
import { createColumnSnapshot, createReadyColumnData } from "./columns/column_snapshot.js";
|
|
36
|
+
import { ArrayColumnProvider, OutputColumnProvider, SnapshotColumnProvider, isColumnSnapshotProvider, toColumnSnapshotProvider } from "./columns/column_snapshot_provider.js";
|
|
37
|
+
import { columnSelectorsToPredicate, matchColumn, matchColumnSelectors, normalizeSelectors } from "./columns/column_selector.js";
|
|
38
|
+
import { ColumnCollectionBuilder } from "./columns/column_collection_builder.js";
|
|
39
|
+
import { ResultPoolColumnSnapshotProvider, collectCtxColumnSnapshotProviders } from "./columns/ctx_column_sources.js";
|
|
40
|
+
import "./columns/index.js";
|
|
41
|
+
import { createPlDataTableV3, isColumnHidden, isColumnOptional } from "./components/PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
42
|
+
import { createPlDataTableV2 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
43
|
+
import { createPlDataTable } from "./components/PlDataTable/createPlDataTable/index.js";
|
|
34
44
|
import { createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
35
45
|
import { createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
36
46
|
import "./components/index.js";
|
|
37
47
|
import { PFrameImpl } from "./pframe.js";
|
|
48
|
+
import { writeLabelsToSpecs } from "./labels/write_labels_to_specs.js";
|
|
49
|
+
import "./labels/index.js";
|
|
38
50
|
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
39
51
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
40
52
|
import { convertFilterSpecsToExpressionSpecs } from "./annotations/converter.js";
|
|
@@ -46,4 +58,4 @@ export * from "@milaboratories/pl-model-common"
|
|
|
46
58
|
|
|
47
59
|
export * from "@milaboratories/pl-error-like"
|
|
48
60
|
|
|
49
|
-
export { Args, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputError, PColumnCollection, PFrameImpl, PlatformaSDKVersion, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel, PluginRenderCtx, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtxBase, RenderCtxLegacy, ResultPool,
|
|
61
|
+
export { Args, ArrayColumnProvider, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, ColumnCollectionBuilder, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputColumnProvider, OutputError, PColumnCollection, PFrameImpl, PlatformaSDKVersion, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel, PluginRenderCtx, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtxBase, RenderCtxLegacy, ResultPool, ResultPoolColumnSnapshotProvider, SnapshotColumnProvider, StagingOutputs, TreeNodeAccessor, UiState, allPColumnsReady, and, collectCtxColumnSnapshotProviders, columnSelectorsToPredicate, compileAnnotationScript, compileFilter, compileFilters, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, matchColumn, matchColumnSelectors, migrateBlockStorage, normalizeBlockStorage, normalizeSelectors, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs, writeLabelsToSpecs };
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
3
|
+
let _milaboratories_helpers = require("@milaboratories/helpers");
|
|
4
|
+
|
|
5
|
+
//#region src/labels/derive_distinct_labels.ts
|
|
6
|
+
const DISTANCE_PENALTY = .001;
|
|
7
|
+
const LABEL_TYPE = "__LABEL__";
|
|
8
|
+
const LABEL_TYPE_FULL = "__LABEL__@1";
|
|
9
|
+
function deriveDistinctLabels(values, options = {}) {
|
|
10
|
+
const forceTraceElements = options.forceTraceElements !== void 0 && options.forceTraceElements.length > 0 ? new Set(options.forceTraceElements) : void 0;
|
|
11
|
+
const separator = options.separator ?? " / ";
|
|
12
|
+
const records = values.map((v) => enrichRecord(v, options));
|
|
13
|
+
const stats = collectTypeStats(records);
|
|
14
|
+
const { mainTypes, secondaryTypes } = classifyTypes(stats, values.length);
|
|
15
|
+
const build = (typeSet, force) => buildLabels(records, typeSet, forceTraceElements, separator, force);
|
|
16
|
+
if (mainTypes.length === 0) {
|
|
17
|
+
if (secondaryTypes.length !== 0) throw new Error("Non-empty secondary types list while main types list is empty.");
|
|
18
|
+
return build(new Set(LABEL_TYPE_FULL), true);
|
|
19
|
+
}
|
|
20
|
+
let includedCount = 0;
|
|
21
|
+
let additionalType = -1;
|
|
22
|
+
while (includedCount < mainTypes.length) {
|
|
23
|
+
const currentSet = /* @__PURE__ */ new Set();
|
|
24
|
+
if (options.includeNativeLabel) currentSet.add(LABEL_TYPE_FULL);
|
|
25
|
+
for (let i = 0; i < includedCount; ++i) currentSet.add(mainTypes[i]);
|
|
26
|
+
if (additionalType >= 0) currentSet.add(mainTypes[additionalType]);
|
|
27
|
+
const candidateResult = build(currentSet, false);
|
|
28
|
+
if (candidateResult !== void 0 && countUniqueLabels(candidateResult) === values.length) return build(minimizeTypeSet(currentSet, records, stats, forceTraceElements, options, separator), false) ?? (0, _milaboratories_helpers.throwError)("Failed to derive unique labels");
|
|
29
|
+
additionalType++;
|
|
30
|
+
if (additionalType >= mainTypes.length) {
|
|
31
|
+
includedCount++;
|
|
32
|
+
additionalType = includedCount;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return build(minimizeTypeSet(new Set([...mainTypes, ...secondaryTypes]), records, stats, forceTraceElements, options, separator), true) ?? (0, _milaboratories_helpers.throwError)("Failed to derive unique labels");
|
|
36
|
+
}
|
|
37
|
+
function extractSpecAndTrace(entry) {
|
|
38
|
+
if ("spec" in entry && typeof entry.spec === "object") return {
|
|
39
|
+
spec: entry.spec,
|
|
40
|
+
prefixTrace: entry.prefixTrace,
|
|
41
|
+
suffixTrace: entry.suffixTrace
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
spec: entry,
|
|
45
|
+
prefixTrace: void 0,
|
|
46
|
+
suffixTrace: void 0
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function buildFullTrace(trace) {
|
|
50
|
+
const result = [];
|
|
51
|
+
const occurrences = /* @__PURE__ */ new Map();
|
|
52
|
+
for (let i = trace.length - 1; i >= 0; --i) {
|
|
53
|
+
const entry = trace[i];
|
|
54
|
+
const occurrenceIndex = (occurrences.get(entry.type) ?? 0) + 1;
|
|
55
|
+
occurrences.set(entry.type, occurrenceIndex);
|
|
56
|
+
result.push({
|
|
57
|
+
...entry,
|
|
58
|
+
fullType: `${entry.type}@${occurrenceIndex}`,
|
|
59
|
+
occurrenceIndex
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
result.reverse();
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
function enrichRecord(value, options) {
|
|
66
|
+
const { spec, prefixTrace, suffixTrace } = extractSpecAndTrace(value);
|
|
67
|
+
const label = (0, _milaboratories_pl_model_common.readAnnotation)(spec, _milaboratories_pl_model_common.Annotation.Label);
|
|
68
|
+
const traceStr = (0, _milaboratories_pl_model_common.readAnnotation)(spec, _milaboratories_pl_model_common.Annotation.Trace);
|
|
69
|
+
const baseTrace = traceStr ? (0, _milaboratories_pl_model_common.parseJson)(traceStr) ?? [] : [];
|
|
70
|
+
const trace = [
|
|
71
|
+
...prefixTrace ?? [],
|
|
72
|
+
...baseTrace,
|
|
73
|
+
...suffixTrace ?? []
|
|
74
|
+
];
|
|
75
|
+
if (label !== void 0) {
|
|
76
|
+
const labelEntry = {
|
|
77
|
+
label,
|
|
78
|
+
type: LABEL_TYPE,
|
|
79
|
+
importance: -2
|
|
80
|
+
};
|
|
81
|
+
if (options.addLabelAsSuffix) trace.push(labelEntry);
|
|
82
|
+
else trace.splice(0, 0, labelEntry);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
value,
|
|
86
|
+
fullTrace: buildFullTrace(trace)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function collectTypeStats(records) {
|
|
90
|
+
const importances = /* @__PURE__ */ new Map();
|
|
91
|
+
const countByType = /* @__PURE__ */ new Map();
|
|
92
|
+
for (const record of records) for (let i = 0; i < record.fullTrace.length; i++) {
|
|
93
|
+
const { fullType, importance: rawImportance } = record.fullTrace[i];
|
|
94
|
+
const importance = rawImportance ?? 0;
|
|
95
|
+
const distance = (record.fullTrace.length - i) * DISTANCE_PENALTY;
|
|
96
|
+
countByType.set(fullType, (countByType.get(fullType) ?? 0) + 1);
|
|
97
|
+
importances.set(fullType, Math.max(importances.get(fullType) ?? Number.NEGATIVE_INFINITY, importance - distance));
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
importances,
|
|
101
|
+
countByType
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function classifyTypes(stats, totalRecords) {
|
|
105
|
+
const sorted = [...stats.importances].sort(([, i1], [, i2]) => i2 - i1);
|
|
106
|
+
const mainTypes = [];
|
|
107
|
+
const secondaryTypes = [];
|
|
108
|
+
for (const [typeName] of sorted) if (typeName.endsWith("@1") || stats.countByType.get(typeName) === totalRecords) mainTypes.push(typeName);
|
|
109
|
+
else secondaryTypes.push(typeName);
|
|
110
|
+
return {
|
|
111
|
+
mainTypes,
|
|
112
|
+
secondaryTypes
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function buildLabels(records, includedTypes, forceTraceElements, separator, force) {
|
|
116
|
+
const result = [];
|
|
117
|
+
for (const r of records) {
|
|
118
|
+
const parts = [];
|
|
119
|
+
for (const ft of r.fullTrace) if (includedTypes.has(ft.fullType) || forceTraceElements?.has(ft.type)) parts.push(ft.label);
|
|
120
|
+
if (parts.length === 0) {
|
|
121
|
+
if (!force) return void 0;
|
|
122
|
+
result.push({
|
|
123
|
+
label: "Unlabeled",
|
|
124
|
+
value: r.value
|
|
125
|
+
});
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
result.push({
|
|
129
|
+
label: parts.join(separator),
|
|
130
|
+
value: r.value
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
function countUniqueLabels(result) {
|
|
136
|
+
if (result === void 0) return 0;
|
|
137
|
+
return new Set(result.map((c) => c.label)).size;
|
|
138
|
+
}
|
|
139
|
+
function minimizeTypeSet(typeSet, records, stats, forceTraceElements, options, separator) {
|
|
140
|
+
const initialResult = buildLabels(records, typeSet, forceTraceElements, separator, false);
|
|
141
|
+
if (initialResult === void 0) return typeSet;
|
|
142
|
+
const targetCardinality = countUniqueLabels(initialResult);
|
|
143
|
+
const result = new Set(typeSet);
|
|
144
|
+
const removable = [...result].filter((t) => !forceTraceElements?.has(t.split("@")[0]) && !(options.includeNativeLabel && t === LABEL_TYPE_FULL)).sort((a, b) => (stats.importances.get(a) ?? 0) - (stats.importances.get(b) ?? 0));
|
|
145
|
+
for (const typeToRemove of removable) {
|
|
146
|
+
const candidate = new Set(result);
|
|
147
|
+
candidate.delete(typeToRemove);
|
|
148
|
+
const candidateResult = buildLabels(records, candidate, forceTraceElements, separator, false);
|
|
149
|
+
if (candidateResult !== void 0 && countUniqueLabels(candidateResult) >= targetCardinality) result.delete(typeToRemove);
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
//#endregion
|
|
155
|
+
exports.deriveDistinctLabels = deriveDistinctLabels;
|
|
156
|
+
//# sourceMappingURL=derive_distinct_labels.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive_distinct_labels.cjs","names":["Annotation"],"sources":["../../src/labels/derive_distinct_labels.ts"],"sourcesContent":["import {\n Annotation,\n parseJson,\n readAnnotation,\n type CanonicalizedJson,\n type PObjectSpec,\n} from \"@milaboratories/pl-model-common\";\nimport { throwError } from \"@milaboratories/helpers\";\n\nconst DISTANCE_PENALTY = 0.001;\nconst LABEL_TYPE = \"__LABEL__\";\nconst LABEL_TYPE_FULL = \"__LABEL__@1\";\n\nexport type WithLabel<T> = {\n value: T;\n label: string;\n};\n\ntype TraceEntry = {\n id?: string;\n type: string;\n label: string;\n importance?: number;\n};\n\nexport type Trace = TraceEntry[];\n\nexport type Entry =\n | PObjectSpec\n | { spec: PObjectSpec; prefixTrace?: TraceEntry[]; suffixTrace?: TraceEntry[] };\n\nexport type DeriveLabelsOptions = {\n /** Separator to use between label parts (\" / \" by default) */\n separator?: string;\n /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */\n addLabelAsSuffix?: boolean;\n /** Force inclusion of native column label */\n includeNativeLabel?: boolean;\n /** Trace elements list that will be forced to be included in the label. */\n forceTraceElements?: string[];\n};\n\nexport function deriveDistinctLabels<T extends Entry>(\n values: T[],\n options: DeriveLabelsOptions = {},\n): WithLabel<T>[] {\n const forceTraceElements =\n options.forceTraceElements !== undefined && options.forceTraceElements.length > 0\n ? new Set(options.forceTraceElements)\n : undefined;\n const separator = options.separator ?? \" / \";\n\n // Phase 1: enrich each value with parsed trace\n const records = values.map((v) => enrichRecord(v, options));\n\n // Phase 2: collect global type statistics\n const stats = collectTypeStats(records);\n\n // Phase 3: classify types into main (present everywhere) and secondary\n const { mainTypes, secondaryTypes } = classifyTypes(stats, values.length);\n\n const build = (typeSet: Set<string>, force: boolean) =>\n buildLabels(records, typeSet, forceTraceElements, separator, force);\n\n if (mainTypes.length === 0) {\n if (secondaryTypes.length !== 0)\n throw new Error(\"Non-empty secondary types list while main types list is empty.\");\n return build(new Set(LABEL_TYPE_FULL), true)!;\n }\n\n // Phase 4: search for minimal type set that produces unique labels\n //\n // includedCount = 2\n // * *\n // T0 T1 T2 T3 T4 T5\n // *\n // additionalType = 3\n //\n // Resulting set: T0, T1, T3\n //\n let includedCount = 0;\n let additionalType = -1;\n while (includedCount < mainTypes.length) {\n const currentSet = new Set<string>();\n if (options.includeNativeLabel) currentSet.add(LABEL_TYPE_FULL);\n for (let i = 0; i < includedCount; ++i) currentSet.add(mainTypes[i]);\n if (additionalType >= 0) currentSet.add(mainTypes[additionalType]);\n\n const candidateResult = build(currentSet, false);\n if (candidateResult !== undefined && countUniqueLabels(candidateResult) === values.length) {\n const minimized = minimizeTypeSet(\n currentSet,\n records,\n stats,\n forceTraceElements,\n options,\n separator,\n );\n return build(minimized, false) ?? throwError(\"Failed to derive unique labels\");\n }\n\n additionalType++;\n if (additionalType >= mainTypes.length) {\n includedCount++;\n additionalType = includedCount;\n }\n }\n\n // Fallback: include all types, then minimize\n const fallbackSet = new Set([...mainTypes, ...secondaryTypes]);\n const minimized = minimizeTypeSet(\n fallbackSet,\n records,\n stats,\n forceTraceElements,\n options,\n separator,\n );\n return build(minimized, true) ?? throwError(\"Failed to derive unique labels\");\n}\n\n// --- Pure helpers ---\ntype FullTraceEntry = TraceEntry & { fullType: string; occurrenceIndex: number };\n\ntype EnrichedRecord<T> = {\n value: T;\n fullTrace: FullTraceEntry[];\n};\n\nfunction extractSpecAndTrace(entry: Entry): {\n spec: PObjectSpec;\n prefixTrace: TraceEntry[] | undefined;\n suffixTrace: TraceEntry[] | undefined;\n} {\n if (\"spec\" in entry && typeof entry.spec === \"object\") {\n return { spec: entry.spec, prefixTrace: entry.prefixTrace, suffixTrace: entry.suffixTrace };\n }\n return { spec: entry as PObjectSpec, prefixTrace: undefined, suffixTrace: undefined };\n}\n\nfunction buildFullTrace(trace: TraceEntry[]): FullTraceEntry[] {\n const result: FullTraceEntry[] = [];\n const occurrences = new Map<string, number>();\n\n for (let i = trace.length - 1; i >= 0; --i) {\n const entry = trace[i];\n const occurrenceIndex = (occurrences.get(entry.type) ?? 0) + 1;\n occurrences.set(entry.type, occurrenceIndex);\n result.push({\n ...entry,\n fullType: `${entry.type}@${occurrenceIndex}`,\n occurrenceIndex,\n });\n }\n\n result.reverse();\n return result;\n}\n\nfunction enrichRecord<T extends Entry>(value: T, options: DeriveLabelsOptions): EnrichedRecord<T> {\n const { spec, prefixTrace, suffixTrace } = extractSpecAndTrace(value);\n\n const label = readAnnotation(spec, Annotation.Label);\n const traceStr = readAnnotation(spec, Annotation.Trace) as\n | CanonicalizedJson<TraceEntry[]>\n | undefined;\n const baseTrace: Trace = traceStr ? (parseJson<Trace>(traceStr) ?? []) : [];\n const trace = [...(prefixTrace ?? []), ...baseTrace, ...(suffixTrace ?? [])];\n\n if (label !== undefined) {\n const labelEntry = { label, type: LABEL_TYPE, importance: -2 };\n if (options.addLabelAsSuffix) trace.push(labelEntry);\n else trace.splice(0, 0, labelEntry);\n }\n\n return { value, fullTrace: buildFullTrace(trace) };\n}\n\ntype TypeStats = {\n importances: Map<string, number>;\n countByType: Map<string, number>;\n};\n\nfunction collectTypeStats<T>(records: EnrichedRecord<T>[]): TypeStats {\n const importances = new Map<string, number>();\n const countByType = new Map<string, number>();\n\n for (const record of records) {\n for (let i = 0; i < record.fullTrace.length; i++) {\n const { fullType, importance: rawImportance } = record.fullTrace[i];\n const importance = rawImportance ?? 0;\n const distance = (record.fullTrace.length - i) * DISTANCE_PENALTY;\n\n countByType.set(fullType, (countByType.get(fullType) ?? 0) + 1);\n importances.set(\n fullType,\n Math.max(importances.get(fullType) ?? Number.NEGATIVE_INFINITY, importance - distance),\n );\n }\n }\n\n return { importances, countByType };\n}\n\nfunction classifyTypes(\n stats: TypeStats,\n totalRecords: number,\n): { mainTypes: string[]; secondaryTypes: string[] } {\n const sorted = [...stats.importances].sort(([, i1], [, i2]) => i2 - i1);\n\n const mainTypes: string[] = [];\n const secondaryTypes: string[] = [];\n\n for (const [typeName] of sorted) {\n if (typeName.endsWith(\"@1\") || stats.countByType.get(typeName) === totalRecords)\n mainTypes.push(typeName);\n else secondaryTypes.push(typeName);\n }\n\n return { mainTypes, secondaryTypes };\n}\n\nfunction buildLabels<T>(\n records: EnrichedRecord<T>[],\n includedTypes: Set<string>,\n forceTraceElements: Set<string> | undefined,\n separator: string,\n force: boolean,\n): WithLabel<T>[] | undefined {\n const result: WithLabel<T>[] = [];\n\n for (const r of records) {\n const parts: string[] = [];\n for (const ft of r.fullTrace) {\n if (includedTypes.has(ft.fullType) || forceTraceElements?.has(ft.type)) {\n parts.push(ft.label);\n }\n }\n\n if (parts.length === 0) {\n if (!force) return undefined;\n result.push({ label: \"Unlabeled\", value: r.value });\n continue;\n }\n\n result.push({ label: parts.join(separator), value: r.value });\n }\n\n return result;\n}\n\nfunction countUniqueLabels<T>(result: WithLabel<T>[] | undefined): number {\n if (result === undefined) return 0;\n return new Set(result.map((c) => c.label)).size;\n}\n\nfunction minimizeTypeSet<T>(\n typeSet: Set<string>,\n records: EnrichedRecord<T>[],\n stats: TypeStats,\n forceTraceElements: Set<string> | undefined,\n options: DeriveLabelsOptions,\n separator: string,\n): Set<string> {\n const initialResult = buildLabels(records, typeSet, forceTraceElements, separator, false);\n if (initialResult === undefined) return typeSet;\n\n const targetCardinality = countUniqueLabels(initialResult);\n const result = new Set(typeSet);\n\n const removable = [...result]\n .filter(\n (t) =>\n !forceTraceElements?.has(t.split(\"@\")[0]) &&\n !(options.includeNativeLabel && t === LABEL_TYPE_FULL),\n )\n .sort((a, b) => (stats.importances.get(a) ?? 0) - (stats.importances.get(b) ?? 0));\n\n for (const typeToRemove of removable) {\n const candidate = new Set(result);\n candidate.delete(typeToRemove);\n const candidateResult = buildLabels(records, candidate, forceTraceElements, separator, false);\n if (candidateResult !== undefined && countUniqueLabels(candidateResult) >= targetCardinality) {\n result.delete(typeToRemove);\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PObjectSpec } from "@milaboratories/pl-model-common";
|
|
2
|
+
|
|
3
|
+
//#region src/labels/derive_distinct_labels.d.ts
|
|
4
|
+
type WithLabel<T> = {
|
|
5
|
+
value: T;
|
|
6
|
+
label: string;
|
|
7
|
+
};
|
|
8
|
+
type TraceEntry = {
|
|
9
|
+
id?: string;
|
|
10
|
+
type: string;
|
|
11
|
+
label: string;
|
|
12
|
+
importance?: number;
|
|
13
|
+
};
|
|
14
|
+
type Trace = TraceEntry[];
|
|
15
|
+
type Entry = PObjectSpec | {
|
|
16
|
+
spec: PObjectSpec;
|
|
17
|
+
prefixTrace?: TraceEntry[];
|
|
18
|
+
suffixTrace?: TraceEntry[];
|
|
19
|
+
};
|
|
20
|
+
type DeriveLabelsOptions = {
|
|
21
|
+
/** Separator to use between label parts (" / " by default) */separator?: string; /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */
|
|
22
|
+
addLabelAsSuffix?: boolean; /** Force inclusion of native column label */
|
|
23
|
+
includeNativeLabel?: boolean; /** Trace elements list that will be forced to be included in the label. */
|
|
24
|
+
forceTraceElements?: string[];
|
|
25
|
+
};
|
|
26
|
+
declare function deriveDistinctLabels<T extends Entry>(values: T[], options?: DeriveLabelsOptions): WithLabel<T>[];
|
|
27
|
+
//#endregion
|
|
28
|
+
export { DeriveLabelsOptions, Entry, Trace, WithLabel, deriveDistinctLabels };
|
|
29
|
+
//# sourceMappingURL=derive_distinct_labels.d.ts.map
|