@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 +1 @@
1
- {"version":3,"file":"utils.js","names":["isNil"],"sources":["../../../../src/components/PlDataTable/createPlDataTable/utils.ts"],"sourcesContent":["import {\n type PColumn,\n type PColumnSpec,\n type PFrameSpecDriver,\n type PObjectId,\n Annotation,\n canonicalizeAxisId,\n DiscoveredPColumnId,\n readAnnotation,\n} from \"@milaboratories/pl-model-common\";\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n} from \"../../../labels/derive_distinct_labels\";\nimport {\n deriveDistinctTooltips,\n type TooltipEntry,\n} from \"../../../labels/derive_distinct_tooltips\";\nimport type { ColumnDataStatus, MatchQualifications, MatchVariant } from \"../../../columns\";\nimport type { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule } from \"./createPlDataTableV3\";\nimport type { ColumnSelector } from \"../../../columns\";\nimport { ArrayColumnProvider, ColumnCollectionBuilder } from \"../../../columns\";\nimport { isNil } from \"es-toolkit\";\nimport { getField } from \"@milaboratories/helpers\";\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/** Column shape consumed by rule evaluation. */\nexport type RuleColumn = Pick<PColumn<PObjectId>, \"id\" | \"spec\">;\n\n/** Get effective visibility for a column. Rule map lookup first, then annotation fallback. */\nexport function getEffectiveVisibility(\n col: RuleColumn,\n visibilityByColId?: Map<PObjectId, ColumnVisibilityRule>,\n): undefined | \"default\" | \"optional\" | \"hidden\" {\n const rule = visibilityByColId?.get(col.id);\n if (rule !== undefined) return rule.visibility;\n if (isColumnHidden(col.spec)) return \"hidden\";\n if (isColumnOptional(col.spec)) return \"optional\";\n return undefined;\n}\n\n/** Get ordering priority for a column. Rule map lookup first, then annotation fallback. */\nexport function getOrderPriority(\n col: RuleColumn,\n orderByColId?: Map<PObjectId, ColumnOrderRule>,\n): undefined | number {\n const rule = orderByColId?.get(col.id);\n if (rule !== undefined) return rule.priority;\n const annotation = Number(readAnnotation(col.spec, Annotation.Table.OrderPriority));\n return isNaN(annotation) ? undefined : annotation;\n}\n\n/**\n * Evaluate display rules against a set of columns and return a map of `colId → winning rule`\n * (first-match-wins, preserving original rule order).\n *\n * Predicate-based rules (`ColumnMatcher`) are evaluated directly on the spec.\n * Selector-based rules (`ColumnSelector`) are matched via `PFrameSpecDriver.discoverColumns`\n * using the same engine as `ColumnCollection.findColumns` — no client-side matcher.\n */\nexport function evaluateRules<R extends { match: ColumnMatcher | ColumnSelector }>(\n rules: R[],\n columns: RuleColumn[],\n pframeSpec: PFrameSpecDriver,\n): Map<PObjectId, R> {\n const result = new Map<PObjectId, R>();\n if (rules.length === 0 || columns.length === 0) return result;\n\n const hasSelectorRules = rules.some((rule) => typeof rule.match !== \"function\");\n const selectorHitsByRule = new Map<R, Set<PObjectId>>();\n\n if (hasSelectorRules) {\n const dedupedColumns = dedupeById(columns);\n const pColumns = dedupedColumns.map((c) => ({ id: c.id, spec: c.spec, data: undefined }));\n const collection = new ColumnCollectionBuilder(pframeSpec)\n .addSource(new ArrayColumnProvider(pColumns))\n .build();\n if (collection === undefined) return result;\n\n try {\n for (const rule of rules) {\n if (typeof rule.match === \"function\") continue;\n const hits = collection.findColumns({ include: rule.match });\n selectorHitsByRule.set(rule, new Set(hits.map((h) => h.id)));\n }\n } finally {\n collection.dispose();\n }\n }\n\n for (const col of columns) {\n for (const rule of rules) {\n const matches =\n typeof rule.match === \"function\"\n ? rule.match(col.spec)\n : (selectorHitsByRule.get(rule)?.has(col.id) ?? false);\n if (matches) {\n result.set(col.id, rule);\n break;\n }\n }\n }\n return result;\n}\n\nfunction dedupeById(columns: RuleColumn[]): RuleColumn[] {\n const seen = new Set<PObjectId>();\n const result: RuleColumn[] = [];\n for (const col of columns) {\n if (seen.has(col.id)) continue;\n seen.add(col.id);\n result.push(col);\n }\n return result;\n}\n\n/**\n * Writes derived labels into column and axis annotations.\n * Returns new column objects with modified specs — original columns are not mutated.\n *\n * For each column: writes derived label into Annotation.Label (if present in derivedLabels).\n * For each axis in column specs: writes derived axis label into AxisSpec annotations.\n */\nexport function withLabelAnnotations<\n T extends {\n readonly id: PObjectId;\n readonly spec: PColumnSpec;\n },\n>(derivedLabels: undefined | Record<string, string>, columns: T[]): T[] {\n if (derivedLabels === undefined) return columns;\n return columns.map((col) => {\n const colLabel = derivedLabels[col.id];\n return {\n ...col,\n spec: {\n ...col.spec,\n ...(isNil(colLabel)\n ? {}\n : { annotations: { ...col.spec.annotations, [Annotation.Label]: colLabel } }),\n axesSpec: col.spec.axesSpec.map((axis) => {\n const label = derivedLabels[canonicalizeAxisId(axis)];\n return isNil(label)\n ? axis\n : { ...axis, annotations: { ...axis.annotations, [Annotation.Label]: label } };\n }),\n },\n } as T;\n });\n}\n\nexport function withDataStatusAnnotations<\n T extends {\n readonly spec: PColumnSpec;\n readonly dataStatus: ColumnDataStatus;\n },\n>(columns: T[]): T[] {\n return columns.map((col) => {\n return {\n ...col,\n spec: {\n ...col.spec,\n annotations: {\n ...col.spec.annotations,\n [Annotation.DataStatus]: col.dataStatus,\n },\n },\n } as T;\n });\n}\n\n/**\n * Writes effective display properties (OrderPriority, Visibility) from precomputed rule maps\n * into column annotations. Returns new column objects — originals are not mutated.\n */\nexport function withTableVisualAnnotations<\n T extends { readonly id: PObjectId; readonly spec: PColumnSpec },\n>(\n visibilityByColId: undefined | Map<PObjectId, ColumnVisibilityRule>,\n orderByColId: undefined | Map<PObjectId, ColumnOrderRule>,\n columns: T[],\n): T[] {\n if (visibilityByColId === undefined && orderByColId === undefined) return columns;\n return columns.map((col) => {\n const annotations = { ...col.spec.annotations };\n\n const visibility = getEffectiveVisibility(col, visibilityByColId);\n if (!isNil(visibility)) annotations[Annotation.Table.Visibility] = visibility;\n\n const orderPriority = getOrderPriority(col, orderByColId);\n if (!isNil(orderPriority)) annotations[Annotation.Table.OrderPriority] = String(orderPriority);\n\n return {\n ...col,\n spec: {\n ...col.spec,\n annotations: annotations,\n },\n } as T;\n });\n}\n\n/**\n * Writes derived info annotations into column annotations.\n * Columns without an info entry are passed through unchanged.\n */\nexport function withInfoAnnotations<\n T extends { readonly id: PObjectId; readonly spec: PColumnSpec },\n>(infoById: undefined | Record<string, string>, columns: T[]): T[] {\n if (isNil(infoById)) return columns;\n return columns.map((col) => {\n const info = infoById[col.id];\n if (isNil(info)) return col;\n return {\n ...col,\n spec: {\n ...col.spec,\n annotations: { ...col.spec.annotations, [Annotation.Table.Info]: info },\n },\n } as T;\n });\n}\n\nexport function withHidenAxesAnnotations<T extends { readonly spec: PColumnSpec }>(\n columns: T[],\n): T[] {\n return columns.map(\n (col) =>\n ({\n ...col,\n spec: {\n ...col.spec,\n axesSpec: col.spec.axesSpec.map((axis) => ({\n ...axis,\n annotations: { ...axis.annotations, [Annotation.Table.Visibility]: \"hidden\" },\n })),\n },\n }) as T,\n );\n}\n\n/** Column shape required by label derivation. */\nexport type LabelableColumn = {\n readonly id: PObjectId;\n readonly spec: PColumnSpec;\n readonly linkerPath?: MatchVariant[\"path\"];\n readonly qualifications?: MatchQualifications;\n};\n\n/** Derive labels for all table elements: columns via deriveDistinctLabels, axes from label columns. */\nexport function deriveAllLabels(options: {\n columns: LabelableColumn[];\n deriveLabelsOptions?: DeriveLabelsOptions;\n}): Record<string, string> {\n const { columns, deriveLabelsOptions } = options;\n const entries = columns.map((c) => ({\n spec: c.spec,\n linkerPath: c.linkerPath?.map((step) => ({\n spec: step.linker.spec,\n })),\n qualifications: c.qualifications,\n }));\n const columnLabels = deriveDistinctLabels(entries, deriveLabelsOptions).reduce(\n (acc, label, index) => ((acc[columns[index].id] = label), acc),\n {} as Record<string, string>,\n );\n return columnLabels;\n}\n\n/** Column shape required by tooltip derivation. */\nexport type TooltipableColumn = {\n readonly id: PObjectId | DiscoveredPColumnId;\n readonly spec: PColumnSpec;\n readonly originalId?: PObjectId;\n readonly linkerPath?: MatchVariant[\"path\"];\n readonly qualifications?: MatchQualifications;\n};\n\n/** Derive origin tooltips for columns whose qualifications or linker path carry info. */\nexport function deriveAllTooltips(options: {\n columns: TooltipableColumn[];\n}): Record<DiscoveredPColumnId, string> {\n const { columns } = options;\n\n const variantCountByOriginal = columns.reduce<Map<PObjectId, number>>((acc, c) => {\n return acc.set(getField(c, \"originalId\") ?? c.id, (acc.get(c.originalId ?? c.id) ?? 0) + 1);\n }, new Map());\n\n const { entries } = columns.reduce(\n ({ entries, variantSeen }, c) => {\n const id = getField(c, \"originalId\") ?? c.id;\n const variantCount = variantCountByOriginal.get(id);\n const variantIndex =\n (variantSeen.set(id, (variantSeen.get(id) ?? 0) + 1), variantSeen.get(id));\n\n entries.push({\n spec: c.spec,\n linkerPath: c.linkerPath,\n qualifications: c.qualifications,\n variantIndex,\n variantCount,\n });\n\n return { entries, variantSeen };\n },\n { entries: [] as TooltipEntry[], variantSeen: new Map<PObjectId, number>() },\n );\n\n const tooltips = deriveDistinctTooltips(entries);\n\n return Object.fromEntries(\n tooltips.flatMap((t, i) => (isNil(t) ? [] : [[columns[i].id, t] as const])),\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../src/components/PlDataTable/createPlDataTable/utils.ts"],"sourcesContent":["import {\n type AnnotationDataStatus,\n type ColumnUniversalId,\n type PColumn,\n type PColumnSpec,\n type PObjectId,\n Annotation,\n extractPObjectId,\n readAnnotation,\n} from \"@milaboratories/pl-model-common\";\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n} from \"../../../labels/derive_distinct_labels\";\nimport {\n deriveDistinctTooltips,\n type TooltipEntry,\n} from \"../../../labels/derive_distinct_tooltips\";\nimport type { ColumnOrderRule, ColumnVisibilityRule } from \"./createPlDataTableV3\";\nimport type { ColumnSelector, MatchQualifications } from \"@milaboratories/pl-model-common\";\nimport { ColumnsCollection, hasColumnData, type ColumnRecipe } from \"../../../columns\";\nimport type { GlobalCfgRenderCtx } from \"../../../render/internal\";\nimport { isNil, uniqBy } from \"es-toolkit\";\nimport { getField } from \"@milaboratories/helpers\";\n\n/** Adapt a {@link ColumnRecipe} to the plain {@link RuleColumn} shape. */\nexport function toRuleColumn(col: ColumnRecipe): RuleColumn {\n return { id: extractPObjectId(col.id), spec: col.getSpec() };\n}\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/** Column shape consumed by rule evaluation. */\nexport type RuleColumn = Pick<PColumn<PObjectId>, \"id\" | \"spec\">;\n\n/** Get effective visibility for a column. Rule map lookup first, then annotation fallback. */\nexport function getEffectiveVisibility(\n col: RuleColumn,\n visibilityByColId?: Map<PObjectId, ColumnVisibilityRule>,\n): undefined | \"default\" | \"optional\" | \"hidden\" {\n const rule = visibilityByColId?.get(col.id);\n if (rule !== undefined) return rule.visibility;\n if (isColumnHidden(col.spec)) return \"hidden\";\n if (isColumnOptional(col.spec)) return \"optional\";\n return undefined;\n}\n\n/** Get ordering priority for a column. Rule map lookup first, then annotation fallback. */\nexport function getOrderPriority(\n col: RuleColumn,\n orderByColId?: Map<PObjectId, ColumnOrderRule>,\n): undefined | number {\n const rule = orderByColId?.get(col.id);\n if (rule !== undefined) return rule.priority;\n const annotation = Number(readAnnotation(col.spec, Annotation.Table.OrderPriority));\n return isNaN(annotation) ? undefined : annotation;\n}\n\n/**\n * Evaluate display rules against a set of columns and return a map of `colId → winning rule`\n * (first-match-wins, preserving original rule order).\n *\n * Predicate-based rules (`ColumnMatcher`) are evaluated directly on the spec.\n * Selector-based rules (`ColumnSelector`) are matched via the\n * `columnsCollection` service — the inline column ids must be resolvable in\n * the active render ctx for the host to read their specs.\n */\nexport function evaluateRules<R extends { match: ColumnSelector }>(\n rules: R[],\n columns: ColumnRecipe[],\n): Map<PObjectId, R> {\n const result = new Map<PObjectId, R>();\n if (rules.length === 0 || columns.length === 0) return result;\n\n const selectorRules = rules.filter((rule) => typeof rule.match !== \"function\");\n const selectorHitsByRule = new Map<R, Set<PObjectId>>();\n\n if (selectorRules.length > 0) {\n const baseColumns = uniqBy(columns, (col) => col.id);\n const baseCollection = ColumnsCollection([{ columns: baseColumns, isFinal: true }]);\n for (const rule of selectorRules) {\n const hitIds = baseCollection.filter({ include: rule.match }).getColumnIds();\n if (hitIds.length === 0) return result;\n selectorHitsByRule.set(rule, new Set(hitIds.map((id) => extractPObjectId(id))));\n }\n }\n\n for (const col of columns) {\n const colKey = extractPObjectId(col.id);\n for (const rule of rules) {\n const matches = selectorHitsByRule.get(rule)?.has(colKey) ?? false;\n if (matches) {\n result.set(colKey, rule);\n break;\n }\n }\n }\n return result;\n}\n\n/**\n * Build a sidecar map `columnId → AnnotationDataStatus` derived from each\n * recipe's own status. This is *rendering* metadata — kept out of the spec\n * so it cannot perturb column identity (id-bearing spec overrides would\n * diverge the visible PTable's column ids from the full table / pframe).\n *\n * Mapping `ColumnFieldStatus` × actual byte-presence → `AnnotationDataStatus`:\n * - `absent` → `\"absent\"`\n * - `resolving` → `\"computing\"`\n * - `present` + `hasColumnData()` → `\"ready\"`\n * - `present` + no bytes yet → `\"computing\"`\n *\n * Intentionally scoped to visible columns — the probe is meaningful only for\n * what the user will actually see.\n */\nexport function buildDataStatusMap(\n columns: ColumnRecipe[],\n opts: { ctx?: GlobalCfgRenderCtx } = {},\n): Record<ColumnUniversalId, AnnotationDataStatus> {\n return columns.reduce(\n (acc, c) => ((acc[c.id] = deriveDataStatus(c, opts)), acc),\n {} as Record<ColumnUniversalId, AnnotationDataStatus>,\n );\n}\n\nfunction deriveDataStatus(\n column: ColumnRecipe,\n opts: { ctx?: GlobalCfgRenderCtx },\n): AnnotationDataStatus {\n const field = column.getDataStatus();\n if (field === \"absent\") return \"absent\";\n if (field === \"resolving\") return \"computing\";\n return hasColumnData(column, opts) ? \"ready\" : \"computing\";\n}\n\n/** Column shape required by label derivation. */\nexport type LabelableColumn = {\n readonly id: ColumnUniversalId;\n readonly spec: PColumnSpec;\n readonly linkerPath?: ReadonlyArray<{ readonly linker: { readonly spec: PColumnSpec } }>;\n readonly qualifications?: MatchQualifications;\n};\n\n/** Derive labels for all table elements: columns via deriveDistinctLabels, axes from label columns. */\nexport function deriveAllLabels(options: {\n columns: LabelableColumn[];\n deriveLabelsOptions?: DeriveLabelsOptions;\n}): Record<string, string> {\n const { columns, deriveLabelsOptions } = options;\n const entries = columns.map((c) => ({\n spec: c.spec,\n linkerPath: c.linkerPath?.map((step) => ({ spec: step.linker.spec })),\n qualifications: c.qualifications,\n }));\n const columnLabels = deriveDistinctLabels(entries, deriveLabelsOptions).reduce(\n (acc, label, index) => ((acc[columns[index].id] = label), acc),\n {} as Record<string, string>,\n );\n return columnLabels;\n}\n\n/** Column shape required by tooltip derivation. */\nexport type TooltipableColumn = {\n readonly id: ColumnUniversalId;\n readonly spec: PColumnSpec;\n readonly originalId?: PObjectId;\n readonly linkerPath?: ReadonlyArray<{ readonly linker: { readonly spec: PColumnSpec } }>;\n readonly qualifications?: MatchQualifications;\n};\n\n/** Derive origin tooltips for columns whose qualifications or linker path carry info. */\nexport function deriveAllTooltips(options: {\n columns: TooltipableColumn[];\n}): Record<ColumnUniversalId, string> {\n const { columns } = options;\n\n const variantCountByOriginal = columns.reduce<Map<ColumnUniversalId, number>>((acc, c) => {\n return acc.set(getField(c, \"originalId\") ?? c.id, (acc.get(c.originalId ?? c.id) ?? 0) + 1);\n }, new Map());\n\n const { entries } = columns.reduce(\n ({ entries, variantSeen }, c) => {\n const id = getField(c, \"originalId\") ?? c.id;\n const variantCount = variantCountByOriginal.get(id);\n const variantIndex =\n (variantSeen.set(id, (variantSeen.get(id) ?? 0) + 1), variantSeen.get(id));\n\n entries.push({\n spec: c.spec,\n linkerPath: c.linkerPath,\n qualifications: c.qualifications,\n variantIndex,\n variantCount,\n });\n\n return { entries, variantSeen };\n },\n { entries: [] as TooltipEntry[], variantSeen: new Map<ColumnUniversalId, number>() },\n );\n\n const tooltips = deriveDistinctTooltips(entries);\n\n return Object.fromEntries(\n tooltips.flatMap((t, i) => (isNil(t) ? [] : [[columns[i].id, t] as const])),\n );\n}\n"],"mappings":";;;;;;;;;;AA0BA,SAAgB,aAAa,KAA+B;CAC1D,OAAO;EAAE,IAAI,iBAAiB,IAAI,EAAE;EAAG,MAAM,IAAI,QAAQ;CAAE;AAC7D;;AAGA,SAAgB,eAAe,MAA6C;CAC1E,OAAO,eAAe,MAAM,WAAW,MAAM,UAAU,MAAM;AAC/D;;AAGA,SAAgB,iBAAiB,MAA6C;CAC5E,OAAO,eAAe,MAAM,WAAW,MAAM,UAAU,MAAM;AAC/D;;AAMA,SAAgB,uBACd,KACA,mBAC+C;CAC/C,MAAM,OAAO,mBAAmB,IAAI,IAAI,EAAE;CAC1C,IAAI,SAAS,KAAA,GAAW,OAAO,KAAK;CACpC,IAAI,eAAe,IAAI,IAAI,GAAG,OAAO;CACrC,IAAI,iBAAiB,IAAI,IAAI,GAAG,OAAO;AAEzC;;AAGA,SAAgB,iBACd,KACA,cACoB;CACpB,MAAM,OAAO,cAAc,IAAI,IAAI,EAAE;CACrC,IAAI,SAAS,KAAA,GAAW,OAAO,KAAK;CACpC,MAAM,aAAa,OAAO,eAAe,IAAI,MAAM,WAAW,MAAM,aAAa,CAAC;CAClF,OAAO,MAAM,UAAU,IAAI,KAAA,IAAY;AACzC;;;;;;;;;;AAWA,SAAgB,cACd,OACA,SACmB;CACnB,MAAM,yBAAS,IAAI,IAAkB;CACrC,IAAI,MAAM,WAAW,KAAK,QAAQ,WAAW,GAAG,OAAO;CAEvD,MAAM,gBAAgB,MAAM,QAAQ,SAAS,OAAO,KAAK,UAAU,UAAU;CAC7E,MAAM,qCAAqB,IAAI,IAAuB;CAEtD,IAAI,cAAc,SAAS,GAAG;EAE5B,MAAM,iBAAiB,kBAAkB,CAAC;GAAE,SADxB,OAAO,UAAU,QAAQ,IAAI,EACc;GAAG,SAAS;EAAK,CAAC,CAAC;EAClF,KAAK,MAAM,QAAQ,eAAe;GAChC,MAAM,SAAS,eAAe,OAAO,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa;GAC3E,IAAI,OAAO,WAAW,GAAG,OAAO;GAChC,mBAAmB,IAAI,MAAM,IAAI,IAAI,OAAO,KAAK,OAAO,iBAAiB,EAAE,CAAC,CAAC,CAAC;EAChF;CACF;CAEA,KAAK,MAAM,OAAO,SAAS;EACzB,MAAM,SAAS,iBAAiB,IAAI,EAAE;EACtC,KAAK,MAAM,QAAQ,OAEjB,IADgB,mBAAmB,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,KAAK,OAChD;GACX,OAAO,IAAI,QAAQ,IAAI;GACvB;EACF;CAEJ;CACA,OAAO;AACT;;;;;;;;;;;;;;;;AAiBA,SAAgB,mBACd,SACA,OAAqC,CAAC,GACW;CACjD,OAAO,QAAQ,QACZ,KAAK,OAAQ,IAAI,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAI,MACtD,CAAC,CACH;AACF;AAEA,SAAS,iBACP,QACA,MACsB;CACtB,MAAM,QAAQ,OAAO,cAAc;CACnC,IAAI,UAAU,UAAU,OAAO;CAC/B,IAAI,UAAU,aAAa,OAAO;CAClC,OAAO,cAAc,QAAQ,IAAI,IAAI,UAAU;AACjD;;AAWA,SAAgB,gBAAgB,SAGL;CACzB,MAAM,EAAE,SAAS,wBAAwB;CAUzC,OAJqB,qBALL,QAAQ,KAAK,OAAO;EAClC,MAAM,EAAE;EACR,YAAY,EAAE,YAAY,KAAK,UAAU,EAAE,MAAM,KAAK,OAAO,KAAK,EAAE;EACpE,gBAAgB,EAAE;CACpB,EACgD,GAAG,mBAAmB,CAAC,CAAC,QACrE,KAAK,OAAO,WAAY,IAAI,QAAQ,MAAM,CAAC,MAAM,OAAQ,MAC1D,CAAC,CAEe;AACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"createPlDataTableSheet.cjs","names":[],"sources":["../../../src/components/PlDataTable/createPlDataTableSheet.ts"],"sourcesContent":["import type { AxisSpec } from \"@milaboratories/pl-model-common\";\nimport type { RenderCtxBase } from \"../../render\";\nimport type { PlDataTableSheet } from \"./typesV7\";\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"mappings":";;AAKA,SAAgB,uBACd,KACA,MACA,QACkB;CAClB,MAAM,SAAS,IAAI,WAAW,WAAW,IAAI;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,OAAO;GAC1B,OAAO;GACP,OAAO,SAAS,MAAM,EAAE,SAAS;EACnC,EAAE;EACF,cAAc,OAAO;CACvB;AACF"}
1
+ {"version":3,"file":"createPlDataTableSheet.cjs","names":[],"sources":["../../../src/components/PlDataTable/createPlDataTableSheet.ts"],"sourcesContent":["import type { AxisSpec } from \"@milaboratories/pl-model-common\";\nimport type { RenderCtxBase } from \"../../render\";\nimport type { PlDataTableSheet } from \"./typesV8\";\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"mappings":";;AAKA,SAAgB,uBACd,KACA,MACA,QACkB;CAClB,MAAM,SAAS,IAAI,WAAW,WAAW,IAAI;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,OAAO;GAC1B,OAAO;GACP,OAAO,SAAS,MAAM,EAAE,SAAS;EACnC,EAAE;EACF,cAAc,OAAO;CACvB;AACF"}
@@ -1,5 +1,5 @@
1
1
  import { RenderCtxBase } from "../../render/api.js";
2
- import { PlDataTableSheet } from "./typesV7.js";
2
+ import { PlDataTableSheet } from "./typesV8.js";
3
3
  import { AxisSpec } from "@milaboratories/pl-model-common";
4
4
 
5
5
  //#region src/components/PlDataTable/createPlDataTableSheet.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"createPlDataTableSheet.js","names":[],"sources":["../../../src/components/PlDataTable/createPlDataTableSheet.ts"],"sourcesContent":["import type { AxisSpec } from \"@milaboratories/pl-model-common\";\nimport type { RenderCtxBase } from \"../../render\";\nimport type { PlDataTableSheet } from \"./typesV7\";\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"mappings":";;AAKA,SAAgB,uBACd,KACA,MACA,QACkB;CAClB,MAAM,SAAS,IAAI,WAAW,WAAW,IAAI;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,OAAO;GAC1B,OAAO;GACP,OAAO,SAAS,MAAM,EAAE,SAAS;EACnC,EAAE;EACF,cAAc,OAAO;CACvB;AACF"}
1
+ {"version":3,"file":"createPlDataTableSheet.js","names":[],"sources":["../../../src/components/PlDataTable/createPlDataTableSheet.ts"],"sourcesContent":["import type { AxisSpec } from \"@milaboratories/pl-model-common\";\nimport type { RenderCtxBase } from \"../../render\";\nimport type { PlDataTableSheet } from \"./typesV8\";\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"mappings":";;AAKA,SAAgB,uBACd,KACA,MACA,QACkB;CAClB,MAAM,SAAS,IAAI,WAAW,WAAW,IAAI;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,OAAO;GAC1B,OAAO;GACP,OAAO,SAAS,MAAM,EAAE,SAAS;EACnC,EAAE;EACF,cAAc,OAAO;CACvB;AACF"}
@@ -11,7 +11,7 @@ exports.createPlDataTableSheet = require_createPlDataTableSheet.createPlDataTabl
11
11
  exports.createPlDataTableStateV2 = require_state_migration.createPlDataTableStateV2;
12
12
  exports.createPlDataTableV2 = require_createPlDataTableV2.createPlDataTableV2;
13
13
  exports.createPlDataTableV3 = require_createPlDataTableV3.createPlDataTableV3;
14
- exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumnSnaphots;
14
+ exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumns;
15
15
  exports.getEffectiveVisibility = require_utils.getEffectiveVisibility;
16
16
  exports.getOrderPriority = require_utils.getOrderPriority;
17
17
  exports.isColumnHidden = require_utils.isColumnHidden;
@@ -1,9 +1,9 @@
1
- import { PTableParamsV2, PlDataTableFilterMeta, PlDataTableFilterSpecLeaf, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnIdJson } from "./typesV7.js";
1
+ import { PTableParamsV2, PlDataTableAxisMeta, PlDataTableColumnMeta, PlDataTableColumnsMeta, PlDataTableFilterMeta, PlDataTableFilterSpecLeaf, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnIdJson } from "./typesV8.js";
2
2
  import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./state-migration.js";
3
3
  import { createPlDataTableSheet } from "./createPlDataTableSheet.js";
4
4
  import { createPlDataTableV2 } from "./createPlDataTable/createPlDataTableV2.js";
5
- import { discoverTableColumnSnaphots } from "./createPlDataTable/discoverColumns.js";
6
- import { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./createPlDataTable/createPlDataTableV3.js";
5
+ import { discoverTableColumns } from "./createPlDataTable/discoverColumns.js";
6
+ import { ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./createPlDataTable/createPlDataTableV3.js";
7
7
  import { createPlDataTable } from "./createPlDataTable/index.js";
8
8
  import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./createPlDataTable/utils.js";
9
- export { type ColumnMatcher, type ColumnOrderRule, type ColumnVisibilityRule, type ColumnsDisplayOptions, type ColumnsSelectorConfig, type PTableParamsV2, type PlDataTableFilterMeta, type PlDataTableFilterSpecLeaf, type PlDataTableFilters, type PlDataTableFiltersWithMeta, type PlDataTableGridStateCore, type PlDataTableModel, type PlDataTableSheet, type PlDataTableSheetState, type PlDataTableStateV2, type PlDataTableStateV2CacheEntry, type PlDataTableStateV2Normalized, type PlTableColumnIdJson, createDefaultPTableParams, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, discoverTableColumnSnaphots, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, upgradePlDataTableStateV2 };
9
+ export { type ColumnOrderRule, type ColumnVisibilityRule, type ColumnsDisplayOptions, type ColumnsSelectorConfig, type PTableParamsV2, type PlDataTableAxisMeta, type PlDataTableColumnMeta, type PlDataTableColumnsMeta, type PlDataTableFilterMeta, type PlDataTableFilterSpecLeaf, type PlDataTableFilters, type PlDataTableFiltersWithMeta, type PlDataTableGridStateCore, type PlDataTableModel, type PlDataTableSheet, type PlDataTableSheetState, type PlDataTableStateV2, type PlDataTableStateV2CacheEntry, type PlDataTableStateV2Normalized, type PlTableColumnIdJson, createDefaultPTableParams, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, discoverTableColumns as discoverTableColumnSnaphots, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, upgradePlDataTableStateV2 };
@@ -2,7 +2,7 @@ import { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTable
2
2
  import { createPlDataTableSheet } from "./createPlDataTableSheet.js";
3
3
  import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./createPlDataTable/utils.js";
4
4
  import { createPlDataTableV2 } from "./createPlDataTable/createPlDataTableV2.js";
5
- import { discoverTableColumnSnaphots } from "./createPlDataTable/discoverColumns.js";
5
+ import { discoverTableColumns } from "./createPlDataTable/discoverColumns.js";
6
6
  import { createPlDataTableV3 } from "./createPlDataTable/createPlDataTableV3.js";
7
7
  import { createPlDataTable } from "./createPlDataTable/index.js";
8
- export { createDefaultPTableParams, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, discoverTableColumnSnaphots, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, upgradePlDataTableStateV2 };
8
+ export { createDefaultPTableParams, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, discoverTableColumns as discoverTableColumnSnaphots, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, upgradePlDataTableStateV2 };
@@ -1,4 +1,3 @@
1
- require("../../columns/index.cjs");
2
1
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
3
2
  //#region src/components/PlDataTable/labels.ts
4
3
  /** Get label columns matching the provided columns from the result pool */
@@ -1 +1 @@
1
- {"version":3,"file":"labels.cjs","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport {\n getAxisId,\n isLabelColumn,\n matchAxisId,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../../render\";\nimport { ColumnCollectionBuilder, collectCtxColumnSnapshotProviders } from \"../../columns\";\n\n/**\n * Get all label columns visible in the current render context\n * (result pool + block outputs + prerun).\n */\nexport function getAllLabelColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n): PColumn<PColumnDataUniversal>[] {\n const pframeSpec = ctx.getService(\"pframeSpec\");\n const collection = new ColumnCollectionBuilder(pframeSpec)\n .addSources(collectCtxColumnSnapshotProviders(ctx))\n .build({ allowPartialColumnList: true });\n try {\n return collection\n .findColumns({ include: { name: PColumnName.Label, axes: [] } })\n .reduce<PColumn<PColumnDataUniversal>[]>((acc, hit) => {\n const data = hit.data?.get();\n return data === undefined ? acc : [...acc, { id: hit.id, spec: hit.spec, data }];\n }, []);\n } finally {\n collection.dispose();\n }\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;;AAkCA,SAAgB,wBACd,SACA,iBACiC;CAEjC,MAAM,oBAAoC,CAAC;CAC3C,MAAM,oBAAoC,CAAC;CAC3C,KAAK,MAAM,UAAU,SACnB,KAAA,GAAA,gCAAA,cAAA,CAAkB,OAAO,IAAI,GAC3B,kBAAkB,KAAK,MAAM;MAE7B,kBAAkB,KAAK,MAAM;CAKjC,MAAM,gBAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,mBACnB,KAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,UAAA,GAAA,gCAAA,UAAA,CAAmB,IAAI;EAC7B,IAAI,CAAC,cAAc,MAAM,QAAA,GAAA,gCAAA,YAAA,CAAmB,IAAI,MAAM,CAAC,GACrD,cAAc,KAAK,MAAM;CAE7B;CAIF,KAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,eAAA,GAAA,gCAAA,UAAA,CAAwB,YAAY,KAAK,SAAS,EAAE;EAC1D,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,YAAA,CAAuB,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IACjB,cAAc,OAAO,YAAY,CAAC;CAEtC;CAGA,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,SAAS;EACtB,IAAI,QACF,KAAK,MAAM,KAAK,QAAQ;GACtB,OAAO;GACP,OAAO,OAAO;EAChB;EAEF,IAAI,eACF,KAAK,MAAM,KAAK,eAAe;GAC7B,OAAO;GACP,OAAO,cAAc;EACvB;EAEF,OAAO;CACT;CAGA,MAAM,eAAuC,CAAC;CAC9C,KAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,eAAA,GAAA,gCAAA,UAAA,CAAwB,SAAS;EACvC,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,YAAA,CAAuB,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;GAM7B,IAJE,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAE3C,aAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,aAAa;IAC7D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;KAAY,CAAC;IAC9D;IACA,MAAM,YAAY;GACpB,CAAC;QAED,aAAa,KAAK,WAAW;GAE/B,cAAc,OAAO,YAAY,CAAC;EACpC;CACF;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"labels.cjs","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport { getAxisId, isLabelColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal } from \"../../render\";\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<undefined | PColumnDataUniversal>[],\n): PColumn<undefined | PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;AAKA,SAAgB,wBACd,SACA,iBAC6C;CAE7C,MAAM,oBAAoC,CAAC;CAC3C,MAAM,oBAAoC,CAAC;CAC3C,KAAK,MAAM,UAAU,SACnB,KAAA,GAAA,gCAAA,cAAA,CAAkB,OAAO,IAAI,GAC3B,kBAAkB,KAAK,MAAM;MAE7B,kBAAkB,KAAK,MAAM;CAKjC,MAAM,gBAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,mBACnB,KAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,UAAA,GAAA,gCAAA,UAAA,CAAmB,IAAI;EAC7B,IAAI,CAAC,cAAc,MAAM,QAAA,GAAA,gCAAA,YAAA,CAAmB,IAAI,MAAM,CAAC,GACrD,cAAc,KAAK,MAAM;CAE7B;CAIF,KAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,eAAA,GAAA,gCAAA,UAAA,CAAwB,YAAY,KAAK,SAAS,EAAE;EAC1D,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,YAAA,CAAuB,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IACjB,cAAc,OAAO,YAAY,CAAC;CAEtC;CAGA,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,SAAS;EACtB,IAAI,QACF,KAAK,MAAM,KAAK,QAAQ;GACtB,OAAO;GACP,OAAO,OAAO;EAChB;EAEF,IAAI,eACF,KAAK,MAAM,KAAK,eAAe;GAC7B,OAAO;GACP,OAAO,cAAc;EACvB;EAEF,OAAO;CACT;CAGA,MAAM,eAAuC,CAAC;CAC9C,KAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,eAAA,GAAA,gCAAA,UAAA,CAAwB,SAAS;EACvC,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,YAAA,CAAuB,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;GAM7B,IAJE,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAE3C,aAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,aAAa;IAC7D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;KAAY,CAAC;IAC9D;IACA,MAAM,YAAY;GACpB,CAAC;QAED,aAAa,KAAK,WAAW;GAE/B,cAAc,OAAO,YAAY,CAAC;EACpC;CACF;CACA,OAAO;AACT"}
@@ -1,4 +1,3 @@
1
- import "../../columns/index.js";
2
1
  import { getAxisId, isLabelColumn, matchAxisId } from "@milaboratories/pl-model-common";
3
2
  //#region src/components/PlDataTable/labels.ts
4
3
  /** Get label columns matching the provided columns from the result pool */
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport {\n getAxisId,\n isLabelColumn,\n matchAxisId,\n PColumnName,\n} from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../../render\";\nimport { ColumnCollectionBuilder, collectCtxColumnSnapshotProviders } from \"../../columns\";\n\n/**\n * Get all label columns visible in the current render context\n * (result pool + block outputs + prerun).\n */\nexport function getAllLabelColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n): PColumn<PColumnDataUniversal>[] {\n const pframeSpec = ctx.getService(\"pframeSpec\");\n const collection = new ColumnCollectionBuilder(pframeSpec)\n .addSources(collectCtxColumnSnapshotProviders(ctx))\n .build({ allowPartialColumnList: true });\n try {\n return collection\n .findColumns({ include: { name: PColumnName.Label, axes: [] } })\n .reduce<PColumn<PColumnDataUniversal>[]>((acc, hit) => {\n const data = hit.data?.get();\n return data === undefined ? acc : [...acc, { id: hit.id, spec: hit.spec, data }];\n }, []);\n } finally {\n collection.dispose();\n }\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;;AAkCA,SAAgB,wBACd,SACA,iBACiC;CAEjC,MAAM,oBAAoC,CAAC;CAC3C,MAAM,oBAAoC,CAAC;CAC3C,KAAK,MAAM,UAAU,SACnB,IAAI,cAAc,OAAO,IAAI,GAC3B,kBAAkB,KAAK,MAAM;MAE7B,kBAAkB,KAAK,MAAM;CAKjC,MAAM,gBAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,mBACnB,KAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,SAAS,UAAU,IAAI;EAC7B,IAAI,CAAC,cAAc,MAAM,OAAO,YAAY,IAAI,MAAM,CAAC,GACrD,cAAc,KAAK,MAAM;CAE7B;CAIF,KAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,cAAc,UAAU,YAAY,KAAK,SAAS,EAAE;EAC1D,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IACjB,cAAc,OAAO,YAAY,CAAC;CAEtC;CAGA,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,SAAS;EACtB,IAAI,QACF,KAAK,MAAM,KAAK,QAAQ;GACtB,OAAO;GACP,OAAO,OAAO;EAChB;EAEF,IAAI,eACF,KAAK,MAAM,KAAK,eAAe;GAC7B,OAAO;GACP,OAAO,cAAc;EACvB;EAEF,OAAO;CACT;CAGA,MAAM,eAAuC,CAAC;CAC9C,KAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,cAAc,UAAU,SAAS;EACvC,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;GAM7B,IAJE,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAE3C,aAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,aAAa;IAC7D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;KAAY,CAAC;IAC9D;IACA,MAAM,YAAY;GACpB,CAAC;QAED,aAAa,KAAK,WAAW;GAE/B,cAAc,OAAO,YAAY,CAAC;EACpC;CACF;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"labels.js","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport { getAxisId, isLabelColumn, matchAxisId } from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal } from \"../../render\";\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<undefined | PColumnDataUniversal>[],\n): PColumn<undefined | PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;AAKA,SAAgB,wBACd,SACA,iBAC6C;CAE7C,MAAM,oBAAoC,CAAC;CAC3C,MAAM,oBAAoC,CAAC;CAC3C,KAAK,MAAM,UAAU,SACnB,IAAI,cAAc,OAAO,IAAI,GAC3B,kBAAkB,KAAK,MAAM;MAE7B,kBAAkB,KAAK,MAAM;CAKjC,MAAM,gBAA0B,CAAC;CACjC,KAAK,MAAM,UAAU,mBACnB,KAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,SAAS,UAAU,IAAI;EAC7B,IAAI,CAAC,cAAc,MAAM,OAAO,YAAY,IAAI,MAAM,CAAC,GACrD,cAAc,KAAK,MAAM;CAE7B;CAIF,KAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,cAAc,UAAU,YAAY,KAAK,SAAS,EAAE;EAC1D,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IACjB,cAAc,OAAO,YAAY,CAAC;CAEtC;CAGA,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,SAAS;EACtB,IAAI,QACF,KAAK,MAAM,KAAK,QAAQ;GACtB,OAAO;GACP,OAAO,OAAO;EAChB;EAEF,IAAI,eACF,KAAK,MAAM,KAAK,eAAe;GAC7B,OAAO;GACP,OAAO,cAAc;EACvB;EAEF,OAAO;CACT;CAGA,MAAM,eAAuC,CAAC;CAC9C,KAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,cAAc,UAAU,SAAS;EACvC,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,WAAW,CAAC;EACvF,IAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;GAM7B,IAJE,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAE3C,aAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,aAAa;IAC7D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;KAAY,CAAC;IAC9D;IACA,MAAM,YAAY;GACpB,CAAC;QAED,aAAa,KAAK,WAAW;GAE/B,cAAc,OAAO,YAAY,CAAC;EACpC;CACF;CACA,OAAO;AACT"}
@@ -13,12 +13,13 @@ function upgradePlDataTableStateV2(state) {
13
13
  ...entry,
14
14
  filtersState: []
15
15
  })),
16
- pTableParams: createDefaultPTableParams()
16
+ pTableParams: createDefaultPTableParamsV7()
17
17
  };
18
18
  if (state.version === 3) state = createPlDataTableStateV2();
19
19
  if (state.version === 4) state = migrateV4toV6(state);
20
20
  if (state.version === 5) state = migrateV5toV6(state);
21
21
  if (state.version === 6) state = migrateV6toV7(state);
22
+ if (state.version === 7) state = migrateV7toV8(state);
22
23
  return state;
23
24
  }
24
25
  /** Migrate v5 to v6: unwrap `{source, labeled}` colIds in gridState. */
@@ -29,7 +30,7 @@ function migrateV5toV6(state) {
29
30
  ...entry,
30
31
  gridState: unwrapV5GridState(entry.gridState)
31
32
  })),
