@platforma-sdk/model 1.53.10 → 1.53.13

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 (288) hide show
  1. package/dist/annotations/converter.cjs +11 -11
  2. package/dist/annotations/converter.cjs.map +1 -1
  3. package/dist/annotations/converter.d.ts +1 -1
  4. package/dist/annotations/converter.d.ts.map +1 -1
  5. package/dist/annotations/converter.js +11 -11
  6. package/dist/annotations/converter.js.map +1 -1
  7. package/dist/annotations/index.d.ts +2 -2
  8. package/dist/annotations/types.d.ts +4 -4
  9. package/dist/bconfig/index.d.ts +5 -5
  10. package/dist/bconfig/lambdas.d.ts +7 -7
  11. package/dist/bconfig/lambdas.d.ts.map +1 -1
  12. package/dist/bconfig/normalization.cjs.map +1 -1
  13. package/dist/bconfig/normalization.d.ts +3 -3
  14. package/dist/bconfig/normalization.js.map +1 -1
  15. package/dist/bconfig/types.cjs.map +1 -1
  16. package/dist/bconfig/types.d.ts +2 -2
  17. package/dist/bconfig/types.d.ts.map +1 -1
  18. package/dist/bconfig/types.js.map +1 -1
  19. package/dist/bconfig/util.d.ts +4 -4
  20. package/dist/bconfig/v3.d.ts +3 -3
  21. package/dist/block_api_v1.d.ts +2 -2
  22. package/dist/block_api_v1.d.ts.map +1 -1
  23. package/dist/block_api_v2.d.ts +2 -2
  24. package/dist/block_api_v2.d.ts.map +1 -1
  25. package/dist/block_api_v3.d.ts +3 -3
  26. package/dist/block_migrations.cjs +10 -10
  27. package/dist/block_migrations.cjs.map +1 -1
  28. package/dist/block_migrations.d.ts.map +1 -1
  29. package/dist/block_migrations.js +10 -10
  30. package/dist/block_migrations.js.map +1 -1
  31. package/dist/block_model.cjs +11 -11
  32. package/dist/block_model.cjs.map +1 -1
  33. package/dist/block_model.d.ts +8 -8
  34. package/dist/block_model.d.ts.map +1 -1
  35. package/dist/block_model.js +11 -11
  36. package/dist/block_model.js.map +1 -1
  37. package/dist/block_state_patch.d.ts +2 -2
  38. package/dist/block_state_util.cjs +1 -1
  39. package/dist/block_state_util.cjs.map +1 -1
  40. package/dist/block_state_util.d.ts +3 -3
  41. package/dist/block_state_util.js +1 -1
  42. package/dist/block_state_util.js.map +1 -1
  43. package/dist/block_storage.cjs +10 -10
  44. package/dist/block_storage.cjs.map +1 -1
  45. package/dist/block_storage.d.ts +2 -2
  46. package/dist/block_storage.d.ts.map +1 -1
  47. package/dist/block_storage.js +10 -10
  48. package/dist/block_storage.js.map +1 -1
  49. package/dist/block_storage_vm.cjs +22 -22
  50. package/dist/block_storage_vm.cjs.map +1 -1
  51. package/dist/block_storage_vm.d.ts +1 -1
  52. package/dist/block_storage_vm.d.ts.map +1 -1
  53. package/dist/block_storage_vm.js +22 -22
  54. package/dist/block_storage_vm.js.map +1 -1
  55. package/dist/builder.cjs +32 -23
  56. package/dist/builder.cjs.map +1 -1
  57. package/dist/builder.d.ts +7 -7
  58. package/dist/builder.d.ts.map +1 -1
  59. package/dist/builder.js +32 -23
  60. package/dist/builder.js.map +1 -1
  61. package/dist/components/PFrameForGraphs.cjs +7 -6
  62. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  63. package/dist/components/PFrameForGraphs.d.ts +4 -4
  64. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  65. package/dist/components/PFrameForGraphs.js +7 -6
  66. package/dist/components/PFrameForGraphs.js.map +1 -1
  67. package/dist/components/PlAnnotations/filter.d.ts +14 -14
  68. package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
  69. package/dist/components/PlAnnotations/filters_ui.cjs +46 -46
  70. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  71. package/dist/components/PlAnnotations/filters_ui.d.ts +10 -34
  72. package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
  73. package/dist/components/PlAnnotations/filters_ui.js +46 -46
  74. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  75. package/dist/components/PlAnnotations/index.d.ts +2 -2
  76. package/dist/components/PlAnnotations/types.d.ts +2 -2
  77. package/dist/components/PlDataTable.cjs +19 -20
  78. package/dist/components/PlDataTable.cjs.map +1 -1
  79. package/dist/components/PlDataTable.d.ts +27 -27
  80. package/dist/components/PlDataTable.d.ts.map +1 -1
  81. package/dist/components/PlDataTable.js +19 -20
  82. package/dist/components/PlDataTable.js.map +1 -1
  83. package/dist/components/PlMultiSequenceAlignment.cjs +2 -2
  84. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  85. package/dist/components/PlMultiSequenceAlignment.d.ts +6 -6
  86. package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -1
  87. package/dist/components/PlMultiSequenceAlignment.js +2 -2
  88. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  89. package/dist/components/PlSelectionModel.cjs.map +1 -1
  90. package/dist/components/PlSelectionModel.d.ts +1 -1
  91. package/dist/components/PlSelectionModel.js.map +1 -1
  92. package/dist/components/index.d.ts +5 -5
  93. package/dist/config/actions.cjs +39 -39
  94. package/dist/config/actions.cjs.map +1 -1
  95. package/dist/config/actions.d.ts +9 -9
  96. package/dist/config/actions.d.ts.map +1 -1
  97. package/dist/config/actions.js +39 -39
  98. package/dist/config/actions.js.map +1 -1
  99. package/dist/config/actions_kinds.d.ts +30 -30
  100. package/dist/config/actions_kinds.d.ts.map +1 -1
  101. package/dist/config/index.d.ts +6 -6
  102. package/dist/config/model.d.ts +28 -28
  103. package/dist/config/model_meta.d.ts +1 -1
  104. package/dist/config/type_engine.d.ts +3 -3
  105. package/dist/config/type_util.d.ts +2 -2
  106. package/dist/env_value.cjs +1 -1
  107. package/dist/env_value.cjs.map +1 -1
  108. package/dist/env_value.js +1 -1
  109. package/dist/env_value.js.map +1 -1
  110. package/dist/filters/converter.cjs +36 -32
  111. package/dist/filters/converter.cjs.map +1 -1
  112. package/dist/filters/converter.d.ts +2 -2
  113. package/dist/filters/converter.d.ts.map +1 -1
  114. package/dist/filters/converter.js +36 -32
  115. package/dist/filters/converter.js.map +1 -1
  116. package/dist/filters/index.d.ts +2 -2
  117. package/dist/filters/types.d.ts +33 -33
  118. package/dist/filters/types.d.ts.map +1 -1
  119. package/dist/index.d.ts +24 -24
  120. package/dist/internal.cjs +7 -7
  121. package/dist/internal.cjs.map +1 -1
  122. package/dist/internal.d.ts +4 -4
  123. package/dist/internal.d.ts.map +1 -1
  124. package/dist/internal.js +7 -7
  125. package/dist/internal.js.map +1 -1
  126. package/dist/package.json.cjs +1 -1
  127. package/dist/package.json.js +1 -1
  128. package/dist/pframe.cjs +1 -1
  129. package/dist/pframe.cjs.map +1 -1
  130. package/dist/pframe.d.ts +1 -1
  131. package/dist/pframe.js +1 -1
  132. package/dist/pframe.js.map +1 -1
  133. package/dist/pframe_utils/columns.cjs +23 -15
  134. package/dist/pframe_utils/columns.cjs.map +1 -1
  135. package/dist/pframe_utils/columns.d.ts +3 -3
  136. package/dist/pframe_utils/columns.d.ts.map +1 -1
  137. package/dist/pframe_utils/columns.js +23 -15
  138. package/dist/pframe_utils/columns.js.map +1 -1
  139. package/dist/pframe_utils/index.cjs +25 -25
  140. package/dist/pframe_utils/index.cjs.map +1 -1
  141. package/dist/pframe_utils/index.d.ts +3 -3
  142. package/dist/pframe_utils/index.d.ts.map +1 -1
  143. package/dist/pframe_utils/index.js +25 -25
  144. package/dist/pframe_utils/index.js.map +1 -1
  145. package/dist/platforma.d.ts +7 -7
  146. package/dist/platforma.d.ts.map +1 -1
  147. package/dist/raw_globals.cjs +4 -1
  148. package/dist/raw_globals.cjs.map +1 -1
  149. package/dist/raw_globals.d.ts +2 -2
  150. package/dist/raw_globals.d.ts.map +1 -1
  151. package/dist/raw_globals.js +4 -1
  152. package/dist/raw_globals.js.map +1 -1
  153. package/dist/ref_util.cjs +4 -4
  154. package/dist/ref_util.cjs.map +1 -1
  155. package/dist/ref_util.d.ts +1 -1
  156. package/dist/ref_util.js +4 -4
  157. package/dist/ref_util.js.map +1 -1
  158. package/dist/render/accessor.cjs +24 -24
  159. package/dist/render/accessor.cjs.map +1 -1
  160. package/dist/render/accessor.d.ts +10 -10
  161. package/dist/render/accessor.d.ts.map +1 -1
  162. package/dist/render/accessor.js +24 -24
  163. package/dist/render/accessor.js.map +1 -1
  164. package/dist/render/api.cjs +23 -23
  165. package/dist/render/api.cjs.map +1 -1
  166. package/dist/render/api.d.ts +11 -11
  167. package/dist/render/api.d.ts.map +1 -1
  168. package/dist/render/api.js +23 -23
  169. package/dist/render/api.js.map +1 -1
  170. package/dist/render/future.cjs.map +1 -1
  171. package/dist/render/future.d.ts +1 -1
  172. package/dist/render/future.js.map +1 -1
  173. package/dist/render/index.d.ts +6 -6
  174. package/dist/render/internal.cjs +4 -4
  175. package/dist/render/internal.cjs.map +1 -1
  176. package/dist/render/internal.d.ts +7 -7
  177. package/dist/render/internal.d.ts.map +1 -1
  178. package/dist/render/internal.js +4 -4
  179. package/dist/render/internal.js.map +1 -1
  180. package/dist/render/traversal_ops.d.ts +1 -1
  181. package/dist/render/util/axis_filtering.cjs +48 -44
  182. package/dist/render/util/axis_filtering.cjs.map +1 -1
  183. package/dist/render/util/axis_filtering.d.ts +2 -2
  184. package/dist/render/util/axis_filtering.js +48 -44
  185. package/dist/render/util/axis_filtering.js.map +1 -1
  186. package/dist/render/util/column_collection.cjs +42 -35
  187. package/dist/render/util/column_collection.cjs.map +1 -1
  188. package/dist/render/util/column_collection.d.ts +4 -4
  189. package/dist/render/util/column_collection.d.ts.map +1 -1
  190. package/dist/render/util/column_collection.js +42 -35
  191. package/dist/render/util/column_collection.js.map +1 -1
  192. package/dist/render/util/index.d.ts +4 -4
  193. package/dist/render/util/label.cjs +15 -21
  194. package/dist/render/util/label.cjs.map +1 -1
  195. package/dist/render/util/label.d.ts +2 -2
  196. package/dist/render/util/label.d.ts.map +1 -1
  197. package/dist/render/util/label.js +15 -21
  198. package/dist/render/util/label.js.map +1 -1
  199. package/dist/render/util/pcolumn_data.cjs +56 -54
  200. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  201. package/dist/render/util/pcolumn_data.d.ts +5 -5
  202. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  203. package/dist/render/util/pcolumn_data.js +56 -54
  204. package/dist/render/util/pcolumn_data.js.map +1 -1
  205. package/dist/render/util/pframe_upgraders.cjs +6 -6
  206. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  207. package/dist/render/util/pframe_upgraders.d.ts +1 -1
  208. package/dist/render/util/pframe_upgraders.d.ts.map +1 -1
  209. package/dist/render/util/pframe_upgraders.js +6 -6
  210. package/dist/render/util/pframe_upgraders.js.map +1 -1
  211. package/dist/render/util/split_selectors.d.ts +1 -1
  212. package/dist/render/util/split_selectors.d.ts.map +1 -1
  213. package/dist/sdk_info.cjs.map +1 -1
  214. package/dist/sdk_info.js.map +1 -1
  215. package/dist/version.cjs.map +1 -1
  216. package/dist/version.js.map +1 -1
  217. package/package.json +23 -21
  218. package/src/annotations/converter.test.ts +98 -101
  219. package/src/annotations/converter.ts +21 -17
  220. package/src/annotations/index.ts +2 -2
  221. package/src/annotations/types.ts +4 -4
  222. package/src/bconfig/index.ts +5 -5
  223. package/src/bconfig/lambdas.ts +10 -12
  224. package/src/bconfig/normalization.ts +5 -5
  225. package/src/bconfig/types.ts +3 -5
  226. package/src/bconfig/util.ts +3 -3
  227. package/src/bconfig/v3.ts +3 -3
  228. package/src/block_api_v1.ts +7 -3
  229. package/src/block_api_v2.ts +7 -3
  230. package/src/block_api_v3.ts +3 -3
  231. package/src/block_migrations.test.ts +66 -67
  232. package/src/block_migrations.ts +16 -16
  233. package/src/block_model.ts +76 -140
  234. package/src/block_state_patch.ts +2 -2
  235. package/src/block_state_util.ts +4 -4
  236. package/src/block_storage.test.ts +106 -99
  237. package/src/block_storage.ts +22 -25
  238. package/src/block_storage_vm.ts +41 -35
  239. package/src/builder.ts +107 -95
  240. package/src/components/PFrameForGraphs.test.ts +261 -255
  241. package/src/components/PFrameForGraphs.ts +35 -22
  242. package/src/components/PlAnnotations/filter.ts +21 -15
  243. package/src/components/PlAnnotations/filters_ui.test.ts +230 -73
  244. package/src/components/PlAnnotations/filters_ui.ts +138 -105
  245. package/src/components/PlAnnotations/index.ts +2 -2
  246. package/src/components/PlAnnotations/types.ts +2 -2
  247. package/src/components/PlDataTable.ts +177 -164
  248. package/src/components/PlMultiSequenceAlignment.ts +11 -18
  249. package/src/components/PlSelectionModel.ts +1 -1
  250. package/src/components/index.ts +5 -5
  251. package/src/config/actions.ts +64 -59
  252. package/src/config/actions_kinds.ts +38 -34
  253. package/src/config/index.ts +6 -6
  254. package/src/config/model.ts +28 -28
  255. package/src/config/model_meta.ts +1 -1
  256. package/src/config/type_engine.ts +3 -3
  257. package/src/config/type_util.ts +2 -2
  258. package/src/env_value.ts +2 -2
  259. package/src/filters/converter.test.ts +185 -144
  260. package/src/filters/converter.ts +47 -35
  261. package/src/filters/index.ts +2 -2
  262. package/src/filters/types.ts +44 -39
  263. package/src/global.d.ts +1 -1
  264. package/src/index.ts +24 -24
  265. package/src/internal.ts +27 -17
  266. package/src/pframe.ts +3 -3
  267. package/src/pframe_utils/columns.ts +81 -31
  268. package/src/pframe_utils/index.ts +65 -43
  269. package/src/platforma.ts +44 -21
  270. package/src/raw_globals.ts +13 -7
  271. package/src/ref_util.ts +6 -6
  272. package/src/render/accessor.ts +43 -44
  273. package/src/render/api.ts +102 -78
  274. package/src/render/future.ts +2 -2
  275. package/src/render/index.ts +6 -6
  276. package/src/render/internal.ts +11 -12
  277. package/src/render/traversal_ops.ts +1 -1
  278. package/src/render/util/axis_filtering.ts +67 -52
  279. package/src/render/util/column_collection.ts +171 -91
  280. package/src/render/util/index.ts +4 -4
  281. package/src/render/util/label.test.ts +139 -139
  282. package/src/render/util/label.ts +42 -33
  283. package/src/render/util/pcolumn_data.ts +111 -75
  284. package/src/render/util/pframe_upgraders.ts +24 -13
  285. package/src/render/util/split_selectors.ts +6 -1
  286. package/src/sdk_info.ts +1 -1
  287. package/src/typing.test.ts +56 -56
  288. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"column_collection.cjs","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AnchoredPColumnSelector,\n AxisFilterByIdx,\n AxisFilterValue,\n AxisId,\n NativePObjectId,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PObjectId,\n ResolveAnchorsOptions,\n SUniversalPColumnId,\n} from '@milaboratories/pl-model-common';\nimport {\n Annotation,\n canonicalizeAxisId,\n deriveNativeId,\n entriesToDataInfo,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n isPartitionedDataInfoEntries,\n isPColumnSpec,\n LinkerMap,\n matchAxisId,\n resolveAnchors,\n selectorsToPredicate,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport type { Optional } from 'utility-types';\nimport type { TreeNodeAccessor } from '../accessor';\nimport type { PColumnDataUniversal } from '../api';\nimport { filterDataInfoEntries } from './axis_filtering';\nimport type { LabelDerivationOps, TraceEntry } from './label';\nimport { deriveLabels } from './label';\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data';\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === 'object' && first !== null && 'key' in first && 'val' in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]):\n PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === 'function' ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> => predicate(column.spec));\n }\n}\n\n/** Lazy calculates the data, returns undefined if data is not ready. */\nexport type PColumnLazyWithLabel<T> = PColumnLazy<T> & {\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {\n id: SUniversalPColumnId;\n};\n\n/** @deprecated Use PColumnLazyWithLabel instead. */\nexport type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {\n label: string;\n};\n\n/** @deprecated Use PColumnLazyUniversal instead. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: 'split';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: 'direct';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== 'object') return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors = potentialAnchored['domain'] && typeof potentialAnchored['domain'] === 'object' && Object.values(potentialAnchored['domain']).some((v: unknown) => typeof v === 'object' && v !== null && 'anchor' in v);\n const axesHaveAnchors = potentialAnchored['axes'] && Array.isArray(potentialAnchored['axes']) && potentialAnchored['axes'].some((a: unknown) => typeof a === 'object' && a !== null && 'anchor' in a);\n return !!potentialAnchored['domainAnchor'] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean)): number[] {\n if (typeof selector !== 'object' || !('axes' in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) => (typeof axis === 'object' && 'split' in axis && axis.split === true) ? index : -1)\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error('Axis splitting is not supported when `partialAxesMatch` is defined.');\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n /** If true, resulting columns will be enriched by other columns considering linker columns. Default is false. */\n enrichByLinkers?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [new ArrayColumnProvider(this.defaultProviderStore)];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),\n ...(rawLabelOps ?? {}),\n };\n\n let excludePredicate: ((spec: PColumnSpec) => boolean) = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])\n .map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else\n return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray = typeof predicateOrSelectors === 'function'\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error('Anchored selectors require an AnchoredIdDeriver to be provided in options.');\n currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector as AnchoredPColumnSelector, opts);\n } else\n currentSelector = rawSelector as PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId))\n continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs\n .map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error('Too many key combinations, aborting.');\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0)\n continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: 'split',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: 'direct',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === 'split' ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === 'split' ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...(finalSpec.annotations ?? {}),\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () => entry.type === 'split'\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n const ids = new Set(result.map((entry) => entry.id));\n\n if (enrichByLinkers && anchorCtx) {\n const linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n if (linkers.length === 0) {\n return result;\n };\n\n const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\n // loose way of matching\n function matchAxisIdFn(linkerKeyId: AxisId, sourceAxisId: AxisId): boolean {\n return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n }\n // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;\n const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);\n\n // search all columns that includes at least one of additional axes;\n const availableByLinkersColumns = this.getUniversalEntries(\n (spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {\n const columnAxisId = getAxisId(columnAxisSpec);\n return availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));\n }),\n { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude },\n );\n if (availableByLinkersColumns) {\n result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n }\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...(opts ?? {}),\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":["selectorsToPredicate","canonicalizeAxisId","resolveAnchors","deriveNativeId","isPColumnSpec","convertOrParsePColumnData","isPartitionedDataInfoEntries","getUniquePartitionKeys","getAxisId","deriveLabels","Annotation","entriesToDataInfo","filterDataInfoEntries","isLinkerColumn","LinkerMap","getColumnIdAndSpec","matchAxisId"],"mappings":"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"}
