@platforma-sdk/model 1.58.5 → 1.58.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +43 -0
  2. package/dist/_virtual/_rolldown/runtime.js +18 -0
  3. package/dist/annotations/converter.cjs +15 -20
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts +6 -2
  6. package/dist/annotations/converter.js +14 -18
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -0
  9. package/dist/annotations/index.d.ts +2 -3
  10. package/dist/annotations/index.js +1 -0
  11. package/dist/annotations/types.d.ts +21 -16
  12. package/dist/bconfig/index.cjs +2 -0
  13. package/dist/bconfig/index.d.ts +5 -6
  14. package/dist/bconfig/index.js +2 -0
  15. package/dist/bconfig/lambdas.d.ts +52 -52
  16. package/dist/bconfig/normalization.cjs +13 -18
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts +10 -6
  19. package/dist/bconfig/normalization.js +12 -16
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +4 -3
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +10 -5
  24. package/dist/bconfig/types.js +4 -2
  25. package/dist/bconfig/types.js.map +1 -1
  26. package/dist/bconfig/util.d.ts +7 -4
  27. package/dist/bconfig/v3.d.ts +10 -6
  28. package/dist/block_api_v1.d.ts +62 -58
  29. package/dist/block_api_v2.d.ts +51 -47
  30. package/dist/block_api_v3.d.ts +33 -29
  31. package/dist/block_migrations.cjs +481 -413
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts +258 -204
  34. package/dist/block_migrations.js +482 -408
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +312 -343
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +143 -147
  39. package/dist/block_model.js +312 -341
  40. package/dist/block_model.js.map +1 -1
  41. package/dist/block_model_legacy.cjs +231 -255
  42. package/dist/block_model_legacy.cjs.map +1 -1
  43. package/dist/block_model_legacy.d.ts +108 -106
  44. package/dist/block_model_legacy.js +231 -253
  45. package/dist/block_model_legacy.js.map +1 -1
  46. package/dist/block_state_patch.d.ts +10 -10
  47. package/dist/block_state_util.cjs +15 -19
  48. package/dist/block_state_util.cjs.map +1 -1
  49. package/dist/block_state_util.d.ts +14 -13
  50. package/dist/block_state_util.js +15 -18
  51. package/dist/block_state_util.js.map +1 -1
  52. package/dist/block_storage.cjs +233 -238
  53. package/dist/block_storage.cjs.map +1 -1
  54. package/dist/block_storage.d.ts +62 -78
  55. package/dist/block_storage.js +234 -237
  56. package/dist/block_storage.js.map +1 -1
  57. package/dist/block_storage_callbacks.cjs +156 -195
  58. package/dist/block_storage_callbacks.cjs.map +1 -1
  59. package/dist/block_storage_callbacks.js +156 -192
  60. package/dist/block_storage_callbacks.js.map +1 -1
  61. package/dist/block_storage_facade.cjs +29 -85
  62. package/dist/block_storage_facade.cjs.map +1 -1
  63. package/dist/block_storage_facade.d.ts +83 -126
  64. package/dist/block_storage_facade.js +29 -83
  65. package/dist/block_storage_facade.js.map +1 -1
  66. package/dist/components/PFrameForGraphs.cjs +26 -24
  67. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  68. package/dist/components/PFrameForGraphs.d.ts +12 -7
  69. package/dist/components/PFrameForGraphs.js +25 -22
  70. package/dist/components/PFrameForGraphs.js.map +1 -1
  71. package/dist/components/PlAnnotations/filter.d.ts +62 -79
  72. package/dist/components/PlAnnotations/filters_ui.cjs +135 -171
  73. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  74. package/dist/components/PlAnnotations/filters_ui.d.ts +48 -46
  75. package/dist/components/PlAnnotations/filters_ui.js +135 -170
  76. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  77. package/dist/components/PlAnnotations/index.d.ts +2 -3
  78. package/dist/components/PlDataTable/index.cjs +2 -0
  79. package/dist/components/PlDataTable/index.d.ts +3 -5
  80. package/dist/components/PlDataTable/index.js +2 -0
  81. package/dist/components/PlDataTable/labels.cjs +59 -81
  82. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  83. package/dist/components/PlDataTable/labels.js +58 -79
  84. package/dist/components/PlDataTable/labels.js.map +1 -1
  85. package/dist/components/PlDataTable/state-migration.cjs +186 -144
  86. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  87. package/dist/components/PlDataTable/state-migration.d.ts +85 -82
  88. package/dist/components/PlDataTable/state-migration.js +185 -142
  89. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  90. package/dist/components/PlDataTable/table.cjs +172 -194
  91. package/dist/components/PlDataTable/table.cjs.map +1 -1
  92. package/dist/components/PlDataTable/table.d.ts +16 -12
  93. package/dist/components/PlDataTable/table.js +171 -192
  94. package/dist/components/PlDataTable/table.js.map +1 -1
  95. package/dist/components/PlDataTable/v4.d.ts +84 -119
  96. package/dist/components/PlDataTable/v5.d.ts +80 -103
  97. package/dist/components/PlMultiSequenceAlignment.cjs +27 -29
  98. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  99. package/dist/components/PlMultiSequenceAlignment.d.ts +36 -27
  100. package/dist/components/PlMultiSequenceAlignment.js +26 -27
  101. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  102. package/dist/components/PlSelectionModel.cjs +7 -6
  103. package/dist/components/PlSelectionModel.cjs.map +1 -1
  104. package/dist/components/PlSelectionModel.d.ts +10 -8
  105. package/dist/components/PlSelectionModel.js +7 -5
  106. package/dist/components/PlSelectionModel.js.map +1 -1
  107. package/dist/components/index.cjs +8 -0
  108. package/dist/components/index.d.ts +11 -6
  109. package/dist/components/index.js +8 -0
  110. package/dist/config/actions.cjs +138 -171
  111. package/dist/config/actions.cjs.map +1 -1
  112. package/dist/config/actions.d.ts +47 -47
  113. package/dist/config/actions.js +146 -178
  114. package/dist/config/actions.js.map +1 -1
  115. package/dist/config/actions_kinds.d.ts +114 -121
  116. package/dist/config/index.cjs +1 -0
  117. package/dist/config/index.d.ts +6 -7
  118. package/dist/config/index.js +1 -0
  119. package/dist/config/model.d.ts +131 -127
  120. package/dist/config/model_meta.d.ts +4 -1
  121. package/dist/config/type_engine.d.ts +22 -21
  122. package/dist/config/type_util.d.ts +12 -10
  123. package/dist/env_value.cjs +5 -6
  124. package/dist/env_value.cjs.map +1 -1
  125. package/dist/env_value.d.ts +4 -1
  126. package/dist/env_value.js +5 -5
  127. package/dist/env_value.js.map +1 -1
  128. package/dist/filters/converters/filterToQuery.cjs +273 -239
  129. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  130. package/dist/filters/converters/filterToQuery.d.ts +6 -2
  131. package/dist/filters/converters/filterToQuery.js +272 -237
  132. package/dist/filters/converters/filterToQuery.js.map +1 -1
  133. package/dist/filters/converters/filterUiToExpressionImpl.cjs +56 -85
  134. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  135. package/dist/filters/converters/filterUiToExpressionImpl.d.ts +8 -4
  136. package/dist/filters/converters/filterUiToExpressionImpl.js +55 -83
  137. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  138. package/dist/filters/converters/index.cjs +2 -0
  139. package/dist/filters/converters/index.d.ts +2 -3
  140. package/dist/filters/converters/index.js +2 -0
  141. package/dist/filters/distill.cjs +59 -60
  142. package/dist/filters/distill.cjs.map +1 -1
  143. package/dist/filters/distill.d.ts +6 -3
  144. package/dist/filters/distill.js +58 -58
  145. package/dist/filters/distill.js.map +1 -1
  146. package/dist/filters/index.cjs +4 -0
  147. package/dist/filters/index.d.ts +5 -4
  148. package/dist/filters/index.js +4 -0
  149. package/dist/filters/traverse.cjs +31 -40
  150. package/dist/filters/traverse.cjs.map +1 -1
  151. package/dist/filters/traverse.js +31 -39
  152. package/dist/filters/traverse.js.map +1 -1
  153. package/dist/filters/types.d.ts +10 -7
  154. package/dist/index.cjs +193 -187
  155. package/dist/index.d.ts +61 -28
  156. package/dist/index.js +49 -41
  157. package/dist/internal.cjs +48 -62
  158. package/dist/internal.cjs.map +1 -1
  159. package/dist/internal.js +49 -60
  160. package/dist/internal.js.map +1 -1
  161. package/dist/package.cjs +12 -0
  162. package/dist/package.cjs.map +1 -0
  163. package/dist/package.js +6 -0
  164. package/dist/package.js.map +1 -0
  165. package/dist/pframe.cjs +32 -37
  166. package/dist/pframe.cjs.map +1 -1
  167. package/dist/pframe.d.ts +14 -10
  168. package/dist/pframe.js +32 -35
  169. package/dist/pframe.js.map +1 -1
  170. package/dist/pframe_utils/axes.cjs +81 -114
  171. package/dist/pframe_utils/axes.cjs.map +1 -1
  172. package/dist/pframe_utils/axes.d.ts +10 -13
  173. package/dist/pframe_utils/axes.js +80 -112
  174. package/dist/pframe_utils/axes.js.map +1 -1
  175. package/dist/pframe_utils/columns.cjs +61 -81
  176. package/dist/pframe_utils/columns.cjs.map +1 -1
  177. package/dist/pframe_utils/columns.d.ts +15 -6
  178. package/dist/pframe_utils/columns.js +60 -79
  179. package/dist/pframe_utils/columns.js.map +1 -1
  180. package/dist/pframe_utils/index.cjs +232 -253
  181. package/dist/pframe_utils/index.cjs.map +1 -1
  182. package/dist/pframe_utils/index.d.ts +39 -35
  183. package/dist/pframe_utils/index.js +231 -251
  184. package/dist/pframe_utils/index.js.map +1 -1
  185. package/dist/platforma.d.ts +48 -46
  186. package/dist/plugin_handle.cjs +6 -14
  187. package/dist/plugin_handle.cjs.map +1 -1
  188. package/dist/plugin_handle.d.ts +20 -25
  189. package/dist/plugin_handle.js +6 -13
  190. package/dist/plugin_handle.js.map +1 -1
  191. package/dist/plugin_model.cjs +364 -163
  192. package/dist/plugin_model.cjs.map +1 -1
  193. package/dist/plugin_model.d.ts +280 -129
  194. package/dist/plugin_model.js +362 -163
  195. package/dist/plugin_model.js.map +1 -1
  196. package/dist/raw_globals.cjs +10 -22
  197. package/dist/raw_globals.cjs.map +1 -1
  198. package/dist/raw_globals.d.ts +8 -5
  199. package/dist/raw_globals.js +10 -20
  200. package/dist/raw_globals.js.map +1 -1
  201. package/dist/ref_util.cjs +14 -13
  202. package/dist/ref_util.cjs.map +1 -1
  203. package/dist/ref_util.d.ts +18 -12
  204. package/dist/ref_util.js +14 -11
  205. package/dist/ref_util.js.map +1 -1
  206. package/dist/render/accessor.cjs +213 -226
  207. package/dist/render/accessor.cjs.map +1 -1
  208. package/dist/render/accessor.d.ts +115 -120
  209. package/dist/render/accessor.js +212 -224
  210. package/dist/render/accessor.js.map +1 -1
  211. package/dist/render/api.cjs +478 -580
  212. package/dist/render/api.cjs.map +1 -1
  213. package/dist/render/api.d.ts +207 -209
  214. package/dist/render/api.js +476 -578
  215. package/dist/render/api.js.map +1 -1
  216. package/dist/render/future.cjs +28 -32
  217. package/dist/render/future.cjs.map +1 -1
  218. package/dist/render/future.d.ts +15 -11
  219. package/dist/render/future.js +28 -30
  220. package/dist/render/future.js.map +1 -1
  221. package/dist/render/index.cjs +8 -0
  222. package/dist/render/index.d.ts +10 -8
  223. package/dist/render/index.js +8 -0
  224. package/dist/render/internal.cjs +33 -29
  225. package/dist/render/internal.cjs.map +1 -1
  226. package/dist/render/internal.d.ts +78 -72
  227. package/dist/render/internal.js +29 -26
  228. package/dist/render/internal.js.map +1 -1
  229. package/dist/render/traversal_ops.d.ts +42 -43
  230. package/dist/render/util/axis_filtering.cjs +63 -86
  231. package/dist/render/util/axis_filtering.cjs.map +1 -1
  232. package/dist/render/util/axis_filtering.d.ts +10 -7
  233. package/dist/render/util/axis_filtering.js +63 -85
  234. package/dist/render/util/axis_filtering.js.map +1 -1
  235. package/dist/render/util/column_collection.cjs +266 -321
  236. package/dist/render/util/column_collection.cjs.map +1 -1
  237. package/dist/render/util/column_collection.d.ts +47 -47
  238. package/dist/render/util/column_collection.js +264 -319
  239. package/dist/render/util/column_collection.js.map +1 -1
  240. package/dist/render/util/index.cjs +4 -0
  241. package/dist/render/util/index.d.ts +4 -5
  242. package/dist/render/util/index.js +4 -0
  243. package/dist/render/util/label.cjs +129 -163
  244. package/dist/render/util/label.cjs.map +1 -1
  245. package/dist/render/util/label.d.ts +45 -46
  246. package/dist/render/util/label.js +128 -161
  247. package/dist/render/util/label.js.map +1 -1
  248. package/dist/render/util/pcolumn_data.cjs +315 -375
  249. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  250. package/dist/render/util/pcolumn_data.d.ts +33 -32
  251. package/dist/render/util/pcolumn_data.js +314 -373
  252. package/dist/render/util/pcolumn_data.js.map +1 -1
  253. package/dist/render/util/pframe_upgraders.cjs +37 -42
  254. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  255. package/dist/render/util/pframe_upgraders.js +37 -41
  256. package/dist/render/util/pframe_upgraders.js.map +1 -1
  257. package/dist/render/util/split_selectors.d.ts +13 -9
  258. package/dist/version.cjs +6 -8
  259. package/dist/version.cjs.map +1 -1
  260. package/dist/version.d.ts +7 -4
  261. package/dist/version.js +5 -5
  262. package/dist/version.js.map +1 -1
  263. package/package.json +10 -4
  264. package/src/block_migrations.test.ts +184 -14
  265. package/src/block_migrations.ts +185 -30
  266. package/src/block_model.ts +111 -66
  267. package/src/block_storage.test.ts +147 -3
  268. package/src/block_storage.ts +43 -8
  269. package/src/block_storage_callbacks.ts +9 -4
  270. package/src/env_value.ts +0 -2
  271. package/src/index.ts +12 -11
  272. package/src/internal.ts +0 -1
  273. package/src/platforma.ts +4 -4
  274. package/src/plugin_handle.ts +1 -1
  275. package/src/plugin_model.test.ts +217 -21
  276. package/src/plugin_model.ts +450 -55
  277. package/src/raw_globals.ts +0 -1
  278. package/dist/annotations/converter.d.ts.map +0 -1
  279. package/dist/annotations/index.d.ts.map +0 -1
  280. package/dist/annotations/types.d.ts.map +0 -1
  281. package/dist/bconfig/index.d.ts.map +0 -1
  282. package/dist/bconfig/lambdas.d.ts.map +0 -1
  283. package/dist/bconfig/normalization.d.ts.map +0 -1
  284. package/dist/bconfig/types.d.ts.map +0 -1
  285. package/dist/bconfig/util.d.ts.map +0 -1
  286. package/dist/bconfig/v3.d.ts.map +0 -1
  287. package/dist/block_api_v1.d.ts.map +0 -1
  288. package/dist/block_api_v2.d.ts.map +0 -1
  289. package/dist/block_api_v3.d.ts.map +0 -1
  290. package/dist/block_migrations.d.ts.map +0 -1
  291. package/dist/block_model.d.ts.map +0 -1
  292. package/dist/block_model_legacy.d.ts.map +0 -1
  293. package/dist/block_state_patch.d.ts.map +0 -1
  294. package/dist/block_state_util.d.ts.map +0 -1
  295. package/dist/block_storage.d.ts.map +0 -1
  296. package/dist/block_storage_callbacks.d.ts +0 -115
  297. package/dist/block_storage_callbacks.d.ts.map +0 -1
  298. package/dist/block_storage_facade.d.ts.map +0 -1
  299. package/dist/components/PFrameForGraphs.d.ts.map +0 -1
  300. package/dist/components/PlAnnotations/filter.d.ts.map +0 -1
  301. package/dist/components/PlAnnotations/filters_ui.d.ts.map +0 -1
  302. package/dist/components/PlAnnotations/index.d.ts.map +0 -1
  303. package/dist/components/PlAnnotations/types.d.ts +0 -3
  304. package/dist/components/PlAnnotations/types.d.ts.map +0 -1
  305. package/dist/components/PlDataTable/index.d.ts.map +0 -1
  306. package/dist/components/PlDataTable/labels.d.ts +0 -7
  307. package/dist/components/PlDataTable/labels.d.ts.map +0 -1
  308. package/dist/components/PlDataTable/state-migration.d.ts.map +0 -1
  309. package/dist/components/PlDataTable/table.d.ts.map +0 -1
  310. package/dist/components/PlDataTable/v4.d.ts.map +0 -1
  311. package/dist/components/PlDataTable/v5.d.ts.map +0 -1
  312. package/dist/components/PlMultiSequenceAlignment.d.ts.map +0 -1
  313. package/dist/components/PlSelectionModel.d.ts.map +0 -1
  314. package/dist/components/index.d.ts.map +0 -1
  315. package/dist/config/actions.d.ts.map +0 -1
  316. package/dist/config/actions_kinds.d.ts.map +0 -1
  317. package/dist/config/index.d.ts.map +0 -1
  318. package/dist/config/model.d.ts.map +0 -1
  319. package/dist/config/model_meta.d.ts.map +0 -1
  320. package/dist/config/type_engine.d.ts.map +0 -1
  321. package/dist/config/type_util.d.ts.map +0 -1
  322. package/dist/env_value.d.ts.map +0 -1
  323. package/dist/filters/converters/filterToQuery.d.ts.map +0 -1
  324. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +0 -1
  325. package/dist/filters/converters/index.d.ts.map +0 -1
  326. package/dist/filters/distill.d.ts.map +0 -1
  327. package/dist/filters/index.d.ts.map +0 -1
  328. package/dist/filters/traverse.d.ts +0 -27
  329. package/dist/filters/traverse.d.ts.map +0 -1
  330. package/dist/filters/types.d.ts.map +0 -1
  331. package/dist/index.cjs.map +0 -1
  332. package/dist/index.d.ts.map +0 -1
  333. package/dist/index.js.map +0 -1
  334. package/dist/internal.d.ts +0 -36
  335. package/dist/internal.d.ts.map +0 -1
  336. package/dist/package.json.cjs +0 -6
  337. package/dist/package.json.cjs.map +0 -1
  338. package/dist/package.json.js +0 -4
  339. package/dist/package.json.js.map +0 -1
  340. package/dist/pframe.d.ts.map +0 -1
  341. package/dist/pframe_utils/axes.d.ts.map +0 -1
  342. package/dist/pframe_utils/columns.d.ts.map +0 -1
  343. package/dist/pframe_utils/index.d.ts.map +0 -1
  344. package/dist/pframe_utils/querySpec.d.ts +0 -2
  345. package/dist/pframe_utils/querySpec.d.ts.map +0 -1
  346. package/dist/platforma.d.ts.map +0 -1
  347. package/dist/plugin_handle.d.ts.map +0 -1
  348. package/dist/plugin_model.d.ts.map +0 -1
  349. package/dist/raw_globals.d.ts.map +0 -1
  350. package/dist/ref_util.d.ts.map +0 -1
  351. package/dist/render/accessor.d.ts.map +0 -1
  352. package/dist/render/api.d.ts.map +0 -1
  353. package/dist/render/future.d.ts.map +0 -1
  354. package/dist/render/index.d.ts.map +0 -1
  355. package/dist/render/internal.d.ts.map +0 -1
  356. package/dist/render/traversal_ops.d.ts.map +0 -1
  357. package/dist/render/util/axis_filtering.d.ts.map +0 -1
  358. package/dist/render/util/column_collection.d.ts.map +0 -1
  359. package/dist/render/util/index.d.ts.map +0 -1
  360. package/dist/render/util/label.d.ts.map +0 -1
  361. package/dist/render/util/pcolumn_data.d.ts.map +0 -1
  362. package/dist/render/util/pframe_upgraders.d.ts +0 -3
  363. package/dist/render/util/pframe_upgraders.d.ts.map +0 -1
  364. package/dist/render/util/split_selectors.d.ts.map +0 -1
  365. package/dist/version.d.ts.map +0 -1