32
- pTableParams: createDefaultPTableParams()
33
+ pTableParams: createDefaultPTableParamsV7()
33
34
  };
34
35
  }
35
36
  /** Convert v5 wrapped colId JSON to bare PTableColumnSpec JSON, taking `.source`.
@@ -86,10 +87,7 @@ function migrateV4toV6(state) {
86
87
  const nextId = () => ++idCounter;
87
88
  const migratedCache = state.stateCache.map((entry) => {
88
89
  const leaves = [];
89
- for (const f of entry.filtersState) if (f.filter !== null && !f.filter.disabled) {
90
- const column = (0, _milaboratories_pl_model_common.canonicalizeJson)(f.id);
91
- leaves.push(migrateTableFilter(column, f.filter.value, nextId));
92
- }
90
+ for (const f of entry.filtersState) if (f.filter !== null && !f.filter.disabled) leaves.push(migrateTableFilter((0, _milaboratories_pl_model_common.canonicalizeJson)(f.id), f.filter.value, nextId));
93
91
  const filtersState = leaves.length > 0 ? {
94
92
  id: nextId(),
95
93
  type: "and",
@@ -117,10 +115,11 @@ function migrateV4toV6(state) {
117
115
  filters: require_distill.distillFilterSpec(currentCache.filtersState),
118
116
  defaultFilters: null,
119
117
  sorting: state.pTableParams.sorting
120
- } : createDefaultPTableParams()
118
+ } : createDefaultPTableParamsV7()
121
119
  };
122
120
  }
123
- /** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */
121
+ /** Migrate a single per-column PlTableFilter to a v7-form tree node (legacy
122
+ * string column ids). v7 → v8 later converts these to object form. */
124
123
  function migrateTableFilter(column, filter, nextId) {
125
124
  const id = nextId();
126
125
  switch (filter.type) {
@@ -246,7 +245,9 @@ function migrateTableFilter(column, filter, nextId) {
246
245
  };
247
246
  }
248
247
  }
