@platforma-sdk/model 1.79.27 → 1.80.2

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 +10 -8
  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
@@ -0,0 +1,57 @@
1
+ import type {
2
+ AxisId,
3
+ ColumnUniversalId,
4
+ PObjectId,
5
+ PTableColumnId,
6
+ PTableColumnIdColumn,
7
+ } from "@milaboratories/pl-model-common";
8
+ import { extractPObjectId, getAxisId, matchAxisId } from "@milaboratories/pl-model-common";
9
+ import type { ColumnRecipe } from "../../columns";
10
+
11
+ /**
12
+ * Resolves a user-supplied PTableColumnId against the discovered set of
13
+ * columns and axes. For column refs, accepts either the full recipe id (rich
14
+ * {@link ColumnUniversalId}) or the bare {@link PObjectId} and returns a ref
15
+ * carrying the recipe's full id — the same id that appears as the leaf in the
16
+ * emitted SpecQuery, so engine-side dedup is consistent with the resolver's
17
+ * view. Axis refs are checked against the union of axes spanned by the
18
+ * columns and pass through unchanged on hit.
19
+ * Returns `undefined` when the reference cannot be matched.
20
+ */
21
+ export type ColumnResolver = (ref: PTableColumnId) => PTableColumnId | undefined;
22
+
23
+ export function createColumnResolver(
24
+ columns: ColumnRecipe[],
25
+ deps?: { warn?: (msg: string) => void },
26
+ ): ColumnResolver {
27
+ const axisIds: AxisId[] = [];
28
+ for (const c of columns) {
29
+ for (const ax of c.getSpec().axesSpec) {
30
+ axisIds.push(getAxisId(ax));
31
+ }
32
+ }
33
+
34
+ const byFullId = new Map<ColumnUniversalId, ColumnRecipe>();
35
+ const byPObjectId = new Map<PObjectId, ColumnRecipe>();
36
+ for (const c of columns) {
37
+ byFullId.set(c.id, c);
38
+ const pid = extractPObjectId(c.id);
39
+ const existing = byPObjectId.get(pid);
40
+ if (existing === undefined) {
41
+ byPObjectId.set(pid, c);
42
+ } else if (existing.id !== c.id) {
43
+ deps?.warn?.(
44
+ `Ambiguous PObjectId ${pid}: recipe ids ${existing.id} and ${c.id} both match — keeping first.`,
45
+ );
46
+ }
47
+ }
48
+
49
+ return (ref: PTableColumnId): PTableColumnId | undefined => {
50
+ if (ref.type === "axis") {
51
+ return axisIds.some((a) => matchAxisId(ref.id, a)) ? ref : undefined;
52
+ }
53
+ const hit = byFullId.get(ref.id) ?? byPObjectId.get(extractPObjectId(ref.id));
54
+ if (hit === undefined) return undefined;
55
+ return { type: "column", id: hit.id } satisfies PTableColumnIdColumn;
56
+ };
57
+ }
@@ -1,25 +1,25 @@
1
1
  import type {
2
+ ColumnUniversalId,
2
3
  PColumn,
3
4
  PColumnIdAndSpec,
4
5
  PTableSorting,
5
6
  PTableDefV2,
6
- DataInfo,
7
- PColumnValues,
8
7
  } from "@milaboratories/pl-model-common";
9
8
  import { getColumnIdAndSpec } from "@milaboratories/pl-model-common";
10
- import type { PColumnDataUniversal, TreeNodeAccessor } from "../../../render";
9
+ import type { PColumnDataUniversal } from "../../../render";
11
10
  import { isFunction } from "es-toolkit";
12
- import type { PlDataTableFilters } from "../typesV7";
11
+ import type { PlDataTableFilters } from "../typesV8";
13
12
  import { createPTableDefV3 } from "./createPTableDefV3";
13
+ import { ColumnLazyImpl } from "../../../columns";
14
14
 