1
+ {"version":3,"file":"column_collection.cjs","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AnchoredPColumnSelector,\n AxisFilterByIdx,\n AxisFilterValue,\n AxisId,\n NativePObjectId,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PObjectId,\n ResolveAnchorsOptions,\n SUniversalPColumnId,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeAxisId,\n deriveNativeId,\n entriesToDataInfo,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n isPartitionedDataInfoEntries,\n isPColumnSpec,\n LinkerMap,\n matchAxisId,\n resolveAnchors,\n selectorsToPredicate,\n} from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type { Optional } from \"utility-types\";\nimport type { TreeNodeAccessor } from \"../accessor\";\nimport type { PColumnDataUniversal } from \"../api\";\nimport { filterDataInfoEntries } from \"./axis_filtering\";\nimport type { LabelDerivationOps, TraceEntry } from \"./label\";\nimport { deriveLabels } from \"./label\";\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from \"./pcolumn_data\";\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from \"./split_selectors\";\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === \"object\" && first !== null && \"key\" in first && \"val\" in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === \"function\" ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> =>\n predicate(column.spec),\n );\n }\n}\n\n/** Lazy calculates the data, returns undefined if data is not ready. */\nexport type PColumnLazyWithLabel<T> = PColumnLazy<T> & {\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {\n id: SUniversalPColumnId;\n};\n\n/** @deprecated Use PColumnLazyWithLabel instead. */\nexport type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {\n label: string;\n};\n\n/** @deprecated Use PColumnLazyUniversal instead. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: \"split\";\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: \"direct\";\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== \"object\") return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors =\n potentialAnchored[\"domain\"] &&\n typeof potentialAnchored[\"domain\"] === \"object\" &&\n Object.values(potentialAnchored[\"domain\"]).some(\n (v: unknown) => typeof v === \"object\" && v !== null && \"anchor\" in v,\n );\n const axesHaveAnchors =\n potentialAnchored[\"axes\"] &&\n Array.isArray(potentialAnchored[\"axes\"]) &&\n potentialAnchored[\"axes\"].some(\n (a: unknown) => typeof a === \"object\" && a !== null && \"anchor\" in a,\n );\n return !!potentialAnchored[\"domainAnchor\"] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(\n selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean),\n): number[] {\n if (typeof selector !== \"object\" || !(\"axes\" in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) =>\n typeof axis === \"object\" && \"split\" in axis && axis.split === true ? index : -1,\n )\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error(\"Axis splitting is not supported when `partialAxesMatch` is defined.\");\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n /** If true, resulting columns will be enriched by other columns considering linker columns. Default is false. */\n enrichByLinkers?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [\n new ArrayColumnProvider(this.defaultProviderStore),\n ];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts,\n ): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | PColumnSelectorWithSplit\n | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver,\n ): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, \"anchorCtx\">,\n ): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const {\n anchorCtx,\n labelOps: rawLabelOps,\n dontWaitAllData = false,\n overrideLabelAnnotation = false,\n exclude,\n enrichByLinkers = false,\n } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false\n ? { includeNativeLabel: true }\n : {}),\n ...rawLabelOps,\n };\n\n let excludePredicate: (spec: PColumnSpec) => boolean = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error(\n \"Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.\",\n );\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray =\n typeof predicateOrSelectors === \"function\"\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error(\n \"Anchored selectors require an AnchoredIdDeriver to be provided in options.\",\n );\n currentSelector = resolveAnchors(\n anchorCtx.anchors,\n rawSelector as AnchoredPColumnSelector,\n opts,\n );\n } else\n currentSelector = rawSelector as\n | PColumnSelectorWithSplit\n | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(\n `Duplicate column id ${col.id} in provider ${provider.constructor.name}`,\n );\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId)) continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(\n `Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`,\n );\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(\n `Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`,\n );\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(\n `Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`,\n );\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs.map(\n (idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])),\n );\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error(\"Too many key combinations, aborting.\");\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(\n `Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`,\n );\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0) continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: \"split\",\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: \"direct\",\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === \"split\" ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === \"split\" ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...finalSpec.annotations,\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () =>\n entry.type === \"split\"\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n const ids = new Set(result.map((entry) => entry.id));\n\n if (enrichByLinkers && anchorCtx) {\n const linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n if (linkers.length === 0) {\n return result;\n }\n\n const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\n // loose way of matching\n function matchAxisIdFn(linkerKeyId: AxisId, sourceAxisId: AxisId): boolean {\n return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n }\n // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;\n const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(\n anchorAxes,\n matchAxisIdFn,\n );\n\n // search all columns that includes at least one of additional axes;\n const availableByLinkersColumns = this.getUniversalEntries(\n (spec) =>\n !isLinkerColumn(spec) &&\n spec.axesSpec.some((columnAxisSpec) => {\n const columnAxisId = getAxisId(columnAxisSpec);\n return availableByLinkersAxes.some((axis) =>\n matchAxisIdFn(getAxisId(axis), columnAxisId),\n );\n }),\n { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude },\n );\n if (availableByLinkersColumns) {\n result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n }\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts,\n ): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | PColumnSelectorWithSplit\n | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver,\n ): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, \"anchorCtx\">,\n ): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...opts,\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":["selectorsToPredicate","canonicalizeAxisId","resolveAnchors","deriveNativeId","isPColumnSpec","convertOrParsePColumnData","isPartitionedDataInfoEntries","getUniquePartitionKeys","getAxisId","deriveLabels","Annotation","entriesToDataInfo","filterDataInfoEntries","isLinkerColumn","LinkerMap","getColumnIdAndSpec","matchAxisId"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { AnchoredIdDeriver, AnchoredPColumnSelector, AxisId, PColumn, PColumnLazy, PColumnSelector, PColumnSpec, ResolveAnchorsOptions, SUniversalPColumnId } from '@milaboratories/pl-model-common';
2
- import type { PColumnDataUniversal } from '../api';
3
- import type { LabelDerivationOps } from './label';
4
- import type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';
1
+ import type { AnchoredIdDeriver, AnchoredPColumnSelector, AxisId, PColumn, PColumnLazy, PColumnSelector, PColumnSpec, ResolveAnchorsOptions, SUniversalPColumnId } from "@milaboratories/pl-model-common";
2
+ import type { PColumnDataUniversal } from "../api";
3
+ import type { LabelDerivationOps } from "./label";
4
+ import type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from "./split_selectors";
5
5
  export interface ColumnProvider {
6
6
  selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EAGvB,MAAM,EAGN,OAAO,EACP,WAAW,EACX,eAAe,EACf,WAAW,EAGX,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAmBzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAc,MAAM,SAAS,CAAC;AAG9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAS7F,MAAM,WAAW,cAAc;IAC7B,aAAa,CACX,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,eAAe,GAAG,eAAe,EAAE,GAChF,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACvE;AAmBD,wEAAwE;AACxE,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,2FAA2F;AAC3F,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC9D,EAAE,EAAE,mBAAmB,CAAC;CACzB,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,SAAS,GAAG,oBAAoB,CAAC,GAAG;IAClF,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,GAAG;IAC1D,EAAE,EAAE,mBAAmB,CAAC;CACzB,CAAC;AAiGF,KAAK,6BAA6B,GAAG;IACnC,6FAA6F;IAC7F,OAAO,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,yHAAyH;IACzH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iHAAiH;IACjH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,oBAAoB,GAAG,6BAA6B,GAAG;IAC1D,SAAS,EAAE,iBAAiB,CAAC;CAC9B,GAAG,qBAAqB,CAAC;AAE1B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmD;IACxF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;;IAIvD,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAKjD,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAKvD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI;IAKtE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,GAAG,IAAI;IAKzE,oEAAoE;IACpE,OAAO,CAAC,UAAU;IASX,mBAAmB,CACxB,oBAAoB,EAChB,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAChC,yBAAyB,GACzB,yBAAyB,EAAE,EAC/B,IAAI,EAAE,oBAAoB,GACzB,qBAAqB,EAAE,GAAG,SAAS;IAC/B,mBAAmB,CACxB,oBAAoB,EAChB,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAChC,wBAAwB,GACxB,wBAAwB,EAAE,EAC9B,IAAI,CAAC,EAAE,6BAA6B,GACnC,qBAAqB,EAAE,GAAG,SAAS;IAqR/B,UAAU,CACf,oBAAoB,EAChB,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAChC,yBAAyB,GACzB,yBAAyB,EAAE,EAC/B,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,SAAS;IACvC,UAAU,CACf,oBAAoB,EAChB,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,GAChC,wBAAwB,GACxB,wBAAwB,EAAE,EAC9B,IAAI,CAAC,EAAE,6BAA6B,GACnC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,SAAS;CA8B/C"}
@@ -10,7 +10,7 @@ function isPColumnValues(value) {
10
10
  if (value.length === 0)
11
11
  return true;
12
12
  const first = value[0];
13
- return typeof first === 'object' && first !== null && 'key' in first && 'val' in first;
13
+ return typeof first === "object" && first !== null && "key" in first && "val" in first;
14
14
  }
15
15
  /**
16
16
  * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.
@@ -21,7 +21,7 @@ class ArrayColumnProvider {
21
21
  this.columns = columns;
22
22
  }
23
23
  selectColumns(selectors) {
24
- const predicate = typeof selectors === 'function' ? selectors : selectorsToPredicate(selectors);
24
+ const predicate = typeof selectors === "function" ? selectors : selectorsToPredicate(selectors);
25
25
  // Filter based on spec, ignoring data type for now
26
26
  return this.columns.filter((column) => predicate(column.spec));
27
27
  }
@@ -48,33 +48,39 @@ function fallbackIdDeriver(originalId, axisFilters) {
48
48
  }
49
49
  /** Checks if a selector object uses any anchor properties */
50
50
  function hasAnchors(selector) {
51
- if (!selector || typeof selector !== 'object')
51
+ if (!selector || typeof selector !== "object")
52
52
  return false;
53
53
  const potentialAnchored = selector;
54
- const domainHasAnchors = potentialAnchored['domain'] && typeof potentialAnchored['domain'] === 'object' && Object.values(potentialAnchored['domain']).some((v) => typeof v === 'object' && v !== null && 'anchor' in v);
55
- const axesHaveAnchors = potentialAnchored['axes'] && Array.isArray(potentialAnchored['axes']) && potentialAnchored['axes'].some((a) => typeof a === 'object' && a !== null && 'anchor' in a);
56
- return !!potentialAnchored['domainAnchor'] || domainHasAnchors || axesHaveAnchors;
54
+ const domainHasAnchors = potentialAnchored["domain"] &&
55
+ typeof potentialAnchored["domain"] === "object" &&
56
+ Object.values(potentialAnchored["domain"]).some((v) => typeof v === "object" && v !== null && "anchor" in v);
57
+ const axesHaveAnchors = potentialAnchored["axes"] &&
58
+ Array.isArray(potentialAnchored["axes"]) &&
59
+ potentialAnchored["axes"].some((a) => typeof a === "object" && a !== null && "anchor" in a);
60
+ return !!potentialAnchored["domainAnchor"] || domainHasAnchors || axesHaveAnchors;
57
61
  }
58
62
  /**
59
- * Derives the indices of axes marked for splitting based on the selector.
60
- * Throws an error if splitting is requested alongside `partialAxesMatch`.
61
- */
63
+ * Derives the indices of axes marked for splitting based on the selector.
64
+ * Throws an error if splitting is requested alongside `partialAxesMatch`.
65
+ */
62
66
  function getSplitAxisIndices(selector) {
63
- if (typeof selector !== 'object' || !('axes' in selector) || selector.axes === undefined) {
67
+ if (typeof selector !== "object" || !("axes" in selector) || selector.axes === undefined) {
64
68
  return []; // No axes specified or not an object selector, no splitting
65
69
  }
66
70
  const splitIndices = selector.axes
67
- .map((axis, index) => (typeof axis === 'object' && 'split' in axis && axis.split === true) ? index : -1)
71
+ .map((axis, index) => typeof axis === "object" && "split" in axis && axis.split === true ? index : -1)
68
72
  .filter((index) => index !== -1);
69
73
  if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {
70
- throw new Error('Axis splitting is not supported when `partialAxesMatch` is defined.');
74
+ throw new Error("Axis splitting is not supported when `partialAxesMatch` is defined.");
71
75
  }
72
76
  splitIndices.sort((a, b) => a - b);
73
77
  return splitIndices;
74
78
  }
75
79
  class PColumnCollection {
76
80
  defaultProviderStore = [];
77
- providers = [new ArrayColumnProvider(this.defaultProviderStore)];
81
+ providers = [
82
+ new ArrayColumnProvider(this.defaultProviderStore),
83
+ ];
78
84
  axisLabelProviders = [];
79
85
  constructor() { }
80
86
  addColumnProvider(provider) {
@@ -103,18 +109,19 @@ class PColumnCollection {
103
109
  return undefined;
104
110
  }
105
111
  getUniversalEntries(predicateOrSelectors, opts) {
106
- const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};
112
+ const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false, } = opts ?? {};
107
113
  const labelOps = {
108
- ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),
109
- ...(rawLabelOps ?? {}),
114
+ ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false
115
+ ? { includeNativeLabel: true }
116
+ : {}),
117
+ ...rawLabelOps,
110
118
  };
111
119
  let excludePredicate = () => false;
112
120
  if (exclude) {
113
- const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])
114
- .map((selector) => {
121
+ const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {
115
122
  if (hasAnchors(selector)) {
116
123
  if (!anchorCtx)
117
- throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');
124
+ throw new Error("Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.");
118
125
  return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));
119
126
  }
120
127
  else
@@ -122,7 +129,7 @@ class PColumnCollection {
122
129
  });
123
130
  excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));