249
- function createDefaultPTableParams() {
248
+ /** Default pTableParams in the v7 shape (sorting: []). Used by intermediate
249
+ * migration steps that produce v6/v7 state before the v7 → v8 conversion. */
250
+ function createDefaultPTableParamsV7() {
250
251
  return {
251
252
  sourceId: null,
252
253
  hiddenColIds: null,
@@ -255,13 +256,109 @@ function createDefaultPTableParams() {
255
256
  sorting: []
256
257
  };
257
258
  }
259
+ function createDefaultPTableParams() {
260
+ return {
261
+ sourceId: null,
262
+ hiddenColIds: null,
263
+ filters: null,
264
+ defaultFilters: null,
265
+ sorting: null
266
+ };
267
+ }
258
268
  function createPlDataTableStateV2() {
259
269
  return {
260
- version: 7,
270
+ version: 8,
261
271
  stateCache: [],
262
272
  pTableParams: createDefaultPTableParams()
263
273
  };
264
274
  }
275
+ function migrateV7toV8(state) {
276
+ const newCache = state.stateCache.map((entry) => ({
277
+ sourceId: entry.sourceId,
278
+ gridState: entry.gridState,
279
+ sheetsState: entry.sheetsState,
280
+ filtersState: convertFiltersWithMeta(entry.filtersState),
281
+ defaultFiltersState: convertFiltersWithMeta(entry.defaultFiltersState),
282
+ searchString: entry.searchString
283
+ }));
284
+ const params = state.pTableParams;
285
+ let pTableParams;
286
+ if (params.sourceId === null) pTableParams = createDefaultPTableParams();
287
+ else pTableParams = {
288
+ sourceId: params.sourceId,
289
+ hiddenColIds: params.hiddenColIds,
290
+ sorting: params.sorting.length === 0 ? null : params.sorting,
291
+ filters: convertFiltersPlain(params.filters),
292
+ defaultFilters: convertFiltersPlain(params.defaultFilters)
293
+ };
294
+ return {
295
+ version: 8,
296
+ stateCache: newCache,
297
+ pTableParams
298
+ };
299
+ }
300
+ function convertFiltersWithMeta(node) {
301
+ if (node === null) return null;
302
+ const result = pruneFilterNode(node);
303
+ if (result === void 0) return null;
304
+ return result;
305
+ }
306
+ function convertFiltersPlain(node) {
307
+ if (node === null) return null;
308
+ const result = pruneFilterNode(node);
309
+ if (result === void 0) return null;
310
+ return result;
311
+ }
312
+ /** Recursively converts and prunes a legacy v7 filter tree. Preserves meta
313
+ * fields (id/isExpanded/source/isSuppressed) on non-leaf nodes. Returns
314
+ * `undefined` when the subtree is empty after pruning. */
315
+ function pruneFilterNode(node) {
316
+ if (!node || typeof node !== "object") return void 0;
317
+ const n = node;
318
+ if (n.type === "and" || n.type === "or") {
319
+ const kept = (n.filters ?? []).map((f) => pruneFilterNode(f)).filter((f) => f !== void 0);
320
+ if (kept.length === 0) return void 0;
321
+ return {
322
+ ...n,
323
+ type: n.type,
324
+ filters: kept
325
+ };
326
+ }
327
+ if (n.type === "not") {
328
+ const inner = pruneFilterNode(n.filter);
329
+ if (inner === void 0) return void 0;
330
+ return {
331
+ ...n,
332
+ type: "not",
333
+ filter: inner
334
+ };
335
+ }
336
+ return convertLegacyLeaf(n);
337
+ }
338
+ function convertLegacyLeaf(leaf) {
339
+ if (leaf.type === void 0) return leaf;
340
+ const result = { ...leaf };
341
+ if ("column" in result) {
342
+ const c = parseLegacyLeafColumn(result.column);
343
+ if (c === void 0) return void 0;
344
+ result.column = c;
345
+ }
346
+ if ("rhs" in result) {
347
+ const c = parseLegacyLeafColumn(result.rhs);
348
+ if (c === void 0) return void 0;
349
+ result.rhs = c;
350
+ }
351
+ return result;
352
+ }
353
+ function parseLegacyLeafColumn(s) {
354
+ if (typeof s !== "string") return void 0;
355
+ const parsed = (0, _milaboratories_pl_model_common.parseJsonSafely)(s);
356
+ if (!parsed || typeof parsed !== "object") return void 0;
357
+ if (!("type" in parsed) || !("id" in parsed)) return void 0;
358
+ const t = parsed.type;
359
+ if (t !== "axis" && t !== "column") return void 0;
360
+ return parsed;
361
+ }
265
362
  //#endregion
266
363
  exports.createDefaultPTableParams = createDefaultPTableParams;
267
364
  exports.createPlDataTableStateV2 = createPlDataTableStateV2;
@@ -1 +1 @@
1
- {"version":3,"file":"state-migration.cjs","names":["distillFilterSpec"],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n canonicalizeJson,\n getPTableColumnId,\n parseJsonSafely,\n} from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFiltersWithMeta,\n PlDataTableGridStateCore,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PlTableColumnIdJson,\n PTableParamsV2,\n} from \"./typesV7\";\nimport type {\n PlDataTableGridStateV6,\n PlDataTableStateV2V6,\n PlDataTableStateV2V6CacheEntry,\n PlDataTableV6ColIdJson,\n} from \"./typesV6\";\nimport type {\n PlDataTableGridStateV5,\n PlDataTableV5ColIdJson,\n PlDataTableV5ColIdWrapper,\n} from \"./typesV5\";\nimport { isNil } from \"es-toolkit\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateV6;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // v5 stored colIds as `{source, labeled}` wrappers; only the gridState shape differs.\n | {\n version: 5;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateV5;\n sheetsState: PlDataTableSheetState[];\n filtersState: null | PlDataTableFiltersWithMeta;\n defaultFiltersState: null | PlDataTableFiltersWithMeta;\n searchString?: string;\n }[];\n pTableParams: PTableParamsV2;\n }\n // v6 stored colIds as canonicalized full `PTableColumnSpec` (including\n // annotations + `pl7.app/trace`). v7 strips down to `PTableColumnId`.\n | PlDataTableStateV2V6\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v6: migrate per-column filters to tree-based format (skips v5).\n // v4 gridState already used bare PTableColumnSpec colIds, so we jump\n // straight to v6 without going through the v5 wrapper format.\n if (state.version === 4) {\n state = migrateV4toV6(state);\n }\n // v5 -> v6: unwrap `{source, labeled}` colIds in gridState back to bare PTableColumnSpec.\n if (state.version === 5) {\n state = migrateV5toV6(state);\n }\n // v6 -> v7: shrink colIds from full PTableColumnSpec to PTableColumnId.\n if (state.version === 6) {\n state = migrateV6toV7(state);\n }\n return state;\n}\n\n/** Migrate v5 to v6: unwrap `{source, labeled}` colIds in gridState. */\nfunction migrateV5toV6(state: Extract<PlDataTableStateV2, { version: 5 }>): PlDataTableStateV2V6 {\n // pTableParams reset: v5 stored DiscoveredPColumnId-based hiddenColIds with\n // empty-array fields (e.g. `{column, path: [], columnQualifications: [], ...}`).\n // v6 distills empty fields, so the same logical column serialises differently\n // and lookups would silently miss every previously-hidden discovered column.\n // gridState colIds are derived from PTableColumnSpec and unaffected.\n return {\n version: 6,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n gridState: unwrapV5GridState(entry.gridState),\n })),\n pTableParams: createDefaultPTableParams(),\n };\n}\n\n/** Convert v5 wrapped colId JSON to bare PTableColumnSpec JSON, taking `.source`.\n * gridState colIds may include the row-number sentinel (a JSON-stringified\n * literal, not a wrapped spec) — those pass through unchanged. */\nfunction unwrapV5ColId(json: string): string {\n const parsed: unknown = parseJsonSafely(json as CanonicalizedJson<unknown>);\n return !isNil(parsed) && typeof parsed === \"object\" && \"source\" in parsed\n ? canonicalizeJson((parsed as PlDataTableV5ColIdWrapper).source)\n : json;\n}\n\nfunction unwrapV5GridState(gridState: PlDataTableGridStateV5): PlDataTableGridStateV6 {\n const unwrapAs = (json: PlDataTableV5ColIdJson) => unwrapV5ColId(json) as PlDataTableV6ColIdJson;\n return {\n columnOrder: gridState.columnOrder\n ? { orderedColIds: gridState.columnOrder.orderedColIds.map(unwrapAs) }\n : undefined,\n sort: gridState.sort\n ? {\n sortModel: gridState.sort.sortModel.map((s) => ({\n colId: unwrapAs(s.colId),\n sort: s.sort,\n })),\n }\n : undefined,\n columnVisibility: gridState.columnVisibility\n ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(unwrapAs) }\n : undefined,\n };\n}\n\n/** Migrate v6 to v7: rewrite each colId from a full PTableColumnSpec to its\n * compact PTableColumnId (drops annotations/spec body, ~16× smaller per column). */\nfunction migrateV6toV7(state: PlDataTableStateV2V6): PlDataTableStateV2Normalized {\n return {\n version: 7,\n stateCache: state.stateCache.map(\n (entry): PlDataTableStateV2CacheEntry => ({\n ...entry,\n gridState: shrinkV6GridState(entry.gridState),\n }),\n ),\n pTableParams: state.pTableParams,\n };\n}\n\n/** Convert a v6 fat colId (canonicalized PTableColumnSpec) to a v7 compact colId\n * (canonicalized PTableColumnId). The row-number sentinel is a string literal,\n * not a spec — pass it through unchanged. */\nfunction shrinkV6ColId(json: PlDataTableV6ColIdJson): PlTableColumnIdJson {\n const parsed: unknown = parseJsonSafely(json);\n if (!isNil(parsed) && typeof parsed === \"object\" && \"type\" in parsed && \"id\" in parsed) {\n return canonicalizeJson(getPTableColumnId(parsed as PTableColumnSpec));\n }\n return json as unknown as PlTableColumnIdJson;\n}\n\nfunction shrinkV6GridState(gridState: PlDataTableGridStateV6): PlDataTableGridStateCore {\n return {\n columnOrder: gridState.columnOrder\n ? { orderedColIds: gridState.columnOrder.orderedColIds.map(shrinkV6ColId) }\n : undefined,\n sort: gridState.sort\n ? {\n sortModel: gridState.sort.sortModel.map((s) => ({\n colId: shrinkV6ColId(s.colId),\n sort: s.sort,\n })),\n }\n : undefined,\n columnVisibility: gridState.columnVisibility\n ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(shrinkV6ColId) }\n : undefined,\n };\n}\n\n/** Migrate v4 state to v6: convert per-column filters to tree-based format (skips v5). */\nfunction migrateV4toV6(state: Extract<PlDataTableStateV2, { version: 4 }>): PlDataTableStateV2V6 {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2V6CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMeta[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n const column = canonicalizeJson(f.id);\n leaves.push(migrateTableFilter(column, f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMeta | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n defaultFiltersState: null,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 6,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds:\n state.pTableParams.hiddenColIds?.map((id) => ({ type: \"column\" as const, id })) ??\n null,\n filters: distillFilterSpec(currentCache.filtersState),\n defaultFilters: null,\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParams(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMeta[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n defaultFilters: null,\n sorting: [],\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 7,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"state-migration.cjs","names":["distillFilterSpec"],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n canonicalizeJson,\n getPTableColumnId,\n parseJsonSafely,\n} from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFilters,\n PlDataTableFiltersWithMeta,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PTableParamsV2,\n} from \"./typesV8\";\nimport type {\n PlDataTableFilters as PlDataTableFiltersV7,\n PlDataTableFiltersWithMeta as PlDataTableFiltersWithMetaV7,\n PlDataTableGridStateCore as PlDataTableGridStateCoreV7,\n PlDataTableStateV2CacheEntry as PlDataTableStateV2V7CacheEntry,\n PlDataTableStateV2Normalized as PlDataTableStateV2V7,\n PlTableColumnIdJson,\n PTableParamsV2 as PTableParamsV2V7,\n} from \"./typesV7\";\nimport type {\n PlDataTableGridStateV6,\n PlDataTableStateV2V6,\n PlDataTableStateV2V6CacheEntry,\n PlDataTableV6ColIdJson,\n} from \"./typesV6\";\nimport type {\n PlDataTableGridStateV5,\n PlDataTableV5ColIdJson,\n PlDataTableV5ColIdWrapper,\n} from \"./typesV5\";\nimport { isNil } from \"es-toolkit\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2V7;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateV6;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // v5 stored colIds as `{source, labeled}` wrappers; only the gridState shape differs.\n | {\n version: 5;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateV5;\n sheetsState: PlDataTableSheetState[];\n filtersState: null | PlDataTableFiltersWithMetaV7;\n defaultFiltersState: null | PlDataTableFiltersWithMetaV7;\n searchString?: string;\n }[];\n pTableParams: PTableParamsV2V7;\n }\n // v6 stored colIds as canonicalized full `PTableColumnSpec` (including\n // annotations + `pl7.app/trace`). v7 strips down to `PTableColumnId`.\n | PlDataTableStateV2V6\n // v7 still had filter leaves serialised as `CanonicalizedJson<PTableColumnId>`\n // strings and `sorting: []` for the \"untouched\" case.\n | PlDataTableStateV2V7\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParamsV7(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v6: migrate per-column filters to tree-based format (skips v5).\n // v4 gridState already used bare PTableColumnSpec colIds, so we jump\n // straight to v6 without going through the v5 wrapper format.\n if (state.version === 4) {\n state = migrateV4toV6(state);\n }\n // v5 -> v6: unwrap `{source, labeled}` colIds in gridState.\n if (state.version === 5) {\n state = migrateV5toV6(state);\n }\n // v6 -> v7: shrink colIds from full PTableColumnSpec to PTableColumnId.\n if (state.version === 6) {\n state = migrateV6toV7(state);\n }\n // v7 -> v8: parse CanonicalizedJson<PTableColumnId> filter leaves into object\n // form; translate `sorting: []` into `sorting: null`.\n if (state.version === 7) {\n state = migrateV7toV8(state);\n }\n return state;\n}\n\n/** Migrate v5 to v6: unwrap `{source, labeled}` colIds in gridState. */\nfunction migrateV5toV6(state: Extract<PlDataTableStateV2, { version: 5 }>): PlDataTableStateV2V6 {\n // pTableParams reset: v5 stored ColumnDiscoveredId-based hiddenColIds with\n // empty-array fields (e.g. `{column, path: [], columnQualifications: [], ...}`).\n // v6 distills empty fields, so the same logical column serialises differently\n // and lookups would silently miss every previously-hidden discovered column.\n // gridState colIds are derived from PTableColumnSpec and unaffected.\n return {\n version: 6,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n gridState: unwrapV5GridState(entry.gridState),\n })),\n pTableParams: createDefaultPTableParamsV7(),\n };\n}\n\n/** Convert v5 wrapped colId JSON to bare PTableColumnSpec JSON, taking `.source`.\n * gridState colIds may include the row-number sentinel (a JSON-stringified\n * literal, not a wrapped spec) — those pass through unchanged. */\nfunction unwrapV5ColId(json: string): string {\n const parsed: unknown = parseJsonSafely(json as CanonicalizedJson<unknown>);\n return !isNil(parsed) && typeof parsed === \"object\" && \"source\" in parsed\n ? canonicalizeJson((parsed as PlDataTableV5ColIdWrapper).source)\n : json;\n}\n\nfunction unwrapV5GridState(gridState: PlDataTableGridStateV5): PlDataTableGridStateV6 {\n const unwrapAs = (json: PlDataTableV5ColIdJson) => unwrapV5ColId(json) as PlDataTableV6ColIdJson;\n return {\n columnOrder: gridState.columnOrder\n ? { orderedColIds: gridState.columnOrder.orderedColIds.map(unwrapAs) }\n : undefined,\n sort: gridState.sort\n ? {\n sortModel: gridState.sort.sortModel.map((s) => ({\n colId: unwrapAs(s.colId),\n sort: s.sort,\n })),\n }\n : undefined,\n columnVisibility: gridState.columnVisibility\n ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(unwrapAs) }\n : undefined,\n };\n}\n\n/** Migrate v6 to v7: rewrite each colId from a full PTableColumnSpec to its\n * compact PTableColumnId (drops annotations/spec body, ~16× smaller per column). */\nfunction migrateV6toV7(state: PlDataTableStateV2V6): PlDataTableStateV2V7 {\n return {\n version: 7,\n stateCache: state.stateCache.map(\n (entry): PlDataTableStateV2V7CacheEntry => ({\n ...entry,\n gridState: shrinkV6GridState(entry.gridState),\n }),\n ),\n pTableParams: state.pTableParams,\n };\n}\n\n/** Convert a v6 fat colId (canonicalized PTableColumnSpec) to a v7 compact colId\n * (canonicalized PTableColumnId). The row-number sentinel is a string literal,\n * not a spec — pass it through unchanged. */\nfunction shrinkV6ColId(json: PlDataTableV6ColIdJson): PlTableColumnIdJson {\n const parsed: unknown = parseJsonSafely(json);\n if (!isNil(parsed) && typeof parsed === \"object\" && \"type\" in parsed && \"id\" in parsed) {\n return canonicalizeJson(getPTableColumnId(parsed as PTableColumnSpec));\n }\n return json as unknown as PlTableColumnIdJson;\n}\n\nfunction shrinkV6GridState(gridState: PlDataTableGridStateV6): PlDataTableGridStateCoreV7 {\n return {\n columnOrder: gridState.columnOrder\n ? { orderedColIds: gridState.columnOrder.orderedColIds.map(shrinkV6ColId) }\n : undefined,\n sort: gridState.sort\n ? {\n sortModel: gridState.sort.sortModel.map((s) => ({\n colId: shrinkV6ColId(s.colId),\n sort: s.sort,\n })),\n }\n : undefined,\n columnVisibility: gridState.columnVisibility\n ? { hiddenColIds: gridState.columnVisibility.hiddenColIds.map(shrinkV6ColId) }\n : undefined,\n };\n}\n\n/** Migrate v4 state to v6: convert per-column filters to tree-based format (skips v5). */\nfunction migrateV4toV6(state: Extract<PlDataTableStateV2, { version: 4 }>): PlDataTableStateV2V6 {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2V6CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMetaV7[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n leaves.push(migrateTableFilter(canonicalizeJson(f.id), f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMetaV7 | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n defaultFiltersState: null,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 6,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds:\n state.pTableParams.hiddenColIds?.map((id) => ({ type: \"column\" as const, id })) ??\n null,\n filters: distillFilterSpec(currentCache.filtersState),\n defaultFilters: null,\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParamsV7(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a v7-form tree node (legacy\n * string column ids). v7 → v8 later converts these to object form. */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMetaV7[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\n/** Default pTableParams in the v7 shape (sorting: []). Used by intermediate\n * migration steps that produce v6/v7 state before the v7 → v8 conversion. */\nfunction createDefaultPTableParamsV7(): PTableParamsV2V7 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n defaultFilters: null,\n sorting: [],\n };\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n defaultFilters: null,\n sorting: null,\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 8,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n\n// --- v7 -> v8 migration ----------------------------------------------------\n// Parses CanonicalizedJson<PTableColumnId> filter leaves into the new object\n// form. Malformed leaves are dropped; groups that become empty after pruning\n// are dropped; cache entries whose tree fully prunes get filtersState: null.\n// Also translates `sorting: []` (legacy \"untouched\") into `sorting: null`.\n\nfunction migrateV7toV8(state: PlDataTableStateV2V7): PlDataTableStateV2Normalized {\n const newCache: PlDataTableStateV2CacheEntry[] = state.stateCache.map((entry) => ({\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState: convertFiltersWithMeta(entry.filtersState),\n defaultFiltersState: convertFiltersWithMeta(entry.defaultFiltersState),\n searchString: entry.searchString,\n }));\n\n const params = state.pTableParams;\n let pTableParams: PTableParamsV2;\n if (params.sourceId === null) {\n pTableParams = createDefaultPTableParams();\n } else {\n pTableParams = {\n sourceId: params.sourceId,\n hiddenColIds: params.hiddenColIds,\n // Empty array in legacy state means \"not touched\" — translate to null so the\n // model falls back to default sorting; non-empty stays as user's explicit value.\n sorting: params.sorting.length === 0 ? null : params.sorting,\n filters: convertFiltersPlain(params.filters),\n defaultFilters: convertFiltersPlain(params.defaultFilters),\n };\n }\n\n return { version: 8, stateCache: newCache, pTableParams };\n}\n\nfunction convertFiltersWithMeta(\n node: null | PlDataTableFiltersWithMetaV7,\n): null | PlDataTableFiltersWithMeta {\n if (node === null) return null;\n const result = pruneFilterNode(node as unknown);\n if (result === undefined) return null;\n return result as PlDataTableFiltersWithMeta;\n}\n\nfunction convertFiltersPlain(node: null | PlDataTableFiltersV7): null | PlDataTableFilters {\n if (node === null) return null;\n const result = pruneFilterNode(node as unknown);\n if (result === undefined) return null;\n return result as PlDataTableFilters;\n}\n\n/** Recursively converts and prunes a legacy v7 filter tree. Preserves meta\n * fields (id/isExpanded/source/isSuppressed) on non-leaf nodes. Returns\n * `undefined` when the subtree is empty after pruning. */\nfunction pruneFilterNode(node: unknown): unknown | undefined {\n if (!node || typeof node !== \"object\") return undefined;\n const n = node as { type?: unknown };\n if (n.type === \"and\" || n.type === \"or\") {\n const filters = (n as { filters?: unknown[] }).filters ?? [];\n const kept = filters.map((f) => pruneFilterNode(f)).filter((f): f is object => f !== undefined);\n if (kept.length === 0) return undefined;\n return { ...(n as object), type: n.type, filters: kept };\n }\n if (n.type === \"not\") {\n const inner = pruneFilterNode((n as { filter?: unknown }).filter);\n if (inner === undefined) return undefined;\n return { ...(n as object), type: \"not\", filter: inner };\n }\n return convertLegacyLeaf(n);\n}\n\nfunction convertLegacyLeaf(leaf: {\n type?: unknown;\n column?: unknown;\n rhs?: unknown;\n}): unknown | undefined {\n if (leaf.type === undefined) return leaf;\n const result: Record<string, unknown> = { ...leaf };\n if (\"column\" in result) {\n const c = parseLegacyLeafColumn(result.column);\n if (c === undefined) return undefined;\n result.column = c;\n }\n if (\"rhs\" in result) {\n const c = parseLegacyLeafColumn(result.rhs);\n if (c === undefined) return undefined;\n result.rhs = c;\n }\n return result;\n}\n\nfunction parseLegacyLeafColumn(s: unknown): PTableColumnId | undefined {\n if (typeof s !== \"string\") return undefined;\n const parsed = parseJsonSafely(s as CanonicalizedJson<PTableColumnId>);\n if (!parsed || typeof parsed !== \"object\") return undefined;\n if (!(\"type\" in parsed) || !(\"id\" in parsed)) return undefined;\n const t = (parsed as { type: unknown }).type;\n if (t !== \"axis\" && t !== \"column\") return undefined;\n return parsed as PTableColumnId;\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { PTableParamsV2, PlDataTableFiltersWithMeta, PlDataTableSheetState, PlDataTableStateV2Normalized } from "./typesV7.js";
1
+ import { PTableParamsV2, PlDataTableSheetState, PlDataTableStateV2Normalized } from "./typesV8.js";
2
2
  import { PlDataTableFilterState } from "./typesV4.js";
3
+ import { PTableParamsV2 as PTableParamsV2$1, PlDataTableFiltersWithMeta, PlDataTableStateV2Normalized as PlDataTableStateV2Normalized$1 } from "./typesV7.js";
3
4
  import { PlDataTableGridStateV6, PlDataTableStateV2V6 } from "./typesV6.js";
4
5
  import { PlDataTableGridStateV5 } from "./typesV5.js";
5
6
  import { AxisId, CanonicalizedJson, PObjectId, PTableColumnSpec, PTableRecordFilter, PTableSorting } from "@milaboratories/pl-model-common";
@@ -75,7 +76,7 @@ type PlDataTableStateV2 = {
75
76
  sheetsState: PlDataTableSheetState[];
76
77
  filtersState: PlDataTableFilterState[];
77
78
  }[];
78
- pTableParams: PTableParamsV2;
79
+ pTableParams: PTableParamsV2$1;
79
80
  } | {
80
81
  version: 4;
81
82
  stateCache: {
@@ -99,8 +100,8 @@ type PlDataTableStateV2 = {
99
100
  defaultFiltersState: null | PlDataTableFiltersWithMeta;
100
101
  searchString?: string;
101
102
  }[];
102
- pTableParams: PTableParamsV2;
103
- } | PlDataTableStateV2V6 | PlDataTableStateV2Normalized;
103
+ pTableParams: PTableParamsV2$1;
104
+ } | PlDataTableStateV2V6 | PlDataTableStateV2Normalized$1 | PlDataTableStateV2Normalized;
104
105
  /** Upgrade PlDataTableStateV2 to the latest version */
