@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
@@ -0,0 +1,184 @@
1
+ import {
2
+ applyAxisFilters,
3
+ stringifyColumnFilteredId,
4
+ type AxisFilterByIdx,
5
+ type AxisSpec,
6
+ type ColumnFilteredId,
7
+ type ColumnFilteredKey,
8
+ type PColumnSpec,
9
+ type PObjectId,
10
+ type SingleAxisSelector,
11
+ type SpecOverrides,
12
+ type SpecQuery,
13
+ } from "@milaboratories/pl-model-common";
14
+ import type { GlobalCfgRenderCtx } from "../../render/internal";
15
+ import type { ColumnFieldStatus, ColumnResolutionStatus } from "./types";
16
+ import { ColumnRecipe } from "./index";
17
+ import { ColumnOverriddenRecipe } from "./column_overrided_recipe";
18
+ import { rebrandLeafId } from "./leaf_rebrand";
19
+
20
+ /**
21
+ * Recipe wrapper that fixes the values of selected axes of an inner recipe
22
+ * (axis slicing). The id is `FilteredPColumnId { source: inner.id,
23
+ * axisFilters }`.
24
+ *
25
+ * Flat-merge invariant: `inner` is never another {@link ColumnFilteredRecipe}.
26
+ * Repeated {@link wrap} concatenates `axisFilters` at the current level.
27
+ *
28
+ * Layering: `withSpecs` on a Filtered recipe yields
29
+ * `Overridden<Filtered<inner>>` — Overridden is always the outermost layer.
30
+ * The reverse layering (`Filtered<Overridden<...>>`) is not reachable via
31
+ * the public interface.
32
+ */
33
+ export class ColumnFilteredRecipe implements ColumnRecipe<ColumnFilteredId> {
34
+ /**
35
+ * Wrap any recipe with axis filters. If `inner` is already a
36
+ * {@link ColumnFilteredRecipe}, concatenates `axisFilters` and returns a
37
+ * new Filtered sharing the original `inner`.
38
+ *
39
+ * Validates every axis index against `inner.getSpec().axesSpec` at
40
+ * construction — throws on an out-of-range index. After {@link wrap}, the
41
+ * recipe is guaranteed to be spec-complete.
42
+ *
43
+ * Order semantics: new filters are appended after existing ones, preserving
44
+ * their relative order. AND composition is otherwise commutative; order
45
+ * only affects canonicalize/equality.
46
+ */
47
+ static wrap(col: ColumnRecipe, axisFilters: AxisFilterByIdx[]): ColumnFilteredRecipe {
48
+ const combined =
49
+ col instanceof ColumnFilteredRecipe ? [...col.axisFilters, ...axisFilters] : axisFilters;
50
+ const base = col instanceof ColumnFilteredRecipe ? col.inner : col;
51
+
52
+ if (combined.length === 0) {
53
+ throw new Error("ColumnFilteredRecipe.wrap: at least one axis filter must be provided");
54
+ }
55
+
56
+ const innerSpec = base.getSpec();
57
+ const fixed = new Set<number>();
58
+ for (const [idx] of combined) {
59
+ if (innerSpec.axesSpec[idx] === undefined) {
60
+ throw new Error(
61
+ `ColumnFilteredRecipe.wrap: axis index ${idx} out of range (inner has ${innerSpec.axesSpec.length} axes)`,
62
+ );
63
+ }
64
+ fixed.add(idx);
65
+ }
66
+ if (fixed.size >= innerSpec.axesSpec.length) {
67
+ throw new Error(
68
+ `ColumnFilteredRecipe.wrap: filters fix all ${innerSpec.axesSpec.length} axes — at least one axis must remain`,
69
+ );
70
+ }
71
+
72
+ return new ColumnFilteredRecipe(base, combined);
73
+ }
74
+
75
+ /**
76
+ * Static counterpart to {@link wrap}: returns the resolution status of a
77
+ * {@link ColumnFilteredKey} without constructing the recipe. Axis filters
78
+ * do not add references — status collapses to the source's status.
79
+ */
80
+ static getStatusByKey(
81
+ key: ColumnFilteredKey,
82
+ opts: { ctx?: GlobalCfgRenderCtx } = {},
83
+ ): ColumnResolutionStatus {
84
+ if (typeof key.source !== "string") {
85
+ throw new Error(
86
+ "ColumnFilteredRecipe.getStatusByKey: filtered column with non-string source",
87
+ );
88
+ }
89
+ return ColumnRecipe.getStatus(key.source, opts);
90
+ }
91
+
92
+ readonly id: ColumnFilteredId;
93
+ private specCache?: { readonly value: PColumnSpec };
94
+ private queryCache?: { readonly value: SpecQuery };
95
+ private dataStatusCache?: { readonly value: ColumnFieldStatus };
96
+
97
+ private constructor(
98
+ private readonly inner: ColumnRecipe,
99
+ private readonly axisFilters: AxisFilterByIdx[],
100
+ ) {
101
+ this.id = stringifyColumnFilteredId({
102
+ source: inner.id,
103
+ axisFilters,
104
+ });
105
+ }
106
+
107
+ /** Wrapped recipe — exposed so external walkers can descend. */
108
+ getInner(): ColumnRecipe {
109
+ return this.inner;
110
+ }
111
+
112
+ /** Axis filters do not introduce references to other columns. */
113
+ getReferencedIds(): PObjectId[] {
114
+ return this.inner.getReferencedIds();
115
+ }
116
+
117
+ getDataStatus(): ColumnFieldStatus {
118
+ if (this.dataStatusCache === undefined) {
119
+ this.dataStatusCache = { value: this.inner.getDataStatus() };
120
+ }
121
+ return this.dataStatusCache.value;
122
+ }
123
+
124
+ /**
125
+ * Final spec — the inner spec with fixed axes removed. Indices in
126
+ * `axisFilters` are positional against `inner.getSpec().axesSpec` and were
127
+ * validated at {@link wrap} time.
128
+ */
129
+ getSpec(): PColumnSpec {
130
+ if (this.specCache === undefined) {
131
+ this.specCache = { value: applyAxisFilters(this.inner.getSpec(), this.axisFilters) };
132
+ }
133
+ return this.specCache.value;
134
+ }
135
+
136
+ /**
137
+ * Wraps the inner query in `SpecQuerySliceAxes`. Index→selector resolution
138
+ * goes through the inner spec — guaranteed available since {@link wrap}
139
+ * validated all indices at construction.
140
+ */
141
+ getQuery(): SpecQuery {
142
+ if (this.queryCache === undefined) {
143
+ const innerQuery = this.inner.getQuery();
144
+ if (this.axisFilters.length === 0) {
145
+ // Pass-through (no filters): rebrand the inner leaf to this.id so
146
+ // wrappers in the chain don't reintroduce the inner's id at the
147
+ // leaf — keeps the resolver/leaf-id contract uniform.
148
+ this.queryCache = { value: rebrandLeafId(innerQuery, this.inner.id, this.id) };
149
+ } else {
150
+ const innerSpec = this.inner.getSpec();
151
+ this.queryCache = {
152
+ value: {
153
+ type: "sliceAxes",
154
+ input: rebrandLeafId(innerQuery, this.inner.id, this.id),
155
+ axisFilters: this.axisFilters.map(([idx, value]) => ({
156
+ axisSelector: toAxisSelector(innerSpec.axesSpec[idx]),
157
+ constant: value,
158
+ })),
159
+ },
160
+ };
161
+ }
162
+ }
163
+ return this.queryCache.value;
164
+ }
165
+
166
+ /**
167
+ * Filtered + overrides → Overridden<Filtered>. Overridden is always the
168
+ * outermost layer.
169
+ */
170
+ withSpecs(overrides: SpecOverrides): ColumnRecipe {
171
+ return ColumnOverriddenRecipe.wrap(this, overrides);
172
+ }
173
+ }
174
+
175
+ function toAxisSelector(axis: AxisSpec): SingleAxisSelector {
176
+ const selector: SingleAxisSelector = { name: axis.name, type: axis.type };
177
+ if (axis.domain !== undefined && Object.keys(axis.domain).length > 0) {
178
+ selector.domain = axis.domain;
179
+ }
180
+ if (axis.contextDomain !== undefined && Object.keys(axis.contextDomain).length > 0) {
181
+ selector.contextDomain = axis.contextDomain;
182
+ }
183
+ return selector;
184
+ }
@@ -0,0 +1,146 @@
1
+ import {
2
+ applySpecOverrides,
3
+ createColumnOverriddenId,
4
+ mergeSpecOverrides,
5
+ type ColumnOverriddenId,
6
+ type ColumnOverriddenKey,
7
+ type ColumnUniversalId,
8
+ type PColumnSpec,
9
+ type PObjectId,
10
+ type SpecOverrides,
11
+ type SpecQuery,
12
+ } from "@milaboratories/pl-model-common";
13
+ import type { GlobalCfgRenderCtx } from "../../render/internal";
14
+ import type { ColumnFieldStatus, ColumnResolutionStatus } from "./types";
15
+ import { ColumnRecipe } from "./index";
16
+ import { Column } from "../column";
17
+ import { rebrandLeafId } from "./leaf_rebrand";
18
+
19
+ /**
20
+ * A recipe whose id is not an Overridden wrap — valid `source` for Overridden.
21
+ * Mirrors the spec-level invariant on {@link ColumnOverriddenKey.source}.
22
+ */
23
+ type NonOverriddenColumn = Column<Exclude<ColumnUniversalId, ColumnOverriddenId>>;
24
+
25
+ /**
26
+ * Recipe wrapper that overlays {@link SpecOverrides} on top of any other
27
+ * recipe. The id is `ColumnOverriddenKey { source: inner.id, specOverrides }`.
28
+ *
29
+ * Flat-merge invariant: `inner` is never another {@link ColumnOverriddenRecipe}.
30
+ * Repeated overrides go through {@link wrap} / {@link withSpecs}, which merge
31
+ * `specOverrides` at the current level and keep wrapper depth constant.
32
+ *
33
+ * This invariant matches the one enforced inside `unwrapOverrides` from
34
+ * pl-model-common: it explicitly throws on a nested override-wrap.
35
+ */
36
+ export class ColumnOverriddenRecipe implements Column<ColumnOverriddenId> {
37
+ /**
38
+ * Wrap any recipe with overrides. If `inner` is already a
39
+ * {@link ColumnOverriddenRecipe}, merges `overrides` into the existing ones
40
+ * and returns a new Overridden sharing the original `inner`. No
41
+ * `Overridden<Overridden<X>>` is produced.
42
+ */
43
+ static wrap(col: Column, overrides: SpecOverrides): ColumnOverriddenRecipe {
44
+ if (col instanceof ColumnOverriddenRecipe) {
45
+ return new ColumnOverriddenRecipe(col.inner, mergeSpecOverrides(col.overrides, overrides));
46
+ }
47
+ // `inner` is not an Overridden wrap (the `instanceof` branch above handles
48
+ // that). Narrow the id union here so the constructor parameter stays
49
+ // honest with `ColumnOverriddenKey.source`.
50
+ return new ColumnOverriddenRecipe(col as NonOverriddenColumn, overrides);
51
+ }
52
+
53
+ /**
54
+ * Static counterpart to {@link wrap}: returns the resolution status of a
55
+ * {@link ColumnOverriddenKey} without constructing the recipe. Overrides
56
+ * do not add references — status collapses to the source's status.
57
+ */
58
+ static getStatusByKey(
59
+ key: ColumnOverriddenKey,
60
+ opts: { ctx?: GlobalCfgRenderCtx } = {},
61
+ ): ColumnResolutionStatus {
62
+ return ColumnRecipe.getStatus(key.source, opts);
63
+ }
64
+
65
+ readonly id: ColumnOverriddenId;
66
+ private specCache?: { readonly value: PColumnSpec };
67
+ private queryCache?: { readonly value: SpecQuery };
68
+ private dataStatusCache?: { readonly value: ColumnFieldStatus };
69
+
70
+ private constructor(
71
+ private readonly inner: NonOverriddenColumn,
72
+ private readonly overrides: SpecOverrides,
73
+ ) {
74
+ this.id = createColumnOverriddenId({
75
+ source: inner.id,
76
+ specOverrides: overrides,
77
+ });
78
+ }
79
+
80
+ /** Wrapped recipe — exposed so external walkers can descend. */
81
+ getInner(): Column {
82
+ return this.inner;
83
+ }
84
+
85
+ /**
86
+ * `inner` owns all references; overrides are a pure spec patch and do not
87
+ * introduce new column refs.
88
+ */
89
+ getReferencedIds(): PObjectId[] {
90
+ return this.inner.getReferencedIds();
91
+ }
92
+
93
+ getDataStatus(): ColumnFieldStatus {
94
+ if (this.dataStatusCache === undefined) {
95
+ this.dataStatusCache = { value: this.inner.getDataStatus() };
96
+ }
97
+ return this.dataStatusCache.value;
98
+ }
99
+
100
+ /**
101
+ * Take the inner spec and overlay our overrides. `applySpecOverrides`
102
+ * extracts the overrides from `this.id` itself.
103
+ */
104
+ getSpec(): PColumnSpec {
105
+ if (this.specCache === undefined) {
106
+ this.specCache = { value: applySpecOverrides(this.inner.getSpec(), this.id) };
107
+ }
108
+ return this.specCache.value;
109
+ }
110
+
111
+ /**
112
+ * Emit a client-side `specOverride` node wrapping the inner query.
113
+ *
114
+ * This is a structural-but-collapsible node: it carries the override
115
+ * patch through the query tree so consumers see the full recipe shape,
116
+ * but it is collapsed at the host boundary (`resolvePColumn`) before
117
+ * the query reaches pframe-engine. The engine never sees this node.
118
+ *
119
+ * Overrides do not change query topology — they are a pure spec patch.
120
+ */
121
+ getQuery(): SpecQuery {
122
+ if (this.queryCache === undefined) {
123
+ // Rebrand the inner column leaf to this.id (rich Overridden id) so
124
+ // filter/sort references emitted with this recipe's id match the
125
+ // leaf the engine sees. The specOverride node still wraps the leaf
126
+ // and is collapsed at the host boundary into a spec patch on the
127
+ // resolved PColumn.
128
+ this.queryCache = {
129
+ value: {
130
+ type: "specOverride",
131
+ input: rebrandLeafId(this.inner.getQuery(), this.inner.id, this.id),
132
+ override: this.overrides,
133
+ },
134
+ };
135
+ }
136
+ return this.queryCache.value;
137
+ }
138
+
139
+ /**
140
+ * Flat merge: new overrides merge with existing ones; `inner` is unchanged.
141
+ * The result is an Overridden of the same depth.
142
+ */
143
+ withSpecs(overrides: SpecOverrides): Column {
144
+ return ColumnOverriddenRecipe.wrap(this, overrides);
145
+ }
146
+ }