@platforma-sdk/model 1.79.27 → 1.80.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/block_model.d.ts +2 -0
  2. package/dist/block_model.d.ts.map +1 -1
  3. package/dist/columns/column.cjs +28 -0
  4. package/dist/columns/column.cjs.map +1 -0
  5. package/dist/columns/column.d.ts +30 -0
  6. package/dist/columns/column.d.ts.map +1 -0
  7. package/dist/columns/column.js +27 -0
  8. package/dist/columns/column.js.map +1 -0
  9. package/dist/columns/column_lazy.cjs +248 -0
  10. package/dist/columns/column_lazy.cjs.map +1 -0
  11. package/dist/columns/column_lazy.d.ts +137 -0
  12. package/dist/columns/column_lazy.d.ts.map +1 -0
  13. package/dist/columns/column_lazy.js +245 -0
  14. package/dist/columns/column_lazy.js.map +1 -0
  15. package/dist/columns/column_providers/index.cjs +62 -0
  16. package/dist/columns/column_providers/index.cjs.map +1 -0
  17. package/dist/columns/column_providers/index.d.ts +30 -0
  18. package/dist/columns/column_providers/index.d.ts.map +1 -0
  19. package/dist/columns/column_providers/index.js +53 -0
  20. package/dist/columns/column_providers/index.js.map +1 -0
  21. package/dist/columns/column_providers/providers.cjs +123 -0
  22. package/dist/columns/column_providers/providers.cjs.map +1 -0
  23. package/dist/columns/column_providers/providers.d.ts +75 -0
  24. package/dist/columns/column_providers/providers.d.ts.map +1 -0
  25. package/dist/columns/column_providers/providers.js +118 -0
  26. package/dist/columns/column_providers/providers.js.map +1 -0
  27. package/dist/columns/column_providers/types.d.ts +23 -0
  28. package/dist/columns/column_providers/types.d.ts.map +1 -0
  29. package/dist/columns/column_recipes/column_discovered_recipe.cjs +180 -0
  30. package/dist/columns/column_recipes/column_discovered_recipe.cjs.map +1 -0
  31. package/dist/columns/column_recipes/column_discovered_recipe.d.ts +120 -0
  32. package/dist/columns/column_recipes/column_discovered_recipe.d.ts.map +1 -0
  33. package/dist/columns/column_recipes/column_discovered_recipe.js +180 -0
  34. package/dist/columns/column_recipes/column_discovered_recipe.js.map +1 -0
  35. package/dist/columns/column_recipes/column_filtered_recipe.cjs +133 -0
  36. package/dist/columns/column_recipes/column_filtered_recipe.cjs.map +1 -0
  37. package/dist/columns/column_recipes/column_filtered_recipe.d.ts +75 -0
  38. package/dist/columns/column_recipes/column_filtered_recipe.d.ts.map +1 -0
  39. package/dist/columns/column_recipes/column_filtered_recipe.js +133 -0
  40. package/dist/columns/column_recipes/column_filtered_recipe.js.map +1 -0
  41. package/dist/columns/column_recipes/column_overrided_recipe.cjs +101 -0
  42. package/dist/columns/column_recipes/column_overrided_recipe.cjs.map +1 -0
  43. package/dist/columns/column_recipes/column_overrided_recipe.d.ts +73 -0
  44. package/dist/columns/column_recipes/column_overrided_recipe.d.ts.map +1 -0
  45. package/dist/columns/column_recipes/column_overrided_recipe.js +101 -0
  46. package/dist/columns/column_recipes/column_overrided_recipe.js.map +1 -0
  47. package/dist/columns/column_recipes/index.cjs +72 -0
  48. package/dist/columns/column_recipes/index.cjs.map +1 -0
  49. package/dist/columns/column_recipes/index.d.ts +52 -0
  50. package/dist/columns/column_recipes/index.d.ts.map +1 -0
  51. package/dist/columns/column_recipes/index.js +68 -0
  52. package/dist/columns/column_recipes/index.js.map +1 -0
  53. package/dist/columns/column_recipes/leaf_rebrand.cjs +22 -0
  54. package/dist/columns/column_recipes/leaf_rebrand.cjs.map +1 -0
  55. package/dist/columns/column_recipes/leaf_rebrand.js +22 -0
  56. package/dist/columns/column_recipes/leaf_rebrand.js.map +1 -0
  57. package/dist/columns/column_recipes/types.d.ts +101 -0
  58. package/dist/columns/column_recipes/types.d.ts.map +1 -0
  59. package/dist/columns/columns_collection.cjs +124 -0
  60. package/dist/columns/columns_collection.cjs.map +1 -0
  61. package/dist/columns/columns_collection.d.ts +64 -0
  62. package/dist/columns/columns_collection.d.ts.map +1 -0
  63. package/dist/columns/columns_collection.js +122 -0
  64. package/dist/columns/columns_collection.js.map +1 -0
  65. package/dist/columns/derive_axis_values_labels.cjs +76 -0
  66. package/dist/columns/derive_axis_values_labels.cjs.map +1 -0
  67. package/dist/columns/derive_axis_values_labels.d.ts +30 -0
  68. package/dist/columns/derive_axis_values_labels.d.ts.map +1 -0
  69. package/dist/columns/derive_axis_values_labels.js +76 -0
  70. package/dist/columns/derive_axis_values_labels.js.map +1 -0
  71. package/dist/columns/expand_by_partition.cjs +53 -56
  72. package/dist/columns/expand_by_partition.cjs.map +1 -1
  73. package/dist/columns/expand_by_partition.d.ts +22 -18
  74. package/dist/columns/expand_by_partition.d.ts.map +1 -1
  75. package/dist/columns/expand_by_partition.js +55 -58
  76. package/dist/columns/expand_by_partition.js.map +1 -1
  77. package/dist/columns/index.cjs +44 -18
  78. package/dist/columns/index.d.ts +15 -7
  79. package/dist/columns/index.js +12 -6
  80. package/dist/columns/utils.cjs +186 -0
  81. package/dist/columns/utils.cjs.map +1 -0
  82. package/dist/columns/utils.d.ts +96 -0
  83. package/dist/columns/utils.d.ts.map +1 -0
  84. package/dist/columns/utils.js +179 -0
  85. package/dist/columns/utils.js.map +1 -0
  86. package/dist/components/PFrameForGraphs.cjs +1 -0
  87. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  88. package/dist/components/PFrameForGraphs.d.ts +1 -1
  89. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  90. package/dist/components/PFrameForGraphs.js +1 -0
  91. package/dist/components/PFrameForGraphs.js.map +1 -1
  92. package/dist/components/PlDataTable/columnResolver.cjs +28 -0
  93. package/dist/components/PlDataTable/columnResolver.cjs.map +1 -0
  94. package/dist/components/PlDataTable/columnResolver.js +28 -0
  95. package/dist/components/PlDataTable/columnResolver.js.map +1 -0
  96. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +4 -2
  97. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -1
  98. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +4 -2
  99. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -1
  100. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +20 -25
  101. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -1
  102. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +20 -25
  103. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -1
  104. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +58 -26
  105. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  106. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +1 -1
  107. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
  108. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +60 -28
  109. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  110. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +224 -194
  111. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  112. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +13 -16
  113. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
  114. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +228 -198
  115. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  116. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +40 -98
  117. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -1
  118. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -8
  119. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -1
  120. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +40 -98
  121. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -1
  122. package/dist/components/PlDataTable/createPlDataTable/index.cjs +1 -1
  123. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  124. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
  125. package/dist/components/PlDataTable/createPlDataTable/index.js +2 -2
  126. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  127. package/dist/components/PlDataTable/createPlDataTable/utils.cjs +51 -169
  128. package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -1
  129. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +1 -1
  130. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -1
  131. package/dist/components/PlDataTable/createPlDataTable/utils.js +52 -166
  132. package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -1
  133. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  134. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +1 -1
  135. package/dist/components/PlDataTable/createPlDataTableSheet.js.map +1 -1
  136. package/dist/components/PlDataTable/index.cjs +1 -1
  137. package/dist/components/PlDataTable/index.d.ts +4 -4
  138. package/dist/components/PlDataTable/index.js +2 -2
  139. package/dist/components/PlDataTable/labels.cjs +0 -1
  140. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  141. package/dist/components/PlDataTable/labels.js +0 -1
  142. package/dist/components/PlDataTable/labels.js.map +1 -1
  143. package/dist/components/PlDataTable/state-migration.cjs +107 -10
  144. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  145. package/dist/components/PlDataTable/state-migration.d.ts +5 -4
  146. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
  147. package/dist/components/PlDataTable/state-migration.js +107 -10
  148. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  149. package/dist/components/PlDataTable/typesV7.d.ts +1 -36
  150. package/dist/components/PlDataTable/typesV7.d.ts.map +1 -1
  151. package/dist/components/PlDataTable/typesV8.d.ts +123 -0
  152. package/dist/components/PlDataTable/typesV8.d.ts.map +1 -0
  153. package/dist/components/PlDatasetSelector/build_dataset_options.cjs +27 -34
  154. package/dist/components/PlDatasetSelector/build_dataset_options.cjs.map +1 -1
  155. package/dist/components/PlDatasetSelector/build_dataset_options.d.ts.map +1 -1
  156. package/dist/components/PlDatasetSelector/build_dataset_options.js +27 -34
  157. package/dist/components/PlDatasetSelector/build_dataset_options.js.map +1 -1
  158. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs +28 -33
  159. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs.map +1 -1
  160. package/dist/components/PlDatasetSelector/enrichment_discovery.js +29 -34
  161. package/dist/components/PlDatasetSelector/enrichment_discovery.js.map +1 -1
  162. package/dist/components/PlDatasetSelector/filter_discovery.cjs +27 -17
  163. package/dist/components/PlDatasetSelector/filter_discovery.cjs.map +1 -1
  164. package/dist/components/PlDatasetSelector/filter_discovery.d.ts +24 -10
  165. package/dist/components/PlDatasetSelector/filter_discovery.d.ts.map +1 -1
  166. package/dist/components/PlDatasetSelector/filter_discovery.js +28 -18
  167. package/dist/components/PlDatasetSelector/filter_discovery.js.map +1 -1
  168. package/dist/components/PlDatasetSelector/index.d.ts +2 -2
  169. package/dist/components/index.cjs +1 -1
  170. package/dist/components/index.d.ts +5 -5
  171. package/dist/components/index.js +2 -2
  172. package/dist/filters/converters/filterToQuery.cjs +5 -6
  173. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  174. package/dist/filters/converters/filterToQuery.d.ts +12 -3
  175. package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
  176. package/dist/filters/converters/filterToQuery.js +5 -6
  177. package/dist/filters/converters/filterToQuery.js.map +1 -1
  178. package/dist/filters/converters/index.d.ts +2 -2
  179. package/dist/filters/index.d.ts +2 -2
  180. package/dist/index.cjs +64 -35
  181. package/dist/index.d.ts +23 -15
  182. package/dist/index.js +15 -9
  183. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  184. package/dist/labels/derive_distinct_labels.d.ts +1 -2
  185. package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
  186. package/dist/labels/derive_distinct_labels.js.map +1 -1
  187. package/dist/labels/derive_distinct_tooltips.cjs +1 -1
  188. package/dist/labels/derive_distinct_tooltips.cjs.map +1 -1
  189. package/dist/labels/derive_distinct_tooltips.d.ts +6 -3
  190. package/dist/labels/derive_distinct_tooltips.d.ts.map +1 -1
  191. package/dist/labels/derive_distinct_tooltips.js +1 -1
  192. package/dist/labels/derive_distinct_tooltips.js.map +1 -1
  193. package/dist/package.cjs +1 -1
  194. package/dist/package.js +1 -1
  195. package/dist/pframe_utils/axes.cjs.map +1 -1
  196. package/dist/pframe_utils/axes.d.ts +2 -2
  197. package/dist/pframe_utils/axes.d.ts.map +1 -1
  198. package/dist/pframe_utils/axes.js.map +1 -1
  199. package/dist/pframe_utils/columns.cjs +6 -10
  200. package/dist/pframe_utils/columns.cjs.map +1 -1
  201. package/dist/pframe_utils/columns.d.ts +4 -4
  202. package/dist/pframe_utils/columns.d.ts.map +1 -1
  203. package/dist/pframe_utils/columns.js +7 -11
  204. package/dist/pframe_utils/columns.js.map +1 -1
  205. package/dist/pframe_utils/index.cjs.map +1 -1
  206. package/dist/pframe_utils/index.d.ts +1 -1
  207. package/dist/pframe_utils/index.d.ts.map +1 -1
  208. package/dist/pframe_utils/index.js.map +1 -1
  209. package/dist/render/accessor.cjs +15 -16
  210. package/dist/render/accessor.cjs.map +1 -1
  211. package/dist/render/accessor.d.ts +7 -10
  212. package/dist/render/accessor.d.ts.map +1 -1
  213. package/dist/render/accessor.js +15 -16
  214. package/dist/render/accessor.js.map +1 -1
  215. package/dist/render/api.cjs +34 -36
  216. package/dist/render/api.cjs.map +1 -1
  217. package/dist/render/api.d.ts +30 -20
  218. package/dist/render/api.d.ts.map +1 -1
  219. package/dist/render/api.js +35 -38
  220. package/dist/render/api.js.map +1 -1
  221. package/dist/render/index.cjs +4 -0
  222. package/dist/render/index.d.ts +4 -4
  223. package/dist/render/index.js +3 -2
  224. package/dist/render/internal.cjs +3 -2
  225. package/dist/render/internal.cjs.map +1 -1
  226. package/dist/render/internal.d.ts +17 -9
  227. package/dist/render/internal.d.ts.map +1 -1
  228. package/dist/render/internal.js +3 -2
  229. package/dist/render/internal.js.map +1 -1
  230. package/dist/render/util/axis_filtering.cjs.map +1 -1
  231. package/dist/render/util/axis_filtering.js.map +1 -1
  232. package/dist/render/util/column_collection.cjs +6 -4
  233. package/dist/render/util/column_collection.cjs.map +1 -1
  234. package/dist/render/util/column_collection.d.ts +9 -9
  235. package/dist/render/util/column_collection.d.ts.map +1 -1
  236. package/dist/render/util/column_collection.js +6 -4
  237. package/dist/render/util/column_collection.js.map +1 -1
  238. package/dist/render/util/index.d.ts +2 -2
  239. package/dist/render/util/pcolumn_data.cjs +1 -1
  240. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  241. package/dist/render/util/pcolumn_data.d.ts +3 -3
  242. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  243. package/dist/render/util/pcolumn_data.js +1 -1
  244. package/dist/render/util/pcolumn_data.js.map +1 -1
  245. package/dist/services/block_services.cjs +2 -1
  246. package/dist/services/block_services.cjs.map +1 -1
  247. package/dist/services/block_services.d.ts +1 -0
  248. package/dist/services/block_services.d.ts.map +1 -1
  249. package/dist/services/block_services.js +2 -1
  250. package/dist/services/block_services.js.map +1 -1
  251. package/dist/services/get_services.cjs +2 -2
  252. package/dist/services/get_services.cjs.map +1 -1
  253. package/dist/services/get_services.d.ts +4 -1
  254. package/dist/services/get_services.d.ts.map +1 -1
  255. package/dist/services/get_services.js +2 -2
  256. package/dist/services/get_services.js.map +1 -1
  257. package/package.json +10 -8
  258. package/src/columns/__test_helpers__/collection_driver.ts +197 -0
  259. package/src/columns/__test_helpers__/stub_registry.ts +134 -0
  260. package/src/columns/column.ts +46 -0
  261. package/src/columns/column_lazy.test.ts +201 -0
  262. package/src/columns/column_lazy.ts +311 -0
  263. package/src/columns/column_providers/index.ts +78 -0
  264. package/src/columns/column_providers/providers.ts +193 -0
  265. package/src/columns/column_providers/types.ts +24 -0
  266. package/src/columns/column_recipes/column_discovered_recipe.ts +231 -0
  267. package/src/columns/column_recipes/column_filtered_recipe.ts +184 -0
  268. package/src/columns/column_recipes/column_overrided_recipe.ts +146 -0
  269. package/src/columns/column_recipes/column_recipes.test.ts +681 -0
  270. package/src/columns/column_recipes/index.ts +127 -0
  271. package/src/columns/column_recipes/leaf_rebrand.ts +28 -0
  272. package/src/columns/column_recipes/types.ts +113 -0
  273. package/src/columns/columns_collection.test.ts +164 -0
  274. package/src/columns/columns_collection.ts +170 -0
  275. package/src/columns/derive_axis_values_labels.ts +98 -0
  276. package/src/columns/expand_by_partition.test.ts +146 -110
  277. package/src/columns/expand_by_partition.ts +72 -84
  278. package/src/columns/index.ts +7 -5
  279. package/src/columns/utils.test.ts +249 -0
  280. package/src/columns/utils.ts +226 -0
  281. package/src/components/PFrameForGraphs.ts +3 -1
  282. package/src/components/PlAnnotations/filters_ui.test.ts +46 -47
  283. package/src/components/PlDataTable/columnResolver.test.ts +122 -0
  284. package/src/components/PlDataTable/columnResolver.ts +57 -0
  285. package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +9 -9
  286. package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +31 -63
  287. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +85 -58
  288. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +316 -354
  289. package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +48 -144
  290. package/src/components/PlDataTable/createPlDataTable/index.ts +2 -2
  291. package/src/components/PlDataTable/createPlDataTable/utils.test.ts +60 -69
  292. package/src/components/PlDataTable/createPlDataTable/utils.ts +65 -173
  293. package/src/components/PlDataTable/createPlDataTableSheet.ts +1 -1
  294. package/src/components/PlDataTable/index.ts +4 -2
  295. package/src/components/PlDataTable/labels.ts +4 -33
  296. package/src/components/PlDataTable/state-migration.ts +151 -22
  297. package/src/components/PlDataTable/typesV8.ts +188 -0
  298. package/src/components/PlDatasetSelector/build_dataset_options.ts +35 -60
  299. package/src/components/PlDatasetSelector/enrichment_discovery.ts +65 -61
  300. package/src/components/PlDatasetSelector/filter_discovery.test.ts +110 -72
  301. package/src/components/PlDatasetSelector/filter_discovery.ts +51 -31
  302. package/src/filters/converters/filterToQuery.test.ts +15 -8
  303. package/src/filters/converters/filterToQuery.ts +22 -9
  304. package/src/filters/converters/filterUiToExpressionImpl.test.ts +35 -36
  305. package/src/labels/derive_distinct_labels.ts +1 -1
  306. package/src/labels/derive_distinct_tooltips.test.ts +7 -4
  307. package/src/labels/derive_distinct_tooltips.ts +3 -3
  308. package/src/pframe_utils/axes.ts +2 -2
  309. package/src/pframe_utils/columns.ts +14 -23
  310. package/src/pframe_utils/index.ts +1 -1
  311. package/src/render/accessor.ts +35 -38
  312. package/src/render/api.ts +45 -61
  313. package/src/render/index.ts +2 -1
  314. package/src/render/internal.ts +43 -10
  315. package/src/render/util/axis_filtering.ts +0 -1
  316. package/src/render/util/column_collection.ts +17 -17
  317. package/src/render/util/pcolumn_data.ts +5 -9
  318. package/src/services/block_services.ts +1 -0
  319. package/src/services/get_services.ts +5 -2
  320. package/dist/columns/column_collection_builder.cjs +0 -241
  321. package/dist/columns/column_collection_builder.cjs.map +0 -1
  322. package/dist/columns/column_collection_builder.d.ts +0 -119
  323. package/dist/columns/column_collection_builder.d.ts.map +0 -1
  324. package/dist/columns/column_collection_builder.js +0 -241
  325. package/dist/columns/column_collection_builder.js.map +0 -1
  326. package/dist/columns/column_selector.cjs +0 -49
  327. package/dist/columns/column_selector.cjs.map +0 -1
  328. package/dist/columns/column_selector.d.ts +0 -33
  329. package/dist/columns/column_selector.d.ts.map +0 -1
  330. package/dist/columns/column_selector.js +0 -47
  331. package/dist/columns/column_selector.js.map +0 -1
  332. package/dist/columns/column_snapshot.cjs +0 -19
  333. package/dist/columns/column_snapshot.cjs.map +0 -1
  334. package/dist/columns/column_snapshot.d.ts +0 -39
  335. package/dist/columns/column_snapshot.d.ts.map +0 -1
  336. package/dist/columns/column_snapshot.js +0 -18
  337. package/dist/columns/column_snapshot.js.map +0 -1
  338. package/dist/columns/column_snapshot_provider.cjs +0 -137
  339. package/dist/columns/column_snapshot_provider.cjs.map +0 -1
  340. package/dist/columns/column_snapshot_provider.d.ts +0 -74
  341. package/dist/columns/column_snapshot_provider.d.ts.map +0 -1
  342. package/dist/columns/column_snapshot_provider.js +0 -133
  343. package/dist/columns/column_snapshot_provider.js.map +0 -1
  344. package/dist/columns/ctx_column_sources.cjs +0 -80
  345. package/dist/columns/ctx_column_sources.cjs.map +0 -1
  346. package/dist/columns/ctx_column_sources.d.ts +0 -30
  347. package/dist/columns/ctx_column_sources.d.ts.map +0 -1
  348. package/dist/columns/ctx_column_sources.js +0 -79
  349. package/dist/columns/ctx_column_sources.js.map +0 -1
  350. package/src/columns/column_collection_builder.test.ts +0 -484
  351. package/src/columns/column_collection_builder.ts +0 -485
  352. package/src/columns/column_selector.test.ts +0 -90
  353. package/src/columns/column_selector.ts +0 -100
  354. package/src/columns/column_snapshot.ts +0 -58
  355. package/src/columns/column_snapshot_provider.ts +0 -194
  356. package/src/columns/ctx_column_sources.ts +0 -99
