@platforma-sdk/model 1.57.0 → 1.58.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.
Files changed (94) hide show
  1. package/dist/block_model.cjs +17 -13
  2. package/dist/block_model.cjs.map +1 -1
  3. package/dist/block_model.d.ts +4 -4
  4. package/dist/block_model.d.ts.map +1 -1
  5. package/dist/block_model.js +17 -13
  6. package/dist/block_model.js.map +1 -1
  7. package/dist/block_model_legacy.cjs +1 -0
  8. package/dist/block_model_legacy.cjs.map +1 -1
  9. package/dist/block_model_legacy.d.ts.map +1 -1
  10. package/dist/block_model_legacy.js +1 -0
  11. package/dist/block_model_legacy.js.map +1 -1
  12. package/dist/block_storage.cjs +18 -14
  13. package/dist/block_storage.cjs.map +1 -1
  14. package/dist/block_storage.d.ts +14 -10
  15. package/dist/block_storage.d.ts.map +1 -1
  16. package/dist/block_storage.js +18 -14
  17. package/dist/block_storage.js.map +1 -1
  18. package/dist/block_storage_callbacks.cjs +3 -3
  19. package/dist/block_storage_callbacks.cjs.map +1 -1
  20. package/dist/block_storage_callbacks.d.ts +4 -3
  21. package/dist/block_storage_callbacks.d.ts.map +1 -1
  22. package/dist/block_storage_callbacks.js +3 -3
  23. package/dist/block_storage_callbacks.js.map +1 -1
  24. package/dist/components/PFrameForGraphs.cjs +0 -117
  25. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  26. package/dist/components/PFrameForGraphs.d.ts +3 -5
  27. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  28. package/dist/components/PFrameForGraphs.js +2 -117
  29. package/dist/components/PFrameForGraphs.js.map +1 -1
  30. package/dist/components/PlDataTable/index.d.ts +1 -1
  31. package/dist/components/PlDataTable/index.d.ts.map +1 -1
  32. package/dist/components/PlDataTable/table.cjs +16 -1
  33. package/dist/components/PlDataTable/table.cjs.map +1 -1
  34. package/dist/components/PlDataTable/table.d.ts.map +1 -1
  35. package/dist/components/PlDataTable/table.js +16 -2
  36. package/dist/components/PlDataTable/table.js.map +1 -1
  37. package/dist/index.cjs +8 -2
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.d.ts +2 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +4 -2
  42. package/dist/index.js.map +1 -1
  43. package/dist/package.json.cjs +1 -1
  44. package/dist/package.json.js +1 -1
  45. package/dist/pframe_utils/axes.cjs +131 -0
  46. package/dist/pframe_utils/axes.cjs.map +1 -0
  47. package/dist/pframe_utils/axes.d.ts +15 -0
  48. package/dist/pframe_utils/axes.d.ts.map +1 -0
  49. package/dist/pframe_utils/axes.js +128 -0
  50. package/dist/pframe_utils/axes.js.map +1 -0
  51. package/dist/pframe_utils/columns.cjs +4 -7
  52. package/dist/pframe_utils/columns.cjs.map +1 -1
  53. package/dist/pframe_utils/columns.js +1 -4
  54. package/dist/pframe_utils/columns.js.map +1 -1
  55. package/dist/pframe_utils/index.cjs +0 -2
  56. package/dist/pframe_utils/index.cjs.map +1 -1
  57. package/dist/pframe_utils/index.js +0 -2
  58. package/dist/pframe_utils/index.js.map +1 -1
  59. package/dist/platforma.d.ts +12 -2
  60. package/dist/platforma.d.ts.map +1 -1
  61. package/dist/plugin_handle.cjs +29 -0
  62. package/dist/plugin_handle.cjs.map +1 -0
  63. package/dist/plugin_handle.d.ts +51 -0
  64. package/dist/plugin_handle.d.ts.map +1 -0
  65. package/dist/plugin_handle.js +25 -0
  66. package/dist/plugin_handle.js.map +1 -0
  67. package/dist/plugin_model.cjs +27 -27
  68. package/dist/plugin_model.cjs.map +1 -1
  69. package/dist/plugin_model.d.ts +41 -33
  70. package/dist/plugin_model.d.ts.map +1 -1
  71. package/dist/plugin_model.js +27 -27
  72. package/dist/plugin_model.js.map +1 -1
  73. package/dist/render/api.cjs +9 -5
  74. package/dist/render/api.cjs.map +1 -1
  75. package/dist/render/api.d.ts +11 -5
  76. package/dist/render/api.d.ts.map +1 -1
  77. package/dist/render/api.js +9 -5
  78. package/dist/render/api.js.map +1 -1
  79. package/package.json +5 -5
  80. package/src/block_model.ts +33 -19
  81. package/src/block_model_legacy.ts +1 -0
  82. package/src/block_storage.test.ts +3 -2
  83. package/src/block_storage.ts +30 -22
  84. package/src/block_storage_callbacks.ts +8 -7
  85. package/src/components/PFrameForGraphs.ts +4 -167
  86. package/src/components/PlDataTable/index.ts +6 -1
  87. package/src/components/PlDataTable/table.ts +3 -4
  88. package/src/index.ts +2 -1
  89. package/src/pframe_utils/axes.ts +175 -0
  90. package/src/pframe_utils/columns.ts +2 -2
  91. package/src/platforma.ts +17 -2
  92. package/src/plugin_handle.ts +85 -0
  93. package/src/plugin_model.ts +118 -56
  94. package/src/render/api.ts +21 -11
@@ -1,127 +1,12 @@
1
- import { readAnnotationJson, Annotation, LinkerMap, getColumnIdAndSpec, matchAxisId, getAxisId, canonicalizeJson, readAnnotation, stringifyJson } from '@milaboratories/pl-model-common';
1
+ import { readAnnotationJson, Annotation } from '@milaboratories/pl-model-common';
2
2
  import { getAllRelatedColumns, getRelatedColumns } from '../pframe_utils/columns.js';
3
3
 
4
- /** Create id for column copy with added keys in axes domains */
5
- const colId = (id, domains) => {
6
- let wid = id.toString();
7
- domains?.forEach((domain) => {
8
- if (domain) {
9
- for (const [k, v] of Object.entries(domain)) {
10
- wid += k;
11
- wid += v;
12
- }
13
- }
14
- });
15
- return wid;
16
- };
17
- /** All combinations with 1 key from each list */
18
- function getKeysCombinations(idsLists) {
19
- if (!idsLists.length) {
20
- return [];
21
- }
22
- let result = [[]];
23
- idsLists.forEach((list) => {
24
- const nextResult = [];
25
- list.forEach((key) => {
26
- nextResult.push(...result.map((resultItem) => [...resultItem, key]));
27
- });
28
- result = nextResult;
29
- });
30
- return result;
31
- }
32
4
  function isHiddenFromGraphColumn(column) {
33
5
  return !!readAnnotationJson(column, Annotation.HideDataFromGraphs);
34
6
  }
35
7
  function isHiddenFromUIColumn(column) {
36
8
  return !!readAnnotationJson(column, Annotation.HideDataFromUi);
37
9
  }
