@platforma-sdk/model 1.63.1 → 1.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +12 -22
  2. package/dist/_virtual/_rolldown/runtime.js +6 -11
  3. package/dist/annotations/converter.cjs +4 -5
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts.map +1 -0
  6. package/dist/annotations/converter.js +1 -2
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -1
  9. package/dist/annotations/index.js +1 -1
  10. package/dist/annotations/types.d.ts +0 -1
  11. package/dist/annotations/types.d.ts.map +1 -0
  12. package/dist/bconfig/index.cjs +2 -2
  13. package/dist/bconfig/index.js +2 -2
  14. package/dist/bconfig/lambdas.d.ts +0 -1
  15. package/dist/bconfig/lambdas.d.ts.map +1 -0
  16. package/dist/bconfig/normalization.cjs +4 -5
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts.map +1 -0
  19. package/dist/bconfig/normalization.js +1 -2
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +1 -2
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +0 -1
  24. package/dist/bconfig/types.d.ts.map +1 -0
  25. package/dist/bconfig/types.js +1 -1
  26. package/dist/bconfig/util.d.ts.map +1 -0
  27. package/dist/bconfig/v3.d.ts.map +1 -0
  28. package/dist/block_api_v1.d.ts.map +1 -0
  29. package/dist/block_api_v2.d.ts.map +1 -0
  30. package/dist/block_api_v3.d.ts.map +1 -0
  31. package/dist/block_migrations.cjs +2 -3
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts.map +1 -0
  34. package/dist/block_migrations.js +1 -2
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +16 -17
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +0 -2
  39. package/dist/block_model.d.ts.map +1 -0
  40. package/dist/block_model.js +4 -5
  41. package/dist/block_model.js.map +1 -1
  42. package/dist/block_model_legacy.cjs +10 -11
  43. package/dist/block_model_legacy.cjs.map +1 -1
  44. package/dist/block_model_legacy.d.ts +0 -3
  45. package/dist/block_model_legacy.d.ts.map +1 -0
  46. package/dist/block_model_legacy.js +1 -2
  47. package/dist/block_model_legacy.js.map +1 -1
  48. package/dist/block_state_patch.d.ts.map +1 -0
  49. package/dist/block_state_util.cjs +1 -2
  50. package/dist/block_state_util.cjs.map +1 -1
  51. package/dist/block_state_util.d.ts.map +1 -0
  52. package/dist/block_state_util.js +1 -1
  53. package/dist/block_state_util.js.map +1 -1
  54. package/dist/block_storage.cjs +5 -12
  55. package/dist/block_storage.cjs.map +1 -1
  56. package/dist/block_storage.d.ts.map +1 -0
  57. package/dist/block_storage.js +5 -11
  58. package/dist/block_storage.js.map +1 -1
  59. package/dist/block_storage_callbacks.cjs +4 -5
  60. package/dist/block_storage_callbacks.cjs.map +1 -1
  61. package/dist/block_storage_callbacks.js +3 -4
  62. package/dist/block_storage_callbacks.js.map +1 -1
  63. package/dist/block_storage_facade.cjs +2 -3
  64. package/dist/block_storage_facade.cjs.map +1 -1
  65. package/dist/block_storage_facade.d.ts +0 -1
  66. package/dist/block_storage_facade.d.ts.map +1 -0
  67. package/dist/block_storage_facade.js +1 -2
  68. package/dist/block_storage_facade.js.map +1 -1
  69. package/dist/columns/column_collection_builder.cjs +111 -99
  70. package/dist/columns/column_collection_builder.cjs.map +1 -1
  71. package/dist/columns/column_collection_builder.d.ts +13 -12
  72. package/dist/columns/column_collection_builder.d.ts.map +1 -0
  73. package/dist/columns/column_collection_builder.js +108 -96
  74. package/dist/columns/column_collection_builder.js.map +1 -1
  75. package/dist/columns/column_selector.cjs +9 -82
  76. package/dist/columns/column_selector.cjs.map +1 -1
  77. package/dist/columns/column_selector.d.ts +6 -14
  78. package/dist/columns/column_selector.d.ts.map +1 -0
  79. package/dist/columns/column_selector.js +7 -78
  80. package/dist/columns/column_selector.js.map +1 -1
  81. package/dist/columns/column_snapshot.cjs +4 -5
  82. package/dist/columns/column_snapshot.cjs.map +1 -1
  83. package/dist/columns/column_snapshot.d.ts +3 -3
  84. package/dist/columns/column_snapshot.d.ts.map +1 -0
  85. package/dist/columns/column_snapshot.js +4 -4
  86. package/dist/columns/column_snapshot.js.map +1 -1
  87. package/dist/columns/column_snapshot_provider.cjs +2 -3
  88. package/dist/columns/column_snapshot_provider.cjs.map +1 -1
  89. package/dist/columns/column_snapshot_provider.d.ts +8 -8
  90. package/dist/columns/column_snapshot_provider.d.ts.map +1 -0
  91. package/dist/columns/column_snapshot_provider.js +2 -2
  92. package/dist/columns/column_snapshot_provider.js.map +1 -1
  93. package/dist/columns/ctx_column_sources.cjs +3 -4
  94. package/dist/columns/ctx_column_sources.cjs.map +1 -1
  95. package/dist/columns/ctx_column_sources.d.ts +2 -2
  96. package/dist/columns/ctx_column_sources.d.ts.map +1 -0
  97. package/dist/columns/ctx_column_sources.js +1 -2
  98. package/dist/columns/ctx_column_sources.js.map +1 -1
  99. package/dist/columns/expand_by_partition.cjs +106 -0
  100. package/dist/columns/expand_by_partition.cjs.map +1 -0
  101. package/dist/columns/expand_by_partition.d.ts +33 -0
  102. package/dist/columns/expand_by_partition.d.ts.map +1 -0
  103. package/dist/columns/expand_by_partition.js +105 -0
  104. package/dist/columns/expand_by_partition.js.map +1 -0
  105. package/dist/columns/index.cjs +6 -5
  106. package/dist/columns/index.d.ts +4 -3
  107. package/dist/columns/index.js +6 -5
  108. package/dist/components/PFrameForGraphs.cjs +4 -5
  109. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  110. package/dist/components/PFrameForGraphs.d.ts +0 -1
  111. package/dist/components/PFrameForGraphs.d.ts.map +1 -0
  112. package/dist/components/PFrameForGraphs.js +2 -3
  113. package/dist/components/PFrameForGraphs.js.map +1 -1
  114. package/dist/components/PlAnnotations/filter.d.ts.map +1 -0
  115. package/dist/components/PlAnnotations/filters_ui.cjs +1 -2
  116. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  117. package/dist/components/PlAnnotations/filters_ui.d.ts +0 -2
  118. package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -0
  119. package/dist/components/PlAnnotations/filters_ui.js +1 -1
  120. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  121. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +26 -0
  122. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -0
  123. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +25 -0
  124. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -0
  125. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +68 -0
  126. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -0
  127. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +67 -0
  128. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -0
  129. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +28 -18
  130. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  131. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +4 -1
  132. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -0
  133. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +22 -12
  134. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  135. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +262 -181
  136. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  137. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +37 -23
  138. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -0
  139. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +261 -177
  140. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  141. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +64 -0
  142. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -0
  143. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -0
  144. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -0
  145. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +63 -0
  146. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -0
  147. package/dist/components/PlDataTable/createPlDataTable/index.cjs +4 -4
  148. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  149. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
  150. package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -0
  151. package/dist/components/PlDataTable/createPlDataTable/index.js +3 -3
  152. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  153. package/dist/components/PlDataTable/createPlDataTable/utils.cjs +109 -0
  154. package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -0
  155. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +19 -0
  156. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -0
  157. package/dist/components/PlDataTable/createPlDataTable/utils.js +102 -0
  158. package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -0
  159. package/dist/components/PlDataTable/createPlDataTableSheet.cjs +1 -2
  160. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  161. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +0 -1
  162. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -0
  163. package/dist/components/PlDataTable/createPlDataTableSheet.js +1 -1
  164. package/dist/components/PlDataTable/index.cjs +7 -5
  165. package/dist/components/PlDataTable/index.d.ts +4 -2
  166. package/dist/components/PlDataTable/index.js +7 -5
  167. package/dist/components/PlDataTable/labels.cjs +27 -14
  168. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  169. package/dist/components/PlDataTable/labels.js +26 -13
  170. package/dist/components/PlDataTable/labels.js.map +1 -1
  171. package/dist/components/PlDataTable/state-migration.cjs +8 -6
  172. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  173. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
  174. package/dist/components/PlDataTable/state-migration.js +5 -3
  175. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  176. package/dist/components/PlDataTable/typesV4.d.ts.map +1 -0
  177. package/dist/components/PlDataTable/typesV5.d.ts +5 -5
  178. package/dist/components/PlDataTable/typesV5.d.ts.map +1 -0
  179. package/dist/components/PlMultiSequenceAlignment.cjs +2 -3
  180. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  181. package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -0
  182. package/dist/components/PlMultiSequenceAlignment.js +1 -2
  183. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  184. package/dist/components/PlSelectionModel.cjs +1 -2
  185. package/dist/components/PlSelectionModel.cjs.map +1 -1
  186. package/dist/components/PlSelectionModel.d.ts.map +1 -0
  187. package/dist/components/PlSelectionModel.js +1 -1
  188. package/dist/components/index.cjs +13 -11
  189. package/dist/components/index.d.ts +3 -3
  190. package/dist/components/index.js +12 -10
  191. package/dist/config/actions.cjs +1 -2
  192. package/dist/config/actions.cjs.map +1 -1
  193. package/dist/config/actions.d.ts.map +1 -0
  194. package/dist/config/actions.js +1 -1
  195. package/dist/config/actions_kinds.d.ts.map +1 -0
  196. package/dist/config/index.cjs +1 -1
  197. package/dist/config/index.js +1 -1
  198. package/dist/config/model.d.ts.map +1 -0
  199. package/dist/config/model_meta.d.ts.map +1 -0
  200. package/dist/config/type_engine.d.ts.map +1 -0
  201. package/dist/config/type_util.d.ts.map +1 -0
  202. package/dist/env_value.cjs +1 -2
  203. package/dist/env_value.cjs.map +1 -1
  204. package/dist/env_value.d.ts.map +1 -0
  205. package/dist/env_value.js +1 -1
  206. package/dist/env_value.js.map +1 -1
  207. package/dist/filters/converters/filterToQuery.cjs +3 -4
  208. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  209. package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
  210. package/dist/filters/converters/filterToQuery.js +1 -2
  211. package/dist/filters/converters/filterToQuery.js.map +1 -1
  212. package/dist/filters/converters/filterUiToExpressionImpl.cjs +3 -4
  213. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  214. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
  215. package/dist/filters/converters/filterUiToExpressionImpl.js +1 -2
  216. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  217. package/dist/filters/converters/index.cjs +2 -2
  218. package/dist/filters/converters/index.js +2 -2
  219. package/dist/filters/distill.cjs +3 -4
  220. package/dist/filters/distill.cjs.map +1 -1
  221. package/dist/filters/distill.d.ts.map +1 -0
  222. package/dist/filters/distill.js +1 -2
  223. package/dist/filters/distill.js.map +1 -1
  224. package/dist/filters/index.cjs +4 -4
  225. package/dist/filters/index.d.ts +0 -1
  226. package/dist/filters/index.js +3 -3
  227. package/dist/filters/traverse.cjs +1 -2
  228. package/dist/filters/traverse.cjs.map +1 -1
  229. package/dist/filters/traverse.js +1 -1
  230. package/dist/filters/traverse.js.map +1 -1
  231. package/dist/filters/types.d.ts.map +1 -0
  232. package/dist/index.cjs +89 -83
  233. package/dist/index.d.ts +8 -15
  234. package/dist/index.js +8 -9
  235. package/dist/internal.cjs +1 -2
  236. package/dist/internal.cjs.map +1 -1
  237. package/dist/internal.js +1 -1
  238. package/dist/internal.js.map +1 -1
  239. package/dist/labels/derive_distinct_labels.cjs +41 -30
  240. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  241. package/dist/labels/derive_distinct_labels.d.ts +15 -15
  242. package/dist/labels/derive_distinct_labels.d.ts.map +1 -0
  243. package/dist/labels/derive_distinct_labels.js +40 -29
  244. package/dist/labels/derive_distinct_labels.js.map +1 -1
  245. package/dist/labels/index.cjs +1 -2
  246. package/dist/labels/index.d.ts +1 -2
  247. package/dist/labels/index.js +1 -2
  248. package/dist/package.cjs +7 -8
  249. package/dist/package.js +2 -2
  250. package/dist/pframe.cjs +2 -3
  251. package/dist/pframe.cjs.map +1 -1
  252. package/dist/pframe.d.ts.map +1 -0
  253. package/dist/pframe.js +1 -2
  254. package/dist/pframe.js.map +1 -1
  255. package/dist/pframe_utils/axes.cjs +2 -3
  256. package/dist/pframe_utils/axes.cjs.map +1 -1
  257. package/dist/pframe_utils/axes.d.ts +0 -1
  258. package/dist/pframe_utils/axes.d.ts.map +1 -0
  259. package/dist/pframe_utils/axes.js +1 -2
  260. package/dist/pframe_utils/axes.js.map +1 -1
  261. package/dist/pframe_utils/columns.cjs +5 -6
  262. package/dist/pframe_utils/columns.cjs.map +1 -1
  263. package/dist/pframe_utils/columns.d.ts +0 -1
  264. package/dist/pframe_utils/columns.d.ts.map +1 -0
  265. package/dist/pframe_utils/columns.js +1 -2
  266. package/dist/pframe_utils/columns.js.map +1 -1
  267. package/dist/pframe_utils/index.cjs +3 -4
  268. package/dist/pframe_utils/index.cjs.map +1 -1
  269. package/dist/pframe_utils/index.d.ts.map +1 -0
  270. package/dist/pframe_utils/index.js +2 -3
  271. package/dist/pframe_utils/index.js.map +1 -1
  272. package/dist/platforma.d.ts.map +1 -0
  273. package/dist/plugin_handle.cjs +1 -2
  274. package/dist/plugin_handle.cjs.map +1 -1
  275. package/dist/plugin_handle.d.ts.map +1 -0
  276. package/dist/plugin_handle.js +1 -1
  277. package/dist/plugin_model.cjs +3 -4
  278. package/dist/plugin_model.cjs.map +1 -1
  279. package/dist/plugin_model.d.ts +0 -1
  280. package/dist/plugin_model.d.ts.map +1 -0
  281. package/dist/plugin_model.js +1 -2
  282. package/dist/plugin_model.js.map +1 -1
  283. package/dist/raw_globals.cjs +3 -4
  284. package/dist/raw_globals.cjs.map +1 -1
  285. package/dist/raw_globals.d.ts.map +1 -0
  286. package/dist/raw_globals.js +1 -2
  287. package/dist/raw_globals.js.map +1 -1
  288. package/dist/ref_util.cjs +3 -4
  289. package/dist/ref_util.cjs.map +1 -1
  290. package/dist/ref_util.d.ts +0 -2
  291. package/dist/ref_util.d.ts.map +1 -0
  292. package/dist/ref_util.js +1 -2
  293. package/dist/ref_util.js.map +1 -1
  294. package/dist/render/accessor.cjs +4 -5
  295. package/dist/render/accessor.cjs.map +1 -1
  296. package/dist/render/accessor.d.ts.map +1 -0
  297. package/dist/render/accessor.js +1 -2
  298. package/dist/render/accessor.js.map +1 -1
  299. package/dist/render/api.cjs +20 -14
  300. package/dist/render/api.cjs.map +1 -1
  301. package/dist/render/api.d.ts +2 -3
  302. package/dist/render/api.d.ts.map +1 -0
  303. package/dist/render/api.js +11 -5
  304. package/dist/render/api.js.map +1 -1
  305. package/dist/render/future.cjs +2 -3
  306. package/dist/render/future.cjs.map +1 -1
  307. package/dist/render/future.d.ts.map +1 -0
  308. package/dist/render/future.js +1 -2
  309. package/dist/render/future.js.map +1 -1
  310. package/dist/render/index.cjs +8 -8
  311. package/dist/render/index.d.ts +1 -2
  312. package/dist/render/index.js +7 -7
  313. package/dist/render/internal.cjs +7 -9
  314. package/dist/render/internal.cjs.map +1 -1
  315. package/dist/render/internal.d.ts.map +1 -0
  316. package/dist/render/internal.js +1 -2
  317. package/dist/render/internal.js.map +1 -1
  318. package/dist/render/traversal_ops.d.ts.map +1 -0
  319. package/dist/render/util/axis_filtering.cjs +1 -2
  320. package/dist/render/util/axis_filtering.cjs.map +1 -1
  321. package/dist/render/util/axis_filtering.d.ts.map +1 -0
  322. package/dist/render/util/axis_filtering.js +1 -1
  323. package/dist/render/util/column_collection.cjs +8 -9
  324. package/dist/render/util/column_collection.cjs.map +1 -1
  325. package/dist/render/util/column_collection.d.ts +0 -1
  326. package/dist/render/util/column_collection.d.ts.map +1 -0
  327. package/dist/render/util/column_collection.js +4 -5
  328. package/dist/render/util/column_collection.js.map +1 -1
  329. package/dist/render/util/index.cjs +4 -4
  330. package/dist/render/util/index.js +4 -4
  331. package/dist/render/util/label.cjs +4 -5
  332. package/dist/render/util/label.cjs.map +1 -1
  333. package/dist/render/util/label.d.ts.map +1 -0
  334. package/dist/render/util/label.js +3 -4
  335. package/dist/render/util/label.js.map +1 -1
  336. package/dist/render/util/pcolumn_data.cjs +9 -10
  337. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  338. package/dist/render/util/pcolumn_data.d.ts +2 -2
  339. package/dist/render/util/pcolumn_data.d.ts.map +1 -0
  340. package/dist/render/util/pcolumn_data.js +7 -8
  341. package/dist/render/util/pcolumn_data.js.map +1 -1
  342. package/dist/render/util/pframe_upgraders.cjs +1 -2
  343. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  344. package/dist/render/util/pframe_upgraders.js +1 -1
  345. package/dist/render/util/split_selectors.d.ts.map +1 -0
  346. package/dist/services/block_services.cjs +2 -3
  347. package/dist/services/block_services.cjs.map +1 -1
  348. package/dist/services/block_services.d.ts +2 -2
  349. package/dist/services/block_services.d.ts.map +1 -0
  350. package/dist/services/block_services.js +1 -2
  351. package/dist/services/block_services.js.map +1 -1
  352. package/dist/services/index.cjs +2 -2
  353. package/dist/services/index.js +2 -2
  354. package/dist/services/service_bridge.cjs +1 -2
  355. package/dist/services/service_bridge.cjs.map +1 -1
  356. package/dist/services/service_bridge.d.ts.map +1 -0
  357. package/dist/services/service_bridge.js +1 -1
  358. package/dist/services/service_resolve.d.ts.map +1 -0
  359. package/dist/version.cjs +2 -4
  360. package/dist/version.cjs.map +1 -1
  361. package/dist/version.d.ts.map +1 -0
  362. package/dist/version.js +1 -2
  363. package/dist/version.js.map +1 -1
  364. package/package.json +13 -13
  365. package/src/columns/column_collection_builder.test.ts +40 -27
  366. package/src/columns/column_collection_builder.ts +176 -131
  367. package/src/columns/column_selector.test.ts +17 -399
  368. package/src/columns/column_selector.ts +14 -127
  369. package/src/columns/column_snapshot.ts +5 -5
  370. package/src/columns/column_snapshot_provider.ts +11 -10
  371. package/src/columns/ctx_column_sources.ts +2 -2
  372. package/src/columns/expand_by_partition.test.ts +4 -4
  373. package/src/columns/expand_by_partition.ts +4 -3
  374. package/src/columns/index.ts +1 -0
  375. package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +42 -0
  376. package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +89 -0
  377. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +39 -11
  378. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +502 -313
  379. package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +122 -0
  380. package/src/components/PlDataTable/createPlDataTable/index.ts +4 -2
  381. package/src/components/PlDataTable/createPlDataTable/utils.test.ts +257 -0
  382. package/src/components/PlDataTable/createPlDataTable/utils.ts +160 -0
  383. package/src/components/PlDataTable/index.ts +13 -2
  384. package/src/components/PlDataTable/labels.ts +29 -18
  385. package/src/components/PlDataTable/state-migration.ts +3 -1
  386. package/src/components/PlDataTable/typesV5.ts +4 -4
  387. package/src/labels/derive_distinct_labels.test.ts +143 -45
  388. package/src/labels/derive_distinct_labels.ts +102 -49
  389. package/src/labels/index.ts +0 -1
  390. package/src/render/api.ts +15 -5
  391. package/src/render/util/column_collection.ts +4 -3
  392. package/src/render/util/label.ts +2 -2
  393. package/src/render/util/pcolumn_data.ts +5 -3
  394. package/dist/labels/write_labels_to_specs.cjs +0 -15
  395. package/dist/labels/write_labels_to_specs.cjs.map +0 -1
  396. package/dist/labels/write_labels_to_specs.d.ts +0 -9
  397. package/dist/labels/write_labels_to_specs.js +0 -14
  398. package/dist/labels/write_labels_to_specs.js.map +0 -1
  399. package/src/labels/write_labels_to_specs.ts +0 -12
