@platforma-sdk/model 1.79.24 → 1.80.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 (356) hide show
  1. package/dist/block_model.d.ts +2 -0
  2. package/dist/block_model.d.ts.map +1 -1
  3. package/dist/columns/column.cjs +28 -0
  4. package/dist/columns/column.cjs.map +1 -0
  5. package/dist/columns/column.d.ts +30 -0
  6. package/dist/columns/column.d.ts.map +1 -0
  7. package/dist/columns/column.js +27 -0
  8. package/dist/columns/column.js.map +1 -0
  9. package/dist/columns/column_lazy.cjs +248 -0
  10. package/dist/columns/column_lazy.cjs.map +1 -0
  11. package/dist/columns/column_lazy.d.ts +137 -0
  12. package/dist/columns/column_lazy.d.ts.map +1 -0
  13. package/dist/columns/column_lazy.js +245 -0
  14. package/dist/columns/column_lazy.js.map +1 -0
  15. package/dist/columns/column_providers/index.cjs +62 -0
  16. package/dist/columns/column_providers/index.cjs.map +1 -0
  17. package/dist/columns/column_providers/index.d.ts +30 -0
  18. package/dist/columns/column_providers/index.d.ts.map +1 -0
  19. package/dist/columns/column_providers/index.js +53 -0
  20. package/dist/columns/column_providers/index.js.map +1 -0
  21. package/dist/columns/column_providers/providers.cjs +123 -0
  22. package/dist/columns/column_providers/providers.cjs.map +1 -0
  23. package/dist/columns/column_providers/providers.d.ts +75 -0
  24. package/dist/columns/column_providers/providers.d.ts.map +1 -0
  25. package/dist/columns/column_providers/providers.js +118 -0
  26. package/dist/columns/column_providers/providers.js.map +1 -0
  27. package/dist/columns/column_providers/types.d.ts +23 -0
  28. package/dist/columns/column_providers/types.d.ts.map +1 -0
  29. package/dist/columns/column_recipes/column_discovered_recipe.cjs +180 -0
  30. package/dist/columns/column_recipes/column_discovered_recipe.cjs.map +1 -0
  31. package/dist/columns/column_recipes/column_discovered_recipe.d.ts +120 -0
  32. package/dist/columns/column_recipes/column_discovered_recipe.d.ts.map +1 -0
  33. package/dist/columns/column_recipes/column_discovered_recipe.js +180 -0
  34. package/dist/columns/column_recipes/column_discovered_recipe.js.map +1 -0
  35. package/dist/columns/column_recipes/column_filtered_recipe.cjs +133 -0
  36. package/dist/columns/column_recipes/column_filtered_recipe.cjs.map +1 -0
  37. package/dist/columns/column_recipes/column_filtered_recipe.d.ts +75 -0
  38. package/dist/columns/column_recipes/column_filtered_recipe.d.ts.map +1 -0
  39. package/dist/columns/column_recipes/column_filtered_recipe.js +133 -0
  40. package/dist/columns/column_recipes/column_filtered_recipe.js.map +1 -0
  41. package/dist/columns/column_recipes/column_overrided_recipe.cjs +101 -0
  42. package/dist/columns/column_recipes/column_overrided_recipe.cjs.map +1 -0
  43. package/dist/columns/column_recipes/column_overrided_recipe.d.ts +73 -0
  44. package/dist/columns/column_recipes/column_overrided_recipe.d.ts.map +1 -0
  45. package/dist/columns/column_recipes/column_overrided_recipe.js +101 -0
  46. package/dist/columns/column_recipes/column_overrided_recipe.js.map +1 -0
  47. package/dist/columns/column_recipes/index.cjs +72 -0
  48. package/dist/columns/column_recipes/index.cjs.map +1 -0
  49. package/dist/columns/column_recipes/index.d.ts +52 -0
  50. package/dist/columns/column_recipes/index.d.ts.map +1 -0
  51. package/dist/columns/column_recipes/index.js +68 -0
  52. package/dist/columns/column_recipes/index.js.map +1 -0
  53. package/dist/columns/column_recipes/leaf_rebrand.cjs +22 -0
  54. package/dist/columns/column_recipes/leaf_rebrand.cjs.map +1 -0
  55. package/dist/columns/column_recipes/leaf_rebrand.js +22 -0
  56. package/dist/columns/column_recipes/leaf_rebrand.js.map +1 -0
  57. package/dist/columns/column_recipes/types.d.ts +101 -0
  58. package/dist/columns/column_recipes/types.d.ts.map +1 -0
  59. package/dist/columns/columns_collection.cjs +124 -0
  60. package/dist/columns/columns_collection.cjs.map +1 -0
  61. package/dist/columns/columns_collection.d.ts +64 -0
  62. package/dist/columns/columns_collection.d.ts.map +1 -0
  63. package/dist/columns/columns_collection.js +122 -0
  64. package/dist/columns/columns_collection.js.map +1 -0
  65. package/dist/columns/derive_axis_values_labels.cjs +76 -0
  66. package/dist/columns/derive_axis_values_labels.cjs.map +1 -0
  67. package/dist/columns/derive_axis_values_labels.d.ts +30 -0
  68. package/dist/columns/derive_axis_values_labels.d.ts.map +1 -0
  69. package/dist/columns/derive_axis_values_labels.js +76 -0
  70. package/dist/columns/derive_axis_values_labels.js.map +1 -0
  71. package/dist/columns/expand_by_partition.cjs +53 -56
  72. package/dist/columns/expand_by_partition.cjs.map +1 -1
  73. package/dist/columns/expand_by_partition.d.ts +22 -18
  74. package/dist/columns/expand_by_partition.d.ts.map +1 -1
  75. package/dist/columns/expand_by_partition.js +55 -58
  76. package/dist/columns/expand_by_partition.js.map +1 -1
  77. package/dist/columns/index.cjs +44 -18
  78. package/dist/columns/index.d.ts +15 -7
  79. package/dist/columns/index.js +12 -6
  80. package/dist/columns/utils.cjs +186 -0
  81. package/dist/columns/utils.cjs.map +1 -0
  82. package/dist/columns/utils.d.ts +96 -0
  83. package/dist/columns/utils.d.ts.map +1 -0
  84. package/dist/columns/utils.js +179 -0
  85. package/dist/columns/utils.js.map +1 -0
  86. package/dist/components/PFrameForGraphs.cjs +1 -0
  87. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  88. package/dist/components/PFrameForGraphs.d.ts +1 -1
  89. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  90. package/dist/components/PFrameForGraphs.js +1 -0
  91. package/dist/components/PFrameForGraphs.js.map +1 -1
  92. package/dist/components/PlDataTable/columnResolver.cjs +28 -0
  93. package/dist/components/PlDataTable/columnResolver.cjs.map +1 -0
  94. package/dist/components/PlDataTable/columnResolver.js +28 -0
  95. package/dist/components/PlDataTable/columnResolver.js.map +1 -0
  96. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +4 -2
  97. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -1
  98. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +4 -2
  99. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -1
  100. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +20 -25
  101. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -1
  102. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +20 -25
  103. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -1
  104. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +58 -26
  105. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  106. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +1 -1
  107. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
  108. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +60 -28
  109. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  110. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +224 -194
  111. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  112. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +13 -16
  113. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
  114. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +228 -198
  115. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  116. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +40 -98
  117. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -1
  118. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -8
  119. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -1
  120. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +40 -98
  121. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -1
  122. package/dist/components/PlDataTable/createPlDataTable/index.cjs +1 -1
  123. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  124. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
  125. package/dist/components/PlDataTable/createPlDataTable/index.js +2 -2
  126. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  127. package/dist/components/PlDataTable/createPlDataTable/utils.cjs +51 -169
  128. package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -1
  129. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +1 -1
  130. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -1
  131. package/dist/components/PlDataTable/createPlDataTable/utils.js +52 -166
  132. package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -1
  133. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  134. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +1 -1
  135. package/dist/components/PlDataTable/createPlDataTableSheet.js.map +1 -1
  136. package/dist/components/PlDataTable/index.cjs +1 -1
  137. package/dist/components/PlDataTable/index.d.ts +4 -4
  138. package/dist/components/PlDataTable/index.js +2 -2
  139. package/dist/components/PlDataTable/labels.cjs +0 -1
  140. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  141. package/dist/components/PlDataTable/labels.js +0 -1
  142. package/dist/components/PlDataTable/labels.js.map +1 -1
  143. package/dist/components/PlDataTable/state-migration.cjs +107 -10
  144. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  145. package/dist/components/PlDataTable/state-migration.d.ts +5 -4
  146. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
  147. package/dist/components/PlDataTable/state-migration.js +107 -10
  148. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  149. package/dist/components/PlDataTable/typesV7.d.ts +1 -36
  150. package/dist/components/PlDataTable/typesV7.d.ts.map +1 -1
  151. package/dist/components/PlDataTable/typesV8.d.ts +123 -0
  152. package/dist/components/PlDataTable/typesV8.d.ts.map +1 -0
  153. package/dist/components/PlDatasetSelector/build_dataset_options.cjs +27 -34
  154. package/dist/components/PlDatasetSelector/build_dataset_options.cjs.map +1 -1
  155. package/dist/components/PlDatasetSelector/build_dataset_options.d.ts.map +1 -1
  156. package/dist/components/PlDatasetSelector/build_dataset_options.js +27 -34
  157. package/dist/components/PlDatasetSelector/build_dataset_options.js.map +1 -1
  158. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs +28 -33
  159. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs.map +1 -1
  160. package/dist/components/PlDatasetSelector/enrichment_discovery.js +29 -34
  161. package/dist/components/PlDatasetSelector/enrichment_discovery.js.map +1 -1
  162. package/dist/components/PlDatasetSelector/filter_discovery.cjs +27 -17
  163. package/dist/components/PlDatasetSelector/filter_discovery.cjs.map +1 -1
  164. package/dist/components/PlDatasetSelector/filter_discovery.d.ts +24 -10
  165. package/dist/components/PlDatasetSelector/filter_discovery.d.ts.map +1 -1
  166. package/dist/components/PlDatasetSelector/filter_discovery.js +28 -18
  167. package/dist/components/PlDatasetSelector/filter_discovery.js.map +1 -1
  168. package/dist/components/PlDatasetSelector/index.d.ts +2 -2
  169. package/dist/components/index.cjs +1 -1
  170. package/dist/components/index.d.ts +5 -5
  171. package/dist/components/index.js +2 -2
  172. package/dist/filters/converters/filterToQuery.cjs +5 -6
  173. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  174. package/dist/filters/converters/filterToQuery.d.ts +12 -3
  175. package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
  176. package/dist/filters/converters/filterToQuery.js +5 -6
  177. package/dist/filters/converters/filterToQuery.js.map +1 -1
  178. package/dist/filters/converters/index.d.ts +2 -2
  179. package/dist/filters/index.d.ts +2 -2
  180. package/dist/index.cjs +64 -35
  181. package/dist/index.d.ts +23 -15
  182. package/dist/index.js +15 -9
  183. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  184. package/dist/labels/derive_distinct_labels.d.ts +1 -2
  185. package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
  186. package/dist/labels/derive_distinct_labels.js.map +1 -1
  187. package/dist/labels/derive_distinct_tooltips.cjs +1 -1
  188. package/dist/labels/derive_distinct_tooltips.cjs.map +1 -1
  189. package/dist/labels/derive_distinct_tooltips.d.ts +6 -3
  190. package/dist/labels/derive_distinct_tooltips.d.ts.map +1 -1
  191. package/dist/labels/derive_distinct_tooltips.js +1 -1
  192. package/dist/labels/derive_distinct_tooltips.js.map +1 -1
  193. package/dist/package.cjs +1 -1
  194. package/dist/package.js +1 -1
  195. package/dist/pframe_utils/axes.cjs.map +1 -1
  196. package/dist/pframe_utils/axes.d.ts +2 -2
  197. package/dist/pframe_utils/axes.d.ts.map +1 -1
  198. package/dist/pframe_utils/axes.js.map +1 -1
  199. package/dist/pframe_utils/columns.cjs +6 -10
  200. package/dist/pframe_utils/columns.cjs.map +1 -1
  201. package/dist/pframe_utils/columns.d.ts +4 -4
  202. package/dist/pframe_utils/columns.d.ts.map +1 -1
  203. package/dist/pframe_utils/columns.js +7 -11
  204. package/dist/pframe_utils/columns.js.map +1 -1
  205. package/dist/pframe_utils/index.cjs.map +1 -1
  206. package/dist/pframe_utils/index.d.ts +1 -1
  207. package/dist/pframe_utils/index.d.ts.map +1 -1
  208. package/dist/pframe_utils/index.js.map +1 -1
  209. package/dist/render/accessor.cjs +15 -16
  210. package/dist/render/accessor.cjs.map +1 -1
  211. package/dist/render/accessor.d.ts +7 -10
  212. package/dist/render/accessor.d.ts.map +1 -1
  213. package/dist/render/accessor.js +15 -16
  214. package/dist/render/accessor.js.map +1 -1
  215. package/dist/render/api.cjs +34 -36
  216. package/dist/render/api.cjs.map +1 -1
  217. package/dist/render/api.d.ts +30 -20
  218. package/dist/render/api.d.ts.map +1 -1
  219. package/dist/render/api.js +35 -38
  220. package/dist/render/api.js.map +1 -1
  221. package/dist/render/index.cjs +4 -0
  222. package/dist/render/index.d.ts +4 -4
  223. package/dist/render/index.js +3 -2
  224. package/dist/render/internal.cjs +3 -2
  225. package/dist/render/internal.cjs.map +1 -1
  226. package/dist/render/internal.d.ts +17 -9
  227. package/dist/render/internal.d.ts.map +1 -1
  228. package/dist/render/internal.js +3 -2
  229. package/dist/render/internal.js.map +1 -1
  230. package/dist/render/util/axis_filtering.cjs.map +1 -1
  231. package/dist/render/util/axis_filtering.js.map +1 -1
  232. package/dist/render/util/column_collection.cjs +6 -4
  233. package/dist/render/util/column_collection.cjs.map +1 -1
  234. package/dist/render/util/column_collection.d.ts +9 -9
  235. package/dist/render/util/column_collection.d.ts.map +1 -1
  236. package/dist/render/util/column_collection.js +6 -4
  237. package/dist/render/util/column_collection.js.map +1 -1
  238. package/dist/render/util/index.d.ts +2 -2
  239. package/dist/render/util/pcolumn_data.cjs +1 -1
  240. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  241. package/dist/render/util/pcolumn_data.d.ts +3 -3
  242. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  243. package/dist/render/util/pcolumn_data.js +1 -1
  244. package/dist/render/util/pcolumn_data.js.map +1 -1
  245. package/dist/services/block_services.cjs +2 -1
  246. package/dist/services/block_services.cjs.map +1 -1
  247. package/dist/services/block_services.d.ts +1 -0
  248. package/dist/services/block_services.d.ts.map +1 -1
  249. package/dist/services/block_services.js +2 -1
  250. package/dist/services/block_services.js.map +1 -1
  251. package/dist/services/get_services.cjs +2 -2
  252. package/dist/services/get_services.cjs.map +1 -1
  253. package/dist/services/get_services.d.ts +4 -1
  254. package/dist/services/get_services.d.ts.map +1 -1
  255. package/dist/services/get_services.js +2 -2
  256. package/dist/services/get_services.js.map +1 -1
  257. package/package.json +9 -7
  258. package/src/columns/__test_helpers__/collection_driver.ts +197 -0
  259. package/src/columns/__test_helpers__/stub_registry.ts +134 -0
  260. package/src/columns/column.ts +46 -0
  261. package/src/columns/column_lazy.test.ts +201 -0
  262. package/src/columns/column_lazy.ts +311 -0
  263. package/src/columns/column_providers/index.ts +78 -0
  264. package/src/columns/column_providers/providers.ts +193 -0
  265. package/src/columns/column_providers/types.ts +24 -0
  266. package/src/columns/column_recipes/column_discovered_recipe.ts +231 -0
  267. package/src/columns/column_recipes/column_filtered_recipe.ts +184 -0
  268. package/src/columns/column_recipes/column_overrided_recipe.ts +146 -0
  269. package/src/columns/column_recipes/column_recipes.test.ts +681 -0
  270. package/src/columns/column_recipes/index.ts +127 -0
  271. package/src/columns/column_recipes/leaf_rebrand.ts +28 -0
  272. package/src/columns/column_recipes/types.ts +113 -0
  273. package/src/columns/columns_collection.test.ts +164 -0
  274. package/src/columns/columns_collection.ts +170 -0
  275. package/src/columns/derive_axis_values_labels.ts +98 -0
  276. package/src/columns/expand_by_partition.test.ts +146 -110
  277. package/src/columns/expand_by_partition.ts +72 -84
  278. package/src/columns/index.ts +7 -5
  279. package/src/columns/utils.test.ts +249 -0
  280. package/src/columns/utils.ts +226 -0
  281. package/src/components/PFrameForGraphs.ts +3 -1
  282. package/src/components/PlAnnotations/filters_ui.test.ts +46 -47
  283. package/src/components/PlDataTable/columnResolver.test.ts +122 -0
  284. package/src/components/PlDataTable/columnResolver.ts +57 -0
  285. package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +9 -9
  286. package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +31 -63
  287. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +85 -58
  288. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +316 -354
  289. package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +48 -144
  290. package/src/components/PlDataTable/createPlDataTable/index.ts +2 -2
  291. package/src/components/PlDataTable/createPlDataTable/utils.test.ts +60 -69
  292. package/src/components/PlDataTable/createPlDataTable/utils.ts +65 -173
  293. package/src/components/PlDataTable/createPlDataTableSheet.ts +1 -1
  294. package/src/components/PlDataTable/index.ts +4 -2
  295. package/src/components/PlDataTable/labels.ts +4 -33
  296. package/src/components/PlDataTable/state-migration.ts +151 -22
  297. package/src/components/PlDataTable/typesV8.ts +188 -0
  298. package/src/components/PlDatasetSelector/build_dataset_options.ts +35 -60
  299. package/src/components/PlDatasetSelector/enrichment_discovery.ts +65 -61
  300. package/src/components/PlDatasetSelector/filter_discovery.test.ts +110 -72
  301. package/src/components/PlDatasetSelector/filter_discovery.ts +51 -31
  302. package/src/filters/converters/filterToQuery.test.ts +15 -8
  303. package/src/filters/converters/filterToQuery.ts +22 -9
  304. package/src/filters/converters/filterUiToExpressionImpl.test.ts +35 -36
  305. package/src/labels/derive_distinct_labels.ts +1 -1
  306. package/src/labels/derive_distinct_tooltips.test.ts +7 -4
  307. package/src/labels/derive_distinct_tooltips.ts +3 -3
  308. package/src/pframe_utils/axes.ts +2 -2
  309. package/src/pframe_utils/columns.ts +14 -23
  310. package/src/pframe_utils/index.ts +1 -1
  311. package/src/render/accessor.ts +35 -38
  312. package/src/render/api.ts +45 -61
  313. package/src/render/index.ts +2 -1
  314. package/src/render/internal.ts +43 -10
  315. package/src/render/util/axis_filtering.ts +0 -1
  316. package/src/render/util/column_collection.ts +17 -17
  317. package/src/render/util/pcolumn_data.ts +5 -9
  318. package/src/services/block_services.ts +1 -0
  319. package/src/services/get_services.ts +5 -2
  320. package/dist/columns/column_collection_builder.cjs +0 -241
  321. package/dist/columns/column_collection_builder.cjs.map +0 -1
  322. package/dist/columns/column_collection_builder.d.ts +0 -119
  323. package/dist/columns/column_collection_builder.d.ts.map +0 -1
  324. package/dist/columns/column_collection_builder.js +0 -241
  325. package/dist/columns/column_collection_builder.js.map +0 -1
  326. package/dist/columns/column_selector.cjs +0 -49
  327. package/dist/columns/column_selector.cjs.map +0 -1
  328. package/dist/columns/column_selector.d.ts +0 -33
  329. package/dist/columns/column_selector.d.ts.map +0 -1
  330. package/dist/columns/column_selector.js +0 -47
  331. package/dist/columns/column_selector.js.map +0 -1
  332. package/dist/columns/column_snapshot.cjs +0 -19
  333. package/dist/columns/column_snapshot.cjs.map +0 -1
  334. package/dist/columns/column_snapshot.d.ts +0 -39
  335. package/dist/columns/column_snapshot.d.ts.map +0 -1
  336. package/dist/columns/column_snapshot.js +0 -18
  337. package/dist/columns/column_snapshot.js.map +0 -1
  338. package/dist/columns/column_snapshot_provider.cjs +0 -137
  339. package/dist/columns/column_snapshot_provider.cjs.map +0 -1
  340. package/dist/columns/column_snapshot_provider.d.ts +0 -74
  341. package/dist/columns/column_snapshot_provider.d.ts.map +0 -1
  342. package/dist/columns/column_snapshot_provider.js +0 -133
  343. package/dist/columns/column_snapshot_provider.js.map +0 -1
  344. package/dist/columns/ctx_column_sources.cjs +0 -80
  345. package/dist/columns/ctx_column_sources.cjs.map +0 -1
  346. package/dist/columns/ctx_column_sources.d.ts +0 -30
  347. package/dist/columns/ctx_column_sources.d.ts.map +0 -1
  348. package/dist/columns/ctx_column_sources.js +0 -79
  349. package/dist/columns/ctx_column_sources.js.map +0 -1
  350. package/src/columns/column_collection_builder.test.ts +0 -484
  351. package/src/columns/column_collection_builder.ts +0 -485
  352. package/src/columns/column_selector.test.ts +0 -90
  353. package/src/columns/column_selector.ts +0 -100
  354. package/src/columns/column_snapshot.ts +0 -58
  355. package/src/columns/column_snapshot_provider.ts +0 -194
  356. package/src/columns/ctx_column_sources.ts +0 -99
