@platforma-open/platforma-open.titeseq-analysis 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/block-pack/main.plj.gz +0 -0
- package/block-pack/manifest.json +1 -1
- package/block-pack/model.json +1 -1
- package/block-pack/published.json +1 -1
- package/block-pack/ui.tgz +0 -0
- package/dist/AGENTS.d.ts +133 -86
- package/dist/AGENTS.d.ts.map +1 -1
- package/dist/index.d.ts +133 -86
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +513 -147
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { r as __toESM, t as __commonJSMin } from "./rolldown-runtime-DC62tzP2.js
|
|
|
11
11
|
function deriveTemplateParams(data) {
|
|
12
12
|
return {
|
|
13
13
|
abundanceRef: data.abundanceRef,
|
|
14
|
+
filterRef: data.filterRef,
|
|
14
15
|
concentrationColumnRef: data.concentrationColumnRef,
|
|
15
16
|
binColumnRef: data.binColumnRef,
|
|
16
17
|
antigenColumnRef: data.antigenColumnRef,
|
|
@@ -31,7 +32,7 @@ function deriveTemplateParams(data) {
|
|
|
31
32
|
//#endregion
|
|
32
33
|
//#region ../kind/dist/package.js
|
|
33
34
|
var name = "@platforma-open/platforma-open.titeseq-analysis.kind";
|
|
34
|
-
var version$1 = "1.
|
|
35
|
+
var version$1 = "1.1.0";
|
|
35
36
|
//#endregion
|
|
36
37
|
//#region ../node_modules/.pnpm/@platforma-sdk+block-kind@1.1.0/node_modules/@platforma-sdk/block-kind/dist/params.js
|
|
37
38
|
/**
|
|
@@ -123,14 +124,14 @@ function defineBlockKind(meta) {
|
|
|
123
124
|
});
|
|
124
125
|
}
|
|
125
126
|
//#endregion
|
|
126
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
127
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/plugin_handle.js
|
|
127
128
|
const PLUGIN_OUTPUT_PREFIX = "plugin-output#";
|
|
128
129
|
/** Construct the output key for a plugin output in the block outputs map. */
|
|
129
130
|
function pluginOutputKey(handle, outputKey) {
|
|
130
131
|
return `${PLUGIN_OUTPUT_PREFIX}${handle}#${outputKey}`;
|
|
131
132
|
}
|
|
132
133
|
//#endregion
|
|
133
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
134
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/block_storage.js
|
|
134
135
|
/**
|
|
135
136
|
* Discriminator key for BlockStorage format detection.
|
|
136
137
|
* This unique hash-based key identifies data as BlockStorage vs legacy formats.
|
|
@@ -3947,7 +3948,7 @@ objectType({
|
|
|
3947
3948
|
content: stringType()
|
|
3948
3949
|
});
|
|
3949
3950
|
//#endregion
|
|
3950
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
3951
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/bmodel/block_kind_ref.js
|
|
3951
3952
|
/**
|
|
3952
3953
|
* Compose a {@link BlockKindReference} from a kind's `name`/`version`.
|
|
3953
3954
|
*
|
|
@@ -3963,7 +3964,7 @@ objectType({
|
|
|
3963
3964
|
to: numberType().min(1)
|
|
3964
3965
|
});
|
|
3965
3966
|
//#endregion
|
|
3966
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
3967
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/util.js
|
|
3967
3968
|
function assertNever(x) {
|
|
3968
3969
|
throw new Error("Unexpected object: " + x);
|
|
3969
3970
|
}
|
|
@@ -3975,7 +3976,7 @@ function uniqueBy(array, makeId) {
|
|
|
3975
3976
|
return [...new Map(array.map((e) => [makeId(e), e])).values()];
|
|
3976
3977
|
}
|
|
3977
3978
|
//#endregion
|
|
3978
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
3979
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/data_info.js
|
|
3979
3980
|
/**
|
|
3980
3981
|
* Type guard function that checks if the given value is a valid DataInfo.
|
|
3981
3982
|
*
|
|
@@ -4164,7 +4165,7 @@ function entriesToDataInfo(dataInfoEntries) {
|
|
|
4164
4165
|
}
|
|
4165
4166
|
}
|
|
4166
4167
|
//#endregion
|
|
4167
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4168
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/errors.js
|
|
4168
4169
|
var ServiceError = class extends Error {
|
|
4169
4170
|
name = "ServiceError";
|
|
4170
4171
|
};
|
|
@@ -4188,7 +4189,7 @@ function ensureError(value) {
|
|
|
4188
4189
|
return new Error(stringifyValue(value));
|
|
4189
4190
|
}
|
|
4190
4191
|
//#endregion
|
|
4191
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4192
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/json.js
|
|
4192
4193
|
var import_canonicalize = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
4193
4194
|
module.exports = function serialize(object) {
|
|
4194
4195
|
if (typeof object === "number" && isNaN(object)) throw new Error("NaN is not allowed");
|
|
@@ -4221,7 +4222,7 @@ function parseJsonSafely(value, fallback) {
|
|
|
4221
4222
|
}
|
|
4222
4223
|
}
|
|
4223
4224
|
//#endregion
|
|
4224
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4225
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js
|
|
4225
4226
|
function readMetadata(metadata, key) {
|
|
4226
4227
|
return metadata?.[key];
|
|
4227
4228
|
}
|
|
@@ -4549,7 +4550,7 @@ function matchAxisId(query, target) {
|
|
|
4549
4550
|
return query.name === target.name && matchDomain$1(query.domain, target.domain) && matchDomain$1(query.contextDomain, target.contextDomain);
|
|
4550
4551
|
}
|
|
4551
4552
|
//#endregion
|
|
4552
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4553
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/query/utils.js
|
|
4553
4554
|
const BOOLEAN_TYPES = /* @__PURE__ */ new Set([
|
|
4554
4555
|
"numericComparison",
|
|
4555
4556
|
"stringEquals",
|
|
@@ -4654,7 +4655,7 @@ function collectSpecQueryColumns(query) {
|
|
|
4654
4655
|
return result;
|
|
4655
4656
|
}
|
|
4656
4657
|
//#endregion
|
|
4657
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4658
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/table_calculate.js
|
|
4658
4659
|
function mapPTableDef(def, cb) {
|
|
4659
4660
|
return {
|
|
4660
4661
|
...def,
|
|
@@ -4697,7 +4698,7 @@ function mapJoinEntry(entry, cb) {
|
|
|
4697
4698
|
}
|
|
4698
4699
|
}
|
|
4699
4700
|
//#endregion
|
|
4700
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4701
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/table_common.js
|
|
4701
4702
|
function getPTableColumnId(spec) {
|
|
4702
4703
|
switch (spec.type) {
|
|
4703
4704
|
case "axis": return {
|
|
@@ -4711,7 +4712,7 @@ function getPTableColumnId(spec) {
|
|
|
4711
4712
|
}
|
|
4712
4713
|
}
|
|
4713
4714
|
//#endregion
|
|
4714
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4715
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/filtered_column.js
|
|
4715
4716
|
function stringifyColumnFilteredId(key) {
|
|
4716
4717
|
return canonicalizeJson(createColumnFilteredKey(key));
|
|
4717
4718
|
}
|
|
@@ -4744,7 +4745,7 @@ function applyAxisFilters(spec, axisFilters) {
|
|
|
4744
4745
|
};
|
|
4745
4746
|
}
|
|
4746
4747
|
//#endregion
|
|
4747
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4748
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/pool/spec.js
|
|
4748
4749
|
function isPObjectId(value) {
|
|
4749
4750
|
if (typeof value !== "string") return false;
|
|
4750
4751
|
return isPObjectKey(parseJsonSafely(value));
|
|
@@ -4779,6 +4780,10 @@ function isGlobalPObjectKey(value) {
|
|
|
4779
4780
|
if (typeof value !== "object" || value === null) return false;
|
|
4780
4781
|
return "__isRef" in value && "blockId" in value && "name" in value;
|
|
4781
4782
|
}
|
|
4783
|
+
function isGlobalPObjectId(value) {
|
|
4784
|
+
if (typeof value !== "string") return false;
|
|
4785
|
+
return isGlobalPObjectKey(parseJsonSafely(value));
|
|
4786
|
+
}
|
|
4782
4787
|
function isPObject(obj) {
|
|
4783
4788
|
return typeof obj === "object" && obj !== null && "id" in obj && "spec" in obj && "data" in obj;
|
|
4784
4789
|
}
|
|
@@ -4866,7 +4871,7 @@ function throwError(v) {
|
|
|
4866
4871
|
else throw v;
|
|
4867
4872
|
}
|
|
4868
4873
|
//#endregion
|
|
4869
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4874
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/discovered_column.js
|
|
4870
4875
|
function isColumnDiscoveredKey(obj) {
|
|
4871
4876
|
return typeof obj === "object" && obj !== null && "__isDiscovered" in obj;
|
|
4872
4877
|
}
|
|
@@ -4941,7 +4946,7 @@ function isString$1(value) {
|
|
|
4941
4946
|
return typeof value === "string";
|
|
4942
4947
|
}
|
|
4943
4948
|
//#endregion
|
|
4944
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
4949
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/ids.js
|
|
4945
4950
|
/**
|
|
4946
4951
|
* Canonically serializes a column key to a branded string id. Accepts both
|
|
4947
4952
|
* the new {@link ColumnUniversalKey} and the deprecated {@link UniversalPColumnId}
|
|
@@ -5115,7 +5120,7 @@ function extractPObjectId(id) {
|
|
|
5115
5120
|
throw new Error(`extractPObjectId: unrecognized column id structure: ${JSON.stringify(id)}`);
|
|
5116
5121
|
}
|
|
5117
5122
|
//#endregion
|
|
5118
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5123
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/overridden.js
|
|
5119
5124
|
function isColumnOverriddenKey(obj) {
|
|
5120
5125
|
return typeof obj === "object" && obj !== null && "__isOverridden" in obj;
|
|
5121
5126
|
}
|
|
@@ -5237,7 +5242,7 @@ function mergeRecord(a, b) {
|
|
|
5237
5242
|
};
|
|
5238
5243
|
}
|
|
5239
5244
|
//#endregion
|
|
5240
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5245
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/anchored.js
|
|
5241
5246
|
function axisKey(axis) {
|
|
5242
5247
|
return (0, import_canonicalize.default)(getAxisId(axis));
|
|
5243
5248
|
}
|
|
@@ -5483,7 +5488,7 @@ function isAnchorAxisRef(value) {
|
|
|
5483
5488
|
return typeof value === "object" && "anchor" in value;
|
|
5484
5489
|
}
|
|
5485
5490
|
//#endregion
|
|
5486
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5491
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/selectors.js
|
|
5487
5492
|
/**
|
|
5488
5493
|
* Determines if an axis ID matches an axis selector.
|
|
5489
5494
|
*
|
|
@@ -5563,8 +5568,53 @@ function legacyColumnSelectorsToPredicate(predicateOrSelectors) {
|
|
|
5563
5568
|
if (Array.isArray(predicateOrSelectors)) return (spec) => predicateOrSelectors.some((selector) => isPColumnSpec(spec) && matchPColumn(spec, selector));
|
|
5564
5569
|
else return (spec) => isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);
|
|
5565
5570
|
}
|
|
5571
|
+
function matchString(matcher, value) {
|
|
5572
|
+
return matcher.type === "exact" ? value === matcher.value : new RegExp(matcher.value).test(value);
|
|
5573
|
+
}
|
|
5574
|
+
function matchMatcherMap(map, target) {
|
|
5575
|
+
const t = target ?? {};
|
|
5576
|
+
for (const [key, matchers] of Object.entries(map)) {
|
|
5577
|
+
const v = t[key];
|
|
5578
|
+
if (v === void 0) return false;
|
|
5579
|
+
if (!matchers.some((m) => matchString(m, v))) return false;
|
|
5580
|
+
}
|
|
5581
|
+
return true;
|
|
5582
|
+
}
|
|
5583
|
+
function matchMultiAxis(selector, axis) {
|
|
5584
|
+
if (selector.type !== void 0 && !selector.type.includes(axis.type)) return false;
|
|
5585
|
+
if (selector.name !== void 0 && !selector.name.some((m) => matchString(m, axis.name))) return false;
|
|
5586
|
+
if (selector.domain !== void 0 && !matchMatcherMap(selector.domain, axis.domain)) return false;
|
|
5587
|
+
if (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, axis.contextDomain)) return false;
|
|
5588
|
+
return true;
|
|
5589
|
+
}
|
|
5590
|
+
/** Match a {@link PColumnSpec} against a {@link MultiColumnSelector}. */
|
|
5591
|
+
function matchMultiColumnSelector(spec, selector) {
|
|
5592
|
+
if (selector.type !== void 0 && !selector.type.includes(spec.valueType)) return false;
|
|
5593
|
+
if (selector.name !== void 0 && !selector.name.some((m) => matchString(m, spec.name))) return false;
|
|
5594
|
+
if (selector.domain !== void 0 && !matchMatcherMap(selector.domain, spec.domain)) return false;
|
|
5595
|
+
if (selector.contextDomain !== void 0 && !matchMatcherMap(selector.contextDomain, spec.contextDomain)) return false;
|
|
5596
|
+
if (selector.annotations !== void 0 && !matchMatcherMap(selector.annotations, spec.annotations)) return false;
|
|
5597
|
+
if (selector.axes !== void 0) {
|
|
5598
|
+
const columnAxes = spec.axesSpec.map(getAxisId);
|
|
5599
|
+
if (selector.partialAxesMatch ?? true) {
|
|
5600
|
+
for (const axisSelector of selector.axes) if (!columnAxes.some((axis) => matchMultiAxis(axisSelector, axis))) return false;
|
|
5601
|
+
} else {
|
|
5602
|
+
if (columnAxes.length !== selector.axes.length) return false;
|
|
5603
|
+
for (let i = 0; i < selector.axes.length; i++) if (!matchMultiAxis(selector.axes[i], columnAxes[i])) return false;
|
|
5604
|
+
}
|
|
5605
|
+
}
|
|
5606
|
+
return true;
|
|
5607
|
+
}
|
|
5608
|
+
/**
|
|
5609
|
+
* Convert a {@link MultiColumnSelector} (or array; selectors OR-ed) to a predicate.
|
|
5610
|
+
* Non-PColumn specs always return false.
|
|
5611
|
+
*/
|
|
5612
|
+
function multiColumnSelectorsToPredicate(selectors) {
|
|
5613
|
+
const arr = Array.isArray(selectors) ? selectors : [selectors];
|
|
5614
|
+
return (spec) => isPColumnSpec(spec) && arr.some((sel) => matchMultiColumnSelector(spec, sel));
|
|
5615
|
+
}
|
|
5566
5616
|
//#endregion
|
|
5567
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5617
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/native_id.js
|
|
5568
5618
|
function deriveNativeId(spec) {
|
|
5569
5619
|
const result = {
|
|
5570
5620
|
kind: spec.kind,
|
|
@@ -5576,7 +5626,7 @@ function deriveNativeId(spec) {
|
|
|
5576
5626
|
return (0, import_canonicalize.default)(result);
|
|
5577
5627
|
}
|
|
5578
5628
|
//#endregion
|
|
5579
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5629
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/linker_columns.js
|
|
5580
5630
|
var LinkerMap = class LinkerMap {
|
|
5581
5631
|
/** Graph of linkers connected by axes (single or grouped by parents) */
|
|
5582
5632
|
data;
|
|
@@ -5753,7 +5803,7 @@ var LinkerMap = class LinkerMap {
|
|
|
5753
5803
|
}
|
|
5754
5804
|
};
|
|
5755
5805
|
//#endregion
|
|
5756
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5806
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/flags/block_flags.js
|
|
5757
5807
|
/**
|
|
5758
5808
|
* Required PFrames version. Bump this in lockstep with the `@milaboratories/pframes-rs-*`
|
|
5759
5809
|
* version in `pnpm-workspace.yaml` so blocks built against the new SDK refuse to load on
|
|
@@ -5795,12 +5845,21 @@ function withEnrichments(ref, requireEnrichments = true) {
|
|
|
5795
5845
|
return rest;
|
|
5796
5846
|
}
|
|
5797
5847
|
}
|
|
5848
|
+
function createEnrichmentRef(hit, options = {}) {
|
|
5849
|
+
const { path, qualifications } = options;
|
|
5850
|
+
return {
|
|
5851
|
+
__isEnrichment: "v1",
|
|
5852
|
+
hit,
|
|
5853
|
+
...path !== void 0 && path.length > 0 ? { path } : {},
|
|
5854
|
+
...qualifications !== void 0 && qualifications.length > 0 ? { qualifications } : {}
|
|
5855
|
+
};
|
|
5856
|
+
}
|
|
5798
5857
|
/** Compare two PlRefs and returns true if they are qual */
|
|
5799
5858
|
function plRefsEqual(ref1, ref2, ignoreEnrichments = false) {
|
|
5800
5859
|
return ref1.blockId === ref2.blockId && ref1.name === ref2.name && (ignoreEnrichments || ref1.requireEnrichments === ref2.requireEnrichments);
|
|
5801
5860
|
}
|
|
5802
5861
|
//#endregion
|
|
5803
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5862
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/value_or_error.js
|
|
5804
5863
|
function mapValueInVOE(voe, cb) {
|
|
5805
5864
|
return voe.ok ? {
|
|
5806
5865
|
ok: true,
|
|
@@ -5808,7 +5867,7 @@ function mapValueInVOE(voe, cb) {
|
|
|
5808
5867
|
} : voe;
|
|
5809
5868
|
}
|
|
5810
5869
|
//#endregion
|
|
5811
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5870
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/resource_types.js
|
|
5812
5871
|
/** Well-known resource type names used across the platform. */
|
|
5813
5872
|
const ResourceTypeName = {
|
|
5814
5873
|
StreamManager: "StreamManager",
|
|
@@ -5824,6 +5883,7 @@ const ResourceTypeName = {
|
|
|
5824
5883
|
BlobMap: "BlobMap",
|
|
5825
5884
|
BResolveSingle: "BResolveSingle",
|
|
5826
5885
|
BResolveSingleNoResult: "BResolveSingleNoResult",
|
|
5886
|
+
BResolveChoice: "BResolveChoice",
|
|
5827
5887
|
BQueryResult: "BQueryResult",
|
|
5828
5888
|
TengoTemplate: "TengoTemplate",
|
|
5829
5889
|
TengoLib: "TengoLib",
|
|
@@ -5835,9 +5895,13 @@ const ResourceTypeName = {
|
|
|
5835
5895
|
JsonString: "json/string",
|
|
5836
5896
|
JsonArray: "json/array",
|
|
5837
5897
|
JsonNumber: "json/number",
|
|
5898
|
+
JsonBool: "json/bool",
|
|
5899
|
+
JsonNull: "json/null",
|
|
5900
|
+
JsonErrorTrace: "json/errorTrace",
|
|
5838
5901
|
BContextEnd: "BContextEnd",
|
|
5839
5902
|
FrontendFromUrl: "Frontend/FromUrl",
|
|
5840
5903
|
FrontendFromFolder: "Frontend/FromFolder",
|
|
5904
|
+
FrontendFromLocalTgz: "Frontend/FromLocalTgz",
|
|
5841
5905
|
BObjectSpec: "BObjectSpec",
|
|
5842
5906
|
Blob: "Blob",
|
|
5843
5907
|
Null: "Null",
|
|
@@ -5852,7 +5916,7 @@ const ResourceTypeName = {
|
|
|
5852
5916
|
SharedEnvelope: "SharedEnvelope"
|
|
5853
5917
|
};
|
|
5854
5918
|
//#endregion
|
|
5855
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5919
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/services/service_types.js
|
|
5856
5920
|
const SERVICE_ID_PATTERN = /^[a-zA-Z][a-zA-Z0-9]*$/;
|
|
5857
5921
|
const { service, isNodeService, isWasmService, isMainService, getServiceKind, getServiceModelMethods, getServiceUiMethods } = (() => {
|
|
5858
5922
|
const typeMap = /* @__PURE__ */ new Map();
|
|
@@ -5891,7 +5955,7 @@ const { service, isNodeService, isWasmService, isMainService, getServiceKind, ge
|
|
|
5891
5955
|
};
|
|
5892
5956
|
})();
|
|
5893
5957
|
//#endregion
|
|
5894
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
5958
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/services/service_declarations.js
|
|
5895
5959
|
const Services = {
|
|
5896
5960
|
PFrameSpec: service()({
|
|
5897
5961
|
type: "wasm",
|
|
@@ -5985,7 +6049,7 @@ function resolveRequiredServices(flags) {
|
|
|
5985
6049
|
}
|
|
5986
6050
|
Object.fromEntries(Object.keys(Services).map((key) => [`requires${key}`, true]));
|
|
5987
6051
|
//#endregion
|
|
5988
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6052
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/services/service_injectors.js
|
|
5989
6053
|
function buildMethodMap(pick) {
|
|
5990
6054
|
const result = {};
|
|
5991
6055
|
for (const id of Object.values(Services)) result[id] = [...pick(id)];
|
|
@@ -5994,7 +6058,7 @@ function buildMethodMap(pick) {
|
|
|
5994
6058
|
buildMethodMap(getServiceUiMethods);
|
|
5995
6059
|
buildMethodMap(getServiceModelMethods);
|
|
5996
6060
|
//#endregion
|
|
5997
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6061
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/columns/accessor_traversal.js
|
|
5998
6062
|
/** Resource types that hold column collections — DFS stops here and collects. */
|
|
5999
6063
|
const COLLECT_TYPES = [ResourceTypeName.PFrame];
|
|
6000
6064
|
/** Resource types DFS descends through when looking for PFrames. */
|
|
@@ -6102,7 +6166,7 @@ function indexPoolBlock(block) {
|
|
|
6102
6166
|
return result;
|
|
6103
6167
|
}
|
|
6104
6168
|
//#endregion
|
|
6105
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6169
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/columns/column_registry.js
|
|
6106
6170
|
/**
|
|
6107
6171
|
* Id-index over a set of {@link ColumnEntriesProvider}s. Sole job:
|
|
6108
6172
|
* {@link PObjectId} → {@link LeafEntry}. Generic over the accessor flavour, so
|
|
@@ -6139,7 +6203,7 @@ var ColumnRegistry = class {
|
|
|
6139
6203
|
}
|
|
6140
6204
|
};
|
|
6141
6205
|
//#endregion
|
|
6142
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6206
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/columns/dedup.js
|
|
6143
6207
|
/**
|
|
6144
6208
|
* Two-track dedup over an item stream keyed by `ColumnUniversalId`:
|
|
6145
6209
|
*
|
|
@@ -6180,7 +6244,7 @@ function dedupColumns(items, getId, getSpec) {
|
|
|
6180
6244
|
return out;
|
|
6181
6245
|
}
|
|
6182
6246
|
//#endregion
|
|
6183
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6247
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/columns/providers.js
|
|
6184
6248
|
/**
|
|
6185
6249
|
* Generic entries provider over a single accessor root. Walks `<root>` once
|
|
6186
6250
|
* from the supplied `rootPath`, builds an id → {@link LeafEntry} map and
|
|
@@ -6237,7 +6301,7 @@ var ResultPoolEntriesProvider = class {
|
|
|
6237
6301
|
}
|
|
6238
6302
|
};
|
|
6239
6303
|
//#endregion
|
|
6240
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6304
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/template/template_ref_form.js
|
|
6241
6305
|
/**
|
|
6242
6306
|
* Whether `value` is a reference in the readable spelling.
|
|
6243
6307
|
*
|
|
@@ -6306,7 +6370,7 @@ function expandTemplatePlRef(ref) {
|
|
|
6306
6370
|
};
|
|
6307
6371
|
}
|
|
6308
6372
|
//#endregion
|
|
6309
|
-
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.
|
|
6373
|
+
//#region ../node_modules/.pnpm/@milaboratories+pl-model-common@1.53.0/node_modules/@milaboratories/pl-model-common/dist/template/template_relocate.js
|
|
6310
6374
|
/**
|
|
6311
6375
|
* Point every column identifier in a block's params at the blocks of the project being built.
|
|
6312
6376
|
*
|
|
@@ -6366,7 +6430,7 @@ function relocateBlockIds(params, blockIds) {
|
|
|
6366
6430
|
return walk(params);
|
|
6367
6431
|
}
|
|
6368
6432
|
//#endregion
|
|
6369
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
6433
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/block_migrations.js
|
|
6370
6434
|
/** Create a DataVersioned wrapper with correct shape */
|
|
6371
6435
|
function makeVersionedData(version, data) {
|
|
6372
6436
|
return {
|
|
@@ -6944,7 +7008,7 @@ var DataModel = class DataModel {
|
|
|
6944
7008
|
}
|
|
6945
7009
|
};
|
|
6946
7010
|
//#endregion
|
|
6947
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7011
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/internal.js
|
|
6948
7012
|
/** Utility code helping to identify whether the code is running in actual UI environment */
|
|
6949
7013
|
function isInUI() {
|
|
6950
7014
|
return typeof globalThis.getPlatforma !== "undefined" || typeof globalThis.platforma !== "undefined";
|
|
@@ -7014,7 +7078,7 @@ function registerFutureAwait(handle, onResolve) {
|
|
|
7014
7078
|
futureResolves.get(handle).push(onResolve);
|
|
7015
7079
|
}
|
|
7016
7080
|
//#endregion
|
|
7017
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7081
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/block_storage_facade.js
|
|
7018
7082
|
/**
|
|
7019
7083
|
* All facade callback names as constants.
|
|
7020
7084
|
* These are the source of truth - the interface is derived from these.
|
|
@@ -7052,7 +7116,7 @@ function registerFacadeCallbacks(callbacks) {
|
|
|
7052
7116
|
for (const key of Object.values(BlockStorageFacadeCallbacks)) tryRegisterCallback(key, callbacks[key]);
|
|
7053
7117
|
}
|
|
7054
7118
|
//#endregion
|
|
7055
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7119
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/services/block_services.js
|
|
7056
7120
|
/**
|
|
7057
7121
|
* Services required by all V3 blocks by default.
|
|
7058
7122
|
* Edit this when a new service should be available to all blocks.
|
|
@@ -7068,7 +7132,7 @@ const BLOCK_SERVICE_FLAGS = {
|
|
|
7068
7132
|
};
|
|
7069
7133
|
resolveRequiredServices(BLOCK_SERVICE_FLAGS);
|
|
7070
7134
|
//#endregion
|
|
7071
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7135
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/future.js
|
|
7072
7136
|
var FutureRef = class FutureRef {
|
|
7073
7137
|
handle;
|
|
7074
7138
|
postProcess;
|
|
@@ -7096,7 +7160,7 @@ var FutureRef = class FutureRef {
|
|
|
7096
7160
|
}
|
|
7097
7161
|
};
|
|
7098
7162
|
//#endregion
|
|
7099
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7163
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/accessor.js
|
|
7100
7164
|
function ifDef(value, cb) {
|
|
7101
7165
|
return value === void 0 ? void 0 : cb(value);
|
|
7102
7166
|
}
|
|
@@ -7346,11 +7410,11 @@ var TreeNodeAccessor = class TreeNodeAccessor {
|
|
|
7346
7410
|
}
|
|
7347
7411
|
};
|
|
7348
7412
|
//#endregion
|
|
7349
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7413
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/internal.js
|
|
7350
7414
|
const MainAccessorName = "main";
|
|
7351
7415
|
const StagingAccessorName = "staging";
|
|
7352
7416
|
//#endregion
|
|
7353
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7417
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/util/axis_filtering.js
|
|
7354
7418
|
function filterDataInfoEntries(dataInfoEntries, axisFilters) {
|
|
7355
7419
|
const sortedFilters = [...axisFilters].sort((a, b) => b[0] - a[0]);
|
|
7356
7420
|
const { type } = dataInfoEntries;
|
|
@@ -7414,7 +7478,7 @@ function filterDataInfoEntries(dataInfoEntries, axisFilters) {
|
|
|
7414
7478
|
}
|
|
7415
7479
|
}
|
|
7416
7480
|
//#endregion
|
|
7417
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7481
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/labels/linked_column_postfix.js
|
|
7418
7482
|
/**
|
|
7419
7483
|
* Structural postfix derivation for linked columns (phase 2 of `deriveDistinctLabels`).
|
|
7420
7484
|
*
|
|
@@ -7597,7 +7661,7 @@ function derivePostfixes(entries, format = defaultLinkerFormatter) {
|
|
|
7597
7661
|
});
|
|
7598
7662
|
}
|
|
7599
7663
|
//#endregion
|
|
7600
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
7664
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/labels/derive_distinct_labels.js
|
|
7601
7665
|
const DISTANCE_PENALTY = .001;
|
|
7602
7666
|
const LABEL_TYPE = "__LABEL__";
|
|
7603
7667
|
const LABEL_TYPE_FULL = "__LABEL__@1";
|
|
@@ -7639,6 +7703,7 @@ function deriveStems(values, options) {
|
|
|
7639
7703
|
if (labelForced) forcedSet.add(LABEL_TYPE_FULL);
|
|
7640
7704
|
const { mainTypes, secondaryTypes } = classifyTypes(stats, values.length);
|
|
7641
7705
|
const build = (typeSet, force) => buildLabels(records, typeSet, forceTraceElements, separator, force);
|
|
7706
|
+
const finalize = (minimized, rendered) => repairBareLabels(rendered, minimized, records, stats, forceTraceElements, separator);
|
|
7642
7707
|
if (mainTypes.length === 0) {
|
|
7643
7708
|
if (secondaryTypes.length !== 0) throw new Error("Non-empty secondary types list while main types list is empty.");
|
|
7644
7709
|
return build(/* @__PURE__ */ new Set([LABEL_TYPE_FULL]), true) ?? throwError("Failed to derive labels using native column labels");
|
|
@@ -7652,7 +7717,7 @@ function deriveStems(values, options) {
|
|
|
7652
7717
|
const candidateResult = build(currentSet, false);
|
|
7653
7718
|
if (candidateResult !== void 0 && countUniqueLabels(candidateResult) === values.length) {
|
|
7654
7719
|
const minimized = minimizeTypeSet(currentSet, records, stats, forceTraceElements, forcedSet, separator);
|
|
7655
|
-
return
|
|
7720
|
+
return finalize(minimized, build(minimized, false) ?? throwError("Failed to derive unique labels"));
|
|
7656
7721
|
}
|
|
7657
7722
|
additionalType++;
|
|
7658
7723
|
if (additionalType >= mainTypes.length) {
|
|
@@ -7665,7 +7730,7 @@ function deriveStems(values, options) {
|
|
|
7665
7730
|
...mainTypes,
|
|
7666
7731
|
...secondaryTypes
|
|
7667
7732
|
]), records, stats, forceTraceElements, forcedSet, separator);
|
|
7668
|
-
return
|
|
7733
|
+
return finalize(minimized, build(minimized, true) ?? throwError("Failed to derive unique labels"));
|
|
7669
7734
|
}
|
|
7670
7735
|
function extractEntryParts(entry) {
|
|
7671
7736
|
if (!("spec" in entry && typeof entry.spec === "object")) return {
|
|
@@ -7830,62 +7895,202 @@ function minimizeTypeSet(typeSet, records, stats, forceTraceElements, forcedSet,
|
|
|
7830
7895
|
}
|
|
7831
7896
|
return result;
|
|
7832
7897
|
}
|
|
7833
|
-
|
|
7834
|
-
|
|
7835
|
-
|
|
7836
|
-
|
|
7837
|
-
|
|
7838
|
-
|
|
7839
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7842
|
-
|
|
7843
|
-
|
|
7844
|
-
|
|
7845
|
-
|
|
7846
|
-
|
|
7847
|
-
|
|
7848
|
-
|
|
7849
|
-
|
|
7850
|
-
|
|
7851
|
-
|
|
7852
|
-
|
|
7853
|
-
|
|
7854
|
-
|
|
7855
|
-
|
|
7856
|
-
|
|
7857
|
-
|
|
7858
|
-
|
|
7859
|
-
|
|
7860
|
-
|
|
7861
|
-
|
|
7862
|
-
* carries that tells it apart from its peers, so every colliding column is distinguished by a token
|
|
7863
|
-
* it HAS rather than by omission.
|
|
7864
|
-
*
|
|
7865
|
-
* Patches individual labels rather than the shared type set on purpose: the set is global, so adding
|
|
7866
|
-
* a type there would also decorate unrelated columns in other groups that happen to carry it. Only
|
|
7867
|
-
* bare columns' labels grow (a superset of their previous value), so uniqueness is preserved. Groups
|
|
7868
|
-
* are keyed by the base = the label rendered from the forced types alone.
|
|
7869
|
-
*/
|
|
7870
|
-
function repairBareByPresence(labels, minimized, records, stats, forcedSet, forceTraceElements, separator) {
|
|
7871
|
-
const base = records.map((r) => renderRecordLabel(r, forcedSet, forceTraceElements, separator));
|
|
7872
|
-
const isBare = records.map((r, i) => renderRecordLabel(r, minimized, forceTraceElements, separator) === base[i]);
|
|
7873
|
-
const groups = records.reduce((acc, _, i) => acc.set(base[i] ?? "", [...acc.get(base[i] ?? "") ?? [], i]), /* @__PURE__ */ new Map());
|
|
7898
|
+
/**
|
|
7899
|
+
* Repairs labels told apart only by what they lack: in a group with the same shown base, a
|
|
7900
|
+
* member is bare when its shown parts are a strict subset of a peer's. The group is re-labelled
|
|
7901
|
+
* from parts all members carry, or bare members add a hidden part (group-wide when labels stay
|
|
7902
|
+
* unique), whichever keeps the more important distinction; labels stay unique across the list.
|
|
7903
|
+
*/
|
|
7904
|
+
function repairBareLabels(labels, minimized, records, stats, forceTraceElements, separator) {
|
|
7905
|
+
const traces = records.map((r) => new Map(r.fullTrace.map((ft) => [ft.fullType, ft.label])));
|
|
7906
|
+
const isQualification = (t) => isSyntheticType(t.split("@")[0]);
|
|
7907
|
+
const depths = records.map((r) => {
|
|
7908
|
+
const steps = r.fullTrace.filter((ft) => ft.fullType !== LABEL_TYPE_FULL && !isQualification(ft.fullType));
|
|
7909
|
+
return new Map(steps.map((ft, idx) => [ft.fullType, steps.length - idx]));
|
|
7910
|
+
});
|
|
7911
|
+
const isForced = (t) => forceTraceElements?.has(t.split("@")[0]) === true;
|
|
7912
|
+
const isDistinctionType = (t) => t !== LABEL_TYPE_FULL && !isQualification(t);
|
|
7913
|
+
const importance = (t) => stats.importances.get(t) ?? 0;
|
|
7914
|
+
const byImportance = (a, b) => importance(b) - importance(a);
|
|
7915
|
+
const render = (i, types) => renderRecordLabel(records[i], types, forceTraceElements, separator);
|
|
7916
|
+
const partKey = (t, l) => `${t}\u0000${l}`;
|
|
7917
|
+
const labelShown = minimized.has(LABEL_TYPE_FULL);
|
|
7918
|
+
const baseTypes = new Set(labelShown ? [LABEL_TYPE_FULL] : []);
|
|
7919
|
+
const qualTypes = [...minimized].filter(isQualification);
|
|
7920
|
+
const groups = /* @__PURE__ */ new Map();
|
|
7921
|
+
records.forEach((_, i) => {
|
|
7922
|
+
const key = render(i, baseTypes) ?? "";
|
|
7923
|
+
const group = groups.get(key);
|
|
7924
|
+
if (group) group.push(i);
|
|
7925
|
+
else groups.set(key, [i]);
|
|
7926
|
+
});
|
|
7874
7927
|
const patched = [...labels];
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
|
|
7882
|
-
|
|
7883
|
-
|
|
7928
|
+
const counts = /* @__PURE__ */ new Map();
|
|
7929
|
+
const addCount = (l, d) => counts.set(l, (counts.get(l) ?? 0) + d);
|
|
7930
|
+
for (const l of patched) addCount(l, 1);
|
|
7931
|
+
const tryApply = (members, next) => {
|
|
7932
|
+
if (new Set(next).size !== members.length) return false;
|
|
7933
|
+
for (const i of members) addCount(patched[i], -1);
|
|
7934
|
+
const clashes = next.some((l) => (counts.get(l) ?? 0) > 0);
|
|
7935
|
+
members.forEach((i, k) => {
|
|
7936
|
+
if (!clashes) patched[i] = next[k];
|
|
7937
|
+
addCount(patched[i], 1);
|
|
7938
|
+
});
|
|
7939
|
+
return !clashes;
|
|
7940
|
+
};
|
|
7941
|
+
for (const [key, group] of groups) {
|
|
7942
|
+
if (group.length < 2) continue;
|
|
7943
|
+
const shown = group.map((i) => [...traces[i]].filter(([t]) => t !== LABEL_TYPE_FULL && (minimized.has(t) || isForced(t))));
|
|
7944
|
+
const partKeys = shown.map((parts) => parts.map(([t, l]) => partKey(t, l)));
|
|
7945
|
+
const sigIndex = /* @__PURE__ */ new Map();
|
|
7946
|
+
const setKeys = [];
|
|
7947
|
+
const setMembers = [];
|
|
7948
|
+
const sigOf = partKeys.map((keys, k) => {
|
|
7949
|
+
const sig = [...keys].sort().join("");
|
|
7950
|
+
let s = sigIndex.get(sig);
|
|
7951
|
+
if (s === void 0) {
|
|
7952
|
+
s = setKeys.length;
|
|
7953
|
+
sigIndex.set(sig, s);
|
|
7954
|
+
setKeys.push(keys);
|
|
7955
|
+
setMembers.push([]);
|
|
7956
|
+
}
|
|
7957
|
+
setMembers[s].push(k);
|
|
7958
|
+
return s;
|
|
7959
|
+
});
|
|
7960
|
+
const setSets = setKeys.map((keys) => new Set(keys));
|
|
7961
|
+
const postings = /* @__PURE__ */ new Map();
|
|
7962
|
+
setKeys.forEach((keys, s) => keys.forEach((p) => {
|
|
7963
|
+
const list = postings.get(p);
|
|
7964
|
+
if (list) list.push(s);
|
|
7965
|
+
else postings.set(p, [s]);
|
|
7966
|
+
}));
|
|
7967
|
+
const withParts = setKeys.map((_, s) => s).filter((s) => setKeys[s].length > 0);
|
|
7968
|
+
const supersetSets = setKeys.map((keys, s) => {
|
|
7969
|
+
if (keys.length === 0) return withParts;
|
|
7970
|
+
const rarest = keys.reduce((a, b) => postings.get(a).length <= postings.get(b).length ? a : b);
|
|
7971
|
+
return postings.get(rarest).filter((t) => t !== s && setSets[t].size > keys.length && keys.every((x) => setSets[t].has(x)));
|
|
7972
|
+
});
|
|
7973
|
+
const bare = group.map((_, k) => supersetSets[sigOf[k]].length > 0);
|
|
7974
|
+
if (!bare.some(Boolean)) continue;
|
|
7975
|
+
const typeCount = /* @__PURE__ */ new Map();
|
|
7976
|
+
for (const i of group) for (const t of traces[i].keys()) typeCount.set(t, (typeCount.get(t) ?? 0) + 1);
|
|
7977
|
+
const isUneven = (t) => (typeCount.get(t) ?? 0) > 0 && typeCount.get(t) < group.length;
|
|
7978
|
+
const unevenMax = Math.max(...[...minimized].filter((t) => isDistinctionType(t) && !isForced(t) && isUneven(t)).map(importance));
|
|
7979
|
+
let sharedLabels;
|
|
7980
|
+
let sharedMax = Number.NEGATIVE_INFINITY;
|
|
7981
|
+
if (labelShown && key !== "") {
|
|
7982
|
+
const shared = [...typeCount].filter(([t, n]) => n === group.length && isDistinctionType(t)).map(([t]) => t).sort(byImportance);
|
|
7983
|
+
const chosen = new Set(baseTypes);
|
|
7984
|
+
const distinctCount = (types) => new Set(group.map((i) => render(i, types) ?? "")).size;
|
|
7985
|
+
let count = distinctCount(chosen);
|
|
7986
|
+
for (const t of shared) {
|
|
7987
|
+
if (count === group.length) break;
|
|
7988
|
+
const next = distinctCount(/* @__PURE__ */ new Set([...chosen, t]));
|
|
7989
|
+
if (next > count) {
|
|
7990
|
+
if (chosen.size === baseTypes.size) sharedMax = importance(t);
|
|
7991
|
+
chosen.add(t);
|
|
7992
|
+
count = next;
|
|
7993
|
+
}
|
|
7994
|
+
}
|
|
7995
|
+
const withTags = /* @__PURE__ */ new Set([...chosen, ...qualTypes]);
|
|
7996
|
+
const complete = group.map((i) => render(i, withTags)).filter((l) => l !== void 0);
|
|
7997
|
+
if (count === group.length && complete.length === group.length && new Set(complete).size === group.length) sharedLabels = complete;
|
|
7998
|
+
}
|
|
7999
|
+
const applyBareFix = () => {
|
|
8000
|
+
const bareMembers = group.filter((_, k) => bare[k]);
|
|
8001
|
+
const oldBare = /* @__PURE__ */ new Map();
|
|
8002
|
+
for (const i of bareMembers) oldBare.set(patched[i], (oldBare.get(patched[i]) ?? 0) + 1);
|
|
8003
|
+
const isFree = (l) => (counts.get(l) ?? 0) - (oldBare.get(l) ?? 0) === 0;
|
|
8004
|
+
const shownTypes = (k) => [
|
|
8005
|
+
...baseTypes,
|
|
8006
|
+
...shown[k].map(([t]) => t),
|
|
8007
|
+
...qualTypes
|
|
8008
|
+
];
|
|
8009
|
+
const setLabels = /* @__PURE__ */ new Map();
|
|
8010
|
+
const labelsIn = (s) => {
|
|
8011
|
+
let byType = setLabels.get(s);
|
|
8012
|
+
if (byType) return byType;
|
|
8013
|
+
byType = /* @__PURE__ */ new Map();
|
|
8014
|
+
for (const m of setMembers[s]) for (const [t, l] of traces[group[m]]) {
|
|
8015
|
+
const entry = byType.get(t) ?? {
|
|
8016
|
+
labels: /* @__PURE__ */ new Set(),
|
|
8017
|
+
n: 0
|
|
8018
|
+
};
|
|
8019
|
+
entry.labels.add(l);
|
|
8020
|
+
entry.n++;
|
|
8021
|
+
byType.set(t, entry);
|
|
8022
|
+
}
|
|
8023
|
+
setLabels.set(s, byType);
|
|
8024
|
+
return byType;
|
|
8025
|
+
};
|
|
8026
|
+
const someDiffers = (s, u, mine) => {
|
|
8027
|
+
const entry = labelsIn(s).get(u);
|
|
8028
|
+
if (entry === void 0) return mine !== void 0;
|
|
8029
|
+
if (entry.n < setMembers[s].length) return true;
|
|
8030
|
+
return entry.labels.size > 1 || !entry.labels.has(mine ?? "");
|
|
8031
|
+
};
|
|
8032
|
+
const extraDepthsOf = /* @__PURE__ */ new Map();
|
|
8033
|
+
const extraDepths = (s) => {
|
|
8034
|
+
let depthsSet = extraDepthsOf.get(s);
|
|
8035
|
+
if (depthsSet) return depthsSet;
|
|
8036
|
+
depthsSet = new Set(supersetSets[s].flatMap((t) => {
|
|
8037
|
+
const rep = setMembers[t][0];
|
|
8038
|
+
return shown[rep].filter(([u, l]) => !isQualification(u) && !setSets[s].has(partKey(u, l))).map(([u]) => depths[group[rep]].get(u));
|
|
8039
|
+
}));
|
|
8040
|
+
extraDepthsOf.set(s, depthsSet);
|
|
8041
|
+
return depthsSet;
|
|
8042
|
+
};
|
|
8043
|
+
const picks = /* @__PURE__ */ new Map();
|
|
8044
|
+
group.forEach((i, k) => {
|
|
8045
|
+
if (!bare[k]) return;
|
|
8046
|
+
const peers = supersetSets[sigOf[k]];
|
|
8047
|
+
const kindDepths = extraDepths(sigOf[k]);
|
|
8048
|
+
const sameKind = (u) => kindDepths.has(depths[i].get(u)) ? 1 : 0;
|
|
8049
|
+
const candidates = [...traces[i].keys()].filter((u) => !minimized.has(u) && !isForced(u)).filter((u) => peers.some((t) => someDiffers(t, u, traces[i].get(u)))).sort((a, b) => sameKind(b) - sameKind(a) || byImportance(a, b));
|
|
8050
|
+
for (const u of candidates) {
|
|
8051
|
+
const label = render(i, /* @__PURE__ */ new Set([...shownTypes(k), u]));
|
|
8052
|
+
if (label !== void 0 && isFree(label)) {
|
|
8053
|
+
picks.set(i, {
|
|
8054
|
+
type: u,
|
|
8055
|
+
label
|
|
8056
|
+
});
|
|
8057
|
+
break;
|
|
8058
|
+
}
|
|
8059
|
+
}
|
|
8060
|
+
});
|
|
8061
|
+
if (picks.size === 0) return false;
|
|
8062
|
+
if (labelShown && key !== "") {
|
|
8063
|
+
const picked = [...new Set([...picks.values()].map((p) => p.type))];
|
|
8064
|
+
const full = group.map((i, k) => render(i, /* @__PURE__ */ new Set([...shownTypes(k), ...picked]))).filter((l) => l !== void 0);
|
|
8065
|
+
if (full.length === group.length && tryApply(group, full)) return true;
|
|
8066
|
+
}
|
|
8067
|
+
const proposed = new Map([...picks].map(([i, p]) => [i, p.label]));
|
|
8068
|
+
for (let changed = true; changed;) {
|
|
8069
|
+
changed = false;
|
|
8070
|
+
const firstOld = /* @__PURE__ */ new Map();
|
|
8071
|
+
for (const [i, l] of proposed) {
|
|
8072
|
+
const old = firstOld.get(l);
|
|
8073
|
+
if (old === void 0) firstOld.set(l, patched[i]);
|
|
8074
|
+
else if (old !== patched[i]) changed = proposed.delete(i);
|
|
8075
|
+
}
|
|
8076
|
+
const kept = new Set(bareMembers.filter((i) => !proposed.has(i)).map((i) => patched[i]));
|
|
8077
|
+
for (const [i, l] of proposed) if (kept.has(l)) changed = proposed.delete(i);
|
|
8078
|
+
}
|
|
8079
|
+
for (const i of bareMembers) addCount(patched[i], -1);
|
|
8080
|
+
for (const i of bareMembers) {
|
|
8081
|
+
patched[i] = proposed.get(i) ?? patched[i];
|
|
8082
|
+
addCount(patched[i], 1);
|
|
8083
|
+
}
|
|
8084
|
+
return proposed.size > 0;
|
|
8085
|
+
};
|
|
8086
|
+
if (sharedLabels && sharedMax >= unevenMax && tryApply(group, sharedLabels)) continue;
|
|
8087
|
+
if (applyBareFix()) continue;
|
|
8088
|
+
if (sharedLabels && sharedMax < unevenMax) tryApply(group, sharedLabels);
|
|
7884
8089
|
}
|
|
7885
8090
|
return patched;
|
|
7886
8091
|
}
|
|
7887
8092
|
//#endregion
|
|
7888
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8093
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/util/label.js
|
|
7889
8094
|
/** @deprecated Use deriveDistinctLabels */
|
|
7890
8095
|
function deriveLabels(values, getSpec, options = {}) {
|
|
7891
8096
|
return deriveDistinctLabels(values.map(getSpec), options).map((label, i) => ({
|
|
@@ -7894,7 +8099,7 @@ function deriveLabels(values, getSpec, options = {}) {
|
|
|
7894
8099
|
}));
|
|
7895
8100
|
}
|
|
7896
8101
|
//#endregion
|
|
7897
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8102
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/util/pcolumn_data.js
|
|
7898
8103
|
const RT_RESOURCE_MAP = "PColumnData/ResourceMap";
|
|
7899
8104
|
const RT_RESOURCE_MAP_PARTITIONED = "PColumnData/Partitioned/ResourceMap";
|
|
7900
8105
|
const RT_JSON_PARTITIONED = "PColumnData/JsonPartitioned";
|
|
@@ -8188,7 +8393,7 @@ function allPColumnsReady(columns) {
|
|
|
8188
8393
|
return columns.every(isPColumnReady);
|
|
8189
8394
|
}
|
|
8190
8395
|
//#endregion
|
|
8191
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8396
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/util/column_collection.js
|
|
8192
8397
|
function isPColumnValues(value) {
|
|
8193
8398
|
if (!Array.isArray(value)) return false;
|
|
8194
8399
|
if (value.length === 0) return true;
|
|
@@ -8466,7 +8671,7 @@ var PColumnCollection = class {
|
|
|
8466
8671
|
}
|
|
8467
8672
|
};
|
|
8468
8673
|
//#endregion
|
|
8469
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8674
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/services/service_bridge.js
|
|
8470
8675
|
/**
|
|
8471
8676
|
* Builds a ServiceProxy from a ServiceDispatch.
|
|
8472
8677
|
* Each service method call is forwarded to dispatch.callServiceMethod.
|
|
@@ -8475,7 +8680,7 @@ function createServiceProxy(dispatch) {
|
|
|
8475
8680
|
return ((serviceId) => Object.freeze(Object.fromEntries(dispatch.getServiceMethods(serviceId).map((method) => [method, (...args) => dispatch.callServiceMethod(serviceId, method, ...args)]))));
|
|
8476
8681
|
}
|
|
8477
8682
|
//#endregion
|
|
8478
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8683
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/services/get_services.js
|
|
8479
8684
|
const cachedServices = /* @__PURE__ */ new WeakMap();
|
|
8480
8685
|
function getService(name, deps) {
|
|
8481
8686
|
const ctx = deps?.ctx ?? getCfgRenderCtx();
|
|
@@ -8489,7 +8694,7 @@ function getService(name, deps) {
|
|
|
8489
8694
|
})();
|
|
8490
8695
|
}
|
|
8491
8696
|
//#endregion
|
|
8492
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8697
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/util/pframe_upgraders.js
|
|
8493
8698
|
function patchInSetFilters(filters) {
|
|
8494
8699
|
const inSetToOrEqual = (predicate) => {
|
|
8495
8700
|
if (predicate.operator !== "InSet") return predicate;
|
|
@@ -8527,7 +8732,7 @@ function patchInSetFilters(filters) {
|
|
|
8527
8732
|
return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
|
|
8528
8733
|
}
|
|
8529
8734
|
//#endregion
|
|
8530
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8735
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/render/api.js
|
|
8531
8736
|
/**
|
|
8532
8737
|
* Helper function to match domain objects
|
|
8533
8738
|
* @param query Optional domain to match against
|
|
@@ -8976,27 +9181,27 @@ var PluginRenderCtx = class extends RenderCtxBase {
|
|
|
8976
9181
|
}
|
|
8977
9182
|
};
|
|
8978
9183
|
//#endregion
|
|
8979
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9184
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/plugin_model.js
|
|
8980
9185
|
/** Internal plugin↔block handshake. `Symbol.for` (not `Symbol`) so it stays
|
|
8981
9186
|
* identical across multiple `@platforma-sdk/model` copies in one process. */
|
|
8982
9187
|
const CREATE_PLUGIN_MODEL = Symbol.for("@platforma-sdk/model:createPluginModel");
|
|
8983
9188
|
//#endregion
|
|
8984
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
8985
|
-
const PlatformaSDKVersion = "1.
|
|
9189
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/version.js
|
|
9190
|
+
const PlatformaSDKVersion = "1.85.0";
|
|
8986
9191
|
//#endregion
|
|
8987
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9192
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/bconfig/types.js
|
|
8988
9193
|
function isConfigLambda(cfgOrFh) {
|
|
8989
9194
|
return cfgOrFh.__renderLambda === true;
|
|
8990
9195
|
}
|
|
8991
9196
|
//#endregion
|
|
8992
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9197
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/bconfig/normalization.js
|
|
8993
9198
|
function downgradeCfgOrLambda(data) {
|
|
8994
9199
|
if (data === void 0) return void 0;
|
|
8995
9200
|
if (isConfigLambda(data)) return data.handle;
|
|
8996
9201
|
return data;
|
|
8997
9202
|
}
|
|
8998
9203
|
//#endregion
|
|
8999
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9204
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/block_storage_callbacks.js
|
|
9000
9205
|
/**
|
|
9001
9206
|
* BlockStorage Callback Implementations - wired to facade callbacks in BlockModelV3.done().
|
|
9002
9207
|
*
|
|
@@ -9350,7 +9555,7 @@ function deriveTemplateParamsFromStorage(storageJson, deriveTemplateParams) {
|
|
|
9350
9555
|
}
|
|
9351
9556
|
}
|
|
9352
9557
|
//#endregion
|
|
9353
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9558
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/block_model.js
|
|
9354
9559
|
/**
|
|
9355
9560
|
* Merges two feature flag objects with type-aware logic:
|
|
9356
9561
|
* - `supports*` (boolean): OR — `true` if either side is `true`
|
|
@@ -9716,7 +9921,7 @@ var BlockModelV3 = class BlockModelV3 {
|
|
|
9716
9921
|
}
|
|
9717
9922
|
};
|
|
9718
9923
|
//#endregion
|
|
9719
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
9924
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/pframe_utils/axes.js
|
|
9720
9925
|
/** Create id for column copy with added keys in axes domains */
|
|
9721
9926
|
const colId = (id, domains, contextDomains) => {
|
|
9722
9927
|
let wid = id.toString();
|
|
@@ -9822,7 +10027,7 @@ function getAdditionalColumnsForColumn(blockAxes, column) {
|
|
|
9822
10027
|
})];
|
|
9823
10028
|
}
|
|
9824
10029
|
//#endregion
|
|
9825
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
10030
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_recipes/leaf_rebrand.js
|
|
9826
10031
|
/**
|
|
9827
10032
|
* Replace every column leaf whose id equals `fromId` with `toId`, leaving
|
|
9828
10033
|
* other column refs (linkers, sub-anchors) intact. Wrapper recipes
|
|
@@ -11047,7 +11252,7 @@ var LRUCache = class LRUCache {
|
|
|
11047
11252
|
}
|
|
11048
11253
|
};
|
|
11049
11254
|
//#endregion
|
|
11050
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11255
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_providers/providers.js
|
|
11051
11256
|
/**
|
|
11052
11257
|
* Unified memoised factory dispatching to the right provider flavour by the
|
|
11053
11258
|
* source shape:
|
|
@@ -11136,7 +11341,7 @@ function hashRawPool(rawPool) {
|
|
|
11136
11341
|
return rawPool.map((b) => `${b.blockId}\x1f${b.prodCtx ?? ""}\x1f${b.stagingCtx ?? ""}\x1f${b.prodIncomplete ? 1 : 0}\x1f${b.stagingIncomplete ? 1 : 0}`).join("");
|
|
11137
11342
|
}
|
|
11138
11343
|
//#endregion
|
|
11139
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11344
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_providers/index.js
|
|
11140
11345
|
/**
|
|
11141
11346
|
* Build the default set of ColumnsProviders for the ambient render ctx:
|
|
11142
11347
|
* - `AccessorColumnsProvider` over `outputs` (if present)
|
|
@@ -11171,7 +11376,7 @@ function isColumnProvider(source) {
|
|
|
11171
11376
|
return typeof p.getColumns === "function" && typeof p.isFinal === "function";
|
|
11172
11377
|
}
|
|
11173
11378
|
//#endregion
|
|
11174
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11379
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/data_column.js
|
|
11175
11380
|
/**
|
|
11176
11381
|
* Thrown by leaf-recipe factories when the requested column is provably
|
|
11177
11382
|
* absent in the active render ctx — i.e. every relevant accessor reports
|
|
@@ -11411,7 +11616,7 @@ function memoizeByEntry(fn) {
|
|
|
11411
11616
|
};
|
|
11412
11617
|
}
|
|
11413
11618
|
//#endregion
|
|
11414
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11619
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_recipes/column_overrided_recipe.js
|
|
11415
11620
|
/**
|
|
11416
11621
|
* Recipe wrapper that overlays {@link SpecOverrides} on top of any other
|
|
11417
11622
|
* recipe. The id is `ColumnOverriddenKey { source: inner.id, specOverrides }`.
|
|
@@ -11549,7 +11754,7 @@ var DataColumnOverriddenRecipe = class extends ColumnOverriddenRecipe {
|
|
|
11549
11754
|
}
|
|
11550
11755
|
};
|
|
11551
11756
|
//#endregion
|
|
11552
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11757
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_recipes/column_filtered_recipe.js
|
|
11553
11758
|
/**
|
|
11554
11759
|
* Recipe wrapper that fixes the values of selected axes of an inner recipe
|
|
11555
11760
|
* (axis slicing). The id is `FilteredPColumnId { source: inner.id,
|
|
@@ -11675,7 +11880,7 @@ function toAxisSelector(axis) {
|
|
|
11675
11880
|
return selector;
|
|
11676
11881
|
}
|
|
11677
11882
|
//#endregion
|
|
11678
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11883
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_recipes/index.js
|
|
11679
11884
|
/**
|
|
11680
11885
|
* Build a `ColumnRecipe` from a stringified id. Dispatches to the matching
|
|
11681
11886
|
* concrete recipe variant based on the id's encoding and recurses on
|
|
@@ -11726,7 +11931,7 @@ function ColumnRecipeGetStatus(id, opts = {}) {
|
|
|
11726
11931
|
}
|
|
11727
11932
|
const ColumnRecipe = Object.assign(ColumnRecipeBuild, { getStatus: ColumnRecipeGetStatus });
|
|
11728
11933
|
//#endregion
|
|
11729
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
11934
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column_recipes/column_discovered_recipe.js
|
|
11730
11935
|
/**
|
|
11731
11936
|
* Recipe for columns identified by a {@link ColumnDiscoveredKey}: a base
|
|
11732
11937
|
* column + a `path` of linkers + qualifications.
|
|
@@ -11897,7 +12102,7 @@ function referencedUniIdsOf(key) {
|
|
|
11897
12102
|
return /* @__PURE__ */ new Set([key.column, ...(key.path ?? []).map((item) => item.column)]);
|
|
11898
12103
|
}
|
|
11899
12104
|
//#endregion
|
|
11900
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12105
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/column.js
|
|
11901
12106
|
/**
|
|
11902
12107
|
* Unified entry point — routes between the two top-level dispatchers:
|
|
11903
12108
|
* - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}
|
|
@@ -11911,7 +12116,7 @@ function Column(source, opts) {
|
|
|
11911
12116
|
return DataColumn(source, opts);
|
|
11912
12117
|
}
|
|
11913
12118
|
//#endregion
|
|
11914
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12119
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/columns_collection.js
|
|
11915
12120
|
/**
|
|
11916
12121
|
* Build a {@link ColumnsCollection} from sandbox-side source descriptors.
|
|
11917
12122
|
* Resolves the `columnsCollection` driver (either from `deps.driver` or via
|
|
@@ -12020,7 +12225,7 @@ function defaultCtxSources(ctx) {
|
|
|
12020
12225
|
return [...currentBlockSources(ctx), { kind: "result_pool" }];
|
|
12021
12226
|
}
|
|
12022
12227
|
//#endregion
|
|
12023
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12228
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/columns/utils.js
|
|
12024
12229
|
/**
|
|
12025
12230
|
* PObjectIds of every non-hit column referenced by `recipe.getQuery()`,
|
|
12026
12231
|
* deduped in traversal order. The hit column is
|
|
@@ -12151,7 +12356,7 @@ function hasSingleDataColumn(recipe) {
|
|
|
12151
12356
|
return recipe.getReferencedIds().length === 1;
|
|
12152
12357
|
}
|
|
12153
12358
|
//#endregion
|
|
12154
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12359
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/pframe_utils/columns.js
|
|
12155
12360
|
function getAllRelatedColumns(ctx, predicate) {
|
|
12156
12361
|
const columns = new PColumnCollection();
|
|
12157
12362
|
columns.addColumnProvider(ctx.resultPool);
|
|
@@ -12227,7 +12432,7 @@ function discoverIntegrableColumnIds(ctx, rootColumns) {
|
|
|
12227
12432
|
}
|
|
12228
12433
|
}
|
|
12229
12434
|
//#endregion
|
|
12230
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12435
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PFrameForGraphs.js
|
|
12231
12436
|
function isHiddenFromGraphColumn(column) {
|
|
12232
12437
|
return !!readAnnotationJson(column, Annotation.HideDataFromGraphs);
|
|
12233
12438
|
}
|
|
@@ -12256,7 +12461,169 @@ function createPFrameForGraphs(ctx, blockColumns) {
|
|
|
12256
12461
|
}));
|
|
12257
12462
|
}
|
|
12258
12463
|
//#endregion
|
|
12259
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12464
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDatasetSelector/filter_discovery.js
|
|
12465
|
+
/**
|
|
12466
|
+
* Matches columns annotated `pl7.app/isSubset: "true"` whose axes ⊆ anchor axes.
|
|
12467
|
+
*
|
|
12468
|
+
* Filter-intent: only the dataset's own direct subset columns, no linker
|
|
12469
|
+
* traversal — so this uses `.filter()` (pins `maxHops: 0`), not `.discover()`
|
|
12470
|
+
* (which would default to 4 hops and surface subset columns from other,
|
|
12471
|
+
* linker-reachable datasets). `.filter()` still applies the default
|
|
12472
|
+
* `enrichment` matching mode (`allowFloatingHitAxes: false`), which enforces
|
|
12473
|
+
* the axes-subset constraint. See `matchingModeToConstraints()`.
|
|
12474
|
+
*/
|
|
12475
|
+
function findFilterColumns(options) {
|
|
12476
|
+
return ColumnsCollection([...options.sources], { driver: options.driver }).filter({
|
|
12477
|
+
anchors: { main: options.anchorSpec },
|
|
12478
|
+
include: { annotations: { [Annotation.IsSubset]: "true" } }
|
|
12479
|
+
}).getColumns();
|
|
12480
|
+
}
|
|
12481
|
+
/**
|
|
12482
|
+
* Derive labeled options from filter column variants, for use in DatasetOption.filters.
|
|
12483
|
+
*
|
|
12484
|
+
* Entries whose column id has no PlRef in `refsByObjectId` are silently
|
|
12485
|
+
* skipped — they cannot be exposed as user-selectable options.
|
|
12486
|
+
*/
|
|
12487
|
+
function filterMatchesToOptions(variants, options) {
|
|
12488
|
+
if (variants.length === 0) return [];
|
|
12489
|
+
const { refsByObjectId, datasetSpec, labelOptions } = options;
|
|
12490
|
+
const entries = variants.flatMap((variant) => {
|
|
12491
|
+
const ref = refsByObjectId.get(extractPObjectId(variant.id));
|
|
12492
|
+
if (ref === void 0) return [];
|
|
12493
|
+
return [{
|
|
12494
|
+
ref,
|
|
12495
|
+
spec: variant.getSpec(),
|
|
12496
|
+
linkerPath: collectLinkerColumns(variant).map((linker) => ({ spec: linker.getSpec() }))
|
|
12497
|
+
}];
|
|
12498
|
+
});
|
|
12499
|
+
const labels = deriveDistinctLabels([...entries, { spec: datasetSpec }], {
|
|
12500
|
+
...labelOptions,
|
|
12501
|
+
formatters: {
|
|
12502
|
+
...labelOptions?.formatters,
|
|
12503
|
+
native: () => void 0
|
|
12504
|
+
}
|
|
12505
|
+
});
|
|
12506
|
+
return entries.map(({ ref }, i) => ({
|
|
12507
|
+
ref,
|
|
12508
|
+
label: labels[i]
|
|
12509
|
+
}));
|
|
12510
|
+
}
|
|
12511
|
+
/** Build the `refsByObjectId` map from `ctx.resultPool.getSpecs().entries`. */
|
|
12512
|
+
function buildRefMap(entries) {
|
|
12513
|
+
return new Map(entries.map((e) => [(0, import_canonicalize.default)(e.ref), e.ref]));
|
|
12514
|
+
}
|
|
12515
|
+
//#endregion
|
|
12516
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDatasetSelector/enrichment_discovery.js
|
|
12517
|
+
/**
|
|
12518
|
+
* Linker-reached hits attached to the anchor primary. Drops zero-hop variants
|
|
12519
|
+
* (filters / the primary itself) and structural hits (subset, linker, label
|
|
12520
|
+
* columns). Narrow further with `include` selectors or a `predicate`.
|
|
12521
|
+
*/
|
|
12522
|
+
function findEnrichmentColumns(options) {
|
|
12523
|
+
const include = options.include === void 0 ? void 0 : Array.isArray(options.include) ? options.include : [options.include];
|
|
12524
|
+
const columns = ColumnsCollection([...options.sources], { driver: options.driver }).discover({
|
|
12525
|
+
anchors: { main: options.anchorSpec },
|
|
12526
|
+
mode: "enrichment",
|
|
12527
|
+
maxHops: options.maxHops ?? 4,
|
|
12528
|
+
include,
|
|
12529
|
+
exclude: [
|
|
12530
|
+
{ annotations: { [Annotation.IsSubset]: "true" } },
|
|
12531
|
+
{ annotations: { [Annotation.IsLinkerColumn]: "true" } },
|
|
12532
|
+
{ name: Annotation.Label }
|
|
12533
|
+
]
|
|
12534
|
+
}).getColumns();
|
|
12535
|
+
const predicate = options.predicate;
|
|
12536
|
+
return columns.filter((v) => {
|
|
12537
|
+
if (hasSingleDataColumn(v)) return false;
|
|
12538
|
+
if (predicate !== void 0 && !predicate(v.getSpec())) return false;
|
|
12539
|
+
if (!isGlobalPObjectId(extractPObjectId(v.id))) return false;
|
|
12540
|
+
if (collectLinkerIds(v).some((id) => !isGlobalPObjectId(id))) return false;
|
|
12541
|
+
return true;
|
|
12542
|
+
});
|
|
12543
|
+
}
|
|
12544
|
+
/**
|
|
12545
|
+
* Pair each variant with a path-disambiguated label (so export headers stay
|
|
12546
|
+
* unique) and carry hit/linker `PObjectId`s through verbatim. Propagates
|
|
12547
|
+
* `qualifications.forHit`; `forQueries` is re-derived by the table builder.
|
|
12548
|
+
*/
|
|
12549
|
+
function enrichmentVariantsToRefs(variants, labelOptions) {
|
|
12550
|
+
if (variants.length === 0) return [];
|
|
12551
|
+
const linkerIdsByVariant = variants.map((v) => collectLinkerIds(v));
|
|
12552
|
+
const hitQualsByVariant = variants.map((v) => [...hitQualifications(v)]);
|
|
12553
|
+
const labels = deriveDistinctLabels(variants.map((variant, i) => ({
|
|
12554
|
+
spec: variant.getSpec(),
|
|
12555
|
+
linkerPath: collectLinkerColumns(variant).map((linker) => ({ spec: linker.getSpec() })),
|
|
12556
|
+
qualifications: {
|
|
12557
|
+
forHit: hitQualsByVariant[i],
|
|
12558
|
+
forQueries: queriesQualifications(variant)
|
|
12559
|
+
}
|
|
12560
|
+
})), labelOptions);
|
|
12561
|
+
return variants.map((variant, i) => {
|
|
12562
|
+
const path = linkerIdsByVariant[i].length === 0 ? void 0 : linkerIdsByVariant[i].map((id) => ({
|
|
12563
|
+
type: "linker",
|
|
12564
|
+
linker: id
|
|
12565
|
+
}));
|
|
12566
|
+
return {
|
|
12567
|
+
ref: createEnrichmentRef(extractPObjectId(variant.id), {
|
|
12568
|
+
path,
|
|
12569
|
+
qualifications: hitQualsByVariant[i]
|
|
12570
|
+
}),
|
|
12571
|
+
label: labels[i]
|
|
12572
|
+
};
|
|
12573
|
+
});
|
|
12574
|
+
}
|
|
12575
|
+
//#endregion
|
|
12576
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDatasetSelector/build_dataset_options.js
|
|
12577
|
+
function toPredicate(opt) {
|
|
12578
|
+
if (opt === void 0) return () => true;
|
|
12579
|
+
return typeof opt === "function" ? opt : multiColumnSelectorsToPredicate(opt);
|
|
12580
|
+
}
|
|
12581
|
+
/**
|
|
12582
|
+
* Usage:
|
|
12583
|
+
* ```ts
|
|
12584
|
+
* .output("datasetOptions", (ctx) => buildDatasetOptions(ctx))
|
|
12585
|
+
* ```
|
|
12586
|
+
*/
|
|
12587
|
+
function buildDatasetOptions(ctx, opts) {
|
|
12588
|
+
const primaryPredicate = toPredicate(opts?.primary);
|
|
12589
|
+
const filterPredicate = toPredicate(opts?.filter);
|
|
12590
|
+
const options = ctx.resultPool.getOptions(primaryPredicate, { refsWithEnrichments: opts?.requireEnrichments ?? true });
|
|
12591
|
+
if (options.length === 0) return [];
|
|
12592
|
+
const refMap = buildRefMap(ctx.resultPool.getSpecs().entries);
|
|
12593
|
+
const withEnrichments = opts?.withEnrichments ?? false;
|
|
12594
|
+
const filterSource = ColumnsProvider(ctx.ctx.getUpstreamBlockCtx());
|
|
12595
|
+
const enrichmentSources = withEnrichments ? getCtxProviders(ctx) : void 0;
|
|
12596
|
+
return options.map((primary) => {
|
|
12597
|
+
const datasetSpec = ctx.resultPool.getPColumnSpecByRef(primary.ref);
|
|
12598
|
+
if (!datasetSpec) return { primary };
|
|
12599
|
+
const filterMatches = findFilterColumns({
|
|
12600
|
+
sources: [filterSource],
|
|
12601
|
+
anchorSpec: datasetSpec
|
|
12602
|
+
}).filter((m) => filterPredicate(m.getSpec()));
|
|
12603
|
+
const filters = filterMatches.length === 0 ? void 0 : filterMatchesToOptions(filterMatches, {
|
|
12604
|
+
refsByObjectId: refMap,
|
|
12605
|
+
datasetSpec,
|
|
12606
|
+
labelOptions: opts?.labelOptions
|
|
12607
|
+
});
|
|
12608
|
+
let enrichments;
|
|
12609
|
+
if (enrichmentSources && withEnrichments) {
|
|
12610
|
+
const enrichmentVariants = findEnrichmentColumns({
|
|
12611
|
+
sources: enrichmentSources,
|
|
12612
|
+
anchorSpec: datasetSpec,
|
|
12613
|
+
maxHops: opts?.enrichmentMaxHops,
|
|
12614
|
+
...typeof withEnrichments === "function" ? { predicate: withEnrichments } : { include: withEnrichments }
|
|
12615
|
+
});
|
|
12616
|
+
if (enrichmentVariants.length > 0) enrichments = enrichmentVariantsToRefs(enrichmentVariants, opts?.labelOptions);
|
|
12617
|
+
}
|
|
12618
|
+
return {
|
|
12619
|
+
primary,
|
|
12620
|
+
...filters !== void 0 && filters.length > 0 ? { filters } : {},
|
|
12621
|
+
...enrichments !== void 0 && enrichments.length > 0 ? { enrichments } : {}
|
|
12622
|
+
};
|
|
12623
|
+
});
|
|
12624
|
+
}
|
|
12625
|
+
//#endregion
|
|
12626
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/filters/traverse.js
|
|
12260
12627
|
/**
|
|
12261
12628
|
* Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.
|
|
12262
12629
|
*
|
|
@@ -12295,7 +12662,7 @@ function collectFilterSpecColumns(filter) {
|
|
|
12295
12662
|
});
|
|
12296
12663
|
}
|
|
12297
12664
|
//#endregion
|
|
12298
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12665
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/filters/converters/filterToQuery.js
|
|
12299
12666
|
/** Converts a QueryColumnId object into a SpecQueryExpression reference. */
|
|
12300
12667
|
function resolveColumnRef(col) {
|
|
12301
12668
|
return col.type === "axis" ? {
|
|
@@ -12607,7 +12974,7 @@ function isEmpty(value) {
|
|
|
12607
12974
|
return true;
|
|
12608
12975
|
}
|
|
12609
12976
|
//#endregion
|
|
12610
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
12977
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/filters/distill.js
|
|
12611
12978
|
/**
|
|
12612
12979
|
* Strips non-FilterSpec metadata (whitelist approach) and removes
|
|
12613
12980
|
* unfilled leaves (type is undefined or any required field is undefined).
|
|
@@ -12712,7 +13079,7 @@ const REQUIRED_KEYS_BY_TYPE = {
|
|
|
12712
13079
|
greaterThanColumnOrEqual: ["column", "rhs"]
|
|
12713
13080
|
};
|
|
12714
13081
|
//#endregion
|
|
12715
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13082
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/state-migration.js
|
|
12716
13083
|
/** Upgrade PlDataTableStateV2 to the latest version */
|
|
12717
13084
|
function upgradePlDataTableStateV2(state) {
|
|
12718
13085
|
if (!state) return createPlDataTableStateV2();
|
|
@@ -13070,7 +13437,7 @@ function parseLegacyLeafColumn(s) {
|
|
|
13070
13437
|
return parsed;
|
|
13071
13438
|
}
|
|
13072
13439
|
//#endregion
|
|
13073
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13440
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/utils.js
|
|
13074
13441
|
/** Adapt a {@link ColumnRecipe} to the plain {@link RuleColumn} shape. */
|
|
13075
13442
|
function toRuleColumn(col) {
|
|
13076
13443
|
return {
|
|
@@ -13168,7 +13535,7 @@ function deriveAllLabels(options) {
|
|
|
13168
13535
|
})), deriveLabelsOptions).reduce((acc, label, index) => (acc[columns[index].id] = label, acc), {});
|
|
13169
13536
|
}
|
|
13170
13537
|
//#endregion
|
|
13171
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13538
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js
|
|
13172
13539
|
/**
|
|
13173
13540
|
* Assemble a ptable def directly from recipes. Each secondary recipe is its own
|
|
13174
13541
|
* outer-joined subtree: `getQuery()` encodes its linker chain, and its
|
|
@@ -13232,7 +13599,7 @@ function columnToJoinEntry(col, qualifications) {
|
|
|
13232
13599
|
};
|
|
13233
13600
|
}
|
|
13234
13601
|
//#endregion
|
|
13235
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13602
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/columnResolver.js
|
|
13236
13603
|
function createColumnResolver(columns) {
|
|
13237
13604
|
const axisIds = [];
|
|
13238
13605
|
for (const c of columns) for (const ax of c.getSpec().axesSpec) axisIds.push(getAxisId(ax));
|
|
@@ -13254,7 +13621,7 @@ function createColumnResolver(columns) {
|
|
|
13254
13621
|
};
|
|
13255
13622
|
}
|
|
13256
13623
|
//#endregion
|
|
13257
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13624
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/discoverColumns.js
|
|
13258
13625
|
/**
|
|
13259
13626
|
* Discover columns from sources/anchors and split them into primary
|
|
13260
13627
|
* (direct anchor hits — zero-hop, query is a bare column) and secondary
|
|
@@ -13300,7 +13667,7 @@ function discoverLabelColumns(ctx, primary) {
|
|
|
13300
13667
|
}).getColumns();
|
|
13301
13668
|
}
|
|
13302
13669
|
//#endregion
|
|
13303
|
-
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.
|
|
13670
|
+
//#region ../node_modules/.pnpm/@platforma-sdk+model@1.85.0/node_modules/@platforma-sdk/model/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js
|
|
13304
13671
|
function createPlDataTableV3(ctx, options) {
|
|
13305
13672
|
const state = upgradePlDataTableStateV2(options.tableState);
|
|
13306
13673
|
const primaryJoinType = options.primaryJoinType ?? "full";
|
|
@@ -13728,6 +14095,7 @@ const isFraction = (v) => isFiniteNumber(v) && v >= 0 && v <= 1;
|
|
|
13728
14095
|
*/
|
|
13729
14096
|
const CONTRACT = {
|
|
13730
14097
|
abundanceRef: check(isPlRef, "a reference to an abundance column"),
|
|
14098
|
+
filterRef: check(isPlRef, "a reference to a subset column"),
|
|
13731
14099
|
concentrationColumnRef: check(isPlRef, "a reference to a concentration column"),
|
|
13732
14100
|
binColumnRef: check(isPlRef, "a reference to a FACS bin column"),
|
|
13733
14101
|
antigenColumnRef: check(isPlRef, "a reference to an antigen column"),
|
|
@@ -13828,6 +14196,7 @@ const AFFINITY_VS_FIT_DEFAULT_STATE = {
|
|
|
13828
14196
|
*/
|
|
13829
14197
|
const initBlockData = (params) => ({
|
|
13830
14198
|
abundanceRef: params?.abundanceRef,
|
|
14199
|
+
filterRef: params?.filterRef,
|
|
13831
14200
|
concentrationColumnRef: params?.concentrationColumnRef,
|
|
13832
14201
|
binColumnRef: params?.binColumnRef,
|
|
13833
14202
|
antigenColumnRef: params?.antigenColumnRef,
|
|
@@ -13891,6 +14260,11 @@ function filterPopulatedOptions(ctx, specPred, opts = {}) {
|
|
|
13891
14260
|
return opts.valuePredicate ? opts.valuePredicate(finite) : true;
|
|
13892
14261
|
});
|
|
13893
14262
|
}
|
|
14263
|
+
const DATASET_KEY_AXES = /* @__PURE__ */ new Set([
|
|
14264
|
+
"pl7.app/vdj/clonotypeKey",
|
|
14265
|
+
"pl7.app/vdj/scClonotypeKey",
|
|
14266
|
+
"pl7.app/variantKey"
|
|
14267
|
+
]);
|
|
13894
14268
|
const platforma$1 = BlockModelV3.create({
|
|
13895
14269
|
dataModel,
|
|
13896
14270
|
kind
|
|
@@ -13932,22 +14306,14 @@ const platforma$1 = BlockModelV3.create({
|
|
|
13932
14306
|
hookEffectThresholdNoBin: data.hookEffectThresholdNoBin ?? .02,
|
|
13933
14307
|
hookEffectMinReads: data.hookEffectMinReads,
|
|
13934
14308
|
defaultBlockLabel: data.defaultBlockLabel ?? "Tite-Seq Analysis",
|
|
13935
|
-
customBlockLabel: data.customBlockLabel ?? ""
|
|
14309
|
+
customBlockLabel: data.customBlockLabel ?? "",
|
|
14310
|
+
...data.filterRef !== void 0 && { inputFilter: createGlobalPObjectId(data.filterRef.blockId, data.filterRef.name) }
|
|
13936
14311
|
};
|
|
13937
|
-
}).output("abundanceOptions", (ctx) => ctx
|
|
13938
|
-
|
|
13939
|
-
|
|
13940
|
-
|
|
13941
|
-
|
|
13942
|
-
{
|
|
13943
|
-
axes: [{ name: "pl7.app/sampleId" }, { name: "pl7.app/vdj/scClonotypeKey" }],
|
|
13944
|
-
annotations: { "pl7.app/isAnchor": "true" }
|
|
13945
|
-
},
|
|
13946
|
-
{
|
|
13947
|
-
axes: [{ name: "pl7.app/sampleId" }, { name: "pl7.app/variantKey" }],
|
|
13948
|
-
annotations: { "pl7.app/isAnchor": "true" }
|
|
13949
|
-
}
|
|
13950
|
-
], { label: { includeNativeLabel: false } })).output("concentrationOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isFloatValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId", { excludeRef: ctx.data.sortFractionColumnRef })).output("binOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isIntegerValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId")).output("sortFractionOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isFloatValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId", {
|
|
14312
|
+
}).output("abundanceOptions", (ctx) => buildDatasetOptions(ctx, {
|
|
14313
|
+
primary: (spec) => isPColumnSpec(spec) && spec.annotations?.["pl7.app/isAnchor"] === "true" && spec.axesSpec.length === 2 && spec.axesSpec[0].name === "pl7.app/sampleId" && DATASET_KEY_AXES.has(spec.axesSpec[1].name),
|
|
14314
|
+
filter: (spec) => isPColumnSpec(spec) && spec.axesSpec.length === 1 && DATASET_KEY_AXES.has(spec.axesSpec[0].name),
|
|
14315
|
+
requireEnrichments: false
|
|
14316
|
+
}) ?? []).output("concentrationOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isFloatValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId", { excludeRef: ctx.data.sortFractionColumnRef })).output("binOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isIntegerValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId")).output("sortFractionOptions", (ctx) => filterPopulatedOptions(ctx, (spec) => isPColumnSpec(spec) && isFloatValueType(spec.valueType) && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId", {
|
|
13951
14317
|
excludeRef: ctx.data.concentrationColumnRef,
|
|
13952
14318
|
valuePredicate: (finite) => finite.every((v) => v >= 0 && v <= 1)
|
|
13953
14319
|
})).output("antigenOptions", (ctx) => ctx.resultPool.getOptions((spec) => isPColumnSpec(spec) && spec.valueType === "String" && spec.axesSpec.length === 1 && spec.axesSpec[0].name === "pl7.app/sampleId")).output("targetAntigenValues", (ctx) => {
|