15
15
  export function createPTableDefV2(params: {
16
- columns: PColumn<PColumnDataUniversal>[];
17
- labelColumns: PColumn<PColumnDataUniversal>[];
16
+ columns: PColumn<undefined | PColumnDataUniversal>[];
17
+ labelColumns: PColumn<undefined | PColumnDataUniversal>[];
18
18
  coreJoinType: "inner" | "full";
19
19
  filters: null | PlDataTableFilters;
20
20
  sorting: PTableSorting[];
21
21
  coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;
22
- }): PTableDefV2<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {
22
+ }): PTableDefV2<ColumnUniversalId> {
23
23
  let coreColumns = params.columns;
24
24
  const secondaryColumns: typeof params.columns = [];
25
25
 
@@ -33,8 +33,8 @@ export function createPTableDefV2(params: {
33
33
  secondaryColumns.push(...params.labelColumns);
34
34
 
35
35
  return createPTableDefV3({
36
- primary: coreColumns.map((column) => ({ column })),
37
- secondary: secondaryColumns.map((column) => ({ entries: [{ column }] })),
36
+ primary: coreColumns.map((column) => ColumnLazyImpl.fromColumn(column)),
37
+ secondary: secondaryColumns.map((column) => ColumnLazyImpl.fromColumn(column)),
38
38
  primaryJoinType: params.coreJoinType,
39
39
  filters: params.filters,
40
40
  sorting: params.sorting,
@@ -1,6 +1,7 @@
1
1
  import type {
2
2
  AxisQualification,
3
- PColumn,
3
+ ColumnUniversalId,
4
+ PObjectId,
4
5
  PTableColumnId,
5
6
  PTableSorting,
6
7
  PTableDefV2,
@@ -8,53 +9,33 @@ import type {
8
9
  SpecQuery,
9
10
  SpecQueryExpression,
10
11
  SpecQueryJoinEntry,
11
- PObjectId,
12
12
  } from "@milaboratories/pl-model-common";
13
13
  import { isBooleanExpression } from "@milaboratories/pl-model-common";
14
- import type { PColumnDataUniversal } from "../../../render";
15
14
  import { isNil } from "es-toolkit";
16
- import type { PlDataTableFilters } from "../typesV7";
15
+ import type { PlDataTableFilters } from "../typesV8";
17
16
  import { distillFilterSpec, filterSpecToSpecQueryExpr } from "../../../filters";
18
17
  import type { Nil } from "@milaboratories/helpers";
18
+ import type { ColumnRecipe } from "../../..";
19
+ import { hitQualifications, queriesQualifications } from "../../../columns";
19
20
 
20
- /** Primary side — base row grid. */
21
- export type PrimaryEntry<Data> = {
22
- column: PColumn<Data>;
23
- };
24
-
25
- /** Secondary side leaf — the hit column or a label column, optionally reached via a linker chain. */
26
- export type SecondaryEntry<Data> = {
27
- column: PColumn<Data>;
28
- /** For hit: `forHit`. For label/direct: omit. Applied to the outermost emitted join entry. */
29
- qualifications?: AxisQualification[];
30
- /**
31
- * Linker chain leading to `column`, ordered from outermost to innermost.
32
- * When present, the entry is emitted as nested `linkerJoin` operators —
33
- * one per linker — wrapping the hit column. Binds this hit to this exact
34
- * chain so the engine cannot reuse a sibling chain that happens to share
35
- * axis name + domain.
36
- */
37
- linkers?: PColumn<Data>[];
38
- };
39
-
40
- /** Secondary group — one join subtree outer-joined onto primary. */
41
- export type SecondaryGroup<Data> = {
42
- entries: SecondaryEntry<Data>[];
43
- /** Per-variant qualifications applied to the cloned primary anchors on this group's side.
44
- * Keyed by `PrimaryEntry.column.id`. Omit → base primary used unqualified (labels, non-variant columns). */
45
- primaryQualifications?: Record<PObjectId, AxisQualification[]>;
46
- };
47
-
48
- export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
21
+ /**
22
+ * Assemble a ptable def directly from recipes. Each secondary recipe is its own
23
+ * outer-joined subtree: `getQuery()` encodes its linker chain, and its
24
+ * hit-/queries-qualifications are derived on the spot via {@link hitQualifications}
25
+ * / {@link queriesQualifications} — no pre-extracted DTO. Bare leaves yield empty
26
+ * qualifications, so plain {@link ColumnRecipe} arrays (e.g. label columns) work
27
+ * unchanged.
28
+ */
29
+ export function createPTableDefV3(params: {
49
30
  primaryJoinType: "inner" | "full";
50
- primary: PrimaryEntry<Data>[];
51
- secondary: SecondaryGroup<Data>[];
31
+ primary: ColumnRecipe[];
32
+ secondary: ColumnRecipe[];
52
33
  filters?: Nil | PlDataTableFilters;
53
34
  sorting?: Nil | PTableSorting[];
54
- }): PTableDefV2<PColumn<Data>> {
55
- let query: SpecQuery<PColumn<Data>> = {
35
+ }): PTableDefV2<ColumnUniversalId> {
36
+ let query: SpecQuery = {
56
37
  type: params.primaryJoinType === "inner" ? "innerJoin" : "fullJoin",
57
- entries: params.primary.map((a) => toLeaf(a.column, [])),
38
+ entries: params.primary.map((c) => columnToJoinEntry(c, [])),
58
39
  };
59
40
 
60
41
  if (params.secondary.length > 0) {
@@ -62,11 +43,12 @@ export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
62
43
  type: "outerJoin",
63
44
  primary: {
64
45
  entry: query,
65
- qualifications: params.secondary.flatMap((g) =>
66
- params.primary.flatMap((p) => g.primaryQualifications?.[p.column.id] ?? []),
67
- ),
46
+ qualifications: params.secondary.flatMap((s) => {
47
+ const quals = queriesQualifications(s);
48
+ return params.primary.flatMap((p) => quals[p.id as PObjectId] ?? []);
49
+ }),
68
50
  },
69
- secondary: params.secondary.flatMap((g) => g.entries.map((e) => toJoinEntry(e))),
51
+ secondary: params.secondary.map((c) => columnToJoinEntry(c, hitQualifications(c))),
70
52
  };
71
53
  }
72
54
 
@@ -95,7 +77,7 @@ export function createPTableDefV3<Data = PColumnDataUniversal>(params: {
95
77
  sortBy: params.sorting.map((s) => ({
96
78
  expression: columnIdToExpr(s.column),
97
79
  ascending: s.ascending,
98
- nullsFirst: !s.naAndAbsentAreLeastValues,
80
+ nullsFirst: s.naAndAbsentAreLeastValues,
99
81
  })),
100
82
  };
101
83
  }
@@ -109,26 +91,12 @@ function columnIdToExpr(col: PTableColumnId): SpecQueryExpression {
109
91
  : { type: "columnRef", value: col.id };
110
92
  }
111
93
 
112
- function toLeaf<Data>(
113
- col: PColumn<Data>,
114
- qs: AxisQualification[],
115
- ): SpecQueryJoinEntry<PColumn<Data>> {
94
+ function columnToJoinEntry(
95
+ col: ColumnRecipe,
96
+ qualifications: readonly AxisQualification[],
97
+ ): SpecQueryJoinEntry {
116
98
  return {
117
- entry: { type: "column", column: col },
118
- qualifications: qs,
99
+ entry: col.getQuery(),
100
+ qualifications,
119
101
  };
120
102
  }
121
-
122
- function toJoinEntry<Data>(e: SecondaryEntry<Data>): SpecQueryJoinEntry<PColumn<Data>> {
123
- const qs = e.qualifications ?? [];
124
- if (isNil(e.linkers) || e.linkers.length === 0) return toLeaf(e.column, qs);
125
-
126
- const folded = e.linkers.reduceRight<SpecQueryJoinEntry<PColumn<Data>>>(
127
- (inner, linker) => ({
128
- entry: { type: "linkerJoin", linker: { column: linker }, secondary: [inner] },
129
- qualifications: [],
130
- }),
131
- toLeaf(e.column, []),
132
- );
133
- return { ...folded, qualifications: qs };
134
- }
@@ -1,20 +1,14 @@
1
1
  import type {
2
- AxisId,
2
+ ColumnUniversalId,
3
+ FilterSpecNode,
3
4
  PColumn,
4
- PObjectId,
5
- PTableColumnId,
6
- PTableColumnIdAxis,
7
5
  PTableColumnIdColumn,
8
- CanonicalizedJson,
6
+ PTableSorting,
9
7
  } from "@milaboratories/pl-model-common";
10
8
  import {
11
9
  Annotation,
12
- canonicalizeJson,
13
- getAxisId,
14
10
  getColumnIdAndSpec,
15
11
  isLinkerColumn,
16
- uniqueBy,
17
- parseJson,
18
12
  PColumnName,
19
13
  } from "@milaboratories/pl-model-common";
20
14
  import type {
@@ -25,14 +19,21 @@ import type {
25
19
  } from "../../../render";
26
20
  import { allPColumnsReady, deriveLabels, PColumnCollection } from "../../../render";
27
21
  import { identity } from "es-toolkit";
28
- import type { CreatePlDataTableOps, PlDataTableModel } from "../typesV7";
22
+ import type {
23
+ CreatePlDataTableOps,
24
+ PlDataTableFilters,
25
+ PlDataTableFilterSpecLeaf,
26
+ PlDataTableModel,
27
+ } from "../typesV8";
29
28
  import { upgradePlDataTableStateV2 } from "../state-migration";
30
29
  import type { PlDataTableStateV2 } from "../state-migration";
31
30
  import { getMatchingLabelColumns } from "../labels";
32
- import { collectFilterSpecColumns } from "../../../filters/traverse";
33
- import { isEmpty } from "es-toolkit/compat";
31
+ import { collectFilterSpecColumns, traverseFilterSpec } from "../../../filters/traverse";
34
32
  import { createPTableDefV2 } from "./createPTableDefV2";
35
33
  import { isColumnOptional } from "./utils";
34
+ import { ColumnLazyImpl } from "../../../columns";
35
+ import { createColumnResolver, type ColumnResolver } from "../columnResolver";
36
+ import { isNil, type Nil } from "@milaboratories/helpers";
36
37
 
37
38
  /**
38
39
  * @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.
@@ -81,52 +82,32 @@ export function createPlDataTableV2<A, U>(
81
82
 
82
83
  const fullColumns = [...columns, ...fullLabelColumns];
83
84
 
84
- const fullColumnsAxes = uniqueBy(
85
- fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),
86
- (a) => canonicalizeJson<AxisId>(a),
85
+ const resolver = createColumnResolver(
86
+ fullColumns.map((c) => ColumnLazyImpl.fromColumn(c)),
87
+ { warn: ctx.logWarn.bind(ctx) },
87
88
  );
88
- const fullColumnsIds: PTableColumnId[] = [
89
- ...fullColumnsAxes.map((a) => ({ type: "axis", id: a }) satisfies PTableColumnIdAxis),
90
- ...fullColumns.map((c) => ({ type: "column", id: c.id }) satisfies PTableColumnIdColumn),
91
- ];
92
- const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));
93
- const isValidColumnId = (id: string): boolean =>
94
- fullColumnsIdsSet.has(id as CanonicalizedJson<PTableColumnId>);
95
-
96
- // -- Filtering validation --
97
- const filters = tableStateNormalized.pTableParams.filters;
98
- const defaultFilters = options?.filters ?? undefined;
99
- const filterColumns = filters !== null ? collectFilterSpecColumns(filters) : [];
100
- const firstInvalidFilterColumn = filterColumns.find((col) => !isValidColumnId(col));
101
- if (firstInvalidFilterColumn)
102
- throw new Error(
103
- `Invalid filter column ${firstInvalidFilterColumn}: column reference does not match the table columns`,
104
- );
105
- const defaultFilterColumns =
106
- defaultFilters !== undefined ? collectFilterSpecColumns(defaultFilters) : [];
107
- const firstInvalidDefaultFilterColumn = defaultFilterColumns.find((col) => !isValidColumnId(col));
108
- if (firstInvalidDefaultFilterColumn)
109
- throw new Error(
110
- `Invalid default filter column ${firstInvalidDefaultFilterColumn}: column reference does not match the table columns`,
111
- );
112
89
 
113
- // -- Sorting validation --
114
- const userSorting = tableStateNormalized.pTableParams.sorting;
115
- const sorting = (isEmpty(userSorting) ? options?.sorting : userSorting) ?? [];
116
- const firstInvalidSortingColumn = sorting.find(
117
- (s) => !isValidColumnId(canonicalizeJson<PTableColumnId>(s.column)),
90
+ // -- Filtering: rewrite via resolver, throw if any reference is unresolved --
91
+ const rawFilters = tableStateNormalized.pTableParams.filters;
92
+ const rawDefaultFilters = options?.filters ?? undefined;
93
+ const filters = remapFiltersThrowing(rawFilters, resolver, "filter");
94
+ const defaultFilters = remapFiltersThrowing(
95
+ rawDefaultFilters ?? null,
96
+ resolver,
97
+ "default filter",
118
98
  );
119
- if (firstInvalidSortingColumn)
120
- throw new Error(
121
- `Invalid sorting column ${JSON.stringify(firstInvalidSortingColumn.column)}: column reference does not match the table columns`,
122
- );
99
+
100
+ // -- Sorting: rewrite via resolver, throw if any reference is unresolved --
101
+ const userSorting = tableStateNormalized.pTableParams.sorting;
102
+ const rawSorting = (isNil(userSorting) ? options?.sorting : userSorting) ?? [];
103
+ const sorting = remapSortingThrowing(rawSorting, resolver);
123
104
 
124
105
  const coreJoinType = options?.coreJoinType ?? "full";
125
106
  const fullDef = createPTableDefV2({
126
107
  columns,
127
108
  labelColumns: fullLabelColumns,
128
109
  coreJoinType,
129
- filters,
110
+ filters: filters ?? null,
130
111
  sorting,
131
112
  coreColumnPredicate: options?.coreColumnPredicate,
132
113
  });
@@ -135,8 +116,8 @@ export function createPlDataTableV2<A, U>(
135
116
  const pframeHandle = ctx.createPFrame(fullColumns);
136
117
  if (!fullHandle || !pframeHandle) return undefined;
137
118
 
138
- const hiddenColumns = new Set<PObjectId>(
139
- ((): PObjectId[] => {
119
+ const hiddenColumns = new Set<ColumnUniversalId>(
120
+ ((): ColumnUniversalId[] => {
140
121
  // Inner join works as a filter - all columns must be present
141
122
  if (coreJoinType === "inner") return [];
142
123
 
@@ -172,10 +153,7 @@ export function createPlDataTableV2<A, U>(
172
153
  // Preserve filter columns from being hidden
173
154
  if (filters) {
174
155
  collectFilterSpecColumns(filters)
175
- .flatMap((c) => {
176
- const obj = parseJson(c);
177
- return obj.type === "column" ? [obj.id] : [];
178
- })
156
+ .flatMap((c) => (c.type === "column" ? [c.id] : []))
179
157
  .forEach((c) => hiddenColumns.delete(c));
180
158
  }
181
159
 
@@ -192,7 +170,7 @@ export function createPlDataTableV2<A, U>(
192
170
  columns: visibleColumns,
193
171
  labelColumns: visibleLabelColumns,
194
172
  coreJoinType,
195
- filters,
173
+ filters: filters ?? null,
196
174
  sorting,
197
175
  coreColumnPredicate,
198
176
  });
@@ -205,13 +183,62 @@ export function createPlDataTableV2<A, U>(
205
183
  fullTableHandle: fullHandle,
206
184
  fullPframeHandle: pframeHandle,
207
185
  visibleTableHandle: visibleHandle,
208
- defaultFilters,
186
+ defaultFilters: defaultFilters ?? undefined,
209
187
  } satisfies PlDataTableModel;
210
188
  }
211
189
 
190
+ /** Rewrite filter column refs through the resolver; throw on any unresolved ref. */
191
+ function remapFiltersThrowing(
192
+ filters: Nil | PlDataTableFilters,
193
+ resolver: ColumnResolver,
194
+ label: string,
195
+ ): Nil | PlDataTableFilters {
196
+ if (isNil(filters)) return filters;
197
+
198
+ type Node = FilterSpecNode<PlDataTableFilterSpecLeaf>;
199
+ return traverseFilterSpec(filters, {
200
+ leaf: (leaf): Node => {
201
+ if (leaf.type === undefined) return leaf;
202
+ const result = { ...leaf };
203
+ if ("column" in result) {
204
+ const c = resolver(result.column);
205
+ if (isNil(c))
206
+ throw new Error(
207
+ `Invalid ${label} column ${JSON.stringify(result.column)}: column reference does not match the table columns`,
208
+ );
209
+ result.column = c;
210
+ }
211
+ if ("rhs" in result) {
212
+ const c = resolver(result.rhs);
213
+ if (isNil(c))
214
+ throw new Error(
215
+ `Invalid ${label} column ${JSON.stringify(result.rhs)}: column reference does not match the table columns`,
216
+ );
217
+ result.rhs = c;
218
+ }
219
+ return result;
220
+ },
221
+ and: (results): Node => ({ type: "and", filters: results }),
222
+ or: (results): Node => ({ type: "or", filters: results }),
223
+ not: (result): Node => ({ type: "not", filter: result }),
224
+ }) as PlDataTableFilters;
225
+ }
226
+
227
+ /** Rewrite sorting column refs through the resolver; throw on any unresolved ref. */
228
+ function remapSortingThrowing(sorting: PTableSorting[], resolver: ColumnResolver): PTableSorting[] {
229
+ return sorting.map((s) => {
230
+ const c = resolver(s.column);
231
+ if (isNil(c))
232
+ throw new Error(
233
+ `Invalid sorting column ${JSON.stringify(s.column)}: column reference does not match the table columns`,
234
+ );
235
+ return { ...s, column: c };
236
+ });
237
+ }
238
+
212
239
  function getAllLabelColumns(
213
240
  resultPool: AxisLabelProvider & ColumnProvider,
214
- ): PColumn<PColumnDataUniversal>[] | undefined {
241
+ ): undefined | PColumn<undefined | PColumnDataUniversal>[] {
215
242
  return new PColumnCollection()
216
243
  .addAxisLabelProvider(resultPool)
217
244
  .addColumnProvider(resultPool)