@@ -1,171 +1,75 @@
1
- import type { PColumnSpec, PlRef, PObjectId } from "@milaboratories/pl-model-common";
2
- import { createDiscoveredPColumnId, isPlRef, PColumnName } from "@milaboratories/pl-model-common";
3
- import type { RenderCtxBase } from "../../../render";
4
1
  import type {
5
- ColumnSource,
6
- ColumnVariant,
2
+ PColumnSpec,
3
+ PlRef,
4
+ PObjectId,
7
5
  RelaxedColumnSelector,
8
- ColumnSnapshotProvider,
9
- ColumnSnapshot,
10
- } from "../../../columns";
11
- import { ColumnCollectionBuilder } from "../../../columns";
12
- import { toColumnSnapshotProvider } from "../../../columns/column_snapshot_provider";
13
- import { collectCtxColumnSnapshotProviders } from "../../../columns/ctx_column_sources";
14
- import { throwError } from "@milaboratories/helpers";
15
- import type { ColumnsSelectorConfig, TableColumnVariant } from "./createPlDataTableV3";
6
+ } from "@milaboratories/pl-model-common";
7
+ import { PColumnName } from "@milaboratories/pl-model-common";
8
+ import type { RenderCtxBase } from "../../../render";
9
+ import type { ColumnRecipe, ColumnsSource } from "../../../columns";
10
+ import { ColumnsCollection, collectLinkerIds, isLeafColumn } from "../../../columns";
11
+ import type { ColumnsSelectorConfig } from "./createPlDataTableV3";
16
12
 