105
106
  declare function upgradePlDataTableStateV2(state: PlDataTableStateV2 | undefined): PlDataTableStateV2Normalized;
106
107
  declare function createDefaultPTableParams(): PTableParamsV2;
@@ -1 +1 @@
1
- {"version":3,"file":"state-migration.d.ts","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"mappings":";;;;;;;;;AAyCA;KAAY,kBAAA;EAIN,SAAA;IACE,WAAA;MACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;IAAA;IAEnC,IAAA;MACE,SAAA;QACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;QACzB,IAAA;MAAA;IAAA;IAGJ,gBAAA;MACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;IAAA;IAElC,QAAA;IACA,MAAA,GAAS,MAAA,CAAO,iBAAA,CAAkB,MAAA;EAAA;EAEpC,YAAA;IACE,OAAA,GAAU,aAAA;IACV,OAAA,GAAU,kBAAA;EAAA;AAAA;EAIZ,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;EAAA;EAEf,YAAA;IACE,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,kBAAA;IACT,OAAA,EAAS,aAAA;EAAA;AAAA;EAIX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA;EAEhB,YAAA,EAAc,cAAA;AAAA;EAGd,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,sBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA,KAjDV;EAoDN,YAAA;IACE,QAAA;IACA,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,aAAA;EAAA;AAAA;EAKX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,sBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,SAAqB,0BAAA;IACrB,mBAAA,SAA4B,0BAAA;IAC5B,YAAA;EAAA;EAEF,YAAA,EAAc,cAAA;AAAA,IAIhB,oBAAA,GAEA,4BAAA;;iBAGY,yBAAA,CACd,KAAA,EAAO,kBAAA,eACN,4BAA4B;AAAA,iBA8Pf,yBAAA,IAA6B,cAAc;AAAA,iBAU3C,wBAAA,IAA4B,4BAA4B"}
1
+ {"version":3,"file":"state-migration.d.ts","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"mappings":";;;;;;;;;;AAiDA;KAAY,kBAAA;EAIN,SAAA;IACE,WAAA;MACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;IAAA;IAEnC,IAAA;MACE,SAAA;QACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;QACzB,IAAA;MAAA;IAAA;IAGJ,gBAAA;MACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;IAAA;IAElC,QAAA;IACA,MAAA,GAAS,MAAA,CAAO,iBAAA,CAAkB,MAAA;EAAA;EAEpC,YAAA;IACE,OAAA,GAAU,aAAA;IACV,OAAA,GAAU,kBAAA;EAAA;AAAA;EAIZ,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;EAAA;EAEf,YAAA;IACE,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,kBAAA;IACT,OAAA,EAAS,aAAA;EAAA;AAAA;EAIX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA;EAEhB,YAAA,EAAc,gBAAA;AAAA;EAGd,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,sBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA,KAlDZ;EAqDJ,YAAA;IACE,QAAA;IACA,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,aAAA;EAAA;AAAA;EAKX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,sBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,SAAqB,0BAAA;IACrB,mBAAA,SAA4B,0BAAA;IAC5B,YAAA;EAAA;EAEF,YAAA,EAAc,gBAAA;AAAA,IAIhB,oBAAA,GAGA,8BAAA,GAEA,4BAAA;;iBAGY,yBAAA,CACd,KAAA,EAAO,kBAAA,eACN,4BAA4B;AAAA,iBA+Qf,yBAAA,IAA6B,cAAc;AAAA,iBAU3C,wBAAA,IAA4B,4BAA4B"}