124
131
  }
125
- const selectorsArray = typeof predicateOrSelectors === 'function'
132
+ const selectorsArray = typeof predicateOrSelectors === "function"
126
133
  ? [predicateOrSelectors]
127
134
  : Array.isArray(predicateOrSelectors)
128
135
  ? predicateOrSelectors
@@ -134,7 +141,7 @@ class PColumnCollection {
134
141
  let currentSelector;
135
142
  if (usesAnchors) {
136
143
  if (!anchorCtx)
137
- throw new Error('Anchored selectors require an AnchoredIdDeriver to be provided in options.');
144
+ throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");
138
145
  currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector, opts);
139
146
  }
140
147
  else
@@ -179,14 +186,13 @@ class PColumnCollection {
179
186
  const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];
180
187
  if (maxSplitIdx >= dataEntries.partitionKeyLength)
181
188
  throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);
182
- const axesLabels = splitAxisIdxs
183
- .map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));
189
+ const axesLabels = splitAxisIdxs.map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));
184
190
  const keyCombinations = [];
185
191
  const generateCombinations = (currentCombo, sAxisIdx) => {
186
192
  if (sAxisIdx >= splitAxisIdxs.length) {
187
193
  keyCombinations.push([...currentCombo]);
188
194
  if (keyCombinations.length > 10000)
189
- throw new Error('Too many key combinations, aborting.');
195
+ throw new Error("Too many key combinations, aborting.");
190
196
  return;
191
197
  }
192
198
  const axisIdx = splitAxisIdxs[sAxisIdx];
@@ -222,7 +228,7 @@ class PColumnCollection {
222
228
  return { axisIdx, axisId, value: value, label };
223
229
  });