@@ -1,337 +1,282 @@
1
- import { selectorsToPredicate, resolveAnchors, deriveNativeId, isPColumnSpec, isPartitionedDataInfoEntries, getAxisId, Annotation, entriesToDataInfo, isLinkerColumn, LinkerMap, getColumnIdAndSpec, matchAxisId, canonicalizeAxisId } from '@milaboratories/pl-model-common';
2
- import canonicalize from 'canonicalize';
3
- import { filterDataInfoEntries } from './axis_filtering.js';
4
- import { deriveLabels } from './label.js';
5
- import { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data.js';
1
+ import { filterDataInfoEntries } from "./axis_filtering.js";
2
+ import { deriveLabels } from "./label.js";
3
+ import { convertOrParsePColumnData, getUniquePartitionKeys } from "./pcolumn_data.js";
4
+ import { Annotation, LinkerMap, canonicalizeAxisId, deriveNativeId, entriesToDataInfo, getAxisId, getColumnIdAndSpec, isLinkerColumn, isPColumnSpec, isPartitionedDataInfoEntries, matchAxisId, resolveAnchors, selectorsToPredicate } from "@milaboratories/pl-model-common";
5
+ import canonicalize from "canonicalize";
6
6
 
7
+ //#region src/render/util/column_collection.ts
7
8
  function isPColumnValues(value) {
8
- if (!Array.isArray(value))
9
- return false;
10
- if (value.length === 0)
11
- return true;
12
- const first = value[0];
13
- return typeof first === "object" && first !== null && "key" in first && "val" in first;
9
+ if (!Array.isArray(value)) return false;
10
+ if (value.length === 0) return true;
11
+ const first = value[0];
12
+ return typeof first === "object" && first !== null && "key" in first && "val" in first;
14
13
  }
15
14
  /**
16
- * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.
17
- */
18
- class ArrayColumnProvider {
19
- columns;
20
- constructor(columns) {
21
- this.columns = columns;
22
- }
23
- selectColumns(selectors) {
24
- const predicate = typeof selectors === "function" ? selectors : selectorsToPredicate(selectors);
25
- // Filter based on spec, ignoring data type for now
26
- return this.columns.filter((column) => predicate(column.spec));
27
- }
28
- }
15
+ * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.
16
+ */
17
+ var ArrayColumnProvider = class {
18
+ constructor(columns) {
19
+ this.columns = columns;
20
+ }
21
+ selectColumns(selectors) {
22
+ const predicate = typeof selectors === "function" ? selectors : selectorsToPredicate(selectors);
23
+ return this.columns.filter((column) => predicate(column.spec));
24
+ }
25
+ };
29
26
  function splitFiltersToTrace(splitFilters) {
30
- if (!splitFilters)
31
- return undefined;
32
- return splitFilters.map((filter) => ({
33
- type: `split:${canonicalizeAxisId(filter.axisId)}`,
34
- label: filter.label,
35
- importance: 1_000_000, // High importance for split filters in labels
36
- }));
27
+ if (!splitFilters) return void 0;
28
+ return splitFilters.map((filter) => ({
29
+ type: `split:${canonicalizeAxisId(filter.axisId)}`,
30
+ label: filter.label,
31
+ importance: 1e6
32
+ }));
37
33
  }
38
34
  function splitFiltersToAxisFilter(splitFilters) {
39
- if (!splitFilters)
40
- return undefined;
41
- return splitFilters.map((filter) => [filter.axisIdx, filter.value]);
35
+ if (!splitFilters) return void 0;
36
+ return splitFilters.map((filter) => [filter.axisIdx, filter.value]);
42
37
  }
43
38
  function fallbackIdDeriver(originalId, axisFilters) {
44
- if (!axisFilters || axisFilters.length === 0)
45
- return originalId;
46
- const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);
47
- return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize });
39
+ if (!axisFilters || axisFilters.length === 0) return originalId;
40
+ return canonicalize({
41
+ id: originalId,
42
+ axisFilters: [...axisFilters].sort((a, b) => a[0] - b[0])
43
+ });
48
44
  }