38
- function getAvailableWithLinkersAxes(linkerColumns, blockAxes) {
39
- const linkerMap = LinkerMap.fromColumns(linkerColumns.map(getColumnIdAndSpec));
40
- const availableAxes = linkerMap.getReachableByLinkersAxesFromAxesNormalized([...blockAxes.values()], (linkerKeyId, sourceAxisId) => matchAxisId(sourceAxisId, linkerKeyId));
41
- return new Map(availableAxes.map((axisSpec) => {
42
- const id = getAxisId(axisSpec);
43
- return [canonicalizeJson(id), axisSpec];
44
- }));
45
- }
46
- /** Add columns with fully compatible axes created from partial compatible ones */
47
- function enrichCompatible(blockAxes, columns) {
48
- return columns.flatMap((column) => getAdditionalColumnsForColumn(blockAxes, column));
49
- }
50
- function getAdditionalColumnsForColumn(blockAxes, column) {
51
- const columnAxesIds = column.spec.axesSpec.map(getAxisId);
52
- if (columnAxesIds.every((id) => blockAxes.has(canonicalizeJson(id)))) {
53
- return [column]; // the column is compatible with its own domains without modifications
54
- }
55
- // options with different possible domains for every axis of secondary column
56
- const secondaryIdsOptions = columnAxesIds.map((id) => {
57
- const result = [];
58
- for (const [_, mainId] of blockAxes) {
59
- if (matchAxisId(mainId, id) && !matchAxisId(id, mainId)) {
60
- result.push(mainId);
61
- }
62
- }
63
- return result;
64
- });
65
- // all possible combinations of axes with added domains
66
- const secondaryIdsVariants = getKeysCombinations(secondaryIdsOptions);
67
- // sets of added to column domain fields
68
- const allAddedDomainValues = new Set();
69
- const addedNotToAllVariantsDomainValues = new Set();
70
- const addedByVariantsDomainValues = secondaryIdsVariants.map((idsList) => {
71
- const addedSet = new Set();
72
- idsList.map((axisId, idx) => {
73
- const d1 = column.spec.axesSpec[idx].domain;
74
- const d2 = axisId.domain;
75
- Object.entries(d2 ?? {}).forEach(([key, value]) => {
76
- if (d1?.[key] === undefined) {
77
- const item = JSON.stringify([key, value]);
78
- addedSet.add(item);
79
- allAddedDomainValues.add(item);
80
- }
81
- });
82
- return {
83
- ...axisId,
84
- annotations: column.spec.axesSpec[idx].annotations,
85
- };
86
- });
87
- return addedSet;
88
- });
89
- [...allAddedDomainValues].forEach((addedPart) => {
90
- if (addedByVariantsDomainValues.some((s) => !s.has(addedPart))) {
91
- addedNotToAllVariantsDomainValues.add(addedPart);
92
- }
93
- });
94
- const additionalColumns = secondaryIdsVariants.map((idsList, idx) => {
95
- const id = colId(column.id, idsList.map((id) => id.domain));
96
- const label = readAnnotation(column.spec, Annotation.Label) ?? "";
97
- const labelDomainPart = [...addedByVariantsDomainValues[idx]]
98
- .filter((str) => addedNotToAllVariantsDomainValues.has(str))
99
- .sort()
100
- .map((v) => JSON.parse(v)?.[1]) // use in labels only domain values, but sort them by key to save the same order in all column variants
101
- .join(" / ");
102
- const annotations = {
103
- ...column.spec.annotations,
104
- [Annotation.Graph.IsVirtual]: stringifyJson(true),
105
- };
106
- if (label || labelDomainPart) {
107
- annotations[Annotation.Label] =
108
- label && labelDomainPart ? label + " / " + labelDomainPart : label + labelDomainPart;
109
- }
110
- return {
111
- ...column,
112
- id: id,
113
- spec: {
114
- ...column.spec,
115
- axesSpec: idsList.map((axisId, idx) => ({
116
- ...axisId,
117
- annotations: column.spec.axesSpec[idx].annotations,
118
- })),
119
- annotations,
120
- },
121
- };
122
- });
123
- return [column, ...additionalColumns];
124
- }
125
10
  /**
126
11
  The aim of createPFrameForGraphs: to create pframe with block’s columns and all compatible columns from result pool
127
12
  (including linker columns and all label columns).
@@ -143,5 +28,5 @@ function createPFrameForGraphs(ctx, blockColumns) {
143
28
  return ctx.createPFrame(getRelatedColumns(ctx, { columns: blockColumns, predicate: suitableSpec }));
144
29
  }
145
30
 
146
- export { createPFrameForGraphs, enrichCompatible, getAvailableWithLinkersAxes, isHiddenFromGraphColumn, isHiddenFromUIColumn };
31
+ export { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn };
147
32
  //# sourceMappingURL=PFrameForGraphs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PFrameForGraphs.js","sources":["../../src/components/PFrameForGraphs.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpecNormalized,\n CanonicalizedJson,\n PColumn,\n PColumnSpec,\n PFrameHandle,\n PObjectId,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n LinkerMap,\n matchAxisId,\n readAnnotation,\n readAnnotationJson,\n stringifyJson,\n} from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../render\";\nimport { getAllRelatedColumns, getRelatedColumns } from \"../pframe_utils/columns\";\n\n/** Create id for column copy with added keys in axes domains */\nconst colId = (id: PObjectId, domains: (Record<string, string> | undefined)[]) => {\n let wid = id.toString();\n domains?.forEach((domain) => {\n if (domain) {\n for (const [k, v] of Object.entries(domain)) {\n wid += k;\n wid += v;\n }\n }\n });\n return wid;\n};\n\n/** All combinations with 1 key from each list */\nfunction getKeysCombinations(idsLists: AxisId[][]) {\n if (!idsLists.length) {\n return [];\n }\n let result: AxisId[][] = [[]];\n idsLists.forEach((list) => {\n const nextResult: AxisId[][] = [];\n list.forEach((key) => {\n nextResult.push(...result.map((resultItem) => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nexport function isHiddenFromGraphColumn(column: PColumnSpec): boolean {\n return !!readAnnotationJson(column, Annotation.HideDataFromGraphs);\n}\n\nexport function isHiddenFromUIColumn(column: PColumnSpec): boolean {\n return !!readAnnotationJson(column, Annotation.HideDataFromUi);\n}\n\nexport type AxesVault = Map<CanonicalizedJson<AxisId>, AxisSpecNormalized>;\n\nexport function getAvailableWithLinkersAxes(\n linkerColumns: PColumn<PColumnDataUniversal>[],\n blockAxes: AxesVault,\n): AxesVault {\n const linkerMap = LinkerMap.fromColumns(linkerColumns.map(getColumnIdAndSpec));\n const availableAxes = linkerMap.getReachableByLinkersAxesFromAxesNormalized(\n [...blockAxes.values()],\n (linkerKeyId, sourceAxisId) => matchAxisId(sourceAxisId, linkerKeyId),\n );\n\n return new Map(\n availableAxes.map((axisSpec) => {\n const id = getAxisId(axisSpec);\n return [canonicalizeJson(id), axisSpec];\n }),\n );\n}\n/** Add columns with fully compatible axes created from partial compatible ones */\nexport function enrichCompatible<T extends Omit<PColumn<PColumnDataUniversal>, \"data\">>(\n blockAxes: AxesVault,\n columns: T[],\n): T[] {\n return columns.flatMap((column) => getAdditionalColumnsForColumn(blockAxes, column));\n}\n\nfunction getAdditionalColumnsForColumn<T extends Omit<PColumn<PColumnDataUniversal>, \"data\">>(\n blockAxes: AxesVault,\n column: T,\n): T[] {\n const columnAxesIds = column.spec.axesSpec.map(getAxisId);\n\n if (columnAxesIds.every((id) => blockAxes.has(canonicalizeJson(id)))) {\n return [column]; // the column is compatible with its own domains without modifications\n }\n\n // options with different possible domains for every axis of secondary column\n const secondaryIdsOptions = columnAxesIds.map((id) => {\n const result = [];\n for (const [_, mainId] of blockAxes) {\n if (matchAxisId(mainId, id) && !matchAxisId(id, mainId)) {\n result.push(mainId);\n }\n }\n return result;\n });\n // all possible combinations of axes with added domains\n const secondaryIdsVariants = getKeysCombinations(secondaryIdsOptions);\n\n // sets of added to column domain fields\n const allAddedDomainValues = new Set<string>();\n const addedNotToAllVariantsDomainValues = new Set<string>();\n const addedByVariantsDomainValues = secondaryIdsVariants.map((idsList) => {\n const addedSet = new Set<string>();\n idsList.map((axisId, idx) => {\n const d1 = column.spec.axesSpec[idx].domain;\n const d2 = axisId.domain;\n Object.entries(d2 ?? {}).forEach(([key, value]) => {\n if (d1?.[key] === undefined) {\n const item = JSON.stringify([key, value]);\n addedSet.add(item);\n allAddedDomainValues.add(item);\n }\n });\n return {\n ...axisId,\n annotations: column.spec.axesSpec[idx].annotations,\n };\n });\n return addedSet;\n });\n [...allAddedDomainValues].forEach((addedPart) => {\n if (addedByVariantsDomainValues.some((s) => !s.has(addedPart))) {\n addedNotToAllVariantsDomainValues.add(addedPart);\n }\n });\n\n const additionalColumns = secondaryIdsVariants.map((idsList, idx) => {\n const id = colId(\n column.id,\n idsList.map((id) => id.domain),\n );\n\n const label = readAnnotation(column.spec, Annotation.Label) ?? \"\";\n const labelDomainPart = [...addedByVariantsDomainValues[idx]]\n .filter((str) => addedNotToAllVariantsDomainValues.has(str))\n .sort()\n .map((v) => JSON.parse(v)?.[1]) // use in labels only domain values, but sort them by key to save the same order in all column variants\n .join(\" / \");\n\n const annotations: Annotation = {\n ...column.spec.annotations,\n [Annotation.Graph.IsVirtual]: stringifyJson(true),\n };\n if (label || labelDomainPart) {\n annotations[Annotation.Label] =\n label && labelDomainPart ? label + \" / \" + labelDomainPart : label + labelDomainPart;\n }\n\n return {\n ...column,\n id: id as PObjectId,\n spec: {\n ...column.spec,\n axesSpec: idsList.map((axisId, idx) => ({\n ...axisId,\n annotations: column.spec.axesSpec[idx].annotations,\n })),\n annotations,\n },\n };\n });\n\n return [column, ...additionalColumns];\n}\n\n/**\n The aim of createPFrameForGraphs: to create pframe with block’s columns and all compatible columns from result pool\n (including linker columns and all label columns).\n Block’s columns are added to pframe as is.\n Other columns are added basing on set of axes of block’s columns, considering available with linker columns.\n Compatible columns must have at least one axis from block’s axes set. This axis of the compatible column from\n result pool must satisfy matchAxisId (it can have less domain keys than in block’s axis, but without conflicting values\n among existing ones).\n In requests to pframe (calculateTableData) columns must have strictly the same axes. For compatibility in case\n of partially matched axis we add to pframe a copy of this column with modified axis (with filled missed domains)\n and modified label (with added domain values in case if more than one copy with different domains exist).\n */\nexport function createPFrameForGraphs<A, U>(\n ctx: RenderCtxBase<A, U>,\n blockColumns?: PColumn<PColumnDataUniversal>[],\n): PFrameHandle | undefined {\n const suitableSpec = (spec: PColumnSpec) =>\n !isHiddenFromUIColumn(spec) && !isHiddenFromGraphColumn(spec);\n // if current block doesn't produce own columns then use all columns from result pool\n if (!blockColumns) {\n return ctx.createPFrame(getAllRelatedColumns(ctx, suitableSpec));\n }\n\n return ctx.createPFrame(\n getRelatedColumns(ctx, { columns: blockColumns, predicate: suitableSpec }),\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PFrameForGraphs.js","sources":["../../src/components/PFrameForGraphs.ts"],"sourcesContent":["import type { PColumn, PColumnSpec, PFrameHandle } from \"@milaboratories/pl-model-common\";\nimport { Annotation, readAnnotationJson } from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../render\";\nimport { getAllRelatedColumns, getRelatedColumns } from \"../pframe_utils/columns\";\nexport type { AxesVault } from \"../pframe_utils/axes\";\nexport { enrichCompatible, getAvailableWithLinkersAxes } from \"../pframe_utils/axes\";\n\nexport function isHiddenFromGraphColumn(column: PColumnSpec): boolean {\n return !!readAnnotationJson(column, Annotation.HideDataFromGraphs);\n}\n\nexport function isHiddenFromUIColumn(column: PColumnSpec): boolean {\n return !!readAnnotationJson(column, Annotation.HideDataFromUi);\n}\n\n/**\n The aim of createPFrameForGraphs: to create pframe with block’s columns and all compatible columns from result pool\n (including linker columns and all label columns).\n Block’s columns are added to pframe as is.\n Other columns are added basing on set of axes of block’s columns, considering available with linker columns.\n Compatible columns must have at least one axis from block’s axes set. This axis of the compatible column from\n result pool must satisfy matchAxisId (it can have less domain keys than in block’s axis, but without conflicting values\n among existing ones).\n In requests to pframe (calculateTableData) columns must have strictly the same axes. For compatibility in case\n of partially matched axis we add to pframe a copy of this column with modified axis (with filled missed domains)\n and modified label (with added domain values in case if more than one copy with different domains exist).\n */\nexport function createPFrameForGraphs<A, U>(\n ctx: RenderCtxBase<A, U>,\n blockColumns?: PColumn<PColumnDataUniversal>[],\n): PFrameHandle | undefined {\n const suitableSpec = (spec: PColumnSpec) =>\n !isHiddenFromUIColumn(spec) && !isHiddenFromGraphColumn(spec);\n // if current block doesn't produce own columns then use all columns from result pool\n if (!blockColumns) {\n return ctx.createPFrame(getAllRelatedColumns(ctx, suitableSpec));\n }\n\n return ctx.createPFrame(\n getRelatedColumns(ctx, { columns: blockColumns, predicate: suitableSpec }),\n );\n}\n"],"names":[],"mappings":";;;AAOM,SAAU,uBAAuB,CAAC,MAAmB,EAAA;IACzD,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC;AACpE;AAEM,SAAU,oBAAoB,CAAC,MAAmB,EAAA;IACtD,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC;AAChE;AAEA;;;;;;;;;;;AAWG;AACG,SAAU,qBAAqB,CACnC,GAAwB,EACxB,YAA8C,EAAA;AAE9C,IAAA,MAAM,YAAY,GAAG,CAAC,IAAiB,KACrC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;;IAE/D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,GAAG,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClE;AAEA,IAAA,OAAO,GAAG,CAAC,YAAY,CACrB,iBAAiB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAC3E;AACH;;;;"}
@@ -1,5 +1,5 @@
1
1
  export type { PlTableColumnId, PlTableColumnIdJson, PlDataTableGridStateCore, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PTableParamsV2, PlDataTableStateV2Normalized, PlDataTableModel, PlDataTableFilters, PlDataTableFiltersWithMeta, } from "./v5";
2
2
  export type { PlDataTableStateV2 } from "./state-migration";
3
3
  export { upgradePlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, } from "./state-migration";
4
- export { isColumnHidden, isColumnOptional, createPlDataTableV2 } from "./table";
4
+ export { isColumnHidden, isColumnOptional, createPlDataTableV2, createPlDataTableSheet, } from "./table";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACd,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,MAAM,CAAC;AAEd,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACd,4BAA4B,EAC5B,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,MAAM,CAAC;AAEd,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,SAAS,CAAC"}
@@ -11,6 +11,7 @@ var pcolumn_data = require('../../render/util/pcolumn_data.cjs');
11
11
  var esToolkit = require('es-toolkit');
12
12
  var stateMigration = require('./state-migration.cjs');
13
13
  var labels = require('./labels.cjs');
14
+ var compat = require('es-toolkit/compat');
14
15
 
15
16
  /** Convert a PTableColumnId to a SpecQueryExpression reference. */
16
17
  function columnIdToExpr(col) {
@@ -129,7 +130,8 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
129
130
  if (firstInvalidFilterColumn)
130
131
  throw new Error(`Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`);
131
132
  // -- Sorting validation --
132
- const sorting = plModelCommon.uniqueBy([...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])], (s) => plModelCommon.canonicalizeJson(s.column));
133
+ const userSorting = tableStateNormalized.pTableParams.sorting;
134
+ const sorting = (compat.isEmpty(userSorting) ? ops?.sorting : userSorting) ?? [];
133
135
  const firstInvalidSortingColumn = sorting.find((s) => !isValidColumnId(plModelCommon.canonicalizeJson(s.column)));
134
136
  if (firstInvalidSortingColumn)
135
137
  throw new Error(`Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`);
@@ -198,7 +200,20 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
198
200
  visibleTableHandle: visibleHandle,
199
201
  };
200
202
  }
203
+ /** Create sheet entries for PlDataTable */
204
+ function createPlDataTableSheet(ctx, axis, values) {
205
+ const labels = ctx.resultPool.findLabels(axis);
206
+ return {
207
+ axis,
208
+ options: values.map((v) => ({
209
+ value: v,
210
+ label: labels?.[v] ?? v.toString(),
211
+ })),
212
+ defaultValue: values[0],
213
+ };
214
+ }
201
215
 
216
+ exports.createPlDataTableSheet = createPlDataTableSheet;
202
217
  exports.createPlDataTableV2 = createPlDataTableV2;
203
218
  exports.isColumnHidden = isColumnHidden;
204
219
  exports.isColumnOptional = isColumnOptional;
@@ -1 +1 @@
1
- {"version":3,"file":"table.cjs","sources":["../../../src/components/PlDataTable/table.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n DataInfo,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableDefV2,\n PTableSorting,\n SpecQuery,\n SingleAxisSelector,\n SpecQueryExpression,\n SpecQueryJoinEntry,\n CanonicalizedJson,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n readAnnotation,\n uniqueBy,\n isBooleanExpression,\n parseJson,\n} from \"@milaboratories/pl-model-common\";\nimport { filterSpecToSpecQueryExpr } from \"../../filters\";\nimport type { RenderCtxBase, TreeNodeAccessor, PColumnDataUniversal } from \"../../render\";\nimport { allPColumnsReady, deriveLabels } from \"../../render\";\nimport { identity, isFunction, isNil } from \"es-toolkit\";\nimport { distillFilterSpec } from \"../../filters/distill\";\nimport type { CreatePlDataTableOps, PlDataTableFilters, PlDataTableModel } from \"./v5\";\nimport { upgradePlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableSheet } from \"./v5\";\nimport { getAllLabelColumns, getMatchingLabelColumns } from \"./labels\";\nimport { collectFilterSpecColumns } from \"../../filters/traverse\";\n\n/** Convert a PTableColumnId to a SpecQueryExpression reference. */\nfunction columnIdToExpr(col: PTableColumnId): SpecQueryExpression {\n if (col.type === \"axis\") {\n return { type: \"axisRef\", value: col.id as SingleAxisSelector };\n }\n return { type: \"columnRef\", value: col.id };\n}\n\n/** Wrap a SpecQuery as a SpecQueryJoinEntry with empty qualifications. */\nfunction joinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {\n return { entry: input, qualifications: [] };\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n filters: null | PlDataTableFilters;\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (isFunction(params.coreColumnPredicate)) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n // Build SpecQuery directly from columns\n const coreJoinQuery: SpecQuery<\n PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>\n > = {\n type: params.coreJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n entries: coreColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n let query: SpecQuery<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> = {\n type: \"outerJoin\",\n primary: joinEntry(coreJoinQuery),\n secondary: secondaryColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n // Apply filters\n if (params.filters !== null) {\n const nonEmpty = distillFilterSpec(params.filters);\n\n if (!isNil(nonEmpty)) {\n const pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n if (!isBooleanExpression(pridicate)) {\n throw new Error(\n `Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`,\n );\n }\n query = {\n type: \"filter\",\n input: query,\n predicate: pridicate,\n };\n }\n }\n\n // Apply sorting\n if (params.sorting.length > 0) {\n query = {\n type: \"sort\",\n input: query,\n sortBy: params.sorting.map((s) => ({\n expression: columnIdToExpr(s.column),\n ascending: s.ascending,\n nullsFirst: s.ascending === s.naAndAbsentAreLeastValues,\n })),\n };\n }\n\n return { query };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: string): boolean =>\n fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);\n\n // -- Filtering validation --\n const stateFilters = tableStateNormalized.pTableParams.filters;\n const opsFilters = ops?.filters ?? null;\n const filters: null | PlDataTableFilters =\n stateFilters != null && opsFilters != null\n ? { type: \"and\", filters: [stateFilters, opsFilters] }\n : (stateFilters ?? opsFilters);\n const filterColumns = filters ? collectFilterSpecColumns(filters) : [];\n const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));\n if (firstInvalidFilterColumn)\n throw new Error(\n `Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,\n );\n\n // -- Sorting validation --\n const sorting: PTableSorting[] = uniqueBy(\n [...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])],\n (s) => canonicalizeJson<PTableColumnId>(s.column),\n );\n const firstInvalidSortingColumn = sorting.find(\n (s) => !isValidColumnId(canonicalizeJson<PTableColumnId>(s.column)),\n );\n if (firstInvalidSortingColumn)\n throw new Error(\n `Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`,\n );\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => {\n const obj = parseJson(c);\n return obj.type === \"column\" ? [obj.id] : [];\n })\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } as PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":["isFunction","getColumnIdAndSpec","distillFilterSpec","isNil","filterSpecToSpecQueryExpr","isBooleanExpression","readAnnotation","Annotation","upgradePlDataTableStateV2","getAllLabelColumns","getMatchingLabelColumns","deriveLabels","identity","uniqueBy","getAxisId","canonicalizeJson","collectFilterSpecColumns","isLinkerColumn","parseJson","allPColumnsReady"],"mappings":"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"}
1
+ {"version":3,"file":"table.cjs","sources":["../../../src/components/PlDataTable/table.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n DataInfo,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableDefV2,\n PTableSorting,\n SpecQuery,\n SingleAxisSelector,\n SpecQueryExpression,\n SpecQueryJoinEntry,\n CanonicalizedJson,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n readAnnotation,\n uniqueBy,\n isBooleanExpression,\n parseJson,\n} from \"@milaboratories/pl-model-common\";\nimport { filterSpecToSpecQueryExpr } from \"../../filters\";\nimport type { RenderCtxBase, TreeNodeAccessor, PColumnDataUniversal } from \"../../render\";\nimport { allPColumnsReady, deriveLabels } from \"../../render\";\nimport { identity, isFunction, isNil } from \"es-toolkit\";\nimport { distillFilterSpec } from \"../../filters/distill\";\nimport type { CreatePlDataTableOps, PlDataTableFilters, PlDataTableModel } from \"./v5\";\nimport { upgradePlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableSheet } from \"./v5\";\nimport { getAllLabelColumns, getMatchingLabelColumns } from \"./labels\";\nimport { collectFilterSpecColumns } from \"../../filters/traverse\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** Convert a PTableColumnId to a SpecQueryExpression reference. */\nfunction columnIdToExpr(col: PTableColumnId): SpecQueryExpression {\n if (col.type === \"axis\") {\n return { type: \"axisRef\", value: col.id as SingleAxisSelector };\n }\n return { type: \"columnRef\", value: col.id };\n}\n\n/** Wrap a SpecQuery as a SpecQueryJoinEntry with empty qualifications. */\nfunction joinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {\n return { entry: input, qualifications: [] };\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n filters: null | PlDataTableFilters;\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (isFunction(params.coreColumnPredicate)) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n // Build SpecQuery directly from columns\n const coreJoinQuery: SpecQuery<\n PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>\n > = {\n type: params.coreJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n entries: coreColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n let query: SpecQuery<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> = {\n type: \"outerJoin\",\n primary: joinEntry(coreJoinQuery),\n secondary: secondaryColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n // Apply filters\n if (params.filters !== null) {\n const nonEmpty = distillFilterSpec(params.filters);\n\n if (!isNil(nonEmpty)) {\n const pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n if (!isBooleanExpression(pridicate)) {\n throw new Error(\n `Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`,\n );\n }\n query = {\n type: \"filter\",\n input: query,\n predicate: pridicate,\n };\n }\n }\n\n // Apply sorting\n if (params.sorting.length > 0) {\n query = {\n type: \"sort\",\n input: query,\n sortBy: params.sorting.map((s) => ({\n expression: columnIdToExpr(s.column),\n ascending: s.ascending,\n nullsFirst: s.ascending === s.naAndAbsentAreLeastValues,\n })),\n };\n }\n\n return { query };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: string): boolean =>\n fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);\n\n // -- Filtering validation --\n const stateFilters = tableStateNormalized.pTableParams.filters;\n const opsFilters = ops?.filters ?? null;\n const filters: null | PlDataTableFilters =\n stateFilters != null && opsFilters != null\n ? { type: \"and\", filters: [stateFilters, opsFilters] }\n : (stateFilters ?? opsFilters);\n const filterColumns = filters ? collectFilterSpecColumns(filters) : [];\n const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));\n if (firstInvalidFilterColumn)\n throw new Error(\n `Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,\n );\n\n // -- Sorting validation --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const sorting = (isEmpty(userSorting) ? ops?.sorting : userSorting) ?? [];\n const firstInvalidSortingColumn = sorting.find(\n (s) => !isValidColumnId(canonicalizeJson<PTableColumnId>(s.column)),\n );\n if (firstInvalidSortingColumn)\n throw new Error(\n `Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`,\n );\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => {\n const obj = parseJson(c);\n return obj.type === \"column\" ? [obj.id] : [];\n })\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } as PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":["isFunction","getColumnIdAndSpec","distillFilterSpec","isNil","filterSpecToSpecQueryExpr","isBooleanExpression","readAnnotation","Annotation","upgradePlDataTableStateV2","getAllLabelColumns","getMatchingLabelColumns","deriveLabels","identity","uniqueBy","getAxisId","canonicalizeJson","collectFilterSpecColumns","isEmpty","isLinkerColumn","parseJson","allPColumnsReady"],"mappings":";;;;;;;;;;;;;;;AA2CA;AACA,SAAS,cAAc,CAAC,GAAmB,EAAA;AACzC,IAAA,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;QACvB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,EAAwB,EAAE;IACjE;IACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;AAC7C;AAEA;AACA,SAAS,SAAS,CAAI,KAAmB,EAAA;IACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;AAC7C;AAEA,SAAS,eAAe,CAAC,MAOxB,EAAA;AACC,IAAA,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO;IAChC,MAAM,gBAAgB,GAA0B,EAAE;AAElD,IAAA,IAAIA,oBAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;QAC1C,WAAW,GAAG,EAAE;AAChB,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO;YAC5B,IAAI,MAAM,CAAC,mBAAmB,CAACC,gCAAkB,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;AACrE,gBAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC;IAEA,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;;AAG7C,IAAA,MAAM,aAAa,GAEf;AACF,QAAA,IAAI,EAAE,MAAM,CAAC,YAAY,KAAK,OAAO,GAAG,WAAW,GAAG,UAAU;QAChE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KAC1E;AAED,IAAA,IAAI,KAAK,GAAsF;AAC7F,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC;QACjC,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KACjF;;AAGD,IAAA,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE;QAC3B,MAAM,QAAQ,GAAGC,yBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;AAElD,QAAA,IAAI,CAACC,eAAK,CAAC,QAAQ,CAAC,EAAE;AACpB,YAAA,MAAM,SAAS,GAAGC,uCAAyB,CAAC,QAAQ,CAAC;AACrD,YAAA,IAAI,CAACC,iCAAmB,CAAC,SAAS,CAAC,EAAE;gBACnC,MAAM,IAAI,KAAK,CACb,CAAA,+DAAA,EAAkE,SAAS,CAAC,IAAI,CAAA,oDAAA,CAAsD,CACvI;YACH;AACA,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,SAAS,EAAE,SAAS;aACrB;QACH;IACF;;IAGA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAA,KAAK,GAAG;AACN,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACjC,gBAAA,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;AACtB,gBAAA,UAAU,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,yBAAyB;AACxD,aAAA,CAAC,CAAC;SACJ;IACH;IAEA,OAAO,EAAE,KAAK,EAAE;AAClB;AAEA;AACM,SAAU,cAAc,CAAC,IAAkC,EAAA;AAC/D,IAAA,OAAOC,4BAAc,CAAC,IAAI,EAAEC,wBAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ;AACvE;AAEA;AACM,SAAU,gBAAgB,CAAC,IAAkC,EAAA;AACjE,IAAA,OAAOD,4BAAc,CAAC,IAAI,EAAEC,wBAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,UAAU;AACzE;AAEA;;;;;;;AAOG;AACG,SAAU,mBAAmB,CACjC,GAAwB,EACxB,OAAwC,EACxC,UAA0C,EAC1C,GAA0B,EAAA;AAE1B,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AAE1C,IAAA,MAAM,oBAAoB,GAAGC,wCAAyB,CAAC,UAAU,CAAC;IAElE,MAAM,eAAe,GAAGC,yBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1D,IAAA,IAAI,CAAC,eAAe;AAAE,QAAA,OAAO,SAAS;AAEtC,IAAA,IAAI,gBAAgB,GAAGC,8BAAuB,CAAC,OAAO,CAAC,GAAG,CAACT,gCAAkB,CAAC,EAAE,eAAe,CAAC;AAChG,IAAA,gBAAgB,GAAGU,kBAAY,CAAC,gBAAgB,EAAEC,kBAAQ,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAC3F,CAAC,CAAC,KAAI;QACJ,OAAO;YACL,GAAG,CAAC,CAAC,KAAK;AACV,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI;AACf,gBAAA,WAAW,EAAE;AACX,oBAAA,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW;AAC3B,oBAAA,CAACL,wBAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AAC5B,iBAAA;AACF,aAAA;SACF;AACH,IAAA,CAAC,CACF;IAED,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,gBAAgB,CAAC;AAErD,IAAA,MAAM,eAAe,GAAGM,sBAAQ,CAC9B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKC,uBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACpE,CAAC,CAAC,KAAKC,8BAAgB,CAAS,CAAC,CAAC,CACnC;AACD,IAAA,MAAM,cAAc,GAAqB;QACvC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAA8B,CAAC;QACrF,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAgC,CAAC;KACzF;IACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKA,8BAAgB,CAAiB,CAAC,CAAC,CAAC,CAAC;AACjG,IAAA,MAAM,eAAe,GAAG,CAAC,EAAU,KACjC,iBAAiB,CAAC,GAAG,CAAC,EAAuC,CAAC;;AAGhE,IAAA,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,CAAC,OAAO;AAC9D,IAAA,MAAM,UAAU,GAAG,GAAG,EAAE,OAAO,IAAI,IAAI;IACvC,MAAM,OAAO,GACX,YAAY,IAAI,IAAI,IAAI,UAAU,IAAI;AACpC,UAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;AACpD,WAAG,YAAY,IAAI,UAAU,CAAC;AAClC,IAAA,MAAM,aAAa,GAAG,OAAO,GAAGC,iCAAwB,CAAC,OAAO,CAAC,GAAG,EAAE;AACtE,IAAA,MAAM,wBAAwB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACnF,IAAA,IAAI,wBAAwB;AAC1B,QAAA,MAAM,IAAI,KAAK,CACb,yBAAyB,wBAAwB,CAAA,mDAAA,CAAqD,CACvG;;AAGH,IAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,YAAY,CAAC,OAAO;IAC7D,MAAM,OAAO,GAAG,CAACC,cAAO,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,WAAW,KAAK,EAAE;IACzE,MAAM,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAC5C,CAAC,CAAC,KAAK,CAAC,eAAe,CAACF,8BAAgB,CAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CACpE;AACD,IAAA,IAAI,yBAAyB;AAC3B,QAAA,MAAM,IAAI,KAAK,CACb,CAAA,uBAAA,EAA0B,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAA,mDAAA,CAAqD,CAChI;AAEH,IAAA,MAAM,YAAY,GAAG,GAAG,EAAE,YAAY,IAAI,MAAM;IAChD,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,OAAO;AACP,QAAA,YAAY,EAAE,gBAAgB;QAC9B,YAAY;QACZ,OAAO;QACP,OAAO;QACP,mBAAmB,EAAE,GAAG,EAAE,mBAAmB;AAC9C,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC;AAC9C,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,SAAS;AAEjC,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,CAAC,MAAkB;;QAEjB,IAAI,YAAY,KAAK,OAAO;AAAE,YAAA,OAAO,EAAE;AAEvC,QAAA,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,CAAC,YAAY;AACnE,QAAA,IAAI,YAAY;AAAE,YAAA,OAAO,YAAY;AAErC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC,GAAG,CACL;;AAGD,IAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAKG,4BAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGxF,IAAA,MAAM,mBAAmB,GAAG,GAAG,EAAE,mBAAmB;IACpD,IAAI,mBAAmB,EAAE;AACvB,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KACpC,mBAAmB,CAACjB,gCAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CACzD;AACD,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrD;;IAGA;SACG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;SACnB,MAAM,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,IAAI,KAAK,QAAQ;AAC5D,SAAA,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;IAG7C,IAAI,OAAO,EAAE;QACXe,iCAAwB,CAAC,OAAO;AAC7B,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;AACb,YAAA,MAAM,GAAG,GAAGG,uBAAS,CAAC,CAAC,CAAC;AACxB,YAAA,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9C,QAAA,CAAC;AACA,aAAA,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C;IAEA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtE,IAAA,MAAM,mBAAmB,GAAGT,8BAAuB,CACjD,cAAc,CAAC,GAAG,CAACT,gCAAkB,CAAC,EACtC,eAAe,CAChB;;IAGD,IAAI,CAACmB,6BAAgB,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,mBAAmB,CAAC,CAAC;AAAE,QAAA,OAAO,SAAS;IAEpF,MAAM,UAAU,GAAG,eAAe,CAAC;AACjC,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,YAAY,EAAE,mBAAmB;QACjC,YAAY;QACZ,OAAO;QACP,OAAO;QACP,mBAAmB;AACpB,KAAA,CAAC;IACF,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC;AAEpD,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,SAAS;IAEpC,OAAO;AACL,QAAA,QAAQ,EAAE,oBAAoB,CAAC,YAAY,CAAC,QAAQ;AACpD,QAAA,eAAe,EAAE,UAAU;AAC3B,QAAA,kBAAkB,EAAE,aAAa;KACd;AACvB;AAEA;SACgB,sBAAsB,CACpC,GAAwB,EACxB,IAAc,EACd,MAA2B,EAAA;IAE3B,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9C,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC1B,YAAA,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACnC,SAAA,CAAC,CAAC;AACH,QAAA,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;KACxB;AACH;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EAER,OAAO,EAcR,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EASX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAoB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI1F,OAAO,KAAK,EAAE,oBAAoB,EAAsB,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAsF7C,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAE1E;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,EACxC,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,GAAG,CAAC,EAAE,oBAAoB,GACzB,gBAAgB,GAAG,SAAS,CAgJ9B;AAED,2CAA2C;AAC3C,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EACzC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC1B,gBAAgB,CAUlB"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/PlDataTable/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EAER,OAAO,EAcR,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EASX,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAoB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAI1F,OAAO,KAAK,EAAE,oBAAoB,EAAsB,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAuF7C,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAE1E;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,EACxC,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,GAAG,CAAC,EAAE,oBAAoB,GACzB,gBAAgB,GAAG,SAAS,CA8I9B;AAED,2CAA2C;AAC3C,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EACzC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC1B,gBAAgB,CAUlB"}
@@ -9,6 +9,7 @@ import { allPColumnsReady } from '../../render/util/pcolumn_data.js';
9
9
  import { isFunction, isNil, identity } from 'es-toolkit';
10
10
  import { upgradePlDataTableStateV2 } from './state-migration.js';
11
11
  import { getAllLabelColumns, getMatchingLabelColumns } from './labels.js';
12
+ import { isEmpty } from 'es-toolkit/compat';
12
13
 
13
14
  /** Convert a PTableColumnId to a SpecQueryExpression reference. */
14
15
  function columnIdToExpr(col) {
@@ -127,7 +128,8 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
127
128
  if (firstInvalidFilterColumn)
128
129
  throw new Error(`Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`);
129
130
  // -- Sorting validation --
130
- const sorting = uniqueBy([...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])], (s) => canonicalizeJson(s.column));
131
+ const userSorting = tableStateNormalized.pTableParams.sorting;
132
+ const sorting = (isEmpty(userSorting) ? ops?.sorting : userSorting) ?? [];
131
133
  const firstInvalidSortingColumn = sorting.find((s) => !isValidColumnId(canonicalizeJson(s.column)));
132
134
  if (firstInvalidSortingColumn)
133
135
  throw new Error(`Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`);
@@ -196,6 +198,18 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
196
198
  visibleTableHandle: visibleHandle,
197
199
  };
198
200
  }
201
+ /** Create sheet entries for PlDataTable */
202
+ function createPlDataTableSheet(ctx, axis, values) {
203
+ const labels = ctx.resultPool.findLabels(axis);
204
+ return {
205
+ axis,
206
+ options: values.map((v) => ({
207
+ value: v,
208
+ label: labels?.[v] ?? v.toString(),
209
+ })),
210
+ defaultValue: values[0],
211
+ };
212
+ }
199
213
 
200
- export { createPlDataTableV2, isColumnHidden, isColumnOptional };
214
+ export { createPlDataTableSheet, createPlDataTableV2, isColumnHidden, isColumnOptional };
201
215
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../src/components/PlDataTable/table.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n DataInfo,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableDefV2,\n PTableSorting,\n SpecQuery,\n SingleAxisSelector,\n SpecQueryExpression,\n SpecQueryJoinEntry,\n CanonicalizedJson,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n readAnnotation,\n uniqueBy,\n isBooleanExpression,\n parseJson,\n} from \"@milaboratories/pl-model-common\";\nimport { filterSpecToSpecQueryExpr } from \"../../filters\";\nimport type { RenderCtxBase, TreeNodeAccessor, PColumnDataUniversal } from \"../../render\";\nimport { allPColumnsReady, deriveLabels } from \"../../render\";\nimport { identity, isFunction, isNil } from \"es-toolkit\";\nimport { distillFilterSpec } from \"../../filters/distill\";\nimport type { CreatePlDataTableOps, PlDataTableFilters, PlDataTableModel } from \"./v5\";\nimport { upgradePlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableSheet } from \"./v5\";\nimport { getAllLabelColumns, getMatchingLabelColumns } from \"./labels\";\nimport { collectFilterSpecColumns } from \"../../filters/traverse\";\n\n/** Convert a PTableColumnId to a SpecQueryExpression reference. */\nfunction columnIdToExpr(col: PTableColumnId): SpecQueryExpression {\n if (col.type === \"axis\") {\n return { type: \"axisRef\", value: col.id as SingleAxisSelector };\n }\n return { type: \"columnRef\", value: col.id };\n}\n\n/** Wrap a SpecQuery as a SpecQueryJoinEntry with empty qualifications. */\nfunction joinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {\n return { entry: input, qualifications: [] };\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n filters: null | PlDataTableFilters;\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (isFunction(params.coreColumnPredicate)) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n // Build SpecQuery directly from columns\n const coreJoinQuery: SpecQuery<\n PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>\n > = {\n type: params.coreJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n entries: coreColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n let query: SpecQuery<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> = {\n type: \"outerJoin\",\n primary: joinEntry(coreJoinQuery),\n secondary: secondaryColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n // Apply filters\n if (params.filters !== null) {\n const nonEmpty = distillFilterSpec(params.filters);\n\n if (!isNil(nonEmpty)) {\n const pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n if (!isBooleanExpression(pridicate)) {\n throw new Error(\n `Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`,\n );\n }\n query = {\n type: \"filter\",\n input: query,\n predicate: pridicate,\n };\n }\n }\n\n // Apply sorting\n if (params.sorting.length > 0) {\n query = {\n type: \"sort\",\n input: query,\n sortBy: params.sorting.map((s) => ({\n expression: columnIdToExpr(s.column),\n ascending: s.ascending,\n nullsFirst: s.ascending === s.naAndAbsentAreLeastValues,\n })),\n };\n }\n\n return { query };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: string): boolean =>\n fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);\n\n // -- Filtering validation --\n const stateFilters = tableStateNormalized.pTableParams.filters;\n const opsFilters = ops?.filters ?? null;\n const filters: null | PlDataTableFilters =\n stateFilters != null && opsFilters != null\n ? { type: \"and\", filters: [stateFilters, opsFilters] }\n : (stateFilters ?? opsFilters);\n const filterColumns = filters ? collectFilterSpecColumns(filters) : [];\n const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));\n if (firstInvalidFilterColumn)\n throw new Error(\n `Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,\n );\n\n // -- Sorting validation --\n const sorting: PTableSorting[] = uniqueBy(\n [...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])],\n (s) => canonicalizeJson<PTableColumnId>(s.column),\n );\n const firstInvalidSortingColumn = sorting.find(\n (s) => !isValidColumnId(canonicalizeJson<PTableColumnId>(s.column)),\n );\n if (firstInvalidSortingColumn)\n throw new Error(\n `Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`,\n );\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => {\n const obj = parseJson(c);\n return obj.type === \"column\" ? [obj.id] : [];\n })\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } as PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../src/components/PlDataTable/table.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n DataInfo,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableDefV2,\n PTableSorting,\n SpecQuery,\n SingleAxisSelector,\n SpecQueryExpression,\n SpecQueryJoinEntry,\n CanonicalizedJson,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n readAnnotation,\n uniqueBy,\n isBooleanExpression,\n parseJson,\n} from \"@milaboratories/pl-model-common\";\nimport { filterSpecToSpecQueryExpr } from \"../../filters\";\nimport type { RenderCtxBase, TreeNodeAccessor, PColumnDataUniversal } from \"../../render\";\nimport { allPColumnsReady, deriveLabels } from \"../../render\";\nimport { identity, isFunction, isNil } from \"es-toolkit\";\nimport { distillFilterSpec } from \"../../filters/distill\";\nimport type { CreatePlDataTableOps, PlDataTableFilters, PlDataTableModel } from \"./v5\";\nimport { upgradePlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableStateV2 } from \"./state-migration\";\nimport type { PlDataTableSheet } from \"./v5\";\nimport { getAllLabelColumns, getMatchingLabelColumns } from \"./labels\";\nimport { collectFilterSpecColumns } from \"../../filters/traverse\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** Convert a PTableColumnId to a SpecQueryExpression reference. */\nfunction columnIdToExpr(col: PTableColumnId): SpecQueryExpression {\n if (col.type === \"axis\") {\n return { type: \"axisRef\", value: col.id as SingleAxisSelector };\n }\n return { type: \"columnRef\", value: col.id };\n}\n\n/** Wrap a SpecQuery as a SpecQueryJoinEntry with empty qualifications. */\nfunction joinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {\n return { entry: input, qualifications: [] };\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n filters: null | PlDataTableFilters;\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (isFunction(params.coreColumnPredicate)) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n // Build SpecQuery directly from columns\n const coreJoinQuery: SpecQuery<\n PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>\n > = {\n type: params.coreJoinType === \"inner\" ? \"innerJoin\" : \"fullJoin\",\n entries: coreColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n let query: SpecQuery<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> = {\n type: \"outerJoin\",\n primary: joinEntry(coreJoinQuery),\n secondary: secondaryColumns.map((c) => joinEntry({ type: \"column\", column: c })),\n };\n\n // Apply filters\n if (params.filters !== null) {\n const nonEmpty = distillFilterSpec(params.filters);\n\n if (!isNil(nonEmpty)) {\n const pridicate = filterSpecToSpecQueryExpr(nonEmpty);\n if (!isBooleanExpression(pridicate)) {\n throw new Error(\n `Filter conversion produced a non-boolean expression (got type \"${pridicate.type}\"), expected a boolean predicate for query filtering`,\n );\n }\n query = {\n type: \"filter\",\n input: query,\n predicate: pridicate,\n };\n }\n }\n\n // Apply sorting\n if (params.sorting.length > 0) {\n query = {\n type: \"sort\",\n input: query,\n sortBy: params.sorting.map((s) => ({\n expression: columnIdToExpr(s.column),\n ascending: s.ascending,\n nullsFirst: s.ascending === s.naAndAbsentAreLeastValues,\n })),\n };\n }\n\n return { query };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: string): boolean =>\n fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);\n\n // -- Filtering validation --\n const stateFilters = tableStateNormalized.pTableParams.filters;\n const opsFilters = ops?.filters ?? null;\n const filters: null | PlDataTableFilters =\n stateFilters != null && opsFilters != null\n ? { type: \"and\", filters: [stateFilters, opsFilters] }\n : (stateFilters ?? opsFilters);\n const filterColumns = filters ? collectFilterSpecColumns(filters) : [];\n const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));\n if (firstInvalidFilterColumn)\n throw new Error(\n `Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,\n );\n\n // -- Sorting validation --\n const userSorting = tableStateNormalized.pTableParams.sorting;\n const sorting = (isEmpty(userSorting) ? ops?.sorting : userSorting) ?? [];\n const firstInvalidSortingColumn = sorting.find(\n (s) => !isValidColumnId(canonicalizeJson<PTableColumnId>(s.column)),\n );\n if (firstInvalidSortingColumn)\n throw new Error(\n `Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`,\n );\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n\n const fullHandle = ctx.createPTableV2(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Preserve sorted columns from being hidden\n sorting\n .map((s) => s.column)\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve filter columns from being hidden\n if (filters) {\n collectFilterSpecColumns(filters)\n .flatMap((c) => {\n const obj = parseJson(c);\n return obj.type === \"column\" ? [obj.id] : [];\n })\n .forEach((c) => hiddenColumns.delete(c));\n }\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTableV2(visibleDef);\n\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } as PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var block_state_util = require('./block_state_util.cjs');
4
+ var plugin_handle = require('./plugin_handle.cjs');
4
5
  var block_storage = require('./block_storage.cjs');
5
6
  var block_storage_facade = require('./block_storage_facade.cjs');
6
7
  var block_model_legacy = require('./block_model_legacy.cjs');
@@ -36,6 +37,7 @@ var plModelCommon = require('@milaboratories/pl-model-common');
36
37
  var plErrorLike = require('@milaboratories/pl-error-like');
37
38
  var internal = require('./render/internal.cjs');
38
39
  var env_value = require('./env_value.cjs');
40
+ var axes = require('./pframe_utils/axes.cjs');
39
41
  var columns = require('./pframe_utils/columns.cjs');
40
42
 
41
43
 
@@ -43,6 +45,9 @@ var columns = require('./pframe_utils/columns.cjs');
43
45
  exports.OutputError = block_state_util.OutputError;
44
46
  exports.readOutput = block_state_util.readOutput;
45
47
  exports.wrapOutputs = block_state_util.wrapOutputs;
48
+ exports.isPluginOutputKey = plugin_handle.isPluginOutputKey;
49
+ exports.pluginOutputKey = plugin_handle.pluginOutputKey;
50
+ exports.pluginOutputPrefix = plugin_handle.pluginOutputPrefix;
46
51
  exports.BLOCK_STORAGE_KEY = block_storage.BLOCK_STORAGE_KEY;
47
52
  exports.BLOCK_STORAGE_SCHEMA_VERSION = block_storage.BLOCK_STORAGE_SCHEMA_VERSION;
48
53
  exports.DATA_MODEL_DEFAULT_VERSION = block_storage.DATA_MODEL_DEFAULT_VERSION;
@@ -71,8 +76,6 @@ exports.downgradeCfgOrLambda = normalization.downgradeCfgOrLambda;
71
76
  exports.extractConfig = normalization.extractConfig;
72
77
  exports.isConfigLambda = types.isConfigLambda;
73
78
  exports.createPFrameForGraphs = PFrameForGraphs.createPFrameForGraphs;
74
- exports.enrichCompatible = PFrameForGraphs.enrichCompatible;
75
- exports.getAvailableWithLinkersAxes = PFrameForGraphs.getAvailableWithLinkersAxes;
76
79
  exports.isHiddenFromGraphColumn = PFrameForGraphs.isHiddenFromGraphColumn;
77
80
  exports.isHiddenFromUIColumn = PFrameForGraphs.isHiddenFromUIColumn;
78
81
  exports.compileAnnotationScript = filters_ui.compileAnnotationScript;
@@ -82,6 +85,7 @@ exports.unreachable = filters_ui.unreachable;
82
85
  exports.createDefaultPTableParams = stateMigration.createDefaultPTableParams;
83
86
  exports.createPlDataTableStateV2 = stateMigration.createPlDataTableStateV2;
84
87
  exports.upgradePlDataTableStateV2 = stateMigration.upgradePlDataTableStateV2;
88
+ exports.createPlDataTableSheet = table.createPlDataTableSheet;
85
89
  exports.createPlDataTableV2 = table.createPlDataTableV2;
86
90
  exports.isColumnHidden = table.isColumnHidden;
87
91
  exports.isColumnOptional = table.isColumnOptional;
@@ -169,6 +173,8 @@ exports.getSingleColumnData = index.getSingleColumnData;
169
173
  exports.getUniqueSourceValuesWithLabels = index.getUniqueSourceValuesWithLabels;
170
174
  exports.JsRenderInternal = internal;
171
175
  exports.getEnvironmentValue = env_value.getEnvironmentValue;
176
+ exports.enrichCompatible = axes.enrichCompatible;
177
+ exports.getAvailableWithLinkersAxes = axes.getAvailableWithLinkersAxes;
172
178
  exports.getAllRelatedColumns = columns.getAllRelatedColumns;
173
179
  exports.getRelatedColumns = columns.getRelatedColumns;
174
180
  Object.keys(plModelCommon).forEach(function (k) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./block_state_patch";
2
2
  export * from "./block_state_util";
3
+ export * from "./plugin_handle";
3
4
  export * from "./block_storage";
4
5
  export * from "./block_storage_facade";
5
6
  export * from "./block_model_legacy";
@@ -7,7 +8,7 @@ export { BlockModelV3 } from "./block_model";
7
8
  export type { PluginInstance, ParamsInput } from "./block_model";
8
9
  export { DataModel, DataModelBuilder, DataUnrecoverableError, isDataUnrecoverableError, defaultRecover, makeDataVersioned, } from "./block_migrations";
9
10
  export type { LegacyV1State } from "./block_migrations";
10
- export { PluginModel } from "./plugin_model";
11
+ export * from "./plugin_model";
11
12
  export * from "./bconfig";
12
13
  export * from "./components";
13
14
  export * from "./config";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { OutputError, readOutput, wrapOutputs } from './block_state_util.js';
2
+ export { isPluginOutputKey, pluginOutputKey, pluginOutputPrefix } from './plugin_handle.js';
2
3
  export { BLOCK_STORAGE_KEY, BLOCK_STORAGE_SCHEMA_VERSION, DATA_MODEL_DEFAULT_VERSION, createBlockStorage, deriveDataFromStorage, getPluginData, getStorageData, isBlockStorage, migrateBlockStorage, normalizeBlockStorage, updateStorageData } from './block_storage.js';
3
4
  export { BLOCK_STORAGE_FACADE_VERSION, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, registerFacadeCallbacks } from './block_storage_facade.js';
4
5
  export { BlockModel } from './block_model_legacy.js';
@@ -7,10 +8,10 @@ export { DataModel, DataModelBuilder, DataUnrecoverableError, defaultRecover, is
7
8
  export { PluginModel } from './plugin_model.js';
8
9
  export { downgradeCfgOrLambda, extractConfig } from './bconfig/normalization.js';
9
10
  export { isConfigLambda } from './bconfig/types.js';
10
- export { createPFrameForGraphs, enrichCompatible, getAvailableWithLinkersAxes, isHiddenFromGraphColumn, isHiddenFromUIColumn } from './components/PFrameForGraphs.js';
11
+ export { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn } from './components/PFrameForGraphs.js';
11
12
  export { compileAnnotationScript, compileFilter, compileFilters, unreachable } from './components/PlAnnotations/filters_ui.js';
12
13
  export { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from './components/PlDataTable/state-migration.js';
13
- export { createPlDataTableV2, isColumnHidden, isColumnOptional } from './components/PlDataTable/table.js';
14
+ export { createPlDataTableSheet, createPlDataTableV2, isColumnHidden, isColumnOptional } from './components/PlDataTable/table.js';
14
15
  export { createRowSelectionColumn } from './components/PlMultiSequenceAlignment.js';
15
16
  export { createPlSelectionModel } from './components/PlSelectionModel.js';
16
17
  export { Args, It, MainOutputs, StagingOutputs, UiState, and, extractArchiveAndGetURL, flatten, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getDownloadedBlobContent, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getProgressLog, getProgressLogWithInfo, getResourceField, getResourceValueAsJson, isEmpty, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, not, or } from './config/actions.js';
@@ -35,5 +36,6 @@ export * from '@milaboratories/pl-error-like';
35
36
  import * as internal from './render/internal.js';
36
37
  export { internal as JsRenderInternal };
37
38
  export { getEnvironmentValue } from './env_value.js';
39
+ export { enrichCompatible, getAvailableWithLinkersAxes } from './pframe_utils/axes.js';
38
40
  export { getAllRelatedColumns, getRelatedColumns } from './pframe_utils/columns.js';
39
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.57.0";
3
+ var version = "1.58.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.map
@@ -1,4 +1,4 @@
1
- var version = "1.57.0";
1
+ var version = "1.58.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.js.map