224
230
  intermediateResults.push({
225
- type: 'split',
231
+ type: "split",
226
232
  originalColumn: column,
227
233
  spec: originalSpec,
228
234
  adjustedSpec,
@@ -233,7 +239,7 @@ class PColumnCollection {
233
239
  }
234
240
  else {
235
241
  intermediateResults.push({
236
- type: 'direct',
242
+ type: "direct",
237
243
  originalColumn: column,
238
244
  spec: originalSpec,
239
245
  adjustedSpec: originalSpec,
@@ -245,12 +251,12 @@ class PColumnCollection {
245
251
  return [];
246
252
  const labeledResults = deriveLabels(intermediateResults, (entry) => ({
247
253
  spec: entry.spec,
248
- suffixTrace: entry.type === 'split' ? splitFiltersToTrace(entry.axisFilters) : undefined,
254
+ suffixTrace: entry.type === "split" ? splitFiltersToTrace(entry.axisFilters) : undefined,
249
255
  }), labelOps);
250
256
  const result = [];
251
257
  for (const { value: entry, label } of labeledResults) {
252
258
  const { originalColumn, spec: originalSpec } = entry;
253
- const axisFilters = entry.type === 'split' ? entry.axisFilters : undefined;
259
+ const axisFilters = entry.type === "split" ? entry.axisFilters : undefined;
254
260
  const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);
255
261
  let finalId;
256
262
  if (anchorCtx)
@@ -262,7 +268,7 @@ class PColumnCollection {
262
268
  finalSpec = {
263
269
  ...finalSpec,
264
270
  annotations: {
265
- ...(finalSpec.annotations ?? {}),
271
+ ...finalSpec.annotations,
266
272
  [Annotation.Label]: label,
267
273
  },
268
274
  };
@@ -270,7 +276,7 @@ class PColumnCollection {
270
276
  result.push({
271
277
  id: finalId,
272
278
  spec: finalSpec,
273
- data: () => entry.type === 'split'
279
+ data: () => entry.type === "split"
274
280
  ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple))
275
281
  : entry.originalColumn.data,
276
282
  label: label,
@@ -291,10 +297,11 @@ class PColumnCollection {
291
297
  // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;
292
298
  const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);
293
299
  // search all columns that includes at least one of additional axes;
294
- const availableByLinkersColumns = this.getUniversalEntries((spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {
295
- const columnAxisId = getAxisId(columnAxisSpec);
296
- return availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));
297
- }), { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude });
300
+ const availableByLinkersColumns = this.getUniversalEntries((spec) => !isLinkerColumn(spec) &&
301
+ spec.axesSpec.some((columnAxisSpec) => {
302
+ const columnAxisId = getAxisId(columnAxisSpec);
303
+ return availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));
304
+ }), { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude });
298
305
  if (availableByLinkersColumns) {
299
306
  result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));
300
307
  }
@@ -304,7 +311,7 @@ class PColumnCollection {
304
311
  getColumns(predicateOrSelectors, opts) {
305
312
  const entries = this.getUniversalEntries(predicateOrSelectors, {
306
313
  overrideLabelAnnotation: true, // default for getColumns
307
- ...(opts ?? {}),
314
+ ...opts,
308
315
  });
309
316
  if (!entries)
310
317
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"column_collection.js","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AnchoredPColumnSelector,\n AxisFilterByIdx,\n AxisFilterValue,\n AxisId,\n NativePObjectId,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PObjectId,\n ResolveAnchorsOptions,\n SUniversalPColumnId,\n} from '@milaboratories/pl-model-common';\nimport {\n Annotation,\n canonicalizeAxisId,\n deriveNativeId,\n entriesToDataInfo,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n isPartitionedDataInfoEntries,\n isPColumnSpec,\n LinkerMap,\n matchAxisId,\n resolveAnchors,\n selectorsToPredicate,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport type { Optional } from 'utility-types';\nimport type { TreeNodeAccessor } from '../accessor';\nimport type { PColumnDataUniversal } from '../api';\nimport { filterDataInfoEntries } from './axis_filtering';\nimport type { LabelDerivationOps, TraceEntry } from './label';\nimport { deriveLabels } from './label';\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data';\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === 'object' && first !== null && 'key' in first && 'val' in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]):\n PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === 'function' ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> => predicate(column.spec));\n }\n}\n\n/** Lazy calculates the data, returns undefined if data is not ready. */\nexport type PColumnLazyWithLabel<T> = PColumnLazy<T> & {\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {\n id: SUniversalPColumnId;\n};\n\n/** @deprecated Use PColumnLazyWithLabel instead. */\nexport type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {\n label: string;\n};\n\n/** @deprecated Use PColumnLazyUniversal instead. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: 'split';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: 'direct';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== 'object') return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors = potentialAnchored['domain'] && typeof potentialAnchored['domain'] === 'object' && Object.values(potentialAnchored['domain']).some((v: unknown) => typeof v === 'object' && v !== null && 'anchor' in v);\n const axesHaveAnchors = potentialAnchored['axes'] && Array.isArray(potentialAnchored['axes']) && potentialAnchored['axes'].some((a: unknown) => typeof a === 'object' && a !== null && 'anchor' in a);\n return !!potentialAnchored['domainAnchor'] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean)): number[] {\n if (typeof selector !== 'object' || !('axes' in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) => (typeof axis === 'object' && 'split' in axis && axis.split === true) ? index : -1)\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error('Axis splitting is not supported when `partialAxesMatch` is defined.');\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n /** If true, resulting columns will be enriched by other columns considering linker columns. Default is false. */\n enrichByLinkers?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [new ArrayColumnProvider(this.defaultProviderStore)];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),\n ...(rawLabelOps ?? {}),\n };\n\n let excludePredicate: ((spec: PColumnSpec) => boolean) = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])\n .map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else\n return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray = typeof predicateOrSelectors === 'function'\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error('Anchored selectors require an AnchoredIdDeriver to be provided in options.');\n currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector as AnchoredPColumnSelector, opts);\n } else\n currentSelector = rawSelector as PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId))\n continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs\n .map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error('Too many key combinations, aborting.');\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0)\n continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: 'split',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: 'direct',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === 'split' ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === 'split' ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...(finalSpec.annotations ?? {}),\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () => entry.type === 'split'\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n const ids = new Set(result.map((entry) => entry.id));\n\n if (enrichByLinkers && anchorCtx) {\n const linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n if (linkers.length === 0) {\n return result;\n };\n\n const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\n // loose way of matching\n function matchAxisIdFn(linkerKeyId: AxisId, sourceAxisId: AxisId): boolean {\n return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n }\n // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;\n const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);\n\n // search all columns that includes at least one of additional axes;\n const availableByLinkersColumns = this.getUniversalEntries(\n (spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {\n const columnAxisId = getAxisId(columnAxisSpec);\n return availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));\n }),\n { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude },\n );\n if (availableByLinkersColumns) {\n result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n }\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...(opts ?? {}),\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column_collection.js","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AnchoredPColumnSelector,\n AxisFilterByIdx,\n AxisFilterValue,\n AxisId,\n NativePObjectId,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PObjectId,\n ResolveAnchorsOptions,\n SUniversalPColumnId,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeAxisId,\n deriveNativeId,\n entriesToDataInfo,\n getAxisId,\n getColumnIdAndSpec,\n isLinkerColumn,\n isPartitionedDataInfoEntries,\n isPColumnSpec,\n LinkerMap,\n matchAxisId,\n resolveAnchors,\n selectorsToPredicate,\n} from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type { Optional } from \"utility-types\";\nimport type { TreeNodeAccessor } from \"../accessor\";\nimport type { PColumnDataUniversal } from \"../api\";\nimport { filterDataInfoEntries } from \"./axis_filtering\";\nimport type { LabelDerivationOps, TraceEntry } from \"./label\";\nimport { deriveLabels } from \"./label\";\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from \"./pcolumn_data\";\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from \"./split_selectors\";\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === \"object\" && first !== null && \"key\" in first && \"val\" in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(\n selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],\n ): PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === \"function\" ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> =>\n predicate(column.spec),\n );\n }\n}\n\n/** Lazy calculates the data, returns undefined if data is not ready. */\nexport type PColumnLazyWithLabel<T> = PColumnLazy<T> & {\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {\n id: SUniversalPColumnId;\n};\n\n/** @deprecated Use PColumnLazyWithLabel instead. */\nexport type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {\n label: string;\n};\n\n/** @deprecated Use PColumnLazyUniversal instead. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: \"split\";\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: \"direct\";\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== \"object\") return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors =\n potentialAnchored[\"domain\"] &&\n typeof potentialAnchored[\"domain\"] === \"object\" &&\n Object.values(potentialAnchored[\"domain\"]).some(\n (v: unknown) => typeof v === \"object\" && v !== null && \"anchor\" in v,\n );\n const axesHaveAnchors =\n potentialAnchored[\"axes\"] &&\n Array.isArray(potentialAnchored[\"axes\"]) &&\n potentialAnchored[\"axes\"].some(\n (a: unknown) => typeof a === \"object\" && a !== null && \"anchor\" in a,\n );\n return !!potentialAnchored[\"domainAnchor\"] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(\n selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean),\n): number[] {\n if (typeof selector !== \"object\" || !(\"axes\" in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) =>\n typeof axis === \"object\" && \"split\" in axis && axis.split === true ? index : -1,\n )\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error(\"Axis splitting is not supported when `partialAxesMatch` is defined.\");\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n /** If true, resulting columns will be enriched by other columns considering linker columns. Default is false. */\n enrichByLinkers?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [\n new ArrayColumnProvider(this.defaultProviderStore),\n ];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts,\n ): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | PColumnSelectorWithSplit\n | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver,\n ): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, \"anchorCtx\">,\n ): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const {\n anchorCtx,\n labelOps: rawLabelOps,\n dontWaitAllData = false,\n overrideLabelAnnotation = false,\n exclude,\n enrichByLinkers = false,\n } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false\n ? { includeNativeLabel: true }\n : {}),\n ...rawLabelOps,\n };\n\n let excludePredicate: (spec: PColumnSpec) => boolean = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error(\n \"Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.\",\n );\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray =\n typeof predicateOrSelectors === \"function\"\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error(\n \"Anchored selectors require an AnchoredIdDeriver to be provided in options.\",\n );\n currentSelector = resolveAnchors(\n anchorCtx.anchors,\n rawSelector as AnchoredPColumnSelector,\n opts,\n );\n } else\n currentSelector = rawSelector as\n | PColumnSelectorWithSplit\n | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(\n `Duplicate column id ${col.id} in provider ${provider.constructor.name}`,\n );\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId)) continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(\n `Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`,\n );\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(\n `Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`,\n );\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(\n `Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`,\n );\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs.map(\n (idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])),\n );\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error(\"Too many key combinations, aborting.\");\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(\n `Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`,\n );\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0) continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: \"split\",\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: \"direct\",\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === \"split\" ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === \"split\" ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...finalSpec.annotations,\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () =>\n entry.type === \"split\"\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n const ids = new Set(result.map((entry) => entry.id));\n\n if (enrichByLinkers && anchorCtx) {\n const linkers = result.filter((entry) => isLinkerColumn(entry.spec));\n if (linkers.length === 0) {\n return result;\n }\n\n const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);\n const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));\n\n // loose way of matching\n function matchAxisIdFn(linkerKeyId: AxisId, sourceAxisId: AxisId): boolean {\n return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);\n }\n // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;\n const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(\n anchorAxes,\n matchAxisIdFn,\n );\n\n // search all columns that includes at least one of additional axes;\n const availableByLinkersColumns = this.getUniversalEntries(\n (spec) =>\n !isLinkerColumn(spec) &&\n spec.axesSpec.some((columnAxisSpec) => {\n const columnAxisId = getAxisId(columnAxisSpec);\n return availableByLinkersAxes.some((axis) =>\n matchAxisIdFn(getAxisId(axis), columnAxisId),\n );\n }),\n { anchorCtx, labelOps, dontWaitAllData, overrideLabelAnnotation, exclude },\n );\n if (availableByLinkersColumns) {\n result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));\n }\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts,\n ): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | PColumnSelectorWithSplit\n | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver,\n ): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors:\n | ((spec: PColumnSpec) => boolean)\n | APColumnSelectorWithSplit\n | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, \"anchorCtx\">,\n ): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...opts,\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export * from './pcolumn_data';
2
- export * from './label';
3
- export * from './axis_filtering';
4
- export * from './column_collection';
1
+ export * from "./pcolumn_data";
2
+ export * from "./label";
3
+ export * from "./axis_filtering";
4
+ export * from "./column_collection";
5
5
  //# sourceMappingURL=index.d.ts.map