49
45
  /** Checks if a selector object uses any anchor properties */
50
46
  function hasAnchors(selector) {
51
- if (!selector || typeof selector !== "object")
52
- return false;
53
- const potentialAnchored = selector;
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;
47
+ if (!selector || typeof selector !== "object") return false;
48
+ const potentialAnchored = selector;
49
+ const domainHasAnchors = potentialAnchored["domain"] && typeof potentialAnchored["domain"] === "object" && Object.values(potentialAnchored["domain"]).some((v) => typeof v === "object" && v !== null && "anchor" in v);
50
+ const axesHaveAnchors = potentialAnchored["axes"] && Array.isArray(potentialAnchored["axes"]) && potentialAnchored["axes"].some((a) => typeof a === "object" && a !== null && "anchor" in a);
51
+ return !!potentialAnchored["domainAnchor"] || domainHasAnchors || axesHaveAnchors;
61
52
  }
62
53
  /**
63
- * Derives the indices of axes marked for splitting based on the selector.
64
- * Throws an error if splitting is requested alongside `partialAxesMatch`.
65
- */
54
+ * Derives the indices of axes marked for splitting based on the selector.
55
+ * Throws an error if splitting is requested alongside `partialAxesMatch`.
56
+ */
66
57
  function getSplitAxisIndices(selector) {
67
- if (typeof selector !== "object" || !("axes" in selector) || selector.axes === undefined) {
68
- return []; // No axes specified or not an object selector, no splitting
69
- }
70
- const splitIndices = selector.axes
71
- .map((axis, index) => typeof axis === "object" && "split" in axis && axis.split === true ? index : -1)
72
- .filter((index) => index !== -1);
73
- if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {
74
- throw new Error("Axis splitting is not supported when `partialAxesMatch` is defined.");
75
- }
76
- splitIndices.sort((a, b) => a - b);
77
- return splitIndices;
78
- }
79
- class PColumnCollection {
80
- defaultProviderStore = [];
81
- providers = [
82
- new ArrayColumnProvider(this.defaultProviderStore),
83
- ];
84
- axisLabelProviders = [];
85
- constructor() { }
86
- addColumnProvider(provider) {
87
- this.providers.push(provider);
88
- return this;
89
- }
90
- addAxisLabelProvider(provider) {
91
- this.axisLabelProviders.push(provider);
92
- return this;
93
- }
94
- addColumns(columns) {
95
- this.defaultProviderStore.push(...columns);
96
- return this;
97
- }
98
- addColumn(column) {
99
- this.defaultProviderStore.push(column);
100
- return this;
101
- }
102
- /** Fetches labels for a given axis from the registered providers */
103
- findLabels(axis) {
104
- for (const provider of this.axisLabelProviders) {
105
- const labels = provider.findLabels(axis);
106
- if (labels)
107
- return labels; // First provider wins
108
- }
109
- return undefined;
110
- }
111
- getUniversalEntries(predicateOrSelectors, opts) {
112
- const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false, } = opts ?? {};
113
- const labelOps = {
114
- ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false
115
- ? { includeNativeLabel: true }
116
- : {}),
117
- ...rawLabelOps,
118
- };
119
- let excludePredicate = () => false;
120
- if (exclude) {
121
- const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {
122
- if (hasAnchors(selector)) {
123
- if (!anchorCtx)
124
- throw new Error("Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.");
125
- return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));
126
- }
127
- else
128
- return selectorsToPredicate(selector);
129
- });
130
- excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));
131
- }
132
- const selectorsArray = typeof predicateOrSelectors === "function"
133
- ? [predicateOrSelectors]
134
- : Array.isArray(predicateOrSelectors)
135
- ? predicateOrSelectors
136
- : [predicateOrSelectors];
137
- const intermediateResults = [];
138
- const selectedNativeIds = new Set();
139
- for (const rawSelector of selectorsArray) {
140
- const usesAnchors = hasAnchors(rawSelector);
141
- let currentSelector;
142
- if (usesAnchors) {
143
- if (!anchorCtx)
144
- throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");
145
- currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector, opts);
146
- }
147
- else
148
- currentSelector = rawSelector;
149
- const selectedIds = new Set();
150
- const selectedColumns = [];
151
- for (const provider of this.providers) {
152
- const providerColumns = provider.selectColumns(currentSelector);
153
- for (const col of providerColumns) {
154
- if (excludePredicate(col.spec))
155
- continue;
156
- if (selectedIds.has(col.id))
157
- throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);
158
- const nativeId = deriveNativeId(col.spec);
159
- if (selectedNativeIds.has(nativeId))
160
- continue;
161
- selectedIds.add(col.id);
162
- selectedNativeIds.add(nativeId);
163
- selectedColumns.push(col);
164
- }
165
- }
166
- if (selectedColumns.length === 0)
167
- continue;
168
- const splitAxisIdxs = getSplitAxisIndices(rawSelector);
169
- const needsSplitting = splitAxisIdxs.length > 0;
170
- for (const column of selectedColumns) {
171
- if (!isPColumnSpec(column.spec))
172
- continue;
173
- const originalSpec = column.spec;
174
- if (needsSplitting) {
175
- if (isPColumnValues(column.data))
176
- throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);
177
- const dataEntries = convertOrParsePColumnData(column.data);
178
- if (!dataEntries) {
179
- if (dontWaitAllData)
180
- continue;
181
- return undefined;
182
- }
183
- if (!isPartitionedDataInfoEntries(dataEntries))
184
- throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);
185
- const uniqueKeys = getUniquePartitionKeys(dataEntries);
186
- const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];
187
- if (maxSplitIdx >= dataEntries.partitionKeyLength)
188
- throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);
189
- const axesLabels = splitAxisIdxs.map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));
190
- const keyCombinations = [];
191
- const generateCombinations = (currentCombo, sAxisIdx) => {
192
- if (sAxisIdx >= splitAxisIdxs.length) {
193
- keyCombinations.push([...currentCombo]);
194
- if (keyCombinations.length > 10000)
195
- throw new Error("Too many key combinations, aborting.");
196
- return;
197
- }
198
- const axisIdx = splitAxisIdxs[sAxisIdx];
199
- if (axisIdx >= uniqueKeys.length)
200
- throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);
201
- const axisValues = uniqueKeys[axisIdx];
202
- if (!axisValues || axisValues.length === 0) {
203
- keyCombinations.length = 0; // No combinations possible if one axis has no keys
204
- return;
205
- }
206
- for (const val of axisValues) {
207
- currentCombo.push(val);
208
- generateCombinations(currentCombo, sAxisIdx + 1);
209
- currentCombo.pop();
210
- }
211
- };
212
- generateCombinations([], 0);
213
- if (keyCombinations.length === 0)
214
- continue;
215
- const newAxesSpec = [...originalSpec.axesSpec];
216
- const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup
217
- // Remove axes in reverse order to maintain correct indices during removal
218
- for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {
219
- newAxesSpec.splice(splitAxisIdxs[i], 1);
220
- }
221
- const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };
222
- for (const keyCombo of keyCombinations) {
223
- const splitFilters = keyCombo.map((value, sAxisIdx) => {
224
- const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup
225
- const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);
226
- const axisLabelMap = axesLabels[sAxisIdx];
227
- const label = axisLabelMap?.[value] ?? String(value);
228
- return { axisIdx, axisId, value: value, label };
229
- });
230
- intermediateResults.push({
231
- type: "split",
232
- originalColumn: column,
233
- spec: originalSpec,
234
- adjustedSpec,
235
- dataEntries,
236
- axisFilters: splitFilters,
237
- });
238
- }
239
- }
240
- else {
241
- intermediateResults.push({
242
- type: "direct",
243
- originalColumn: column,
244
- spec: originalSpec,
245
- adjustedSpec: originalSpec,
246
- });
247
- }
248
- }
249
- }
250
- if (intermediateResults.length === 0)
251
- return [];
252
- const labeledResults = deriveLabels(intermediateResults, (entry) => ({
253
- spec: entry.spec,
254
- suffixTrace: entry.type === "split" ? splitFiltersToTrace(entry.axisFilters) : undefined,
255
- }), labelOps);
256
- const result = [];
257
- for (const { value: entry, label } of labeledResults) {
258
- const { originalColumn, spec: originalSpec } = entry;
259
- const axisFilters = entry.type === "split" ? entry.axisFilters : undefined;
260
- const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);
261
- let finalId;
262
- if (anchorCtx)
263
- finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);
264
- else
265
- finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);
266
- let finalSpec = { ...entry.adjustedSpec };
267
- if (overrideLabelAnnotation) {
268
- finalSpec = {
269
- ...finalSpec,
270
- annotations: {
271
- ...finalSpec.annotations,
272
- [Annotation.Label]: label,
273
- },
274
- };
275
- }
276
- result.push({
277
- id: finalId,
278
- spec: finalSpec,
279
- data: () => entry.type === "split"
280
- ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple))
281
- : entry.originalColumn.data,
282
- label: label,
283
- });
284
- }
285
- const ids = new Set(result.map((entry) => entry.id));
286
- if (enrichByLinkers && anchorCtx) {
287
- const linkers = result.filter((entry) => isLinkerColumn(entry.spec));
288
- if (linkers.length === 0) {
289
- return result;
290
- }
291
- const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);
292
- const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));
293
- // loose way of matching
294
- function matchAxisIdFn(linkerKeyId, sourceAxisId) {
295
- return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);
296
- }
297
- // search all axes that can be reached by linkers from anchor axes; anchor axes are not in this list;
298
- const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);
299
- // search all columns that includes at least one of additional axes;
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 });
305
- if (availableByLinkersColumns) {
306
- result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));
307
- }
308
- }
309
- return result;
310
- }
311
- getColumns(predicateOrSelectors, opts) {
312
- const entries = this.getUniversalEntries(predicateOrSelectors, {
313
- overrideLabelAnnotation: true, // default for getColumns
314
- ...opts,
315
- });
316
- if (!entries)
317
- return undefined;
318
- const columns = [];
319
- for (const entry of entries) {
320
- const data = entry.data();
321
- if (!data) {
322
- if (opts?.dontWaitAllData)
323
- continue;
324
- return undefined;
325
- }
326
- columns.push({
327
- id: entry.id,
328
- spec: entry.spec,
329
- data,
330
- });
331
- }
332
- return columns;
333
- }
58
+ if (typeof selector !== "object" || !("axes" in selector) || selector.axes === void 0) return [];
59
+ const splitIndices = selector.axes.map((axis, index) => typeof axis === "object" && "split" in axis && axis.split === true ? index : -1).filter((index) => index !== -1);
60
+ if (splitIndices.length > 0 && selector.partialAxesMatch !== void 0) throw new Error("Axis splitting is not supported when `partialAxesMatch` is defined.");
61
+ splitIndices.sort((a, b) => a - b);
62
+ return splitIndices;
334
63
  }
