@platforma-sdk/model 1.63.1 → 1.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +12 -22
  2. package/dist/_virtual/_rolldown/runtime.js +6 -11
  3. package/dist/annotations/converter.cjs +4 -5
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts.map +1 -0
  6. package/dist/annotations/converter.js +1 -2
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -1
  9. package/dist/annotations/index.js +1 -1
  10. package/dist/annotations/types.d.ts +0 -1
  11. package/dist/annotations/types.d.ts.map +1 -0
  12. package/dist/bconfig/index.cjs +2 -2
  13. package/dist/bconfig/index.js +2 -2
  14. package/dist/bconfig/lambdas.d.ts +0 -1
  15. package/dist/bconfig/lambdas.d.ts.map +1 -0
  16. package/dist/bconfig/normalization.cjs +4 -5
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts.map +1 -0
  19. package/dist/bconfig/normalization.js +1 -2
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +1 -2
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +0 -1
  24. package/dist/bconfig/types.d.ts.map +1 -0
  25. package/dist/bconfig/types.js +1 -1
  26. package/dist/bconfig/util.d.ts.map +1 -0
  27. package/dist/bconfig/v3.d.ts.map +1 -0
  28. package/dist/block_api_v1.d.ts.map +1 -0
  29. package/dist/block_api_v2.d.ts.map +1 -0
  30. package/dist/block_api_v3.d.ts.map +1 -0
  31. package/dist/block_migrations.cjs +2 -3
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts.map +1 -0
  34. package/dist/block_migrations.js +1 -2
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +16 -17
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +0 -2
  39. package/dist/block_model.d.ts.map +1 -0
  40. package/dist/block_model.js +4 -5
  41. package/dist/block_model.js.map +1 -1
  42. package/dist/block_model_legacy.cjs +10 -11
  43. package/dist/block_model_legacy.cjs.map +1 -1
  44. package/dist/block_model_legacy.d.ts +0 -3
  45. package/dist/block_model_legacy.d.ts.map +1 -0
  46. package/dist/block_model_legacy.js +1 -2
  47. package/dist/block_model_legacy.js.map +1 -1
  48. package/dist/block_state_patch.d.ts.map +1 -0
  49. package/dist/block_state_util.cjs +1 -2
  50. package/dist/block_state_util.cjs.map +1 -1
  51. package/dist/block_state_util.d.ts.map +1 -0
  52. package/dist/block_state_util.js +1 -1
  53. package/dist/block_state_util.js.map +1 -1
  54. package/dist/block_storage.cjs +5 -12
  55. package/dist/block_storage.cjs.map +1 -1
  56. package/dist/block_storage.d.ts.map +1 -0
  57. package/dist/block_storage.js +5 -11
  58. package/dist/block_storage.js.map +1 -1
  59. package/dist/block_storage_callbacks.cjs +4 -5
  60. package/dist/block_storage_callbacks.cjs.map +1 -1
  61. package/dist/block_storage_callbacks.js +3 -4
  62. package/dist/block_storage_callbacks.js.map +1 -1
  63. package/dist/block_storage_facade.cjs +2 -3
  64. package/dist/block_storage_facade.cjs.map +1 -1
  65. package/dist/block_storage_facade.d.ts +0 -1
  66. package/dist/block_storage_facade.d.ts.map +1 -0
  67. package/dist/block_storage_facade.js +1 -2
  68. package/dist/block_storage_facade.js.map +1 -1
  69. package/dist/columns/column_collection_builder.cjs +111 -99
  70. package/dist/columns/column_collection_builder.cjs.map +1 -1
  71. package/dist/columns/column_collection_builder.d.ts +13 -12
  72. package/dist/columns/column_collection_builder.d.ts.map +1 -0
  73. package/dist/columns/column_collection_builder.js +108 -96
  74. package/dist/columns/column_collection_builder.js.map +1 -1
  75. package/dist/columns/column_selector.cjs +9 -82
  76. package/dist/columns/column_selector.cjs.map +1 -1
  77. package/dist/columns/column_selector.d.ts +6 -14
  78. package/dist/columns/column_selector.d.ts.map +1 -0
  79. package/dist/columns/column_selector.js +7 -78
  80. package/dist/columns/column_selector.js.map +1 -1
  81. package/dist/columns/column_snapshot.cjs +4 -5
  82. package/dist/columns/column_snapshot.cjs.map +1 -1
  83. package/dist/columns/column_snapshot.d.ts +3 -3
  84. package/dist/columns/column_snapshot.d.ts.map +1 -0
  85. package/dist/columns/column_snapshot.js +4 -4
  86. package/dist/columns/column_snapshot.js.map +1 -1
  87. package/dist/columns/column_snapshot_provider.cjs +2 -3
  88. package/dist/columns/column_snapshot_provider.cjs.map +1 -1
  89. package/dist/columns/column_snapshot_provider.d.ts +8 -8
  90. package/dist/columns/column_snapshot_provider.d.ts.map +1 -0
  91. package/dist/columns/column_snapshot_provider.js +2 -2
  92. package/dist/columns/column_snapshot_provider.js.map +1 -1
  93. package/dist/columns/ctx_column_sources.cjs +3 -4
  94. package/dist/columns/ctx_column_sources.cjs.map +1 -1
  95. package/dist/columns/ctx_column_sources.d.ts +2 -2
  96. package/dist/columns/ctx_column_sources.d.ts.map +1 -0
  97. package/dist/columns/ctx_column_sources.js +1 -2
  98. package/dist/columns/ctx_column_sources.js.map +1 -1
  99. package/dist/columns/expand_by_partition.cjs +106 -0
  100. package/dist/columns/expand_by_partition.cjs.map +1 -0
  101. package/dist/columns/expand_by_partition.d.ts +33 -0
  102. package/dist/columns/expand_by_partition.d.ts.map +1 -0
  103. package/dist/columns/expand_by_partition.js +105 -0
  104. package/dist/columns/expand_by_partition.js.map +1 -0
  105. package/dist/columns/index.cjs +6 -5
  106. package/dist/columns/index.d.ts +4 -3
  107. package/dist/columns/index.js +6 -5
  108. package/dist/components/PFrameForGraphs.cjs +4 -5
  109. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  110. package/dist/components/PFrameForGraphs.d.ts +0 -1
  111. package/dist/components/PFrameForGraphs.d.ts.map +1 -0
  112. package/dist/components/PFrameForGraphs.js +2 -3
  113. package/dist/components/PFrameForGraphs.js.map +1 -1
  114. package/dist/components/PlAnnotations/filter.d.ts.map +1 -0
  115. package/dist/components/PlAnnotations/filters_ui.cjs +1 -2
  116. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  117. package/dist/components/PlAnnotations/filters_ui.d.ts +0 -2
  118. package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -0
  119. package/dist/components/PlAnnotations/filters_ui.js +1 -1
  120. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  121. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +26 -0
  122. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -0
  123. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +25 -0
  124. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -0
  125. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +68 -0
  126. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -0
  127. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +67 -0
  128. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -0
  129. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +28 -18
  130. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  131. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +4 -1
  132. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -0
  133. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +22 -12
  134. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  135. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +262 -181
  136. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  137. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +37 -23
  138. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -0
  139. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +261 -177
  140. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  141. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +64 -0
  142. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -0
  143. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -0
  144. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -0
  145. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +63 -0
  146. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -0
  147. package/dist/components/PlDataTable/createPlDataTable/index.cjs +4 -4
  148. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  149. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -2
  150. package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -0
  151. package/dist/components/PlDataTable/createPlDataTable/index.js +3 -3
  152. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  153. package/dist/components/PlDataTable/createPlDataTable/utils.cjs +109 -0
  154. package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -0
  155. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +19 -0
  156. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -0
  157. package/dist/components/PlDataTable/createPlDataTable/utils.js +102 -0
  158. package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -0
  159. package/dist/components/PlDataTable/createPlDataTableSheet.cjs +1 -2
  160. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  161. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +0 -1
  162. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -0
  163. package/dist/components/PlDataTable/createPlDataTableSheet.js +1 -1
  164. package/dist/components/PlDataTable/index.cjs +7 -5
  165. package/dist/components/PlDataTable/index.d.ts +4 -2
  166. package/dist/components/PlDataTable/index.js +7 -5
  167. package/dist/components/PlDataTable/labels.cjs +27 -14
  168. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  169. package/dist/components/PlDataTable/labels.js +26 -13
  170. package/dist/components/PlDataTable/labels.js.map +1 -1
  171. package/dist/components/PlDataTable/state-migration.cjs +8 -6
  172. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  173. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
  174. package/dist/components/PlDataTable/state-migration.js +5 -3
  175. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  176. package/dist/components/PlDataTable/typesV4.d.ts.map +1 -0
  177. package/dist/components/PlDataTable/typesV5.d.ts +5 -5
  178. package/dist/components/PlDataTable/typesV5.d.ts.map +1 -0
  179. package/dist/components/PlMultiSequenceAlignment.cjs +2 -3
  180. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  181. package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -0
  182. package/dist/components/PlMultiSequenceAlignment.js +1 -2
  183. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  184. package/dist/components/PlSelectionModel.cjs +1 -2
  185. package/dist/components/PlSelectionModel.cjs.map +1 -1
  186. package/dist/components/PlSelectionModel.d.ts.map +1 -0
  187. package/dist/components/PlSelectionModel.js +1 -1
  188. package/dist/components/index.cjs +13 -11
  189. package/dist/components/index.d.ts +3 -3
  190. package/dist/components/index.js +12 -10
  191. package/dist/config/actions.cjs +1 -2
  192. package/dist/config/actions.cjs.map +1 -1
  193. package/dist/config/actions.d.ts.map +1 -0
  194. package/dist/config/actions.js +1 -1
  195. package/dist/config/actions_kinds.d.ts.map +1 -0
  196. package/dist/config/index.cjs +1 -1
  197. package/dist/config/index.js +1 -1
  198. package/dist/config/model.d.ts.map +1 -0
  199. package/dist/config/model_meta.d.ts.map +1 -0
  200. package/dist/config/type_engine.d.ts.map +1 -0
  201. package/dist/config/type_util.d.ts.map +1 -0
  202. package/dist/env_value.cjs +1 -2
  203. package/dist/env_value.cjs.map +1 -1
  204. package/dist/env_value.d.ts.map +1 -0
  205. package/dist/env_value.js +1 -1
  206. package/dist/env_value.js.map +1 -1
  207. package/dist/filters/converters/filterToQuery.cjs +3 -4
  208. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  209. package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
  210. package/dist/filters/converters/filterToQuery.js +1 -2
  211. package/dist/filters/converters/filterToQuery.js.map +1 -1
  212. package/dist/filters/converters/filterUiToExpressionImpl.cjs +3 -4
  213. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  214. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
  215. package/dist/filters/converters/filterUiToExpressionImpl.js +1 -2
  216. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  217. package/dist/filters/converters/index.cjs +2 -2
  218. package/dist/filters/converters/index.js +2 -2
  219. package/dist/filters/distill.cjs +3 -4
  220. package/dist/filters/distill.cjs.map +1 -1
  221. package/dist/filters/distill.d.ts.map +1 -0
  222. package/dist/filters/distill.js +1 -2
  223. package/dist/filters/distill.js.map +1 -1
  224. package/dist/filters/index.cjs +4 -4
  225. package/dist/filters/index.d.ts +0 -1
  226. package/dist/filters/index.js +3 -3
  227. package/dist/filters/traverse.cjs +1 -2
  228. package/dist/filters/traverse.cjs.map +1 -1
  229. package/dist/filters/traverse.js +1 -1
  230. package/dist/filters/traverse.js.map +1 -1
  231. package/dist/filters/types.d.ts.map +1 -0
  232. package/dist/index.cjs +89 -83
  233. package/dist/index.d.ts +8 -15
  234. package/dist/index.js +8 -9
  235. package/dist/internal.cjs +1 -2
  236. package/dist/internal.cjs.map +1 -1
  237. package/dist/internal.js +1 -1
  238. package/dist/internal.js.map +1 -1
  239. package/dist/labels/derive_distinct_labels.cjs +41 -30
  240. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  241. package/dist/labels/derive_distinct_labels.d.ts +15 -15
  242. package/dist/labels/derive_distinct_labels.d.ts.map +1 -0
  243. package/dist/labels/derive_distinct_labels.js +40 -29
  244. package/dist/labels/derive_distinct_labels.js.map +1 -1
  245. package/dist/labels/index.cjs +1 -2
  246. package/dist/labels/index.d.ts +1 -2
  247. package/dist/labels/index.js +1 -2
  248. package/dist/package.cjs +7 -8
  249. package/dist/package.js +2 -2
  250. package/dist/pframe.cjs +2 -3
  251. package/dist/pframe.cjs.map +1 -1
  252. package/dist/pframe.d.ts.map +1 -0
  253. package/dist/pframe.js +1 -2
  254. package/dist/pframe.js.map +1 -1
  255. package/dist/pframe_utils/axes.cjs +2 -3
  256. package/dist/pframe_utils/axes.cjs.map +1 -1
  257. package/dist/pframe_utils/axes.d.ts +0 -1
  258. package/dist/pframe_utils/axes.d.ts.map +1 -0
  259. package/dist/pframe_utils/axes.js +1 -2
  260. package/dist/pframe_utils/axes.js.map +1 -1
  261. package/dist/pframe_utils/columns.cjs +5 -6
  262. package/dist/pframe_utils/columns.cjs.map +1 -1
  263. package/dist/pframe_utils/columns.d.ts +0 -1
  264. package/dist/pframe_utils/columns.d.ts.map +1 -0
  265. package/dist/pframe_utils/columns.js +1 -2
  266. package/dist/pframe_utils/columns.js.map +1 -1
  267. package/dist/pframe_utils/index.cjs +3 -4
  268. package/dist/pframe_utils/index.cjs.map +1 -1
  269. package/dist/pframe_utils/index.d.ts.map +1 -0
  270. package/dist/pframe_utils/index.js +2 -3
  271. package/dist/pframe_utils/index.js.map +1 -1
  272. package/dist/platforma.d.ts.map +1 -0
  273. package/dist/plugin_handle.cjs +1 -2
  274. package/dist/plugin_handle.cjs.map +1 -1
  275. package/dist/plugin_handle.d.ts.map +1 -0
  276. package/dist/plugin_handle.js +1 -1
  277. package/dist/plugin_model.cjs +3 -4
  278. package/dist/plugin_model.cjs.map +1 -1
  279. package/dist/plugin_model.d.ts +0 -1
  280. package/dist/plugin_model.d.ts.map +1 -0
  281. package/dist/plugin_model.js +1 -2
  282. package/dist/plugin_model.js.map +1 -1
  283. package/dist/raw_globals.cjs +3 -4
  284. package/dist/raw_globals.cjs.map +1 -1
  285. package/dist/raw_globals.d.ts.map +1 -0
  286. package/dist/raw_globals.js +1 -2
  287. package/dist/raw_globals.js.map +1 -1
  288. package/dist/ref_util.cjs +3 -4
  289. package/dist/ref_util.cjs.map +1 -1
  290. package/dist/ref_util.d.ts +0 -2
  291. package/dist/ref_util.d.ts.map +1 -0
  292. package/dist/ref_util.js +1 -2
  293. package/dist/ref_util.js.map +1 -1
  294. package/dist/render/accessor.cjs +4 -5
  295. package/dist/render/accessor.cjs.map +1 -1
  296. package/dist/render/accessor.d.ts.map +1 -0
  297. package/dist/render/accessor.js +1 -2
  298. package/dist/render/accessor.js.map +1 -1
  299. package/dist/render/api.cjs +20 -14
  300. package/dist/render/api.cjs.map +1 -1
  301. package/dist/render/api.d.ts +2 -3
  302. package/dist/render/api.d.ts.map +1 -0
  303. package/dist/render/api.js +11 -5
  304. package/dist/render/api.js.map +1 -1
  305. package/dist/render/future.cjs +2 -3
  306. package/dist/render/future.cjs.map +1 -1
  307. package/dist/render/future.d.ts.map +1 -0
  308. package/dist/render/future.js +1 -2
  309. package/dist/render/future.js.map +1 -1
  310. package/dist/render/index.cjs +8 -8
  311. package/dist/render/index.d.ts +1 -2
  312. package/dist/render/index.js +7 -7
  313. package/dist/render/internal.cjs +7 -9
  314. package/dist/render/internal.cjs.map +1 -1
  315. package/dist/render/internal.d.ts.map +1 -0
  316. package/dist/render/internal.js +1 -2
  317. package/dist/render/internal.js.map +1 -1
  318. package/dist/render/traversal_ops.d.ts.map +1 -0
  319. package/dist/render/util/axis_filtering.cjs +1 -2
  320. package/dist/render/util/axis_filtering.cjs.map +1 -1
  321. package/dist/render/util/axis_filtering.d.ts.map +1 -0
  322. package/dist/render/util/axis_filtering.js +1 -1
  323. package/dist/render/util/column_collection.cjs +8 -9
  324. package/dist/render/util/column_collection.cjs.map +1 -1
  325. package/dist/render/util/column_collection.d.ts +0 -1
  326. package/dist/render/util/column_collection.d.ts.map +1 -0
  327. package/dist/render/util/column_collection.js +4 -5
  328. package/dist/render/util/column_collection.js.map +1 -1
  329. package/dist/render/util/index.cjs +4 -4
  330. package/dist/render/util/index.js +4 -4
  331. package/dist/render/util/label.cjs +4 -5
  332. package/dist/render/util/label.cjs.map +1 -1
  333. package/dist/render/util/label.d.ts.map +1 -0
  334. package/dist/render/util/label.js +3 -4
  335. package/dist/render/util/label.js.map +1 -1
  336. package/dist/render/util/pcolumn_data.cjs +9 -10
  337. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  338. package/dist/render/util/pcolumn_data.d.ts +2 -2
  339. package/dist/render/util/pcolumn_data.d.ts.map +1 -0
  340. package/dist/render/util/pcolumn_data.js +7 -8
  341. package/dist/render/util/pcolumn_data.js.map +1 -1
  342. package/dist/render/util/pframe_upgraders.cjs +1 -2
  343. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  344. package/dist/render/util/pframe_upgraders.js +1 -1
  345. package/dist/render/util/split_selectors.d.ts.map +1 -0
  346. package/dist/services/block_services.cjs +2 -3
  347. package/dist/services/block_services.cjs.map +1 -1
  348. package/dist/services/block_services.d.ts +2 -2
  349. package/dist/services/block_services.d.ts.map +1 -0
  350. package/dist/services/block_services.js +1 -2
  351. package/dist/services/block_services.js.map +1 -1
  352. package/dist/services/index.cjs +2 -2
  353. package/dist/services/index.js +2 -2
  354. package/dist/services/service_bridge.cjs +1 -2
  355. package/dist/services/service_bridge.cjs.map +1 -1
  356. package/dist/services/service_bridge.d.ts.map +1 -0
  357. package/dist/services/service_bridge.js +1 -1
  358. package/dist/services/service_resolve.d.ts.map +1 -0
  359. package/dist/version.cjs +2 -4
  360. package/dist/version.cjs.map +1 -1
  361. package/dist/version.d.ts.map +1 -0
  362. package/dist/version.js +1 -2
  363. package/dist/version.js.map +1 -1
  364. package/package.json +13 -13
  365. package/src/columns/column_collection_builder.test.ts +40 -27
  366. package/src/columns/column_collection_builder.ts +176 -131
  367. package/src/columns/column_selector.test.ts +17 -399
  368. package/src/columns/column_selector.ts +14 -127
  369. package/src/columns/column_snapshot.ts +5 -5
  370. package/src/columns/column_snapshot_provider.ts +11 -10
  371. package/src/columns/ctx_column_sources.ts +2 -2
  372. package/src/columns/expand_by_partition.test.ts +4 -4
  373. package/src/columns/expand_by_partition.ts +4 -3
  374. package/src/columns/index.ts +1 -0
  375. package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +42 -0
  376. package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +89 -0
  377. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +39 -11
  378. package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +502 -313
  379. package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +122 -0
  380. package/src/components/PlDataTable/createPlDataTable/index.ts +4 -2
  381. package/src/components/PlDataTable/createPlDataTable/utils.test.ts +257 -0
  382. package/src/components/PlDataTable/createPlDataTable/utils.ts +160 -0
  383. package/src/components/PlDataTable/index.ts +13 -2
  384. package/src/components/PlDataTable/labels.ts +29 -18
  385. package/src/components/PlDataTable/state-migration.ts +3 -1
  386. package/src/components/PlDataTable/typesV5.ts +4 -4
  387. package/src/labels/derive_distinct_labels.test.ts +143 -45
  388. package/src/labels/derive_distinct_labels.ts +102 -49
  389. package/src/labels/index.ts +0 -1
  390. package/src/render/api.ts +15 -5
  391. package/src/render/util/column_collection.ts +4 -3
  392. package/src/render/util/label.ts +2 -2
  393. package/src/render/util/pcolumn_data.ts +5 -3
  394. package/dist/labels/write_labels_to_specs.cjs +0 -15
  395. package/dist/labels/write_labels_to_specs.cjs.map +0 -1
  396. package/dist/labels/write_labels_to_specs.d.ts +0 -9
  397. package/dist/labels/write_labels_to_specs.js +0 -14
  398. package/dist/labels/write_labels_to_specs.js.map +0 -1
  399. package/src/labels/write_labels_to_specs.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterUiToExpressionImpl.d.ts","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"mappings":";;;;iBAcgB,+BAAA,CAAgC,KAAA,EAAO,UAAA,GAAa,cAAA;AAAA,iBAoFpD,4BAAA,CAA6B,KAAA,EAAO,UAAA,GAAa,UAAA"}