@@ -1 +1 @@
1
- {"version":3,"file":"filter_discovery.js","names":[],"sources":["../../../src/components/PlDatasetSelector/filter_discovery.ts"],"sourcesContent":["import { Annotation } from \"@milaboratories/pl-model-common\";\nimport type { Option, PlRef, PObjectId, PObjectSpec } from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type {\n AnchoredColumnCollection,\n ColumnMatch,\n} from \"../../columns/column_collection_builder\";\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n type Entry,\n} from \"../../labels/derive_distinct_labels\";\n\n/**\n * Columns annotated `pl7.app/isSubset: \"true\"` whose axes ⊆ anchor axes.\n * The axes-subset constraint comes from `mode: \"enrichment\"`.\n */\nexport function findFilterColumns(collection: AnchoredColumnCollection): ColumnMatch[] {\n return collection.findColumns({\n mode: \"enrichment\",\n include: {\n annotations: { [Annotation.IsSubset]: \"true\" },\n },\n });\n}\n\nexport type FilterMatchOptions = {\n /** Maps result-pool column id back to its source PlRef (see {@link buildRefMap}). */\n refsByObjectId: ReadonlyMap<PObjectId, PlRef>;\n /** Spec of the dataset the filters are subsets of. */\n datasetSpec: PObjectSpec;\n /**\n * Forwarded to `deriveDistinctLabels`. Any `formatters.native` caller\n * sets is silently overridden — the function relies on a no-op native\n * formatter to keep the algorithm from short-circuiting on filters'\n * inherited `pl7.app/label`.\n */\n labelOptions?: DeriveLabelsOptions;\n};\n\n/**\n * Derive labels for filter column matches (for `DatasetOption.filters`).\n * Matches whose column id is missing from `refsByObjectId` are silently\n * dropped — they cannot be exposed as selectable options.\n */\nexport function filterMatchesToOptions(\n matches: ColumnMatch[],\n options: FilterMatchOptions,\n): Option[] {\n if (matches.length === 0) return [];\n\n const { refsByObjectId, datasetSpec, labelOptions } = options;\n\n // One entry per match-variant (different paths to the same column are\n // exposed as separate Options). The `ref` field rides along on the\n // Entry-shaped objects via structural typing; `deriveDistinctLabels`\n // ignores extra fields.\n const entries = matches.flatMap((match): (Entry & { ref: PlRef })[] => {\n const ref = refsByObjectId.get(match.column.id);\n if (ref === undefined) return [];\n return match.variants.map((variant) => ({\n ref,\n spec: match.column.spec,\n linkerPath: variant.path.map((p) => ({ spec: p.linker.spec })),\n }));\n });\n\n // Appending the dataset forces a discriminating trace step into every\n // filter label (yielding e.g. \"Bulk / Top 10\"); the dataset's own label\n // is dropped because we only zip `entries`. Native label is force-\n // suppressed (the override sits after caller's spread) — filters\n // inherit the dataset's `pl7.app/label` and would otherwise satisfy\n // uniqueness before any trace step is consulted.\n const labels = deriveDistinctLabels([...entries, { spec: datasetSpec }], {\n ...labelOptions,\n formatters: { ...labelOptions?.formatters, native: () => undefined },\n });\n\n return entries.map(({ ref }, i) => ({ ref, label: labels[i] }));\n}\n\n/** Build the `refsByObjectId` map from `ctx.resultPool.getSpecs().entries`. */\nexport function buildRefMap(entries: readonly { readonly ref: PlRef }[]): Map<PObjectId, PlRef> {\n return new Map(entries.map((e) => [canonicalize(e.ref)! as PObjectId, e.ref]));\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,kBAAkB,YAAqD;CACrF,OAAO,WAAW,YAAY;EAC5B,MAAM;EACN,SAAS,EACP,aAAa,GAAG,WAAW,WAAW,OAAO,EAC/C;CACF,CAAC;AACH;;;;;;AAqBA,SAAgB,uBACd,SACA,SACU;CACV,IAAI,QAAQ,WAAW,GAAG,OAAO,CAAC;CAElC,MAAM,EAAE,gBAAgB,aAAa,iBAAiB;CAMtD,MAAM,UAAU,QAAQ,SAAS,UAAsC;EACrE,MAAM,MAAM,eAAe,IAAI,MAAM,OAAO,EAAE;EAC9C,IAAI,QAAQ,KAAA,GAAW,OAAO,CAAC;EAC/B,OAAO,MAAM,SAAS,KAAK,aAAa;GACtC;GACA,MAAM,MAAM,OAAO;GACnB,YAAY,QAAQ,KAAK,KAAK,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,EAAE;EAC/D,EAAE;CACJ,CAAC;CAQD,MAAM,SAAS,qBAAqB,CAAC,GAAG,SAAS,EAAE,MAAM,YAAY,CAAC,GAAG;EACvE,GAAG;EACH,YAAY;GAAE,GAAG,cAAc;GAAY,cAAc,KAAA;EAAU;CACrE,CAAC;CAED,OAAO,QAAQ,KAAK,EAAE,OAAO,OAAO;EAAE;EAAK,OAAO,OAAO;CAAG,EAAE;AAChE;;AAGA,SAAgB,YAAY,SAAoE;CAC9F,OAAO,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,aAAa,EAAE,GAAG,GAAiB,EAAE,GAAG,CAAC,CAAC;AAC/E"}
1
+ {"version":3,"file":"filter_discovery.js","names":[],"sources":["../../../src/components/PlDatasetSelector/filter_discovery.ts"],"sourcesContent":["import { Annotation, extractPObjectId } from \"@milaboratories/pl-model-common\";\nimport type {\n ColumnsCollectionDriverModel,\n Option,\n PColumnSpec,\n PlRef,\n PObjectId,\n PObjectSpec,\n} from \"@milaboratories/pl-model-common\";\nimport canonicalize from \"canonicalize\";\nimport type { ColumnRecipe, ColumnsSource } from \"../../columns\";\nimport { ColumnsCollection, collectLinkerColumns } from \"../../columns\";\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n type Entry,\n} from \"../../labels/derive_distinct_labels\";\n\nexport interface FindFilterColumnsOptions {\n sources: ReadonlyArray<ColumnsSource>;\n anchorSpec: PColumnSpec;\n /** Override the resolved `columnsCollection` service (primarily for tests). */\n driver?: ColumnsCollectionDriverModel;\n}\n\n/**\n * Matches columns annotated `pl7.app/isSubset: \"true\"` whose axes ⊆ anchor axes.\n *\n * Filter-intent: only the dataset's own direct subset columns, no linker\n * traversal — so this uses `.filter()` (pins `maxHops: 0`), not `.discover()`\n * (which would default to 4 hops and surface subset columns from other,\n * linker-reachable datasets). `.filter()` still applies the default\n * `enrichment` matching mode (`allowFloatingHitAxes: false`), which enforces\n * the axes-subset constraint. See `matchingModeToConstraints()`.\n */\nexport function findFilterColumns(options: FindFilterColumnsOptions): ColumnRecipe[] {\n return ColumnsCollection([...options.sources], { driver: options.driver })\n .filter({\n anchors: { main: options.anchorSpec },\n include: { annotations: { [Annotation.IsSubset]: \"true\" } },\n })\n .getColumns();\n}\n\nexport type FilterMatchOptions = {\n /** Maps result-pool column id back to its source PlRef (see {@link buildRefMap}). */\n refsByObjectId: ReadonlyMap<PObjectId, PlRef>;\n /** Spec of the dataset the filters are subsets of. */\n datasetSpec: PObjectSpec;\n /**\n * Forwarded to `deriveDistinctLabels`. Any `formatters.native` caller\n * sets is silently overridden — the function relies on a no-op native\n * formatter to keep the algorithm from short-circuiting on filters'\n * inherited `pl7.app/label`.\n */\n labelOptions?: DeriveLabelsOptions;\n};\n\n/**\n * Derive labeled options from filter column variants, for use in DatasetOption.filters.\n *\n * Entries whose column id has no PlRef in `refsByObjectId` are silently\n * skipped — they cannot be exposed as user-selectable options.\n */\nexport function filterMatchesToOptions(\n variants: ColumnRecipe[],\n options: FilterMatchOptions,\n): Option[] {\n if (variants.length === 0) return [];\n\n const { refsByObjectId, datasetSpec, labelOptions } = options;\n\n // One Option per variant — `deriveDistinctLabels` disambiguates labels by\n // path. All variants of the same column share a terminal PObjectId, so the\n // ref lookup happens once per variant.\n const entries: (Entry & { ref: PlRef })[] = variants.flatMap((variant) => {\n const ref = refsByObjectId.get(extractPObjectId(variant.id));\n if (ref === undefined) return [];\n return [\n {\n ref,\n spec: variant.getSpec(),\n linkerPath: collectLinkerColumns(variant).map((linker) => ({ spec: linker.getSpec() })),\n },\n ];\n });\n\n // Appending the dataset forces a discriminating trace step into every\n // filter label (yielding e.g. \"Bulk / Top 10\"); the dataset's own label\n // is dropped because we only zip `entries`. Native label is force-\n // suppressed (the override sits after caller's spread) — filters\n // inherit the dataset's `pl7.app/label` and would otherwise satisfy\n // uniqueness before any trace step is consulted.\n const labels = deriveDistinctLabels([...entries, { spec: datasetSpec }], {\n ...labelOptions,\n formatters: { ...labelOptions?.formatters, native: () => undefined },\n });\n\n return entries.map(({ ref }, i) => ({ ref, label: labels[i] }));\n}\n\n/** Build the `refsByObjectId` map from `ctx.resultPool.getSpecs().entries`. */\nexport function buildRefMap(entries: readonly { readonly ref: PlRef }[]): Map<PObjectId, PlRef> {\n return new Map(entries.map((e) => [canonicalize(e.ref)! as PObjectId, e.ref]));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmCA,SAAgB,kBAAkB,SAAmD;CACnF,OAAO,kBAAkB,CAAC,GAAG,QAAQ,OAAO,GAAG,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC,CACvE,OAAO;EACN,SAAS,EAAE,MAAM,QAAQ,WAAW;EACpC,SAAS,EAAE,aAAa,GAAG,WAAW,WAAW,OAAO,EAAE;CAC5D,CAAC,CAAC,CACD,WAAW;AAChB;;;;;;;AAsBA,SAAgB,uBACd,UACA,SACU;CACV,IAAI,SAAS,WAAW,GAAG,OAAO,CAAC;CAEnC,MAAM,EAAE,gBAAgB,aAAa,iBAAiB;CAKtD,MAAM,UAAsC,SAAS,SAAS,YAAY;EACxE,MAAM,MAAM,eAAe,IAAI,iBAAiB,QAAQ,EAAE,CAAC;EAC3D,IAAI,QAAQ,KAAA,GAAW,OAAO,CAAC;EAC/B,OAAO,CACL;GACE;GACA,MAAM,QAAQ,QAAQ;GACtB,YAAY,qBAAqB,OAAO,CAAC,CAAC,KAAK,YAAY,EAAE,MAAM,OAAO,QAAQ,EAAE,EAAE;EACxF,CACF;CACF,CAAC;CAQD,MAAM,SAAS,qBAAqB,CAAC,GAAG,SAAS,EAAE,MAAM,YAAY,CAAC,GAAG;EACvE,GAAG;EACH,YAAY;GAAE,GAAG,cAAc;GAAY,cAAc,KAAA;EAAU;CACrE,CAAC;CAED,OAAO,QAAQ,KAAK,EAAE,OAAO,OAAO;EAAE;EAAK,OAAO,OAAO;CAAG,EAAE;AAChE;;AAGA,SAAgB,YAAY,SAAoE;CAC9F,OAAO,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,aAAa,EAAE,GAAG,GAAiB,EAAE,GAAG,CAAC,CAAC;AAC/E"}
@@ -1,4 +1,4 @@
1
1
  import { DatasetOption, DatasetSelection, createDatasetSelection, isDatasetSelection } from "./dataset_selection.js";
2
- import { FilterMatchOptions, buildRefMap, filterMatchesToOptions, findFilterColumns } from "./filter_discovery.js";
2
+ import { FilterMatchOptions, FindFilterColumnsOptions, buildRefMap, filterMatchesToOptions, findFilterColumns } from "./filter_discovery.js";
3
3
  import { BuildDatasetOptions, buildDatasetOptions } from "./build_dataset_options.js";
4
- export { BuildDatasetOptions, DatasetOption, DatasetSelection, FilterMatchOptions, buildDatasetOptions, buildRefMap, createDatasetSelection, filterMatchesToOptions, findFilterColumns, isDatasetSelection };
4
+ export { BuildDatasetOptions, DatasetOption, DatasetSelection, FilterMatchOptions, FindFilterColumnsOptions, buildDatasetOptions, buildRefMap, createDatasetSelection, filterMatchesToOptions, findFilterColumns, isDatasetSelection };
@@ -30,7 +30,7 @@ exports.createPlDataTableV2 = require_createPlDataTableV2.createPlDataTableV2;
30
30
  exports.createPlDataTableV3 = require_createPlDataTableV3.createPlDataTableV3;
31
31
  exports.createPlSelectionModel = require_PlSelectionModel.createPlSelectionModel;
32
32
  exports.createRowSelectionColumn = require_PlMultiSequenceAlignment.createRowSelectionColumn;
33
- exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumnSnaphots;
33
+ exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumns;
34
34
  exports.enrichCompatible = require_axes.enrichCompatible;
35
35
  exports.filterMatchesToOptions = require_filter_discovery.filterMatchesToOptions;
36
36
  exports.findFilterColumns = require_filter_discovery.findFilterColumns;
@@ -3,16 +3,16 @@ import { createPFrameForGraphs, isHiddenFromGraphColumn, isHiddenFromUIColumn }
3
3
  import { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationStep, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, SortedCumulativeSum, TransformedColumn, ValueRank } from "./PlAnnotations/filter.js";
4
4
  import { AnnotationScriptUi, AnnotationStepUi, AnyForm, FilterUi, FilterUiOfType, FilterUiType, FormField, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, compileAnnotationScript, compileFilter, compileFilters, unreachable } from "./PlAnnotations/filters_ui.js";
5
5
  import { DatasetOption, DatasetSelection, createDatasetSelection, isDatasetSelection } from "./PlDatasetSelector/dataset_selection.js";
6
- import { FilterMatchOptions, buildRefMap, filterMatchesToOptions, findFilterColumns } from "./PlDatasetSelector/filter_discovery.js";
6
+ import { FilterMatchOptions, FindFilterColumnsOptions, buildRefMap, filterMatchesToOptions, findFilterColumns } from "./PlDatasetSelector/filter_discovery.js";
7
7
  import { BuildDatasetOptions, buildDatasetOptions } from "./PlDatasetSelector/build_dataset_options.js";
8
- import { PTableParamsV2, PlDataTableFilterMeta, PlDataTableFilterSpecLeaf, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnIdJson } from "./PlDataTable/typesV7.js";
8
+ import { PTableParamsV2, PlDataTableAxisMeta, PlDataTableColumnMeta, PlDataTableColumnsMeta, PlDataTableFilterMeta, PlDataTableFilterSpecLeaf, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlTableColumnIdJson } from "./PlDataTable/typesV8.js";
9
9
  import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./PlDataTable/state-migration.js";
10
10
  import { createPlDataTableSheet } from "./PlDataTable/createPlDataTableSheet.js";
11
11
  import { createPlDataTableV2 } from "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
12
- import { discoverTableColumnSnaphots } from "./PlDataTable/createPlDataTable/discoverColumns.js";
13
- import { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
12
+ import { discoverTableColumns } from "./PlDataTable/createPlDataTable/discoverColumns.js";
13
+ import { ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
14
14
  import { createPlDataTable } from "./PlDataTable/createPlDataTable/index.js";
15
15
  import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./PlDataTable/createPlDataTable/utils.js";
16
16
  import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./PlSelectionModel.js";
17
17
  import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./PlMultiSequenceAlignment.js";
18
- export { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationStep, AnnotationStepUi, AnyForm, type AxesVault, BuildDatasetOptions, type ColumnMatcher, type ColumnOrderRule, type ColumnVisibilityRule, type ColumnsDisplayOptions, type ColumnsSelectorConfig, DatasetOption, DatasetSelection, FilterMatchOptions, FilterUi, FilterUiOfType, FilterUiType, FormField, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PColumnPredicate, PTableKey, type PTableParamsV2, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, type PlDataTableFilterMeta, type PlDataTableFilterSpecLeaf, type PlDataTableFilters, type PlDataTableFiltersWithMeta, type PlDataTableGridStateCore, type PlDataTableModel, type PlDataTableSheet, type PlDataTableSheetState, type PlDataTableStateV2, type PlDataTableStateV2CacheEntry, type PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlSelectionModel, type PlTableColumnIdJson, SortedCumulativeSum, TransformedColumn, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, ValueRank, buildDatasetOptions, buildRefMap, compileAnnotationScript, compileFilter, compileFilters, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, discoverTableColumnSnaphots, enrichCompatible, filterMatchesToOptions, findFilterColumns, getAvailableWithLinkersAxes, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, unreachable, upgradePlDataTableStateV2 };
18
+ export { AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationStep, AnnotationStepUi, AnyForm, type AxesVault, BuildDatasetOptions, type ColumnOrderRule, type ColumnVisibilityRule, type ColumnsDisplayOptions, type ColumnsSelectorConfig, DatasetOption, DatasetSelection, FilterMatchOptions, FilterUi, FilterUiOfType, FilterUiType, FindFilterColumnsOptions, FormField, IsNA, Log10, NotFilter, NumericalComparisonFilter, OrFilter, PColumnPredicate, PTableKey, type PTableParamsV2, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, 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, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlSelectionModel, type PlTableColumnIdJson, SortedCumulativeSum, TransformedColumn, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, ValueRank, buildDatasetOptions, buildRefMap, compileAnnotationScript, compileFilter, compileFilters, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, discoverTableColumns as discoverTableColumnSnaphots, enrichCompatible, filterMatchesToOptions, findFilterColumns, getAvailableWithLinkersAxes, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, unreachable, upgradePlDataTableStateV2 };
@@ -9,10 +9,10 @@ import { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTable
9
9
  import { createPlDataTableSheet } from "./PlDataTable/createPlDataTableSheet.js";
10
10
  import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./PlDataTable/createPlDataTable/utils.js";
11
11
  import { createPlDataTableV2 } from "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
12
- import { discoverTableColumnSnaphots } from "./PlDataTable/createPlDataTable/discoverColumns.js";
12
+ import { discoverTableColumns } from "./PlDataTable/createPlDataTable/discoverColumns.js";
13
13
  import { createPlDataTableV3 } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
14
14
  import { createPlDataTable } from "./PlDataTable/createPlDataTable/index.js";
15
15
  import "./PlDataTable/index.js";
16
16
  import { createRowSelectionColumn } from "./PlMultiSequenceAlignment.js";
17
17
  import { createPlSelectionModel } from "./PlSelectionModel.js";
18
- export { buildDatasetOptions, buildRefMap, compileAnnotationScript, compileFilter, compileFilters, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, discoverTableColumnSnaphots, enrichCompatible, filterMatchesToOptions, findFilterColumns, getAvailableWithLinkersAxes, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, unreachable, upgradePlDataTableStateV2 };
18
+ export { buildDatasetOptions, buildRefMap, compileAnnotationScript, compileFilter, compileFilters, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createRowSelectionColumn, discoverTableColumns as discoverTableColumnSnaphots, enrichCompatible, filterMatchesToOptions, findFilterColumns, getAvailableWithLinkersAxes, getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional, isDatasetSelection, isHiddenFromGraphColumn, isHiddenFromUIColumn, unreachable, upgradePlDataTableStateV2 };
@@ -1,15 +1,14 @@
1
1
  const require_traverse = require("../traverse.cjs");
2
2
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
3
3
  //#region src/filters/converters/filterToQuery.ts
4
- /** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */
5
- function resolveColumnRef(columnStr) {
6
- const parsed = JSON.parse(columnStr);
7
- return parsed.type === "axis" ? {
4
+ /** Converts a QueryColumnId object into a SpecQueryExpression reference. */
5
+ function resolveColumnRef(col) {
6
+ return col.type === "axis" ? {
8
7
  type: "axisRef",
9
- value: parsed.id
8
+ value: col.id
10
9
  } : {
11
10
  type: "columnRef",
12
- value: parsed.id
11
+ value: col.id
13
12
  };
14
13
  }
15
14
  /** Converts a FilterSpec tree into a SpecQueryExpression. */
@@ -1 +1 @@
1
- {"version":3,"file":"filterToQuery.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n FilterSpec,\n FilterSpecLeaf,\n PTableColumnId,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr: string): SpecQueryExpression {\n const parsed = JSON.parse(columnStr) as PTableColumnId;\n return parsed.type === \"axis\"\n ? { type: \"axisRef\", value: parsed.id as SingleAxisSelector }\n : { type: \"columnRef\", value: parsed.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterToQuery.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n AxisId,\n ColumnUniversalId,\n FilterSpec,\n FilterSpecLeaf,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport type QueryColumnIdAxis = {\n type: \"axis\";\n id: AxisId;\n};\n\nexport type QueryColumnIdColumn = {\n type: \"column\";\n /** May be a rich {@link ColumnUniversalId} (Discovered / Overridden / Filtered) or bare PObjectId. */\n id: ColumnUniversalId;\n};\n\nexport type QueryColumnId = QueryColumnIdAxis | QueryColumnIdColumn;\n\n/** Converts a QueryColumnId object into a SpecQueryExpression reference. */\nfunction resolveColumnRef(col: QueryColumnId): SpecQueryExpression {\n return col.type === \"axis\"\n ? { type: \"axisRef\", value: col.id as SingleAxisSelector }\n : { type: \"columnRef\", value: col.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<QueryColumnId>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<QueryColumnId>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":";;;;AAyBA,SAAS,iBAAiB,KAAyC;CACjE,OAAO,IAAI,SAAS,SAChB;EAAE,MAAM;EAAW,OAAO,IAAI;CAAyB,IACvD;EAAE,MAAM;EAAa,OAAO,IAAI;CAAG;AACzC;;AAGA,SAAgB,0BACd,QACqB;CACrB,OAAOA,iBAAAA,mBAAmB,QAAQ;EAChC,MAAM;EACN,MAAM,WAAW;GACf,IAAI,OAAO,WAAW,GACpB,MAAM,IAAI,MAAM,0CAA0C;GAE5D,OAAO;IAAE,MAAM;IAAO,OAAO;GAAO;EACtC;EACA,KAAK,WAAW;GACd,IAAI,OAAO,WAAW,GACpB,MAAM,IAAI,MAAM,yCAAyC;GAE3D,OAAO;IAAE,MAAM;IAAM,OAAO;GAAO;EACrC;EACA,MAAM,WAAW;GAAE,MAAM;GAAO;EAAM;CACxC,CAAC;AACH;AAEA,SAAS,oBACP,QACqB;CACrB,QAAQ,OAAO,MAAf;EACE,KAAK,iBACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,OAAO,OAAO;GACd,iBAAiB;EACnB;EACF,KAAK,oBACH,OAAO;GACL,MAAM;GACN,OAAO;IACL,MAAM;IACN,OAAO,iBAAiB,OAAO,MAAM;IACrC,OAAO,OAAO;IACd,iBAAiB;GACnB;EACF;EACF,KAAK,6BACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,OAAO,OAAO;GACd,iBAAiB;EACnB;EACF,KAAK,gCACH,OAAO;GACL,MAAM;GACN,OAAO;IACL,MAAM;IACN,OAAO,iBAAiB,OAAO,MAAM;IACrC,OAAO,OAAO;IACd,iBAAiB;GACnB;EACF;EACF,KAAK,mCACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,OAAO,OAAO;EAChB;EACF,KAAK,kCACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,OAAO,OAAO;GACd,UAAU,OAAO,YAAY;GAC7B,iBAAiB;GACjB,mBAAmB,OAAO,qBAAqB;GAC/C,UAAU,OAAO,YAAY;EAC/B;EAEF,KAAK,SACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EACF,KAAK,YACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EACF,KAAK,YACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EACF,KAAK,eACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EACF,KAAK,mBACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EACF,KAAK,sBACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO;IAAE,MAAM;IAAY,OAAO,OAAO;GAAE;EAC7C;EAEF,KAAK,iBACH,OAAO;GACL,MAAM;GACN,SAAS;GACT,MAAM,iBAAiB,OAAO,MAAM;GACpC,OAAO,iBAAiB,OAAO,GAAG;EACpC;EACF,KAAK,kBAAkB;GACrB,MAAM,OAAO,iBAAiB,OAAO,MAAM;GAC3C,MAAM,QAAQ,iBAAiB,OAAO,GAAG;GACzC,IAAI,OAAO,YAAY,KAAA,KAAa,OAAO,YAAY,GACrD,OAAO;IACL,MAAM;IACN,SAAS;IACT,MAAM;KACJ,MAAM;KACN,SAAS;KACT;KACA,OAAO;MAAE,MAAM;MAAY,OAAO,OAAO;KAAQ;IACnD;IACA;GACF;GAEF,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAM;IAAM;GAAM;EACjE;EACA,KAAK,qBAAqB;GACxB,MAAM,OAAO,iBAAiB,OAAO,MAAM;GAC3C,MAAM,QAAQ,iBAAiB,OAAO,GAAG;GACzC,IAAI,OAAO,YAAY,KAAA,KAAa,OAAO,YAAY,GACrD,OAAO;IACL,MAAM;IACN,SAAS;IACT,MAAM;KACJ,MAAM;KACN,SAAS;KACT;KACA,OAAO;MAAE,MAAM;MAAY,OAAO,OAAO;KAAQ;IACnD;IACA;GACF;GAEF,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAM;IAAM;GAAM;EACjE;EACA,KAAK,yBAAyB;GAC5B,MAAM,OAAO,iBAAiB,OAAO,MAAM;GAC3C,MAAM,QAAQ,iBAAiB,OAAO,GAAG;GACzC,IAAI,OAAO,YAAY,KAAA,KAAa,OAAO,YAAY,GACrD,OAAO;IACL,MAAM;IACN,SAAS;IACT,MAAM;KACJ,MAAM;KACN,SAAS;KACT;KACA,OAAO;MAAE,MAAM;MAAY,OAAO,OAAO;KAAQ;IACnD;IACA;GACF;GAEF,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAM;IAAM;GAAM;EACjE;EACA,KAAK,4BAA4B;GAC/B,MAAM,OAAO,iBAAiB,OAAO,MAAM;GAC3C,MAAM,QAAQ,iBAAiB,OAAO,GAAG;GACzC,IAAI,OAAO,YAAY,KAAA,KAAa,OAAO,YAAY,GACrD,OAAO;IACL,MAAM;IACN,SAAS;IACT,MAAM;KACJ,MAAM;KACN,SAAS;KACT;KACA,OAAO;MAAE,MAAM;MAAY,OAAO,OAAO;KAAQ;IACnD;IACA;GACF;GAEF,OAAO;IAAE,MAAM;IAAqB,SAAS;IAAM;IAAM;GAAM;EACjE;EAEA,KAAK,SACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,KAAK,OAAO;GACZ,QAAQ;EACV;EACF,KAAK,YACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,KAAK,OAAO;GACZ,QAAQ;EACV;EAEF,KAAK,QACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;EACvC;EACF,KAAK,WACH,OAAO;GACL,MAAM;GACN,OAAO;IACL,MAAM;IACN,OAAO,iBAAiB,OAAO,MAAM;GACvC;EACF;EAEF,KAAK,QACH,OAAO;GACL,MAAM;GACN,OAAO,iBAAiB,OAAO,MAAM;GACrC,aAAa;IAAE,MAAM;IAAY,OAAO,OAAO;GAAY;EAC7D;EAEF,KAAK;EACL,KAAK,WACH,MAAM,IAAI,MAAM,gBAAgB,OAAO,KAAK,wCAAwC;EAEtF,KAAK,KAAA,GACH,MAAM,IAAI,MAAM,0BAA0B;EAE5C,SACE,CAAA,GAAA,gCAAA,YAAA,CAAY,MAAM;CACtB;AACF"}
@@ -1,8 +1,17 @@
1
- import { FilterSpec, FilterSpecLeaf, SpecQueryExpression } from "@milaboratories/pl-model-common";
1
+ import { AxisId, ColumnUniversalId, FilterSpec, FilterSpecLeaf, SpecQueryExpression } from "@milaboratories/pl-model-common";
2
2
 
3
3
  //#region src/filters/converters/filterToQuery.d.ts
4
+ type QueryColumnIdAxis = {
5
+ type: "axis";
6
+ id: AxisId;
7
+ };
8
+ type QueryColumnIdColumn = {
9
+ type: "column"; /** May be a rich {@link ColumnUniversalId} (Discovered / Overridden / Filtered) or bare PObjectId. */
10
+ id: ColumnUniversalId;
11
+ };
12
+ type QueryColumnId = QueryColumnIdAxis | QueryColumnIdColumn;
4
13
  /** Converts a FilterSpec tree into a SpecQueryExpression. */
5
- declare function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(filter: FilterSpec<Leaf>): SpecQueryExpression;
14
+ declare function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<QueryColumnId>>(filter: FilterSpec<Leaf>): SpecQueryExpression;
6
15
  //#endregion
7
- export { filterSpecToSpecQueryExpr };
16
+ export { QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, filterSpecToSpecQueryExpr };
8
17
  //# sourceMappingURL=filterToQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterToQuery.d.ts","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"mappings":";;;;iBAmBgB,yBAAA,cAAuC,cAAA,UACrD,MAAA,EAAQ,UAAA,CAAW,IAAA,IAClB,mBAAA"}
1
+ {"version":3,"file":"filterToQuery.d.ts","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"mappings":";;;KAWY,iBAAA;EACV,IAAA;EACA,EAAA,EAAI,MAAM;AAAA;AAAA,KAGA,mBAAA;EACV,IAAA,YALA;EAOA,EAAA,EAAI,iBAAiB;AAAA;AAAA,KAGX,aAAA,GAAgB,iBAAA,GAAoB,mBAAmB;AATvD;AAAA,iBAmBI,yBAAA,cAAuC,cAAA,CAAe,aAAA,GACpE,MAAA,EAAQ,UAAA,CAAW,IAAA,IAClB,mBAAA"}
@@ -1,15 +1,14 @@
1
1
  import { traverseFilterSpec } from "../traverse.js";
2
2
  import { assertNever } from "@milaboratories/pl-model-common";
3
3
  //#region src/filters/converters/filterToQuery.ts
4
- /** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */
5
- function resolveColumnRef(columnStr) {
6
- const parsed = JSON.parse(columnStr);
7
- return parsed.type === "axis" ? {
4
+ /** Converts a QueryColumnId object into a SpecQueryExpression reference. */
5
+ function resolveColumnRef(col) {
6
+ return col.type === "axis" ? {
8
7
  type: "axisRef",
9
- value: parsed.id
8
+ value: col.id
10
9
  } : {
11
10
  type: "columnRef",
12
- value: parsed.id
11
+ value: col.id
13
12
  };
14
13
  }
15
14
  /** Converts a FilterSpec tree into a SpecQueryExpression. */
@@ -1 +1 @@
1
- {"version":3,"file":"filterToQuery.js","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n FilterSpec,\n FilterSpecLeaf,\n PTableColumnId,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr: string): SpecQueryExpression {\n const parsed = JSON.parse(columnStr) as PTableColumnId;\n return parsed.type === \"axis\"\n ? { type: \"axisRef\", value: parsed.id as SingleAxisSelector }\n : { type: \"columnRef\", value: parsed.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterToQuery.js","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n AxisId,\n ColumnUniversalId,\n FilterSpec,\n FilterSpecLeaf,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport type QueryColumnIdAxis = {\n type: \"axis\";\n id: AxisId;\n};\n\nexport type QueryColumnIdColumn = {\n type: \"column\";\n /** May be a rich {@link ColumnUniversalId} (Discovered / Overridden / Filtered) or bare PObjectId. */\n id: ColumnUniversalId;\n};\n\nexport type QueryColumnId = QueryColumnIdAxis | QueryColumnIdColumn;\n\n/** Converts a QueryColumnId object into a SpecQueryExpression reference. */\nfunction resolveColumnRef(col: QueryColumnId): SpecQueryExpression {\n return col.type === \"axis\"\n ? { type: \"axisRef\", value: col.id as SingleAxisSelector }\n : { type: \"columnRef\", value: col.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<QueryColumnId>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<QueryColumnId>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { filterSpecToSpecQueryExpr } from "./filterToQuery.js";
1
+ import { QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, filterSpecToSpecQueryExpr } from "./filterToQuery.js";
2
2
  import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filterUiToExpressionImpl.js";
3
- export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions, filterSpecToSpecQueryExpr };
3
+ export { QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, filterSpecToSpecQueryExpr };
@@ -1,5 +1,5 @@
1
- import { filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
1
+ import { QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
2
2
  import { FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry } from "./types.js";
3
3
  import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./converters/filterUiToExpressionImpl.js";
4
4
  import { distillFilterSpec } from "./distill.js";
5
- export { type FilterSpec, type FilterSpecLeaf, type FilterSpecNode, type FilterSpecOfType, type FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, distillFilterSpec, filterSpecToSpecQueryExpr };
5
+ export { type FilterSpec, type FilterSpecLeaf, type FilterSpecNode, type FilterSpecOfType, type FilterSpecType, QueryColumnId, QueryColumnIdAxis, QueryColumnIdColumn, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, distillFilterSpec, filterSpecToSpecQueryExpr };
package/dist/index.cjs CHANGED
@@ -28,12 +28,18 @@ const require_block_model_legacy = require("./block_model_legacy.cjs");
28
28
  const require_plugin_model = require("./plugin_model.cjs");
29
29
  const require_block_model = require("./block_model.cjs");
30
30
  const require_axes = require("./pframe_utils/axes.cjs");
31
- const require_column_snapshot = require("./columns/column_snapshot.cjs");
32
- const require_column_snapshot_provider = require("./columns/column_snapshot_provider.cjs");
33
- const require_column_selector = require("./columns/column_selector.cjs");
34
- const require_column_collection_builder = require("./columns/column_collection_builder.cjs");
35
- const require_ctx_column_sources = require("./columns/ctx_column_sources.cjs");
31
+ const require_column = require("./columns/column.cjs");
32
+ const require_column_discovered_recipe = require("./columns/column_recipes/column_discovered_recipe.cjs");
33
+ const require_column_filtered_recipe = require("./columns/column_recipes/column_filtered_recipe.cjs");
34
+ const require_index$4 = require("./columns/column_recipes/index.cjs");
35
+ const require_column_overrided_recipe = require("./columns/column_recipes/column_overrided_recipe.cjs");
36
+ const require_column_lazy = require("./columns/column_lazy.cjs");
37
+ const require_providers = require("./columns/column_providers/providers.cjs");
38
+ const require_index$5 = require("./columns/column_providers/index.cjs");
39
+ const require_columns_collection = require("./columns/columns_collection.cjs");
40
+ const require_utils = require("./columns/utils.cjs");
36
41
  const require_expand_by_partition = require("./columns/expand_by_partition.cjs");
42
+ const require_derive_axis_values_labels = require("./columns/derive_axis_values_labels.cjs");
37
43
  require("./columns/index.cjs");
38
44
  const require_columns = require("./pframe_utils/columns.cjs");
39
45
  const require_PFrameForGraphs = require("./components/PFrameForGraphs.cjs");
@@ -48,11 +54,11 @@ require("./filters/index.cjs");
48
54
  const require_state_migration = require("./components/PlDataTable/state-migration.cjs");
49
55
  const require_createPlDataTableSheet = require("./components/PlDataTable/createPlDataTableSheet.cjs");
50
56
  const require_derive_distinct_tooltips = require("./labels/derive_distinct_tooltips.cjs");
51
- const require_utils = require("./components/PlDataTable/createPlDataTable/utils.cjs");
57
+ const require_utils$1 = require("./components/PlDataTable/createPlDataTable/utils.cjs");
52
58
  const require_createPlDataTableV2 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
53
59
  const require_discoverColumns = require("./components/PlDataTable/createPlDataTable/discoverColumns.cjs");
54
60
  const require_createPlDataTableV3 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
55
- const require_index$6 = require("./components/PlDataTable/createPlDataTable/index.cjs");
61
+ const require_index$8 = require("./components/PlDataTable/createPlDataTable/index.cjs");
56
62
  const require_PlMultiSequenceAlignment = require("./components/PlMultiSequenceAlignment.cjs");
57
63
  const require_PlSelectionModel = require("./components/PlSelectionModel.cjs");
58
64
  require("./components/index.cjs");
@@ -62,10 +68,12 @@ const require_ref_util = require("./ref_util.cjs");
62
68
  const require_raw_globals = require("./raw_globals.cjs");
63
69
  const require_converter = require("./annotations/converter.cjs");
64
70
  require("./annotations/index.cjs");
65
- const require_index$10 = require("./pframe_utils/index.cjs");
71
+ const require_index$12 = require("./pframe_utils/index.cjs");
66
72
  const require_env_value = require("./env_value.cjs");
73
+ exports.AccessorColumnsProvider = require_providers.AccessorColumnsProvider;
74
+ exports.AccessorColumnsProviderImpl = require_providers.AccessorColumnsProviderImpl;
67
75
  exports.Args = require_actions.Args;
68
- exports.ArrayColumnProvider = require_column_snapshot_provider.ArrayColumnProvider;
76
+ exports.ArrayColumnsProvider = require_providers.ArrayColumnsProvider;
69
77
  exports.BLOCK_SERVICE_FLAGS = require_block_services.BLOCK_SERVICE_FLAGS;
70
78
  exports.BLOCK_STORAGE_FACADE_VERSION = require_block_storage_facade.BLOCK_STORAGE_FACADE_VERSION;
71
79
  exports.BlockModel = require_block_model_legacy.BlockModel;
@@ -73,7 +81,17 @@ exports.BlockModelV3 = require_block_model.BlockModelV3;
73
81
  exports.BlockRenderCtx = require_api.BlockRenderCtx;
74
82
  exports.BlockStorageFacadeCallbacks = require_block_storage_facade.BlockStorageFacadeCallbacks;
75
83
  exports.BlockStorageFacadeHandles = require_block_storage_facade.BlockStorageFacadeHandles;
76
- exports.ColumnCollectionBuilder = require_column_collection_builder.ColumnCollectionBuilder;
84
+ exports.Column = require_column.Column;
85
+ exports.ColumnAbsentError = require_column_lazy.ColumnAbsentError;
86
+ exports.ColumnDiscoveredRecipe = require_column_discovered_recipe.ColumnDiscoveredRecipe;
87
+ exports.ColumnFilteredRecipe = require_column_filtered_recipe.ColumnFilteredRecipe;
88
+ exports.ColumnLazy = require_column_lazy.ColumnLazy;
89
+ exports.ColumnLazyImpl = require_column_lazy.ColumnLazyImpl;
90
+ exports.ColumnOverriddenRecipe = require_column_overrided_recipe.ColumnOverriddenRecipe;
91
+ exports.ColumnRecipe = require_index$4.ColumnRecipe;
92
+ exports.ColumnsCollection = require_columns_collection.ColumnsCollection;
93
+ exports.ColumnsCollectionImpl = require_columns_collection.ColumnsCollectionImpl;
94
+ exports.ColumnsProvider = require_providers.ColumnsProvider;
77
95
  exports.CurrentSdkInfo = require_version.CurrentSdkInfo;
78
96
  exports.DataModel = require_block_migrations.DataModel;
79
97
  exports.DataModelBuilder = require_block_migrations.DataModelBuilder;
@@ -85,8 +103,8 @@ Object.defineProperty(exports, "JsRenderInternal", {
85
103
  return require_internal.internal_exports;
86
104
  }
87
105
  });
106
+ exports.MainAccessorName = require_internal.MainAccessorName;
88
107
  exports.MainOutputs = require_actions.MainOutputs;
89
- exports.OutputColumnProvider = require_column_snapshot_provider.OutputColumnProvider;
90
108
  exports.OutputError = require_block_state_util.OutputError;
91
109
  exports.PColumnCollection = require_column_collection.PColumnCollection;
92
110
  exports.PFrameImpl = require_pframe.PFrameImpl;
@@ -107,47 +125,47 @@ exports.RT_RESOURCE_MAP_PARTITIONED = require_pcolumn_data.RT_RESOURCE_MAP_PARTI
107
125
  exports.RenderCtxBase = require_api.RenderCtxBase;
108
126
  exports.RenderCtxLegacy = require_api.RenderCtxLegacy;
109
127
  exports.ResultPool = require_api.ResultPool;
110
- exports.ResultPoolColumnSnapshotProvider = require_ctx_column_sources.ResultPoolColumnSnapshotProvider;
111
- exports.SnapshotColumnProvider = require_column_snapshot_provider.SnapshotColumnProvider;
128
+ exports.ResultPoolColumnsProvider = require_providers.ResultPoolColumnsProvider;
129
+ exports.ResultPoolColumnsProviderImpl = require_providers.ResultPoolColumnsProviderImpl;
130
+ exports.StagingAccessorName = require_internal.StagingAccessorName;
112
131
  exports.StagingOutputs = require_actions.StagingOutputs;
113
132
  exports.TreeNodeAccessor = require_accessor.TreeNodeAccessor;
114
133
  exports.UiState = require_actions.UiState;
134
+ exports._ctxProvidersCache = require_index$5._ctxProvidersCache;
115
135
  exports.allPColumnsReady = require_pcolumn_data.allPColumnsReady;
116
136
  exports.and = require_actions.and;
117
137
  exports.blockServiceNames = require_block_services.blockServiceNames;
118
138
  exports.buildDatasetOptions = require_build_dataset_options.buildDatasetOptions;
119
139
  exports.buildRefMap = require_filter_discovery.buildRefMap;
120
140
  exports.buildServices = require_service_bridge.buildServices;
121
- exports.collectCtxColumnSnapshotProviders = require_ctx_column_sources.collectCtxColumnSnapshotProviders;
141
+ exports.collectLinkerColumns = require_utils.collectLinkerColumns;
142
+ exports.collectLinkerIds = require_utils.collectLinkerIds;
122
143
  exports.compileAnnotationScript = require_filters_ui.compileAnnotationScript;
123
144
  exports.compileFilter = require_filters_ui.compileFilter;
124
145
  exports.compileFilters = require_filters_ui.compileFilters;
125
- exports.convertColumnSelectorToMultiColumnSelector = require_column_selector.convertColumnSelectorToMultiColumnSelector;
126
146
  exports.convertFilterSpecsToExpressionSpecs = require_converter.convertFilterSpecsToExpressionSpecs;
127
147
  exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
128
148
  exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
129
149
  exports.convertOrParsePColumnData = require_pcolumn_data.convertOrParsePColumnData;
130
- exports.convertRelaxedAxisSelectorToMultiAxisSelector = require_column_selector.convertRelaxedAxisSelectorToMultiAxisSelector;
131
- exports.convertRelaxedColumnSelectorToMultiColumnSelector = require_column_selector.convertRelaxedColumnSelectorToMultiColumnSelector;
132
150
  exports.createBlockStorage = require_block_storage.createBlockStorage;
133
- exports.createColumnSnapshot = require_column_snapshot.createColumnSnapshot;
134
151
  exports.createDatasetSelection = require_dataset_selection.createDatasetSelection;
135
152
  exports.createDefaultPTableParams = require_state_migration.createDefaultPTableParams;
136
153
  exports.createPFrameForGraphs = require_PFrameForGraphs.createPFrameForGraphs;
137
- exports.createPlDataTable = require_index$6.createPlDataTable;
154
+ exports.createPlDataTable = require_index$8.createPlDataTable;
138
155
  exports.createPlDataTableSheet = require_createPlDataTableSheet.createPlDataTableSheet;
139
156
  exports.createPlDataTableStateV2 = require_state_migration.createPlDataTableStateV2;
140
157
  exports.createPlDataTableV2 = require_createPlDataTableV2.createPlDataTableV2;
141
158
  exports.createPlDataTableV3 = require_createPlDataTableV3.createPlDataTableV3;
142
159
  exports.createPlSelectionModel = require_PlSelectionModel.createPlSelectionModel;
143
- exports.createReadyColumnData = require_column_snapshot.createReadyColumnData;
144
160
  exports.createRowSelectionColumn = require_PlMultiSequenceAlignment.createRowSelectionColumn;
145
161
  exports.createServiceProxy = require_service_bridge.createServiceProxy;
162
+ exports.deriveAxisValuesLabels = require_derive_axis_values_labels.deriveAxisValuesLabels;
163
+ exports.deriveColumnOptions = require_utils.deriveColumnOptions;
146
164
  exports.deriveDataFromStorage = require_block_storage.deriveDataFromStorage;
147
165
  exports.deriveDistinctLabels = require_derive_distinct_labels.deriveDistinctLabels;
148
166
  exports.deriveDistinctTooltips = require_derive_distinct_tooltips.deriveDistinctTooltips;
149
167
  exports.deriveLabels = require_label.deriveLabels;
150
- exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumnSnaphots;
168
+ exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumns;
151
169
  exports.distillFilterSpec = require_distill.distillFilterSpec;
152
170
  exports.downgradeCfgOrLambda = require_normalization.downgradeCfgOrLambda;
153
171
  exports.enrichCompatible = require_axes.enrichCompatible;
@@ -157,32 +175,35 @@ exports.extractConfig = require_normalization.extractConfig;
157
175
  exports.filterDataInfoEntries = require_axis_filtering.filterDataInfoEntries;
158
176
  exports.filterMatchesToOptions = require_filter_discovery.filterMatchesToOptions;
159
177
  exports.filterSpecToSpecQueryExpr = require_filterToQuery.filterSpecToSpecQueryExpr;
178
+ exports.finalizePColumnData = require_api.finalizePColumnData;
160
179
  exports.findFilterColumns = require_filter_discovery.findFilterColumns;
161
180
  exports.flatten = require_actions.flatten;
162
181
  exports.fromPlOption = require_ref_util.fromPlOption;
163
182
  exports.fromPlRef = require_ref_util.fromPlRef;
164
183
  exports.getAllRelatedColumns = require_columns.getAllRelatedColumns;
165
184
  exports.getAvailableWithLinkersAxes = require_axes.getAvailableWithLinkersAxes;
166
- exports.getAxisUniqueValues = require_index$10.getAxisUniqueValues;
185
+ exports.getAxisUniqueValues = require_index$12.getAxisUniqueValues;
167
186
  exports.getBlobContent = require_actions.getBlobContent;
168
187
  exports.getBlobContentAsJson = require_actions.getBlobContentAsJson;
169
188
  exports.getBlobContentAsString = require_actions.getBlobContentAsString;
170
- exports.getColumnOrAxisValueLabelsId = require_index$10.getColumnOrAxisValueLabelsId;
171
- exports.getColumnSpecById = require_index$10.getColumnSpecById;
172
- exports.getColumnUniqueValues = require_index$10.getColumnUniqueValues;
173
- exports.getColumnsFull = require_index$10.getColumnsFull;
189
+ exports.getColumnOrAxisValueLabelsId = require_index$12.getColumnOrAxisValueLabelsId;
190
+ exports.getColumnSpecById = require_index$12.getColumnSpecById;
191
+ exports.getColumnUniqueValues = require_index$12.getColumnUniqueValues;
192
+ exports.getColumnsFull = require_index$12.getColumnsFull;
193
+ exports.getCtxProviders = require_index$5.getCtxProviders;
174
194
  exports.getDownloadedBlobContent = require_actions.getDownloadedBlobContent;
175
- exports.getEffectiveVisibility = require_utils.getEffectiveVisibility;
195
+ exports.getEffectiveVisibility = require_utils$1.getEffectiveVisibility;
176
196
  exports.getEnvironmentValue = require_env_value.getEnvironmentValue;
177
197
  exports.getFromCfg = require_actions.getFromCfg;
178
198
  exports.getImmediate = require_actions.getImmediate;
179
199
  exports.getImportProgress = require_actions.getImportProgress;
180
200
  exports.getJsonField = require_actions.getJsonField;
181
201
  exports.getLastLogs = require_actions.getLastLogs;
202
+ exports.getLeafColumnData = require_utils.getLeafColumnData;
182
203
  exports.getLogHandle = require_actions.getLogHandle;
183
204
  exports.getNumberOfRows = require_pcolumn_data.getNumberOfRows;
184
205
  exports.getOnDemandBlobContent = require_actions.getOnDemandBlobContent;
185
- exports.getOrderPriority = require_utils.getOrderPriority;
206
+ exports.getOrderPriority = require_utils$1.getOrderPriority;
186
207
  exports.getPartitionKeysList = require_pcolumn_data.getPartitionKeysList;
187
208
  exports.getPlatformaApiVersion = require_raw_globals.getPlatformaApiVersion;
188
209
  exports.getPluginData = require_block_storage.getPluginData;
@@ -190,24 +211,31 @@ exports.getProgressLog = require_actions.getProgressLog;
190
211
  exports.getProgressLogWithInfo = require_actions.getProgressLogWithInfo;
191
212
  exports.getRawPlatformaInstance = require_raw_globals.getRawPlatformaInstance;
192
213
  exports.getRelatedColumns = require_columns.getRelatedColumns;
193
- exports.getRequestColumnsFromSelectedSources = require_index$10.getRequestColumnsFromSelectedSources;
214
+ exports.getRequestColumnsFromSelectedSources = require_index$12.getRequestColumnsFromSelectedSources;
194
215
  exports.getResourceField = require_actions.getResourceField;
195
216
  exports.getResourceValueAsJson = require_actions.getResourceValueAsJson;
196
217
  exports.getService = require_get_services.getService;
197
- exports.getSingleColumnData = require_index$10.getSingleColumnData;
218
+ exports.getSingleColumnData = require_index$12.getSingleColumnData;
198
219
  exports.getStorageData = require_block_storage.getStorageData;
199
220
  exports.getUniquePartitionKeys = require_pcolumn_data.getUniquePartitionKeys;
200
- exports.getUniqueSourceValuesWithLabels = require_index$10.getUniqueSourceValuesWithLabels;
221
+ exports.getUniqueSourceValuesWithLabels = require_index$12.getUniqueSourceValuesWithLabels;
222
+ exports.hasColumnData = require_utils.hasColumnData;
223
+ exports.hitQualifications = require_utils.hitQualifications;
201
224
  exports.ifDef = require_accessor.ifDef;
202
225
  exports.isBlockStorage = require_block_storage.isBlockStorage;
203
- exports.isColumnHidden = require_utils.isColumnHidden;
204
- exports.isColumnOptional = require_utils.isColumnOptional;
205
- exports.isColumnSnapshotProvider = require_column_snapshot_provider.isColumnSnapshotProvider;
226
+ exports.isColumn = require_column.isColumn;
227
+ exports.isColumnHidden = require_utils$1.isColumnHidden;
228
+ exports.isColumnLazy = require_column_lazy.isColumnLazy;
229
+ exports.isColumnOptional = require_utils$1.isColumnOptional;
230
+ exports.isColumnProvider = require_index$5.isColumnProvider;
231
+ exports.isColumnRecipe = require_index$4.isColumnRecipe;
232
+ exports.isColumnsCollection = require_columns_collection.isColumnsCollection;
206
233
  exports.isConfigLambda = require_types.isConfigLambda;
207
234
  exports.isDatasetSelection = require_dataset_selection.isDatasetSelection;
208
235
  exports.isEmpty = require_actions.isEmpty;
209
236
  exports.isHiddenFromGraphColumn = require_PFrameForGraphs.isHiddenFromGraphColumn;
210
237
  exports.isHiddenFromUIColumn = require_PFrameForGraphs.isHiddenFromUIColumn;
238
+ exports.isLeafColumn = require_utils.isLeafColumn;
211
239
  exports.isPColumnReady = require_pcolumn_data.isPColumnReady;
212
240
  exports.isPluginOutputKey = require_plugin_handle.isPluginOutputKey;
213
241
  exports.isolate = require_actions.isolate;
@@ -224,9 +252,10 @@ exports.parsePColumnData = require_pcolumn_data.parsePColumnData;
224
252
  exports.parseResourceMap = require_pcolumn_data.parseResourceMap;
225
253
  exports.pluginOutputKey = require_plugin_handle.pluginOutputKey;
226
254
  exports.pluginOutputPrefix = require_plugin_handle.pluginOutputPrefix;
255
+ exports.queriesQualifications = require_utils.queriesQualifications;
227
256
  exports.readOutput = require_block_state_util.readOutput;
228
257
  exports.registerFacadeCallbacks = require_block_storage_facade.registerFacadeCallbacks;
229
- exports.toColumnSnapshotProvider = require_column_snapshot_provider.toColumnSnapshotProvider;
258
+ exports.toColumnProvider = require_index$5.toColumnProvider;
230
259
  exports.unreachable = require_filters_ui.unreachable;
231
260
  exports.updateStorageData = require_block_storage.updateStorageData;
232
261
  exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableStateV2;