17
13
  export type DiscoverTableColumnOptions = {
18
- sources?: ColumnSource[];
14
+ sources?: ColumnsSource[];
19
15
  anchors: Record<string, PlRef | PObjectId | PColumnSpec | RelaxedColumnSelector>;
20
16
  selector: ColumnsSelectorConfig;
21
17
  };
22
18
 
23
- /** Discover columns from sources/anchors and normalize into a flat TableColumnVariant list. */
24
- export function discoverTableColumnSnaphots(
19
+ /** Split of discovered columns into anchor-matching (primary) and the rest. */
20
+ export type DiscoveredTableColumns = {
21
+ readonly primary: ColumnRecipe[];
22
+ readonly secondary: ColumnRecipe[];
23
+ };
24
+
25
+ /**
26
+ * Discover columns from sources/anchors and split them into primary
27
+ * (direct anchor hits — zero-hop, query is a bare column) and secondary
28
+ * (reached via a linker chain, query carries a join).
29
+ */
30
+ export function discoverTableColumns(
25
31
  ctx: RenderCtxBase,
26
32
  options: DiscoverTableColumnOptions,
27
- ): TableColumnVariant[] | undefined {
28
- // Resolve PlRef anchors to PColumnSpec
29
- const resolvedOptions = {
30
- ...options,
31
- anchors: resolveAnchors(ctx, options.anchors),
32
- };
33
-
34
- // Resolve providers
35
- const providers = resolveProviders(ctx, resolvedOptions.sources);
36
- if (providers.length === 0) return undefined;
37
-
38
- // Build collection (anchored or plain)
39
- const collection = new ColumnCollectionBuilder(ctx.getService("pframeSpec"))
40
- .addSources(providers)
41
- .build(resolvedOptions);
42
- if (collection === undefined) return undefined;
33
+ ): undefined | DiscoveredTableColumns {
34
+ const discoveredColumns = ColumnsCollection(options.sources, { ctx: ctx.ctx })
35
+ .discover({ ...options.selector, anchors: options.anchors })
36
+ .getColumns();
43
37
 
44
- try {
45
- const variants = collection.findColumnVariants(resolvedOptions.selector);
46
- const anchors = collection.getAnchors();
47
- return mapToTableColumnVariants(variants, anchors);
48
- } finally {
49
- collection.dispose();
38
+ const primary: ColumnRecipe[] = [];
39
+ const secondary: ColumnRecipe[] = [];
40
+ for (const col of discoveredColumns) {
41
+ if (isLeafColumn(col)) primary.push(col);
42
+ else secondary.push(col);
50
43
  }
44
+ return { primary, secondary };
51
45
  }
52
46
 
53
47
  /**
54
48
  * Discover label columns matching the axes of the given value columns from
55
- * ctx providers. Returns label snapshots wrapped as direct TableColumnVariants
56
- * (path: [], empty qualifications, isPrimary: false).
49
+ * ctx providers. Returns a list of label {@link ColumnRecipe}s.
50
+ *
51
+ * Primary columns are used as anchors for axis-aware label discovery.
52
+ * `maxHops` is taken from the longest linker chain present in `columns`.
57
53
  */
58
- export function discoverLabelColumnVariants<A, U>(
54
+ export function discoverLabelColumns<A, U>(
59
55
  ctx: RenderCtxBase<A, U>,
60
- columns: TableColumnVariant[],
61
- ): TableColumnVariant[] {
56
+ primary: ColumnRecipe[],
57
+ columns: ColumnRecipe[],
58
+ ): ColumnRecipe[] {
62
59
  if (columns.length === 0) return [];
63
- const collection = new ColumnCollectionBuilder(ctx.getService("pframeSpec"))
64
- .addSources(collectCtxColumnSnapshotProviders(ctx))
65
- .addSource(columns.map((c) => c.column))
66
- .build({
67
- allowPartialColumnList: true,
68
- anchors: Object.fromEntries(
69
- columns
70
- .filter((col) => (col.path?.length ?? 0) === 0 && col.isPrimary)
71
- .map((col, i) => [`anchor_${i}`, col.column.spec]),
72
- ),
73
- });
74
60
 
75
- try {
76
- const axes = columns.flatMap((col) => col.column.spec.axesSpec);
77
- return collection
78
- .findColumnVariants({
61
+ const axes = columns.flatMap((col) => col.getSpec().axesSpec);
62
+ return (
63
+ ColumnsCollection(undefined, { ctx: ctx.ctx })
64
+ // .addSource({ columns, isFinal: true })
65
+ .discover({
79
66
  include: axes.map((a) => ({
80
67
  name: { type: "exact", value: PColumnName.Label },
81
68
  axes: [{ name: { type: "exact", value: a.name } }],
82
69
  })),
83
- maxHops: columns.reduce((acc, c) => Math.max(acc, c.path?.length ?? 0), 0),
70
+ anchors: Object.fromEntries(primary.map((col, i) => [`anchor_${i}`, col.getSpec()])),
71
+ maxHops: columns.reduce((acc, c) => Math.max(acc, collectLinkerIds(c).length), 0),
84
72
  })
85
- .map((variant) => ({
86
- ...variant,
87
- column: {
88
- ...variant.column,
89
- id: createDiscoveredPColumnId({
90
- column: variant.column.id,
91
- path: variant.path?.map((p) => ({
92
- type: "linker",
93
- column: p.linker.id,
94
- })),
95
- columnQualifications: variant.qualifications?.forHit,
96
- queriesQualifications: variant.qualifications?.forQueries,
97
- }),
98
- originalId: variant.column.id,
99
- },
100
- }));
101
- } finally {
102
- collection.dispose();
103
- }
104
- }
105
-
106
- /** Resolve PlRef values in anchors to PColumnSpec via the result pool. */
107
- function resolveAnchors(
108
- ctx: RenderCtxBase,
109
- anchors: Record<string, PlRef | PObjectId | PColumnSpec | RelaxedColumnSelector>,
110
- ): Record<string, PObjectId | PColumnSpec | RelaxedColumnSelector> {
111
- const result: Record<string, PObjectId | PColumnSpec | RelaxedColumnSelector> = {};
112
- for (const [key, value] of Object.entries(anchors)) {
113
- if (isPlRef(value)) {
114
- result[key] =
115
- ctx.resultPool.getPColumnSpecByRef(value) ??
116
- throwError(
117
- `Anchor ${key} with ref ${JSON.stringify(value)} could not be resolved to a PColumnSpec`,
118
- );
119
- } else {
120
- result[key] = value;
121
- }
122
- }
123
- return result;
124
- }
125
-
126
- /** Resolve column snapshot providers from explicit sources or context. */
127
- function resolveProviders(
128
- ctx: RenderCtxBase,
129
- sources: undefined | ColumnSource[],
130
- ): ColumnSnapshotProvider[] {
131
- return sources !== undefined
132
- ? sources.map(toColumnSnapshotProvider)
133
- : collectCtxColumnSnapshotProviders(ctx);
134
- }
135
-
136
- /** Map column variants into TableColumnVariant list with anchor-derived isPrimary flag. */
137
- function mapToTableColumnVariants(
138
- variants: readonly ColumnVariant[],
139
- anchors: Map<string, ColumnSnapshot<PObjectId>>,
140
- ): TableColumnVariant[] {
141
- const columnIdToAnchorName = new Map<PObjectId, string>(
142
- Array.from(anchors.entries(), ([key, { id }]) => [id, key] as const),
73
+ .getColumns()
143
74
  );
144
-
145
- return variants.map((variant): TableColumnVariant => {
146
- const snap = variant.column;
147
- const isPrimary = columnIdToAnchorName.get(snap.id) !== undefined;
148
-
149
- const discoveredId = createDiscoveredPColumnId({
150
- column: snap.id,
151
- path: variant.path?.map((p) => ({
152
- type: "linker",
153
- column: p.linker.id,
154
- })),
155
- columnQualifications: variant.qualifications?.forHit,
156
- queriesQualifications: variant.qualifications?.forQueries,
157
- });
158
- return {
159
- column: {
160
- id: discoveredId,
161
- spec: snap.spec,
162
- data: snap.data,
163
- dataStatus: snap.dataStatus,
164
- },
165
- path: variant.path,
166
- qualifications: variant.qualifications,
167
- originalId: snap.id,
168
- isPrimary,
169
- };
170
- });
171
75
  }
@@ -1,5 +1,5 @@
1
1
  import type { RenderCtxBase } from "../../../render";
2
- import type { PlDataTableModel } from "../typesV7";
2
+ import type { PlDataTableModel } from "../typesV8";
3
3
  import { createPlDataTableOptionsV2, createPlDataTableV2 } from "./createPlDataTableV2";
4
4
  import { createPlDataTableV3 } from "./createPlDataTableV3";
5
5
  import type { createPlDataTableOptionsV3 } from "./createPlDataTableV3";
@@ -26,4 +26,4 @@ export function createPlDataTable<A, U>(
26
26
  }
27
27
  }
28
28
 
29
- export { discoverTableColumnSnaphots } from "./discoverColumns";
29
+ export { discoverTableColumns as discoverTableColumnSnaphots } from "./discoverColumns";
@@ -1,8 +1,17 @@
1
- import { Annotation, type PColumnSpec, type PObjectId } from "@milaboratories/pl-model-common";
2
- import { SpecDriver } from "@milaboratories/pf-spec-driver";
3
- import { describe, expect, test } from "vitest";
4
- import { deriveAllLabels, evaluateRules, type LabelableColumn, type RuleColumn } from "./utils";
1
+ import {
2
+ Annotation,
3
+ createGlobalPObjectId,
4
+ type PColumnSpec,
5
+ type PObjectId,
6
+ } from "@milaboratories/pl-model-common";
7
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
8
+ import { deriveAllLabels, evaluateRules, type LabelableColumn } from "./utils";
5
9
  import type { ColumnOrderRule, ColumnVisibilityRule } from "./createPlDataTableV3";
10
+ import { ColumnLazy } from "../../../columns";
11
+ import {
12
+ createTestCollectionDriver,
13
+ type TestCollectionDriverHandle,
14
+ } from "../../../columns/__test_helpers__/collection_driver";
6
15
 
7
16
  // ---------------------------------------------------------------------------
8
17
  // Helpers
@@ -100,11 +109,6 @@ describe("deriveAllLabels", () => {
100
109
  expect(result["c2"]).toBe("Score 2");
101
110
  });
102
111
 
103
- // Regression: LabelableColumn.linkerPath used to be `linkerPath` while
104
- // deriveDistinctLabels.Entry expected `linkersPath`. Structural typing +
105
- // optional fields hid the mismatch from the type checker — the field flowed
106
- // through as "extra" and disambiguation silently broke. This asserts the
107
- // linker label reaches the output.
108
112
  test("linkerPath flows into deriveDistinctLabels and produces the 'via' suffix", () => {
109
113
  const linkerSpec = makeSpec({
110
114
  name: "linker",
@@ -136,92 +140,79 @@ describe("deriveAllLabels", () => {
136
140
  // evaluateRules
137
141
  // ---------------------------------------------------------------------------
138
142
 
139
- function makeRuleColumn(id: string, spec: Partial<PColumnSpec> = {}): RuleColumn {
140
- return {
141
- id: id as PObjectId,
142
- spec: makeSpec({ axesSpec: [{ name: "id", type: "String" }], ...spec }),
143
- };
143
+ let driverHandle: TestCollectionDriverHandle;
144
+
145
+ beforeEach(() => {
146
+ driverHandle = createTestCollectionDriver();
147
+ driverHandle.installAmbientCtx();
148
+ });
149
+
150
+ afterEach(async () => {
151
+ driverHandle.uninstallAmbientCtx();
152
+ await driverHandle.dispose();
153
+ });
154
+
155
+ function gid(name: string): PObjectId {
156
+ return createGlobalPObjectId("test-block", name);
157
+ }
158
+
159
+ function makeLazyColumn(name: string, spec: Partial<PColumnSpec> = {}): ColumnLazy {
160
+ const s = makeSpec({ axesSpec: [{ name: "id", type: "String" }], ...spec });
161
+ const id = gid(name);
162
+ driverHandle.register([{ id, spec: s }]);
163
+ return ColumnLazy.fromColumn({ id, spec: s, data: undefined as never });
144
164
  }
145
165
 
146
166
  describe("evaluateRules", () => {
147
167
  test("returns empty map when rules or columns are empty", () => {
148
- const driver = new SpecDriver();
149
- expect(evaluateRules([], [makeRuleColumn("c1")], driver).size).toBe(0);
168
+ expect(evaluateRules([], [makeLazyColumn("c1")]).size).toBe(0);
150
169
  expect(
151
- evaluateRules<ColumnVisibilityRule>([{ match: () => true, visibility: "hidden" }], [], driver)
152
- .size,
170
+ evaluateRules<ColumnVisibilityRule>(
171
+ [{ match: { name: "anything" }, visibility: "hidden" }],
172
+ [],
173
+ ).size,
153
174
  ).toBe(0);
154
175
  });
155
176
 
156
- test("evaluates predicate rules without touching the driver", () => {
157
- const driver = new Proxy({} as SpecDriver, {
158
- get() {
159
- throw new Error("driver should not be called for predicate-only rules");
160
- },
161
- });
162
-
163
- const rules: ColumnOrderRule[] = [
164
- { match: (spec) => spec.name === "alpha", priority: 10 },
165
- { match: (spec) => spec.name === "beta", priority: 5 },
166
- ];
167
- const result = evaluateRules(
168
- rules,
169
- [
170
- makeRuleColumn("a", { name: "alpha" }),
171
- makeRuleColumn("b", { name: "beta" }),
172
- makeRuleColumn("c", { name: "gamma" }),
173
- ],
174
- driver,
175
- );
176
-
177
- expect(result.get("a" as PObjectId)?.priority).toBe(10);
178
- expect(result.get("b" as PObjectId)?.priority).toBe(5);
179
- expect(result.has("c" as PObjectId)).toBe(false);
180
- });
181
-
182
- test("evaluates selector rules via PFrameSpec.discoverColumns", () => {
183
- const driver = new SpecDriver();
177
+ test("evaluates selector rules via the columnsCollection service", () => {
184
178
  const rules: ColumnVisibilityRule[] = [
185
179
  { match: { name: "^note$" }, visibility: "hidden" },
186
180
  { match: { name: "^score$" }, visibility: "optional" },
187
181
  ];
188
182
  const columns = [
189
- makeRuleColumn("n", { name: "note" }),
190
- makeRuleColumn("s", { name: "score" }),
191
- makeRuleColumn("x", { name: "other" }),
183
+ makeLazyColumn("n", { name: "note" }),
184
+ makeLazyColumn("s", { name: "score" }),
185
+ makeLazyColumn("x", { name: "other" }),
192
186
  ];
193
187
 
194
- const result = evaluateRules(rules, columns, driver);
188
+ const result = evaluateRules(rules, columns);
195
189
 
196
- expect(result.get("n" as PObjectId)?.visibility).toBe("hidden");
197
- expect(result.get("s" as PObjectId)?.visibility).toBe("optional");
198
- expect(result.has("x" as PObjectId)).toBe(false);
190
+ expect(result.get(gid("n"))?.visibility).toBe("hidden");
191
+ expect(result.get(gid("s"))?.visibility).toBe("optional");
192
+ expect(result.has(gid("x"))).toBe(false);
199
193
  });
200
194
 
201
- test("preserves original rule order when predicate and selector rules are mixed", () => {
202
- const driver = new SpecDriver();
195
+ test("preserves original rule order with overlapping selector rules", () => {
203
196
  const rules: ColumnOrderRule[] = [
204
- { match: (spec) => spec.name === "alpha", priority: 100 },
205
- { match: { name: "^alpha$" }, priority: 1 }, // shadowed by the predicate above
197
+ { match: { name: "^alpha$" }, priority: 100 },
198
+ { match: { name: "^alpha$" }, priority: 1 }, // shadowed by the earlier rule
206
199
  { match: { name: "^beta$" }, priority: 50 },
207
200
  ];
208
- const result = evaluateRules(
209
- rules,
210
- [makeRuleColumn("a", { name: "alpha" }), makeRuleColumn("b", { name: "beta" })],
211
- driver,
212
- );
213
-
214
- expect(result.get("a" as PObjectId)?.priority).toBe(100);
215
- expect(result.get("b" as PObjectId)?.priority).toBe(50);
201
+ const result = evaluateRules(rules, [
202
+ makeLazyColumn("a", { name: "alpha" }),
203
+ makeLazyColumn("b", { name: "beta" }),
204
+ ]);
205
+
206
+ expect(result.get(gid("a"))?.priority).toBe(100);
207
+ expect(result.get(gid("b"))?.priority).toBe(50);
216
208
  });
217
209
 
218
210
  test("dedupes columns by id before building spec frame (no duplicate-key crash)", () => {
219
- const driver = new SpecDriver();
220
211
  const rules: ColumnVisibilityRule[] = [{ match: { name: "^dup$" }, visibility: "hidden" }];
221
- const dup = makeRuleColumn("d", { name: "dup" });
212
+ const dup = makeLazyColumn("d", { name: "dup" });
222
213
 
223
- const result = evaluateRules(rules, [dup, dup, dup], driver);
214
+ const result = evaluateRules(rules, [dup, dup, dup]);
224
215
 
225
- expect(result.get("d" as PObjectId)?.visibility).toBe("hidden");
216
+ expect(result.get(gid("d"))?.visibility).toBe("hidden");
226
217
  });
227
218
  });