@@ -1,7 +1,6 @@
1
1
  import { traverseFilterSpec } from "../traverse.js";
2
2
  import { assertNever } from "@milaboratories/pl-model-common";
3
3
  import { and, col, lit, or, rank } from "@milaboratories/ptabler-expression-js";
4
-
5
4
  //#region src/filters/converters/filterUiToExpressionImpl.ts
6
5
  function convertFilterUiToExpressionImpl(value) {
7
6
  return traverseFilterSpec(value, {
@@ -58,7 +57,7 @@ function leafToExpressionImpl(value) {
58
57
  function convertFilterUiToExpressions(value) {
59
58
  return convertFilterUiToExpressionImpl(value).toJSON();
60
59
  }
61
-
62
60
  //#endregion
63
61
  export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions };
62
+
64
63
  //# sourceMappingURL=filterUiToExpressionImpl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const require_filterToQuery = require('./filterToQuery.cjs');
2
- const require_filterUiToExpressionImpl = require('./filterUiToExpressionImpl.cjs');
1
+ require("./filterToQuery.cjs");
2
+ require("./filterUiToExpressionImpl.cjs");
@@ -1,2 +1,2 @@
1
- import { filterSpecToSpecQueryExpr } from "./filterToQuery.js";
2
- import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filterUiToExpressionImpl.js";
1
+ import "./filterToQuery.js";
2
+ import "./filterUiToExpressionImpl.js";
@@ -1,7 +1,6 @@
1
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
- const require_traverse = require('./traverse.cjs');
1
+ require("../_virtual/_rolldown/runtime.cjs");
2
+ const require_traverse = require("./traverse.cjs");
3
3
  let es_toolkit_compat = require("es-toolkit/compat");
4
-
5
4
  //#region src/filters/distill.ts
6
5
  const KNOWN_LEAF_KEYS = new Set([
7
6
  "n",
@@ -64,7 +63,7 @@ function distillFilterSpec(filter) {
64
63
  }
65
64
  });
66
65
  }
67
-
68
66
  //#endregion
69
67
  exports.distillFilterSpec = distillFilterSpec;
68
+
70
69
  //# sourceMappingURL=distill.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,uCAAe,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAOA,oCAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
1
+ {"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,SAAA,GAAA,kBAAA,SAAe,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAOA,iBAAAA,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distill.d.ts","names":[],"sources":["../../src/filters/distill.ts"],"mappings":";;;;AA2DA;;;iBAAgB,iBAAA,YACH,UAAA,CAAW,cAAA,yCACZ,EAAA,SAAW,cAAA,CAAe,cAAA,+BAChC,cAAA,CAAe,mBAAA,CAAoB,EAAA,KACnC,UAAA,CAAW,mBAAA,CAAoB,EAAA,IAAA,CACnC,MAAA,qBAA2B,EAAA,UAAY,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import { traverseFilterSpec } from "./traverse.js";
2
2
  import { isEmpty } from "es-toolkit/compat";
3
-
4
3
  //#region src/filters/distill.ts
5
4
  const KNOWN_LEAF_KEYS = new Set([
6
5
  "n",
@@ -63,7 +62,7 @@ function distillFilterSpec(filter) {
63
62
  }
64
63
  });
65
64
  }
66
-
67
65
  //#endregion
68
66
  export { distillFilterSpec };
67
+
69
68
  //# sourceMappingURL=distill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,QAAO,QAAQ,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAO,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
1
+ {"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Returns true if the leaf is filled — type is defined and no required fields are undefined. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (node.type == null) return false;\n return !Object.values(node).some((value) => {\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return false;\n case \"string\":\n return value.trim() === \"\";\n default: // undefined, null, empty objects/arrays\n return isEmpty(value);\n }\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n"],"mappings":";;;AA2BA,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,SAAS,aAAgB,MAAkC;AACzD,KAAI,KAAK,QAAQ,KAAM,QAAO;AAC9B,QAAO,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU;AAC1C,UAAQ,OAAO,OAAf;GACE,KAAK;GACL,KAAK,UACH,QAAO;GACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;GAC1B,QACE,QAAO,QAAQ,MAAM;;GAEzB;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;;;;AAOT,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAO,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC"}
@@ -1,4 +1,4 @@
1
- const require_filterToQuery = require('./converters/filterToQuery.cjs');
2
- const require_filterUiToExpressionImpl = require('./converters/filterUiToExpressionImpl.cjs');
3
- require('./converters/index.cjs');
4
- const require_distill = require('./distill.cjs');
1
+ require("./converters/filterToQuery.cjs");
2
+ require("./converters/filterUiToExpressionImpl.cjs");
3
+ require("./converters/index.cjs");
4
+ require("./distill.cjs");
@@ -1,5 +1,4 @@
1
1
  import { 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
- import "./converters/index.js";
5
4
  import { distillFilterSpec } from "./distill.js";
@@ -1,4 +1,4 @@
1
- import { filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
2
- import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./converters/filterUiToExpressionImpl.js";
1
+ import "./converters/filterToQuery.js";
2
+ import "./converters/filterUiToExpressionImpl.js";
3
3
  import "./converters/index.js";
4
- import { distillFilterSpec } from "./distill.js";
4
+ import "./distill.js";
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/filters/traverse.ts
3
2
  /**
4
3
  * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.
@@ -37,8 +36,8 @@ function collectFilterSpecColumns(filter) {
37
36
  not: (result) => result
38
37
  });
39
38
  }
40
-
41
39
  //#endregion
42
40
  exports.collectFilterSpecColumns = collectFilterSpecColumns;
43
41
  exports.traverseFilterSpec = traverseFilterSpec;
42
+
44
43
  //# sourceMappingURL=traverse.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,OAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,OAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,OAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,OAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
1
+ {"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
@@ -36,7 +36,7 @@ function collectFilterSpecColumns(filter) {
36
36
  not: (result) => result
37
37
  });
38
38
  }
39
-
40
39
  //#endregion
41
40
  export { collectFilterSpecColumns, traverseFilterSpec };
41
+
42
42
  //# sourceMappingURL=traverse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,OAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,OAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,OAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,OAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
1
+ {"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/filters/types.ts"],"mappings":";;;KAEY,qBAAA,GAAwB,IAAA,CAAK,WAAA;AAAA,KAE7B,+BAAA;EACV,EAAA,EAAI,mBAAA;EACJ,KAAA;EACA,GAAA,EAAK,qBAAA;AAAA"}
package/dist/index.cjs CHANGED
@@ -1,63 +1,64 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_block_state_util = require('./block_state_util.cjs');
3
- const require_plugin_handle = require('./plugin_handle.cjs');
4
- const require_block_migrations = require('./block_migrations.cjs');
5
- const require_block_storage = require('./block_storage.cjs');
6
- const require_block_storage_facade = require('./block_storage_facade.cjs');
7
- const require_actions = require('./config/actions.cjs');
8
- require('./config/index.cjs');
9
- const require_future = require('./render/future.cjs');
10
- const require_accessor = require('./render/accessor.cjs');
11
- const require_internal = require('./render/internal.cjs');
12
- const require_axis_filtering = require('./render/util/axis_filtering.cjs');
13
- const require_derive_distinct_labels = require('./labels/derive_distinct_labels.cjs');
14
- const require_label = require('./render/util/label.cjs');
15
- const require_pcolumn_data = require('./render/util/pcolumn_data.cjs');
16
- const require_column_collection = require('./render/util/column_collection.cjs');
17
- const require_api = require('./render/api.cjs');
18
- require('./render/index.cjs');
19
- const require_version = require('./version.cjs');
20
- const require_types = require('./bconfig/types.cjs');
21
- const require_normalization = require('./bconfig/normalization.cjs');
22
- require('./bconfig/index.cjs');
23
- const require_block_model_legacy = require('./block_model_legacy.cjs');
24
- const require_block_services = require('./services/block_services.cjs');
25
- const require_plugin_model = require('./plugin_model.cjs');
26
- const require_block_model = require('./block_model.cjs');
27
- const require_axes = require('./pframe_utils/axes.cjs');
28
- const require_columns = require('./pframe_utils/columns.cjs');
29
- const require_PFrameForGraphs = require('./components/PFrameForGraphs.cjs');
30
- const require_filters_ui = require('./components/PlAnnotations/filters_ui.cjs');
31
- const require_filterToQuery = require('./filters/converters/filterToQuery.cjs');
32
- const require_filterUiToExpressionImpl = require('./filters/converters/filterUiToExpressionImpl.cjs');
33
- const require_distill = require('./filters/distill.cjs');
34
- require('./filters/index.cjs');
35
- const require_state_migration = require('./components/PlDataTable/state-migration.cjs');
36
- const require_createPlDataTableSheet = require('./components/PlDataTable/createPlDataTableSheet.cjs');
37
- const require_column_snapshot = require('./columns/column_snapshot.cjs');
38
- const require_column_snapshot_provider = require('./columns/column_snapshot_provider.cjs');
39
- const require_column_selector = require('./columns/column_selector.cjs');
40
- const require_column_collection_builder = require('./columns/column_collection_builder.cjs');
41
- const require_ctx_column_sources = require('./columns/ctx_column_sources.cjs');
42
- require('./columns/index.cjs');
43
- const require_createPlDataTableV3 = require('./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs');
44
- const require_createPlDataTableV2 = require('./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs');
45
- const require_index$5 = require('./components/PlDataTable/createPlDataTable/index.cjs');
46
- const require_PlMultiSequenceAlignment = require('./components/PlMultiSequenceAlignment.cjs');
47
- const require_PlSelectionModel = require('./components/PlSelectionModel.cjs');
48
- require('./components/index.cjs');
49
- const require_pframe = require('./pframe.cjs');
50
- const require_write_labels_to_specs = require('./labels/write_labels_to_specs.cjs');
51
- require('./labels/index.cjs');
52
- const require_ref_util = require('./ref_util.cjs');
53
- const require_raw_globals = require('./raw_globals.cjs');
54
- const require_converter = require('./annotations/converter.cjs');
55
- require('./annotations/index.cjs');
56
- const require_index$9 = require('./pframe_utils/index.cjs');
57
- const require_service_bridge = require('./services/service_bridge.cjs');
58
- require('./services/index.cjs');
59
- const require_env_value = require('./env_value.cjs');
60
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_block_state_util = require("./block_state_util.cjs");
3
+ const require_plugin_handle = require("./plugin_handle.cjs");
4
+ const require_block_migrations = require("./block_migrations.cjs");
5
+ const require_block_storage = require("./block_storage.cjs");
6
+ const require_block_storage_facade = require("./block_storage_facade.cjs");
7
+ const require_actions = require("./config/actions.cjs");
8
+ require("./config/index.cjs");
9
+ const require_future = require("./render/future.cjs");
10
+ const require_accessor = require("./render/accessor.cjs");
11
+ const require_internal = require("./render/internal.cjs");
12
+ const require_axis_filtering = require("./render/util/axis_filtering.cjs");
13
+ const require_derive_distinct_labels = require("./labels/derive_distinct_labels.cjs");
14
+ const require_label = require("./render/util/label.cjs");
15
+ const require_pcolumn_data = require("./render/util/pcolumn_data.cjs");
16
+ const require_column_collection = require("./render/util/column_collection.cjs");
17
+ const require_api = require("./render/api.cjs");
18
+ require("./render/index.cjs");
19
+ const require_version = require("./version.cjs");
20
+ const require_types = require("./bconfig/types.cjs");
21
+ const require_normalization = require("./bconfig/normalization.cjs");
22
+ require("./bconfig/index.cjs");
23
+ const require_block_model_legacy = require("./block_model_legacy.cjs");
24
+ const require_block_services = require("./services/block_services.cjs");
25
+ const require_plugin_model = require("./plugin_model.cjs");
26
+ const require_block_model = require("./block_model.cjs");
27
+ const require_axes = require("./pframe_utils/axes.cjs");
28
+ const require_columns = require("./pframe_utils/columns.cjs");
29
+ const require_PFrameForGraphs = require("./components/PFrameForGraphs.cjs");
30
+ const require_filters_ui = require("./components/PlAnnotations/filters_ui.cjs");
31
+ const require_filterToQuery = require("./filters/converters/filterToQuery.cjs");
32
+ const require_filterUiToExpressionImpl = require("./filters/converters/filterUiToExpressionImpl.cjs");
33
+ const require_distill = require("./filters/distill.cjs");
34
+ require("./filters/index.cjs");
35
+ const require_state_migration = require("./components/PlDataTable/state-migration.cjs");
36
+ const require_createPlDataTableSheet = require("./components/PlDataTable/createPlDataTableSheet.cjs");
37
+ const require_column_snapshot = require("./columns/column_snapshot.cjs");
38
+ const require_column_snapshot_provider = require("./columns/column_snapshot_provider.cjs");
39
+ const require_column_selector = require("./columns/column_selector.cjs");
40
+ const require_column_collection_builder = require("./columns/column_collection_builder.cjs");
41
+ const require_ctx_column_sources = require("./columns/ctx_column_sources.cjs");
42
+ const require_expand_by_partition = require("./columns/expand_by_partition.cjs");
43
+ require("./columns/index.cjs");
44
+ const require_utils = require("./components/PlDataTable/createPlDataTable/utils.cjs");
45
+ const require_createPlDataTableV2 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
46
+ const require_discoverColumns = require("./components/PlDataTable/createPlDataTable/discoverColumns.cjs");
47
+ const require_createPlDataTableV3 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
48
+ const require_index$5 = require("./components/PlDataTable/createPlDataTable/index.cjs");
49
+ const require_PlMultiSequenceAlignment = require("./components/PlMultiSequenceAlignment.cjs");
50
+ const require_PlSelectionModel = require("./components/PlSelectionModel.cjs");
51
+ require("./components/index.cjs");
52
+ const require_pframe = require("./pframe.cjs");
53
+ require("./labels/index.cjs");
54
+ const require_ref_util = require("./ref_util.cjs");
55
+ const require_raw_globals = require("./raw_globals.cjs");
56
+ const require_converter = require("./annotations/converter.cjs");
57
+ require("./annotations/index.cjs");
58
+ const require_index$9 = require("./pframe_utils/index.cjs");
59
+ const require_service_bridge = require("./services/service_bridge.cjs");
60
+ require("./services/index.cjs");
61
+ const require_env_value = require("./env_value.cjs");
61
62
  exports.Args = require_actions.Args;
62
63
  exports.ArrayColumnProvider = require_column_snapshot_provider.ArrayColumnProvider;
63
64
  exports.BLOCK_SERVICE_FLAGS = require_block_services.BLOCK_SERVICE_FLAGS;
@@ -73,11 +74,11 @@ exports.DataModel = require_block_migrations.DataModel;
73
74
  exports.DataModelBuilder = require_block_migrations.DataModelBuilder;
74
75
  exports.FutureRef = require_future.FutureRef;
75
76
  exports.It = require_actions.It;
76
- Object.defineProperty(exports, 'JsRenderInternal', {
77
- enumerable: true,
78
- get: function () {
79
- return require_internal.internal_exports;
80
- }
77
+ Object.defineProperty(exports, "JsRenderInternal", {
78
+ enumerable: true,
79
+ get: function() {
80
+ return require_internal.internal_exports;
81
+ }
81
82
  });
82
83
  exports.MainOutputs = require_actions.MainOutputs;
83
84
  exports.OutputColumnProvider = require_column_snapshot_provider.OutputColumnProvider;
@@ -111,14 +112,16 @@ exports.and = require_actions.and;
111
112
  exports.blockServiceNames = require_block_services.blockServiceNames;
112
113
  exports.buildServices = require_service_bridge.buildServices;
113
114
  exports.collectCtxColumnSnapshotProviders = require_ctx_column_sources.collectCtxColumnSnapshotProviders;
114
- exports.columnSelectorsToPredicate = require_column_selector.columnSelectorsToPredicate;
115
115
  exports.compileAnnotationScript = require_filters_ui.compileAnnotationScript;
116
116
  exports.compileFilter = require_filters_ui.compileFilter;
117
117
  exports.compileFilters = require_filters_ui.compileFilters;
118
+ exports.convertColumnSelectorToMultiColumnSelector = require_column_selector.convertColumnSelectorToMultiColumnSelector;
118
119
  exports.convertFilterSpecsToExpressionSpecs = require_converter.convertFilterSpecsToExpressionSpecs;
119
120
  exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
120
121
  exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
121
122
  exports.convertOrParsePColumnData = require_pcolumn_data.convertOrParsePColumnData;
123
+ exports.convertRelaxedAxisSelectorToMultiAxisSelector = require_column_selector.convertRelaxedAxisSelectorToMultiAxisSelector;
124
+ exports.convertRelaxedColumnSelectorToMultiColumnSelector = require_column_selector.convertRelaxedColumnSelectorToMultiColumnSelector;
122
125
  exports.createBlockStorage = require_block_storage.createBlockStorage;
123
126
  exports.createColumnSnapshot = require_column_snapshot.createColumnSnapshot;
124
127
  exports.createDefaultPTableParams = require_state_migration.createDefaultPTableParams;
@@ -135,9 +138,11 @@ exports.createRowSelectionColumn = require_PlMultiSequenceAlignment.createRowSel
135
138
  exports.deriveDataFromStorage = require_block_storage.deriveDataFromStorage;
136
139
  exports.deriveDistinctLabels = require_derive_distinct_labels.deriveDistinctLabels;
137
140
  exports.deriveLabels = require_label.deriveLabels;
141
+ exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumnSnaphots;
138
142
  exports.distillFilterSpec = require_distill.distillFilterSpec;
139
143
  exports.downgradeCfgOrLambda = require_normalization.downgradeCfgOrLambda;
140
144
  exports.enrichCompatible = require_axes.enrichCompatible;
145
+ exports.expandByPartition = require_expand_by_partition.expandByPartition;
141
146
  exports.extractArchiveAndGetURL = require_actions.extractArchiveAndGetURL;
142
147
  exports.extractConfig = require_normalization.extractConfig;
143
148
  exports.filterDataInfoEntries = require_axis_filtering.filterDataInfoEntries;
@@ -156,6 +161,7 @@ exports.getColumnSpecById = require_index$9.getColumnSpecById;
156
161
  exports.getColumnUniqueValues = require_index$9.getColumnUniqueValues;
157
162
  exports.getColumnsFull = require_index$9.getColumnsFull;
158
163
  exports.getDownloadedBlobContent = require_actions.getDownloadedBlobContent;
164
+ exports.getEffectiveVisibility = require_utils.getEffectiveVisibility;
159
165
  exports.getEnvironmentValue = require_env_value.getEnvironmentValue;
160
166
  exports.getFromCfg = require_actions.getFromCfg;
161
167
  exports.getImmediate = require_actions.getImmediate;
@@ -164,6 +170,7 @@ exports.getJsonField = require_actions.getJsonField;
164
170
  exports.getLastLogs = require_actions.getLastLogs;
165
171
  exports.getLogHandle = require_actions.getLogHandle;
166
172
  exports.getOnDemandBlobContent = require_actions.getOnDemandBlobContent;
173
+ exports.getOrderPriority = require_utils.getOrderPriority;
167
174
  exports.getPartitionKeysList = require_pcolumn_data.getPartitionKeysList;
168
175
  exports.getPlatformaApiVersion = require_raw_globals.getPlatformaApiVersion;
169
176
  exports.getPluginData = require_block_storage.getPluginData;
@@ -180,8 +187,8 @@ exports.getUniquePartitionKeys = require_pcolumn_data.getUniquePartitionKeys;
180
187
  exports.getUniqueSourceValuesWithLabels = require_index$9.getUniqueSourceValuesWithLabels;
181
188
  exports.ifDef = require_accessor.ifDef;
182
189
  exports.isBlockStorage = require_block_storage.isBlockStorage;
183
- exports.isColumnHidden = require_createPlDataTableV3.isColumnHidden;
184
- exports.isColumnOptional = require_createPlDataTableV3.isColumnOptional;
190
+ exports.isColumnHidden = require_utils.isColumnHidden;
191
+ exports.isColumnOptional = require_utils.isColumnOptional;
185
192
  exports.isColumnSnapshotProvider = require_column_snapshot_provider.isColumnSnapshotProvider;
186
193
  exports.isConfigLambda = require_types.isConfigLambda;
187
194
  exports.isEmpty = require_actions.isEmpty;
@@ -195,11 +202,8 @@ exports.makeObject = require_actions.makeObject;
195
202
  exports.mapArrayValues = require_actions.mapArrayValues;
196
203
  exports.mapRecordValues = require_actions.mapRecordValues;
197
204
  exports.mapResourceFields = require_actions.mapResourceFields;
198
- exports.matchColumn = require_column_selector.matchColumn;
199
- exports.matchColumnSelectors = require_column_selector.matchColumnSelectors;
200
205
  exports.migrateBlockStorage = require_block_storage.migrateBlockStorage;
201
206
  exports.normalizeBlockStorage = require_block_storage.normalizeBlockStorage;
202
- exports.normalizeSelectors = require_column_selector.normalizeSelectors;
203
207
  exports.not = require_actions.not;
204
208
  exports.or = require_actions.or;
205
209
  exports.parsePColumnData = require_pcolumn_data.parsePColumnData;
@@ -213,19 +217,21 @@ exports.unreachable = require_filters_ui.unreachable;
213
217
  exports.updateStorageData = require_block_storage.updateStorageData;
214
218
  exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableStateV2;
215
219
  exports.wrapOutputs = require_block_state_util.wrapOutputs;
216
- exports.writeLabelsToSpecs = require_write_labels_to_specs.writeLabelsToSpecs;
217
220
  var _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
218
- Object.keys(_milaboratories_pl_model_common).forEach(function (k) {
219
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
220
- enumerable: true,
221
- get: function () { return _milaboratories_pl_model_common[k]; }
222
- });
221
+ Object.keys(_milaboratories_pl_model_common).forEach(function(k) {
222
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
223
+ enumerable: true,
224
+ get: function() {
225
+ return _milaboratories_pl_model_common[k];
226
+ }
227
+ });
223
228
  });
224
-
225
229
  var _milaboratories_pl_error_like = require("@milaboratories/pl-error-like");
226
- Object.keys(_milaboratories_pl_error_like).forEach(function (k) {
227
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
228
- enumerable: true,
229
- get: function () { return _milaboratories_pl_error_like[k]; }
230
- });
230
+ Object.keys(_milaboratories_pl_error_like).forEach(function(k) {
231
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
232
+ enumerable: true,
233
+ get: function() {
234
+ return _milaboratories_pl_error_like[k];
235
+ }
236
+ });
231
237
  });