64
+ var PColumnCollection = class {
65
+ defaultProviderStore = [];
66
+ providers = [new ArrayColumnProvider(this.defaultProviderStore)];
67
+ axisLabelProviders = [];
68
+ constructor() {}
69
+ addColumnProvider(provider) {
70
+ this.providers.push(provider);
71
+ return this;
72
+ }
73
+ addAxisLabelProvider(provider) {
74
+ this.axisLabelProviders.push(provider);
75
+ return this;
76
+ }
77
+ addColumns(columns) {
78
+ this.defaultProviderStore.push(...columns);
79
+ return this;
80
+ }
81
+ addColumn(column) {
82
+ this.defaultProviderStore.push(column);
83
+ return this;
84
+ }
85
+ /** Fetches labels for a given axis from the registered providers */
86
+ findLabels(axis) {
87
+ for (const provider of this.axisLabelProviders) {
88
+ const labels = provider.findLabels(axis);
89
+ if (labels) return labels;
90
+ }
91
+ }
92
+ getUniversalEntries(predicateOrSelectors, opts) {
93
+ const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude, enrichByLinkers = false } = opts ?? {};
94
+ const labelOps = {
95
+ ...overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {},
96
+ ...rawLabelOps
97
+ };
98
+ let excludePredicate = () => false;
99
+ if (exclude) {
100
+ const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude]).map((selector) => {
101
+ if (hasAnchors(selector)) {
102
+ if (!anchorCtx) throw new Error("Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.");
103
+ return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));
104
+ } else return selectorsToPredicate(selector);
105
+ });
106
+ excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));
107
+ }
108
+ const selectorsArray = typeof predicateOrSelectors === "function" ? [predicateOrSelectors] : Array.isArray(predicateOrSelectors) ? predicateOrSelectors : [predicateOrSelectors];
109
+ const intermediateResults = [];
110
+ const selectedNativeIds = /* @__PURE__ */ new Set();
111
+ for (const rawSelector of selectorsArray) {
112
+ const usesAnchors = hasAnchors(rawSelector);
113
+ let currentSelector;
114
+ if (usesAnchors) {
115
+ if (!anchorCtx) throw new Error("Anchored selectors require an AnchoredIdDeriver to be provided in options.");
116
+ currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector, opts);
117
+ } else currentSelector = rawSelector;
118
+ const selectedIds = /* @__PURE__ */ new Set();
119
+ const selectedColumns = [];
120
+ for (const provider of this.providers) {
121
+ const providerColumns = provider.selectColumns(currentSelector);
122
+ for (const col of providerColumns) {
123
+ if (excludePredicate(col.spec)) continue;
124
+ if (selectedIds.has(col.id)) throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);
125
+ const nativeId = deriveNativeId(col.spec);
126
+ if (selectedNativeIds.has(nativeId)) continue;
127
+ selectedIds.add(col.id);
128
+ selectedNativeIds.add(nativeId);
129
+ selectedColumns.push(col);
130
+ }
131
+ }
132
+ if (selectedColumns.length === 0) continue;
133
+ const splitAxisIdxs = getSplitAxisIndices(rawSelector);
134
+ const needsSplitting = splitAxisIdxs.length > 0;
135
+ for (const column of selectedColumns) {
136
+ if (!isPColumnSpec(column.spec)) continue;
137
+ const originalSpec = column.spec;
138
+ if (needsSplitting) {
139
+ if (isPColumnValues(column.data)) throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);
140
+ const dataEntries = convertOrParsePColumnData(column.data);
141
+ if (!dataEntries) {
142
+ if (dontWaitAllData) continue;
143
+ return;
144
+ }
145
+ if (!isPartitionedDataInfoEntries(dataEntries)) throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);
146
+ const uniqueKeys = getUniquePartitionKeys(dataEntries);
147
+ const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];
148
+ if (maxSplitIdx >= dataEntries.partitionKeyLength) throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);
149
+ const axesLabels = splitAxisIdxs.map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));
150
+ const keyCombinations = [];
151
+ const generateCombinations = (currentCombo, sAxisIdx) => {
152
+ if (sAxisIdx >= splitAxisIdxs.length) {
153
+ keyCombinations.push([...currentCombo]);
154
+ if (keyCombinations.length > 1e4) throw new Error("Too many key combinations, aborting.");
155
+ return;
156
+ }
157
+ const axisIdx = splitAxisIdxs[sAxisIdx];
158
+ if (axisIdx >= uniqueKeys.length) throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);
159
+ const axisValues = uniqueKeys[axisIdx];
160
+ if (!axisValues || axisValues.length === 0) {
161
+ keyCombinations.length = 0;
162
+ return;
163
+ }
164
+ for (const val of axisValues) {
165
+ currentCombo.push(val);
166
+ generateCombinations(currentCombo, sAxisIdx + 1);
167
+ currentCombo.pop();
168
+ }
169
+ };
170
+ generateCombinations([], 0);
171
+ if (keyCombinations.length === 0) continue;
172
+ const newAxesSpec = [...originalSpec.axesSpec];
173
+ const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx);
174
+ for (let i = splitAxisIdxs.length - 1; i >= 0; i--) newAxesSpec.splice(splitAxisIdxs[i], 1);
175
+ const adjustedSpec = {
176
+ ...originalSpec,
177
+ axesSpec: newAxesSpec
178
+ };
179
+ for (const keyCombo of keyCombinations) {
180
+ const splitFilters = keyCombo.map((value, sAxisIdx) => {
181
+ const axisIdx = splitAxisOriginalIdxs[sAxisIdx];
182
+ return {
183
+ axisIdx,
184
+ axisId: getAxisId(originalSpec.axesSpec[axisIdx]),
185
+ value,
186
+ label: axesLabels[sAxisIdx]?.[value] ?? String(value)
187
+ };
188
+ });
189
+ intermediateResults.push({
190
+ type: "split",
191
+ originalColumn: column,
192
+ spec: originalSpec,
193
+ adjustedSpec,
194
+ dataEntries,
195
+ axisFilters: splitFilters
196
+ });
197
+ }
198
+ } else intermediateResults.push({
199
+ type: "direct",
200
+ originalColumn: column,
201
+ spec: originalSpec,
202
+ adjustedSpec: originalSpec
203
+ });
204
+ }
205
+ }
206
+ if (intermediateResults.length === 0) return [];
207
+ const labeledResults = deriveLabels(intermediateResults, (entry) => ({
208
+ spec: entry.spec,
209
+ suffixTrace: entry.type === "split" ? splitFiltersToTrace(entry.axisFilters) : void 0
210
+ }), labelOps);
211
+ const result = [];
212
+ for (const { value: entry, label } of labeledResults) {
213
+ const { originalColumn, spec: originalSpec } = entry;
214
+ const axisFiltersTuple = splitFiltersToAxisFilter(entry.type === "split" ? entry.axisFilters : void 0);
215
+ let finalId;
216
+ if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);
217
+ else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);
218
+ let finalSpec = { ...entry.adjustedSpec };
219
+ if (overrideLabelAnnotation) finalSpec = {
220
+ ...finalSpec,
221
+ annotations: {
222
+ ...finalSpec.annotations,
223
+ [Annotation.Label]: label
224
+ }
225
+ };
226
+ result.push({
227
+ id: finalId,
228
+ spec: finalSpec,
229
+ data: () => entry.type === "split" ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple)) : entry.originalColumn.data,
230
+ label
231
+ });
232
+ }
233
+ const ids = new Set(result.map((entry) => entry.id));
234
+ if (enrichByLinkers && anchorCtx) {
235
+ const linkers = result.filter((entry) => isLinkerColumn(entry.spec));
236
+ if (linkers.length === 0) return result;
237
+ const anchorAxes = Object.values(anchorCtx.anchors).flatMap((anchor) => anchor.axesSpec);
238
+ const linkerMap = LinkerMap.fromColumns(linkers.map(getColumnIdAndSpec));
239
+ function matchAxisIdFn(linkerKeyId, sourceAxisId) {
240
+ return matchAxisId(linkerKeyId, sourceAxisId) || matchAxisId(sourceAxisId, linkerKeyId);
241
+ }
242
+ const availableByLinkersAxes = linkerMap.getReachableByLinkersAxesFromAxes(anchorAxes, matchAxisIdFn);
243
+ const availableByLinkersColumns = this.getUniversalEntries((spec) => !isLinkerColumn(spec) && spec.axesSpec.some((columnAxisSpec) => {
244
+ const columnAxisId = getAxisId(columnAxisSpec);
245
+ return availableByLinkersAxes.some((axis) => matchAxisIdFn(getAxisId(axis), columnAxisId));
246
+ }), {
247
+ anchorCtx,
248
+ labelOps,
249
+ dontWaitAllData,
250
+ overrideLabelAnnotation,
251
+ exclude
252
+ });
253
+ if (availableByLinkersColumns) result.push(...availableByLinkersColumns.filter((entry) => !ids.has(entry.id)));
254
+ }
255
+ return result;
256
+ }
257
+ getColumns(predicateOrSelectors, opts) {
258
+ const entries = this.getUniversalEntries(predicateOrSelectors, {
259
+ overrideLabelAnnotation: true,
260
+ ...opts
261
+ });
262
+ if (!entries) return void 0;
263
+ const columns = [];
264
+ for (const entry of entries) {
265
+ const data = entry.data();
266
+ if (!data) {
267
+ if (opts?.dontWaitAllData) continue;
268
+ return;
269
+ }
270
+ columns.push({
271
+ id: entry.id,
272
+ spec: entry.spec,
273
+ data
274
+ });
275
+ }
276
+ return columns;
277
+ }
278
+ };
335
279
 
280
+ //#endregion
336
281
  export { PColumnCollection };
337
- //# sourceMappingURL=column_collection.js.map
282
+ //# sourceMappingURL=column_collection.js.map