@@ -1,3 +1,4 @@
1
+ import type { PObjectId } from "@milaboratories/pl-model-common";
1
2
  import { PColumn } from "@milaboratories/pl-model-common";
2
3
  import { TreeNodeAccessor } from "../render/accessor";
3
4
  import type { PColumnDataUniversal } from "../render/internal";
@@ -13,7 +14,7 @@ import type { ColumnDataStatus, ColumnSnapshot } from "./column_snapshot";
13
14
  */
14
15
  export interface ColumnSnapshotProvider {
15
16
  /** Returns all currently known columns. */
16
- getAllColumns(): ColumnSnapshot[];
17
+ getAllColumns(): ColumnSnapshot<PObjectId>[];
17
18
 
18
19
  /** Whether the provider has finished enumerating all its columns.
19
20
  * Calling this may mark the render context unstable — it touches
@@ -29,7 +30,7 @@ export interface ColumnSnapshotProvider {
29
30
  */
30
31
  export type ColumnSource =
31
32
  | ColumnSnapshotProvider
32
- | ColumnSnapshot[]
33
+ | ColumnSnapshot<PObjectId>[]
33
34
  | PColumn<PColumnDataUniversal | undefined>[];
34
35
 
35
36
  // --- ArrayColumnProvider ---
@@ -39,7 +40,7 @@ export type ColumnSource =
39
40
  * Always complete, data status always 'ready'.
40
41
  */
41
42
  export class ArrayColumnProvider implements ColumnSnapshotProvider {
42
- private readonly columns: ColumnSnapshot[];
43
+ private readonly columns: ColumnSnapshot<PObjectId>[];
43
44
 
44
45
  constructor(columns: PColumn<PColumnDataUniversal | undefined>[]) {
45
46
  this.columns = columns.map((col) => ({
@@ -50,7 +51,7 @@ export class ArrayColumnProvider implements ColumnSnapshotProvider {
50
51
  }));
51
52
  }
52
53
 
53
- getAllColumns(): ColumnSnapshot[] {
54
+ getAllColumns(): ColumnSnapshot<PObjectId>[] {
54
55
  return this.columns;
55
56
  }
56
57
 
@@ -66,9 +67,9 @@ export class ArrayColumnProvider implements ColumnSnapshotProvider {
66
67
  * Always complete. Data status taken from each snapshot.
67
68
  */
68
69
  export class SnapshotColumnProvider implements ColumnSnapshotProvider {
69
- constructor(private readonly snapshots: ColumnSnapshot[]) {}
70
+ constructor(private readonly snapshots: ColumnSnapshot<PObjectId>[]) {}
70
71
 
71
- getAllColumns(): ColumnSnapshot[] {
72
+ getAllColumns(): ColumnSnapshot<PObjectId>[] {
72
73
  return this.snapshots;
73
74
  }
74
75
 
@@ -94,7 +95,7 @@ export class OutputColumnProvider implements ColumnSnapshotProvider {
94
95
  private readonly opts?: OutputColumnProviderOpts,
95
96
  ) {}
96
97
 
97
- getAllColumns(): ColumnSnapshot[] {
98
+ getAllColumns(): ColumnSnapshot<PObjectId>[] {
98
99
  return this.getColumns();
99
100
  }
100
101
 
@@ -102,7 +103,7 @@ export class OutputColumnProvider implements ColumnSnapshotProvider {
102
103
  return this.accessor.getInputsLocked();
103
104
  }
104
105
 
105
- private getColumns(): ColumnSnapshot[] {
106
+ private getColumns(): ColumnSnapshot<PObjectId>[] {
106
107
  const pColumns = this.accessor.getPColumns();
107
108
  if (pColumns === undefined) return [];
108
109
 
@@ -155,7 +156,7 @@ function isPColumnArray(source: unknown): source is PColumn<PColumnDataUniversal
155
156
  }
156
157
 
157
158
  /** Checks if a value looks like a ColumnSnapshot array. */
158
- function isColumnSnapshotArray(source: unknown): source is ColumnSnapshot[] {
159
+ function isColumnSnapshotArray(source: unknown): source is ColumnSnapshot<PObjectId>[] {
159
160
  if (!Array.isArray(source)) return false;
160
161
  if (source.length === 0) return true; // empty array — treat as snapshots
161
162
  const first = source[0];
@@ -165,7 +166,7 @@ function isColumnSnapshotArray(source: unknown): source is ColumnSnapshot[] {
165
166
  /**
166
167
  * Normalize any ColumnSource into a ColumnSnapshotProvider.
167
168
  * - ColumnSnapshotProvider → returned as-is
168
- * - ColumnSnapshot[] → wrapped in SnapshotColumnProvider
169
+ * - ColumnSnapshot<PObjectId>[] → wrapped in SnapshotColumnProvider
169
170
  * - PColumn[] → wrapped in ArrayColumnProvider
170
171
  */
171
172
  export function toColumnSnapshotProvider(source: ColumnSource): ColumnSnapshotProvider {
@@ -51,7 +51,7 @@ export function collectCtxColumnSnapshotProviders<A, U, S>(
51
51
  export class ResultPoolColumnSnapshotProvider implements ColumnSnapshotProvider {
52
52
  constructor(private readonly pool: ResultPool) {}
53
53
 
54
- getAllColumns(): ColumnSnapshot[] {
54
+ getAllColumns(): ColumnSnapshot<PObjectId>[] {
55
55
  const pColumns = this.pool.selectColumns(() => true);
56
56
  return pColumns.map((col) => toSnapshot(col.id, col.spec, col.data));
57
57
  }
@@ -65,7 +65,7 @@ function toSnapshot(
65
65
  id: PObjectId,
66
66
  spec: PColumnSpec,
67
67
  accessor: TreeNodeAccessor | undefined,
68
- ): ColumnSnapshot {
68
+ ): ColumnSnapshot<PObjectId> {
69
69
  if (accessor === undefined) {
70
70
  return { id, spec, dataStatus: "absent" as ColumnDataStatus, data: undefined };
71
71
  }
@@ -32,7 +32,7 @@ function createReadySnapshot(
32
32
  columnSpec: PColumnSpec,
33
33
  partitionKeyLength: number,
34
34
  parts: { key: (string | number)[]; value: unknown }[],
35
- ): ColumnSnapshot {
35
+ ): ColumnSnapshot<PObjectId> {
36
36
  const dataEntries: JsonPartitionedDataInfoEntries<unknown> = {
37
37
  type: "JsonPartitioned",
38
38
  partitionKeyLength,
@@ -48,7 +48,7 @@ function createReadySnapshot(
48
48
  };
49
49
  }
50
50
 
51
- function createComputingSnapshot(id: string, columnSpec: PColumnSpec): ColumnSnapshot {
51
+ function createComputingSnapshot(id: string, columnSpec: PColumnSpec): ColumnSnapshot<PObjectId> {
52
52
  return {
53
53
  id: id as PObjectId,
54
54
  spec: columnSpec,
@@ -59,7 +59,7 @@ function createComputingSnapshot(id: string, columnSpec: PColumnSpec): ColumnSna
59
59
  };
60
60
  }
61
61
 
62
- function createAbsentSnapshot(id: string, columnSpec: PColumnSpec): ColumnSnapshot {
62
+ function createAbsentSnapshot(id: string, columnSpec: PColumnSpec): ColumnSnapshot<PObjectId> {
63
63
  return {
64
64
  id: id as PObjectId,
65
65
  spec: columnSpec,
@@ -74,7 +74,7 @@ interface Trace {
74
74
  importance: number;
75
75
  }
76
76
 
77
- function extractTrace(snapshot: ColumnSnapshot): Trace[] {
77
+ function extractTrace(snapshot: ColumnSnapshot<PObjectId>): Trace[] {
78
78
  const raw = snapshot.spec.annotations?.["pl7.app/trace"];
79
79
  return raw ? (JSON.parse(raw) as Trace[]) : [];
80
80
  }
@@ -3,6 +3,7 @@ import type {
3
3
  AxisFilterValue,
4
4
  AxisId,
5
5
  PartitionedDataInfoEntries,
6
+ PObjectId,
6
7
  } from "@milaboratories/pl-model-common";
7
8
  import {
8
9
  canonicalizeAxisId,
@@ -30,7 +31,7 @@ export interface ExpandByPartitionOpts {
30
31
 
31
32
  export interface ExpandByPartitionResult {
32
33
  /** Expanded snapshots (one per key combination per original snapshot). */
33
- readonly items: ColumnSnapshot[];
34
+ readonly items: ColumnSnapshot<PObjectId>[];
34
35
  /** False if any column's data was not ready for splitting. */
35
36
  readonly complete: boolean;
36
37
  }
@@ -49,7 +50,7 @@ export interface ExpandByPartitionResult {
49
50
  * is not ready (status !== 'ready' or partition data unavailable).
50
51
  */
51
52
  export function expandByPartition(
52
- snapshots: ColumnSnapshot[],
53
+ snapshots: ColumnSnapshot<PObjectId>[],
53
54
  splitAxes: SplitAxis[],
54
55
  opts?: ExpandByPartitionOpts,
55
56
  ): ExpandByPartitionResult {
@@ -58,7 +59,7 @@ export function expandByPartition(
58
59
  }
59
60
 
60
61
  const splitAxisIdxs = splitAxes.map((a) => a.idx).sort((a, b) => a - b);
61
- const result: ColumnSnapshot[] = [];
62
+ const result: ColumnSnapshot<PObjectId>[] = [];
62
63
 
63
64
  for (const snapshot of snapshots) {
64
65
  if (snapshot.dataStatus !== "ready" || snapshot.data === undefined) {
@@ -3,3 +3,4 @@ export * from "./column_snapshot_provider";
3
3
  export * from "./column_selector";
4
4
  export * from "./column_collection_builder";
5
5
  export * from "./ctx_column_sources";
6
+ export * from "./expand_by_partition";
@@ -0,0 +1,42 @@
1
+ import type {
2
+ PColumn,
3
+ PColumnIdAndSpec,
4
+ PTableSorting,
5
+ PTableDefV2,
6
+ DataInfo,
7
+ PColumnValues,
8
+ } from "@milaboratories/pl-model-common";
9
+ import { getColumnIdAndSpec } from "@milaboratories/pl-model-common";
10
+ import type { PColumnDataUniversal, TreeNodeAccessor } from "../../../render";
11
+ import { isFunction } from "es-toolkit";
12
+ import type { PlDataTableFilters } from "../typesV5";
13
+ import { createPTableDefV3 } from "./createPTableDefV3";
14
+
15
+ export function createPTableDefV2(params: {
16
+ columns: PColumn<PColumnDataUniversal>[];
17
+ labelColumns: PColumn<PColumnDataUniversal>[];
18
+ coreJoinType: "inner" | "full";
19
+ filters: null | PlDataTableFilters;
20
+ sorting: PTableSorting[];
21
+ coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;
22
+ }): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {
23
+ let coreColumns = params.columns;
24
+ const secondaryColumns: typeof params.columns = [];
25
+
26
+ if (isFunction(params.coreColumnPredicate)) {
27
+ coreColumns = [];
28
+ for (const c of params.columns)
29
+ if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);
30
+ else secondaryColumns.push(c);
31
+ }
32
+
33
+ secondaryColumns.push(...params.labelColumns);
34
+
35
+ return createPTableDefV3({
36
+ primaryColumns: coreColumns,
37
+ secondaryGroups: secondaryColumns.map((c) => [c]),
38
+ primaryJoinType: params.coreJoinType,
39
+ filters: params.filters,
40
+ sorting: params.sorting,
41
+ });
42
+ }
@@ -0,0 +1,89 @@
1
+ import type {
2
+ PColumn,
3
+ PTableColumnId,
4
+ PTableSorting,
5
+ PTableDefV2,
6
+ SingleAxisSelector,
7
+ SpecQuery,
8
+ SpecQueryExpression,
9
+ SpecQueryJoinEntry,
10
+ } from "@milaboratories/pl-model-common";
11
+ import { isBooleanExpression } from "@milaboratories/pl-model-common";
12
+ import type { PColumnDataUniversal } from "../../../render";
13
+ import { isNil } from "es-toolkit";
14
+ import type { PlDataTableFilters } from "../typesV5";
15
+ import { distillFilterSpec, filterSpecToSpecQueryExpr } from "../../../filters";
16
+ import type { Nil } from "@milaboratories/helpers";
17
+
18
+ export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
19
+ primaryJoinType: "inner" | "full";
20
+ primaryColumns: PColumn<Data>[];
21
+ secondaryGroups: PColumn<Data>[][];
22
+ filters?: Nil | PlDataTableFilters;
23
+ sorting?: Nil | PTableSorting[];
24
+ }): PTableDefV2<PColumn<Data>> {
25
+ // Build SpecQuery directly from columns
26
+ const coreJoinQuery: SpecQuery<PColumn<Data>> = {
27
+ type: params.primaryJoinType === "inner" ? "innerJoin" : "fullJoin",
28
+ entries: params.primaryColumns.map((c) => toJoinEntry({ type: "column", column: c })),
29
+ };
30
+
31
+ let query: SpecQuery<PColumn<Data>> = {
32
+ type: "outerJoin",
33
+ primary: toJoinEntry(coreJoinQuery),
34
+ secondary: params.secondaryGroups.map((group) =>
35
+ toJoinEntry({
36
+ type: "innerJoin" as const,
37
+ entries: group.map((c) => toJoinEntry({ type: "column" as const, column: c })),
38
+ }),
39
+ ),
40
+ };
41
+
42
+ // Apply filters
43
+ if (!isNil(params.filters)) {
44
+ const nonEmpty = distillFilterSpec(params.filters);
45
+
46
+ if (!isNil(nonEmpty)) {
47
+ const pridicate = filterSpecToSpecQueryExpr(nonEmpty);
48
+ if (!isBooleanExpression(pridicate)) {
49
+ throw new Error(
50
+ `Filter conversion produced a non-boolean expression (got type "${pridicate.type}"), expected a boolean predicate for query filtering`,
51
+ );
52
+ }
53
+ query = {
54
+ type: "filter",
55
+ input: query,
56
+ predicate: pridicate,
57
+ };
58
+ }
59
+ }
60
+
61
+ // Apply sorting
62
+ if (!isNil(params.sorting) && params.sorting.length > 0) {
63
+ query = {
64
+ type: "sort",
65
+ input: query,
66
+ sortBy: params.sorting.map((s) => ({
67
+ expression: columnIdToExpr(s.column),
68
+ ascending: s.ascending,
69
+ nullsFirst: !s.naAndAbsentAreLeastValues,
70
+ })),
71
+ };
72
+ }
73
+
74
+ return { query };
75
+ }
76
+
77
+ /** Convert a PTableColumnId to a SpecQueryExpression reference. */
78
+ function columnIdToExpr(col: PTableColumnId): SpecQueryExpression {
79
+ return col.type === "axis"
80
+ ? { type: "axisRef", value: col.id as SingleAxisSelector }
81
+ : { type: "columnRef", value: col.id };
82
+ }
83
+
84
+ function toJoinEntry<C>(input: SpecQuery<C>): SpecQueryJoinEntry<C> {
85
+ return {
86
+ entry: input,
87
+ qualifications: [],
88
+ };
89
+ }
@@ -15,18 +15,28 @@ import {
15
15
  isLinkerColumn,
16
16
  uniqueBy,
17
17
  parseJson,
18
+ PColumnName,
18
19
  } from "@milaboratories/pl-model-common";
19
- import type { PColumnDataUniversal, RenderCtxBase } from "../../../render";
20
- import { allPColumnsReady, deriveLabels } from "../../../render";
20
+ import type {
21
+ AxisLabelProvider,
22
+ ColumnProvider,
23
+ PColumnDataUniversal,
24
+ RenderCtxBase,
25
+ } from "../../../render";
26
+ import { allPColumnsReady, deriveLabels, PColumnCollection } from "../../../render";
21
27
  import { identity } from "es-toolkit";
22
28
  import type { CreatePlDataTableOps, PlDataTableFilters, PlDataTableModel } from "../typesV5";
23
29
  import { upgradePlDataTableStateV2 } from "../state-migration";
24
30
  import type { PlDataTableStateV2 } from "../state-migration";
25
- import { getAllLabelColumns, getMatchingLabelColumns } from "../labels";
31
+ import { getMatchingLabelColumns } from "../labels";
26
32
  import { collectFilterSpecColumns } from "../../../filters/traverse";
27
33
  import { isEmpty } from "es-toolkit/compat";
28
- import { createPTableDef, isColumnOptional } from "./createPlDataTableV3";
34
+ import { createPTableDefV2 } from "./createPTableDefV2";
35
+ import { isColumnOptional } from "./utils";
29
36
 
37
+ /**
38
+ * @deprecated This function is deprecated and will be removed in future. Please migrate to createPlDataTable with v3 options for improved column discovery and display configuration. See createPlDataTableOptionsV3 for details on the new options format and migration guidance.
39
+ */
30
40
  export type createPlDataTableOptionsV2 = {
31
41
  columns: PColumn<PColumnDataUniversal>[];
32
42
  tableState?: PlDataTableStateV2;
@@ -36,6 +46,7 @@ export type createPlDataTableOptionsV2 = {
36
46
  /**
37
47
  * Create p-table spec and handle given ui table state
38
48
  *
49
+ * @deprecated This version of createPlDataTable is deprecated and will be removed in future. Please migrate to v3 by switching to the new options format and providing necessary information for column discovery and display configuration. See createPlDataTableOptionsV3 for details.
39
50
  * @param ctx context
40
51
  * @param columns column list
41
52
  * @param tableState table ui state
@@ -50,11 +61,9 @@ export function createPlDataTableV2<A, U>(
50
61
  if (columns.length === 0) return undefined;
51
62
 
52
63
  const tableStateNormalized = upgradePlDataTableStateV2(tableState);
64
+ const allLabelColumns = getAllLabelColumns(ctx.resultPool) ?? [];
53
65
 
54
- const allLabelColumns = getAllLabelColumns(ctx.resultPool);
55
- if (!allLabelColumns) return undefined;
56
-
57
- let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);
66
+ let fullLabelColumns = getMatchingLabelColumns(columns, allLabelColumns);
58
67
  fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(
59
68
  (v) => {
60
69
  return {
@@ -110,7 +119,7 @@ export function createPlDataTableV2<A, U>(
110
119
  );
111
120
 
112
121
  const coreJoinType = options?.coreJoinType ?? "full";
113
- const fullDef = createPTableDef({
122
+ const fullDef = createPTableDefV2({
114
123
  columns,
115
124
  labelColumns: fullLabelColumns,
116
125
  coreJoinType,
@@ -129,7 +138,11 @@ export function createPlDataTableV2<A, U>(
129
138
  if (coreJoinType === "inner") return [];
130
139
 
131
140
  const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;
132
- if (hiddenColIds) return hiddenColIds;
141
+ if (hiddenColIds !== null) {
142
+ return hiddenColIds
143
+ .filter((s): s is PTableColumnIdColumn => s.type === "column")
144
+ .map((s) => s.id);
145
+ }
133
146
 
134
147
  return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);
135
148
  })(),
@@ -172,7 +185,7 @@ export function createPlDataTableV2<A, U>(
172
185
  // if at least one column is not yet computed, we can't show the table
173
186
  if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;
174
187
 
175
- const visibleDef = createPTableDef({
188
+ const visibleDef = createPTableDefV2({
176
189
  columns: visibleColumns,
177
190
  labelColumns: visibleLabelColumns,
178
191
  coreJoinType,
@@ -191,3 +204,18 @@ export function createPlDataTableV2<A, U>(
191
204
  visibleTableHandle: visibleHandle,
192
205
  } satisfies PlDataTableModel;
193
206
  }
207
+
208
+ function getAllLabelColumns(
209
+ resultPool: AxisLabelProvider & ColumnProvider,
210
+ ): PColumn<PColumnDataUniversal>[] | undefined {
211
+ return new PColumnCollection()
212
+ .addAxisLabelProvider(resultPool)
213
+ .addColumnProvider(resultPool)
214
+ .getColumns(
215
+ {
216
+ name: PColumnName.Label,
217
+ axes: [{}], // exactly one axis
218
+ },
219
+ { dontWaitAllData: true, overrideLabelAnnotation: false },
220
+ );
221
+ }