@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
@@ -37,6 +37,7 @@ declare class BlockModelV3<Args, OutputsCfg extends Record<string, ConfigRenderL
37
37
  requiresPFrameSpec: true;
38
38
  requiresPFrame: true;
39
39
  requiresDialog: true;
40
+ requiresColumnsCollection: true;
40
41
  supportsLazyState: true;
41
42
  supportsPframeQueryRanking: true;
42
43
  requiresUIAPIVersion: number;
@@ -49,6 +50,7 @@ declare class BlockModelV3<Args, OutputsCfg extends Record<string, ConfigRenderL
49
50
  requiresPFrameSpec: true;
50
51
  requiresPFrame: true;
51
52
  requiresDialog: true;
53
+ requiresColumnsCollection: true;
52
54
  supportsLazyState: true;
53
55
  supportsPframeQueryRanking: true;
54
56
  requiresUIAPIVersion: number;
@@ -1 +1 @@
1
- {"version":3,"file":"block_model.d.ts","names":[],"sources":["../src/block_model.ts"],"mappings":"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"}
1
+ {"version":3,"file":"block_model.d.ts","names":[],"sources":["../src/block_model.ts"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ const require_index = require("./column_recipes/index.cjs");
2
+ const require_column_lazy = require("./column_lazy.cjs");
3
+ //#region src/columns/column.ts
4
+ /**
5
+ * Unified entry point — routes between the two top-level dispatchers:
6
+ * - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}
7
+ * - object source (`PlRef` / `LeafEntry` / `PColumn` / `ColumnLazy`) → {@link ColumnLazy}
8
+ *
9
+ * `ColumnLazy` is itself a `ColumnRecipe<PObjectId>`, so the return type is
10
+ * the common `ColumnRecipe`.
11
+ */
12
+ function Column(source, opts) {
13
+ if (typeof source === "string") return require_index.ColumnRecipe(source, opts);
14
+ return require_column_lazy.ColumnLazy(source, opts);
15
+ }
16
+ /**
17
+ * Type-guard for the `Column` type — currently aliased to `ColumnRecipe`, so
18
+ * this is equivalent to {@link isColumnRecipe}. Kept as a separate export to
19
+ * mirror the `Column` / `ColumnRecipe` / `ColumnLazy` factory triple.
20
+ */
21
+ function isColumn(value) {
22
+ return require_index.isColumnRecipe(value);
23
+ }
24
+ //#endregion
25
+ exports.Column = Column;
26
+ exports.isColumn = isColumn;
27
+
28
+ //# sourceMappingURL=column.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.cjs","names":["ColumnRecipe","ColumnLazy","isColumnRecipe"],"sources":["../../src/columns/column.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n LeafEntry,\n PColumn,\n PlRef,\n PObjectId,\n} from \"@milaboratories/pl-model-common\";\nimport type { GlobalCfgRenderCtx } from \"../render/internal\";\nimport type { TreeNodeAccessor } from \"../render\";\nimport { ColumnLazy, ColumnLazyImpl, type ColumnLazyData } from \"./column_lazy\";\nimport { ColumnRecipe, ColumnRecipeId, isColumnRecipe } from \"./column_recipes\";\n\nexport type ColumnSource =\n | PObjectId\n | ColumnUniversalId\n | PlRef\n | LeafEntry<TreeNodeAccessor>\n | PColumn<ColumnLazyData>\n | ColumnLazyImpl;\n\n/**\n * Unified entry point — routes between the two top-level dispatchers:\n * - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}\n * - object source (`PlRef` / `LeafEntry` / `PColumn` / `ColumnLazy`) → {@link ColumnLazy}\n *\n * `ColumnLazy` is itself a `ColumnRecipe<PObjectId>`, so the return type is\n * the common `ColumnRecipe`.\n */\nexport function Column(\n source: ColumnSource,\n opts?: { ctx?: GlobalCfgRenderCtx },\n): undefined | ColumnRecipe {\n if (typeof source === \"string\") return ColumnRecipe(source, opts);\n return ColumnLazy(source, opts);\n}\n\nexport type Column<ID extends ColumnRecipeId = ColumnRecipeId> = ColumnRecipe<ID>;\n\n/**\n * Type-guard for the `Column` type — currently aliased to `ColumnRecipe`, so\n * this is equivalent to {@link isColumnRecipe}. Kept as a separate export to\n * mirror the `Column` / `ColumnRecipe` / `ColumnLazy` factory triple.\n */\nexport function isColumn(value: unknown): value is Column {\n return isColumnRecipe(value);\n}\n"],"mappings":";;;;;;;;;;;AA4BA,SAAgB,OACd,QACA,MAC0B;CAC1B,IAAI,OAAO,WAAW,UAAU,OAAOA,cAAAA,aAAa,QAAQ,IAAI;CAChE,OAAOC,oBAAAA,WAAW,QAAQ,IAAI;AAChC;;;;;;AASA,SAAgB,SAAS,OAAiC;CACxD,OAAOC,cAAAA,eAAe,KAAK;AAC7B"}
@@ -0,0 +1,30 @@
1
+ import { GlobalCfgRenderCtx } from "../render/internal.js";
2
+ import { TreeNodeAccessor } from "../render/accessor.js";
3
+ import { ColumnRecipeId } from "./column_recipes/types.js";
4
+ import { ColumnLazyData, ColumnLazyImpl } from "./column_lazy.js";
5
+ import { ColumnRecipe } from "./column_recipes/index.js";
6
+ import { ColumnUniversalId, LeafEntry, PColumn, PObjectId, PlRef } from "@milaboratories/pl-model-common";
7
+
8
+ //#region src/columns/column.d.ts
9
+ type ColumnSource = PObjectId | ColumnUniversalId | PlRef | LeafEntry<TreeNodeAccessor> | PColumn<ColumnLazyData> | ColumnLazyImpl;
10
+ /**
11
+ * Unified entry point — routes between the two top-level dispatchers:
12
+ * - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}
13
+ * - object source (`PlRef` / `LeafEntry` / `PColumn` / `ColumnLazy`) → {@link ColumnLazy}
14
+ *
15
+ * `ColumnLazy` is itself a `ColumnRecipe<PObjectId>`, so the return type is
16
+ * the common `ColumnRecipe`.
17
+ */
18
+ declare function Column(source: ColumnSource, opts?: {
19
+ ctx?: GlobalCfgRenderCtx;
20
+ }): undefined | ColumnRecipe;
21
+ type Column<ID extends ColumnRecipeId = ColumnRecipeId> = ColumnRecipe<ID>;
22
+ /**
23
+ * Type-guard for the `Column` type — currently aliased to `ColumnRecipe`, so
24
+ * this is equivalent to {@link isColumnRecipe}. Kept as a separate export to
25
+ * mirror the `Column` / `ColumnRecipe` / `ColumnLazy` factory triple.
26
+ */
27
+ declare function isColumn(value: unknown): value is Column;
28
+ //#endregion
29
+ export { Column, ColumnSource, isColumn };
30
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","names":[],"sources":["../../src/columns/column.ts"],"mappings":";;;;;;;;KAYY,YAAA,GACR,SAAA,GACA,iBAAA,GACA,KAAA,GACA,SAAA,CAAU,gBAAA,IACV,OAAA,CAAQ,cAAA,IACR,cAAA;;;;AANJ;;;;;iBAgBgB,MAAA,CACd,MAAA,EAAQ,YAAA,EACR,IAAA;EAAS,GAAA,GAAM,kBAAA;AAAA,gBACF,YAAA;AAAA,KAKH,MAAA,YAAkB,cAAA,GAAiB,cAAA,IAAkB,YAAA,CAAa,EAAA;;;;;;iBAO9D,QAAA,CAAS,KAAA,YAAiB,KAAA,IAAS,MAAM"}
@@ -0,0 +1,27 @@
1
+ import { ColumnRecipe, isColumnRecipe } from "./column_recipes/index.js";
2
+ import { ColumnLazy } from "./column_lazy.js";
3
+ //#region src/columns/column.ts
4
+ /**
5
+ * Unified entry point — routes between the two top-level dispatchers:
6
+ * - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}
7
+ * - object source (`PlRef` / `LeafEntry` / `PColumn` / `ColumnLazy`) → {@link ColumnLazy}
8
+ *
9
+ * `ColumnLazy` is itself a `ColumnRecipe<PObjectId>`, so the return type is
10
+ * the common `ColumnRecipe`.
11
+ */
12
+ function Column(source, opts) {
13
+ if (typeof source === "string") return ColumnRecipe(source, opts);
14
+ return ColumnLazy(source, opts);
15
+ }
16
+ /**
17
+ * Type-guard for the `Column` type — currently aliased to `ColumnRecipe`, so
18
+ * this is equivalent to {@link isColumnRecipe}. Kept as a separate export to
19
+ * mirror the `Column` / `ColumnRecipe` / `ColumnLazy` factory triple.
20
+ */
21
+ function isColumn(value) {
22
+ return isColumnRecipe(value);
23
+ }
24
+ //#endregion
25
+ export { Column, isColumn };
26
+
27
+ //# sourceMappingURL=column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.js","names":[],"sources":["../../src/columns/column.ts"],"sourcesContent":["import type {\n ColumnUniversalId,\n LeafEntry,\n PColumn,\n PlRef,\n PObjectId,\n} from \"@milaboratories/pl-model-common\";\nimport type { GlobalCfgRenderCtx } from \"../render/internal\";\nimport type { TreeNodeAccessor } from \"../render\";\nimport { ColumnLazy, ColumnLazyImpl, type ColumnLazyData } from \"./column_lazy\";\nimport { ColumnRecipe, ColumnRecipeId, isColumnRecipe } from \"./column_recipes\";\n\nexport type ColumnSource =\n | PObjectId\n | ColumnUniversalId\n | PlRef\n | LeafEntry<TreeNodeAccessor>\n | PColumn<ColumnLazyData>\n | ColumnLazyImpl;\n\n/**\n * Unified entry point — routes between the two top-level dispatchers:\n * - string id (`PObjectId` / `ColumnUniversalId`) → {@link ColumnRecipe}\n * - object source (`PlRef` / `LeafEntry` / `PColumn` / `ColumnLazy`) → {@link ColumnLazy}\n *\n * `ColumnLazy` is itself a `ColumnRecipe<PObjectId>`, so the return type is\n * the common `ColumnRecipe`.\n */\nexport function Column(\n source: ColumnSource,\n opts?: { ctx?: GlobalCfgRenderCtx },\n): undefined | ColumnRecipe {\n if (typeof source === \"string\") return ColumnRecipe(source, opts);\n return ColumnLazy(source, opts);\n}\n\nexport type Column<ID extends ColumnRecipeId = ColumnRecipeId> = ColumnRecipe<ID>;\n\n/**\n * Type-guard for the `Column` type — currently aliased to `ColumnRecipe`, so\n * this is equivalent to {@link isColumnRecipe}. Kept as a separate export to\n * mirror the `Column` / `ColumnRecipe` / `ColumnLazy` factory triple.\n */\nexport function isColumn(value: unknown): value is Column {\n return isColumnRecipe(value);\n}\n"],"mappings":";;;;;;;;;;;AA4BA,SAAgB,OACd,QACA,MAC0B;CAC1B,IAAI,OAAO,WAAW,UAAU,OAAO,aAAa,QAAQ,IAAI;CAChE,OAAO,WAAW,QAAQ,IAAI;AAChC;;;;;;AASA,SAAgB,SAAS,OAAiC;CACxD,OAAO,eAAe,KAAK;AAC7B"}
@@ -0,0 +1,248 @@
1
+ const require_column_overrided_recipe = require("./column_recipes/column_overrided_recipe.cjs");
2
+ const require_index = require("./column_providers/index.cjs");
3
+ let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
4
+ let es_toolkit = require("es-toolkit");
5
+ let lru_cache = require("lru-cache");
6
+ //#region src/columns/column_lazy.ts
7
+ /**
8
+ * Thrown by leaf-recipe factories when the requested column is provably
9
+ * absent in the active render ctx — i.e. every relevant accessor reports
10
+ * `inputsLocked` and the column did not appear. Distinct from the
11
+ * `undefined` return that the factories still use for the "resolving" case
12
+ * (the column may still appear later).
13
+ *
14
+ * Catch at the boundary (resolver / filter+sort wiring / data-table assembly)
15
+ * when partial absence should be surfaced to the user rather than silently
16
+ * producing an empty result.
17
+ */
18
+ var ColumnAbsentError = class extends Error {
19
+ id;
20
+ constructor(id) {
21
+ super(`Column is absent in the active render ctx and will not appear: ${id}`);
22
+ this.id = id;
23
+ this.name = "ColumnAbsentError";
24
+ }
25
+ };
26
+ /**
27
+ * ColumnLazy is the leaf-recipe building block: a {@link ColumnRecipe} whose
28
+ * `id` is a bare {@link PObjectId} and whose readers are bound to a single
29
+ * tree-accessor leaf. Layered encodings (Overridden / Discovered / Filtered)
30
+ * are reified through their dedicated recipe classes and reference leaf
31
+ * columns by id.
32
+ */
33
+ var ColumnLazyImpl = class ColumnLazyImpl {
34
+ id;
35
+ options;
36
+ specCache;
37
+ dataCache;
38
+ dataStatusCache;
39
+ constructor(id, options) {
40
+ this.id = id;
41
+ this.options = options;
42
+ }
43
+ /** A leaf-recipe references exactly one column — its own id. */
44
+ getReferencedIds() {
45
+ return [this.id];
46
+ }
47
+ getSpec() {
48
+ if (this.specCache === void 0) this.specCache = { value: this.options.getSpec() };
49
+ return this.specCache.value;
50
+ }
51
+ /** Leaf-shaped — points straight at `this.id`. */
52
+ getQuery() {
53
+ return {
54
+ type: "column",
55
+ column: this.id
56
+ };
57
+ }
58
+ /** Leaf-only: not on the recipe interface — only the leaf can read data directly. */
59
+ getData() {
60
+ if (this.dataCache === void 0) this.dataCache = { value: this.options.getData() };
61
+ return this.dataCache.value;
62
+ }
63
+ getDataStatus() {
64
+ if (this.dataStatusCache === void 0) this.dataStatusCache = { value: this.options.getDataStatus() };
65
+ return this.dataStatusCache.value;
66
+ }
67
+ /**
68
+ * Overlay overrides → produces a {@link ColumnOverriddenRecipe} wrapping
69
+ * this leaf. ColumnLazy itself stays bare (id remains a plain PObjectId);
70
+ * layering lives entirely in the recipe wrappers.
71
+ */
72
+ withSpecs(overrides) {
73
+ return require_column_overrided_recipe.ColumnOverriddenRecipe.wrap(this, overrides);
74
+ }
75
+ /**
76
+ * Resolve via the ambient {@link ColumnRegistry}. Spec is resolved eagerly:
77
+ * returns `undefined` if the leaf isn't reachable yet (resolving). Throws
78
+ * {@link ColumnAbsentError} when every relevant accessor is `inputsLocked`
79
+ * and the column did not appear — the column will not exist in this ctx.
80
+ * Data and dataStatus stay lazy.
81
+ */
82
+ static fromId(id, { ctx } = {}) {
83
+ const registry = new _milaboratories_pl_model_common.ColumnRegistry(require_index.getCtxProviders({ ctx }));
84
+ const leaf = registry.resolve(id);
85
+ if ((0, es_toolkit.isNil)(leaf)) {
86
+ if (registry.isFinal()) throw new ColumnAbsentError(id);
87
+ return;
88
+ }
89
+ const spec = readSpecAccessor(leaf);
90
+ if ((0, es_toolkit.isNil)(spec)) {
91
+ if (leaf.accessor.getInputsLocked()) throw new ColumnAbsentError(id);
92
+ return;
93
+ }
94
+ if (!spec.hasData()) return void 0;
95
+ return new ColumnLazyImpl(id, {
96
+ getSpec: () => spec.getDataAsJson(),
97
+ getData: () => readDataAccessor(leaf),
98
+ getDataStatus: () => readDataStatus(leaf)
99
+ });
100
+ }
101
+ /** {@link PlRef} wrapper over {@link fromId}. */
102
+ static fromPlRef(ref) {
103
+ return ColumnLazyImpl.fromId((0, _milaboratories_pl_model_common.createGlobalPObjectId)(ref.blockId, ref.name));
104
+ }
105
+ /**
106
+ * Bind directly to an accessor-backed {@link LeafEntry} — no registry.
107
+ * Throws {@link ColumnAbsentError} if the leaf has no spec field and its
108
+ * accessor is `inputsLocked`. Returns `undefined` while still resolving.
109
+ */
110
+ static fromAccessor(entry) {
111
+ const spec = readSpecAccessor(entry);
112
+ if ((0, es_toolkit.isNil)(spec)) {
113
+ if (entry.accessor.getInputsLocked()) throw new ColumnAbsentError(entry.id);
114
+ return;
115
+ }
116
+ if (!spec.hasData()) return void 0;
117
+ return new ColumnLazyImpl(entry.id, {
118
+ getSpec: () => spec.getDataAsJson(),
119
+ getData: () => readDataAccessor(entry),
120
+ getDataStatus: () => readDataStatus(entry)
121
+ });
122
+ }
123
+ /**
124
+ * Wrap a materialised {@link PColumn}. If the input is already a
125
+ * {@link ColumnLazy} it is returned as-is.
126
+ */
127
+ static fromColumn(column) {
128
+ if (column instanceof ColumnLazyImpl) return column;
129
+ return new ColumnLazyImpl(column.id, {
130
+ getSpec: () => column.spec,
131
+ getData: () => column.data,
132
+ getDataStatus: () => "present"
133
+ });
134
+ }
135
+ /**
136
+ * Distinguishes `present` / `resolving` / `absent` for a {@link PObjectId}
137
+ * in the active render ctx. Falls back to the registry's `isFinal()`
138
+ * when the id has no entry — only then we can say `absent` instead of
139
+ * `resolving`.
140
+ */
141
+ static getStatusById(id, { ctx } = {}) {
142
+ const registry = new _milaboratories_pl_model_common.ColumnRegistry(require_index.getCtxProviders({ ctx }));
143
+ const leaf = registry.resolve(id);
144
+ if ((0, es_toolkit.isNil)(leaf)) return registry.isFinal() ? "absent" : "resolving";
145
+ return getLeafEntryStatus(leaf);
146
+ }
147
+ /** {@link PlRef} wrapper over {@link getStatusById}. */
148
+ static getStatusByPlRef(ref, opts = {}) {
149
+ return ColumnLazyImpl.getStatusById((0, _milaboratories_pl_model_common.createGlobalPObjectId)(ref.blockId, ref.name), opts);
150
+ }
151
+ /** No registry — reads straight off the entry's accessor. */
152
+ static getStatusByAccessor(entry) {
153
+ return getLeafEntryStatus(entry);
154
+ }
155
+ };
156
+ /**
157
+ * Unified dispatcher — picks the right `ColumnLazyImpl.fromX` by source
158
+ * shape. For ambiguous inputs callers can still use the explicit factories
159
+ * (also attached as properties: `ColumnLazy.fromId`, `.fromPlRef`,
160
+ * `.fromAccessor`, `.fromColumn`).
161
+ */
162
+ function ColumnLazyDispatch(source, opts = {}) {
163
+ if (typeof source === "string") return ColumnLazyImpl.fromId(source, opts);
164
+ if (source instanceof ColumnLazyImpl) return source;
165
+ if ("accessor" in source) return ColumnLazyImpl.fromAccessor(source);
166
+ if ((0, _milaboratories_pl_model_common.isPlRef)(source)) return ColumnLazyImpl.fromPlRef(source);
167
+ if ((0, _milaboratories_pl_model_common.isPColumn)(source)) return ColumnLazyImpl.fromColumn(source);
168
+ throw new Error("ColumnLazy: unknown source shape");
169
+ }
170
+ /**
171
+ * Polymorphic counterpart to {@link ColumnLazyDispatch}: returns the
172
+ * {@link ColumnResolutionStatus} for any factory input without constructing
173
+ * the recipe. For already-materialised sources ({@link PColumn} value,
174
+ * existing {@link ColumnLazy}) status is `present` by construction.
175
+ */
176
+ function ColumnLazyGetStatus(source, opts = {}) {
177
+ if (typeof source === "string") return ColumnLazyImpl.getStatusById(source, opts);
178
+ if (source instanceof ColumnLazyImpl) return "present";
179
+ if ("accessor" in source) return ColumnLazyImpl.getStatusByAccessor(source);
180
+ if ((0, _milaboratories_pl_model_common.isPlRef)(source)) return ColumnLazyImpl.getStatusByPlRef(source, opts);
181
+ if ((0, _milaboratories_pl_model_common.isPColumn)(source)) return "present";
182
+ throw new Error("ColumnLazy.getStatus: unknown source shape");
183
+ }
184
+ const ColumnLazy = Object.assign(ColumnLazyDispatch, {
185
+ fromId: ColumnLazyImpl.fromId,
186
+ fromPlRef: ColumnLazyImpl.fromPlRef,
187
+ fromAccessor: ColumnLazyImpl.fromAccessor,
188
+ fromColumn: ColumnLazyImpl.fromColumn,
189
+ getStatus: ColumnLazyGetStatus,
190
+ getStatusById: ColumnLazyImpl.getStatusById,
191
+ getStatusByPlRef: ColumnLazyImpl.getStatusByPlRef,
192
+ getStatusByAccessor: ColumnLazyImpl.getStatusByAccessor
193
+ });
194
+ /**
195
+ * Type-guard narrowing to the leaf recipe. Prefer this over
196
+ * `instanceof ColumnLazyImpl` — `ColumnLazy` (the value) is the dispatcher
197
+ * with statics, not the class, so `instanceof` requires the impl symbol.
198
+ */
199
+ function isColumnLazy(value) {
200
+ return value instanceof ColumnLazyImpl;
201
+ }
202
+ const readSpecAccessor = memoizeByEntry(({ accessor, name }) => accessor.traverse({
203
+ field: `${name}.spec`,
204
+ assertFieldType: "Input",
205
+ ignoreError: true
206
+ }));
207
+ /**
208
+ * Per-entry counterpart to {@link readDataStatus}: tells whether the leaf's
209
+ * **spec** can be read in this ctx, and — for the negative cases —
210
+ * distinguishes `resolving` from `absent` via `getInputsLocked()`.
211
+ *
212
+ * - spec field not yet on the entry's accessor + inputs locked → `absent`
213
+ * - spec field not yet on the entry's accessor + still resolving → `resolving`
214
+ * - spec resource present but bytes not yet written → `resolving`
215
+ * (transient — the spec resource is connected, just unfilled)
216
+ * - spec resource present and `hasData()` → `present`
217
+ */
218
+ function getLeafEntryStatus(entry) {
219
+ const spec = readSpecAccessor(entry);
220
+ if ((0, es_toolkit.isNil)(spec)) return entry.accessor.getInputsLocked() ? "absent" : "resolving";
221
+ if (!spec.hasData()) return "resolving";
222
+ return "present";
223
+ }
224
+ const readDataAccessor = memoizeByEntry(({ accessor, name }) => accessor.traverse({
225
+ field: `${name}.data`,
226
+ assertFieldType: "Input",
227
+ ignoreError: true
228
+ }));
229
+ const readDataStatus = memoizeByEntry(({ accessor, name }) => {
230
+ if (accessor.listInputFields().includes(`${name}.data`)) return "present";
231
+ return accessor.getInputsLocked() ? "absent" : "resolving";
232
+ });
233
+ function memoizeByEntry(fn) {
234
+ const cache = new lru_cache.LRUCache({ max: 1e3 });
235
+ return (entry) => {
236
+ const key = `${entry.accessor.handle}:${entry.name}`;
237
+ let hit = cache.get(key);
238
+ if (!hit) cache.set(key, hit = { value: fn(entry) });
239
+ return hit.value;
240
+ };
241
+ }
242
+ //#endregion
243
+ exports.ColumnAbsentError = ColumnAbsentError;
244
+ exports.ColumnLazy = ColumnLazy;
245
+ exports.ColumnLazyImpl = ColumnLazyImpl;
246
+ exports.isColumnLazy = isColumnLazy;
247
+
248
+ //# sourceMappingURL=column_lazy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column_lazy.cjs","names":["ColumnOverriddenRecipe","ColumnRegistry","getCtxProviders","LRUCache"],"sources":["../../src/columns/column_lazy.ts"],"sourcesContent":["import {\n ColumnRegistry,\n createGlobalPObjectId,\n isPColumn,\n isPlRef,\n PlRef,\n PObjectId,\n type ColumnUniversalId,\n type LeafEntry,\n type PColumn,\n type PColumnSpec,\n type SpecOverrides,\n type SpecQuery,\n} from \"@milaboratories/pl-model-common\";\nimport type { GlobalCfgRenderCtx, PColumnDataUniversal } from \"../render/internal\";\nimport { getCtxProviders } from \"./column_providers\";\nimport { isNil } from \"es-toolkit\";\nimport { LRUCache } from \"lru-cache\";\nimport { TreeNodeAccessor } from \"../render\";\nimport type {\n ColumnFieldStatus,\n ColumnRecipe,\n ColumnResolutionStatus,\n} from \"./column_recipes/types\";\nimport { ColumnOverriddenRecipe } from \"./column_recipes/column_overrided_recipe\";\n\nexport type ColumnLazyId = PObjectId;\nexport type ColumnLazyData = undefined | PColumnDataUniversal;\nexport type { ColumnFieldStatus, ColumnResolutionStatus } from \"./column_recipes/types\";\n\n/**\n * Thrown by leaf-recipe factories when the requested column is provably\n * absent in the active render ctx — i.e. every relevant accessor reports\n * `inputsLocked` and the column did not appear. Distinct from the\n * `undefined` return that the factories still use for the \"resolving\" case\n * (the column may still appear later).\n *\n * Catch at the boundary (resolver / filter+sort wiring / data-table assembly)\n * when partial absence should be surfaced to the user rather than silently\n * producing an empty result.\n */\nexport class ColumnAbsentError extends Error {\n constructor(public readonly id: ColumnUniversalId) {\n super(`Column is absent in the active render ctx and will not appear: ${id}`);\n this.name = \"ColumnAbsentError\";\n }\n}\n\n/**\n * ColumnLazy is the leaf-recipe building block: a {@link ColumnRecipe} whose\n * `id` is a bare {@link PObjectId} and whose readers are bound to a single\n * tree-accessor leaf. Layered encodings (Overridden / Discovered / Filtered)\n * are reified through their dedicated recipe classes and reference leaf\n * columns by id.\n */\nexport class ColumnLazyImpl implements ColumnRecipe<PObjectId> {\n private specCache?: { readonly value: PColumnSpec };\n private dataCache?: { readonly value: ColumnLazyData };\n private dataStatusCache?: { readonly value: ColumnFieldStatus };\n\n private constructor(\n public readonly id: PObjectId,\n private readonly options: {\n getSpec: () => PColumnSpec;\n getData: () => ColumnLazyData;\n getDataStatus: () => ColumnFieldStatus;\n },\n ) {}\n\n /** A leaf-recipe references exactly one column — its own id. */\n getReferencedIds(): PObjectId[] {\n return [this.id];\n }\n\n getSpec(): PColumnSpec {\n if (this.specCache === undefined) {\n this.specCache = { value: this.options.getSpec() };\n }\n return this.specCache.value;\n }\n\n /** Leaf-shaped — points straight at `this.id`. */\n getQuery(): SpecQuery {\n return { type: \"column\", column: this.id } as SpecQuery;\n }\n\n /** Leaf-only: not on the recipe interface — only the leaf can read data directly. */\n getData(): ColumnLazyData {\n if (this.dataCache === undefined) this.dataCache = { value: this.options.getData() };\n return this.dataCache.value;\n }\n\n getDataStatus(): ColumnFieldStatus {\n if (this.dataStatusCache === undefined) {\n this.dataStatusCache = { value: this.options.getDataStatus() };\n }\n return this.dataStatusCache.value;\n }\n\n /**\n * Overlay overrides → produces a {@link ColumnOverriddenRecipe} wrapping\n * this leaf. ColumnLazy itself stays bare (id remains a plain PObjectId);\n * layering lives entirely in the recipe wrappers.\n */\n withSpecs(overrides: SpecOverrides): ColumnRecipe {\n return ColumnOverriddenRecipe.wrap(this, overrides);\n }\n\n /**\n * Resolve via the ambient {@link ColumnRegistry}. Spec is resolved eagerly:\n * returns `undefined` if the leaf isn't reachable yet (resolving). Throws\n * {@link ColumnAbsentError} when every relevant accessor is `inputsLocked`\n * and the column did not appear — the column will not exist in this ctx.\n * Data and dataStatus stay lazy.\n */\n static fromId(id: PObjectId, { ctx }: { ctx?: GlobalCfgRenderCtx } = {}): undefined | ColumnLazy {\n const registry = new ColumnRegistry(getCtxProviders({ ctx }));\n const leaf = registry.resolve(id);\n if (isNil(leaf)) {\n if (registry.isFinal()) throw new ColumnAbsentError(id);\n return undefined;\n }\n const spec = readSpecAccessor(leaf);\n if (isNil(spec)) {\n if (leaf.accessor.getInputsLocked()) throw new ColumnAbsentError(id);\n return undefined;\n }\n if (!spec.hasData()) return undefined;\n return new ColumnLazyImpl(id, {\n getSpec: () => spec.getDataAsJson<PColumnSpec>(),\n getData: () => readDataAccessor(leaf),\n getDataStatus: () => readDataStatus(leaf),\n });\n }\n\n /** {@link PlRef} wrapper over {@link fromId}. */\n static fromPlRef(ref: PlRef): undefined | ColumnLazy {\n return ColumnLazyImpl.fromId(createGlobalPObjectId(ref.blockId, ref.name));\n }\n\n /**\n * Bind directly to an accessor-backed {@link LeafEntry} — no registry.\n * Throws {@link ColumnAbsentError} if the leaf has no spec field and its\n * accessor is `inputsLocked`. Returns `undefined` while still resolving.\n */\n static fromAccessor(entry: LeafEntry<TreeNodeAccessor>): undefined | ColumnLazy {\n const spec = readSpecAccessor(entry);\n if (isNil(spec)) {\n if (entry.accessor.getInputsLocked()) throw new ColumnAbsentError(entry.id);\n return undefined;\n }\n if (!spec.hasData()) return undefined;\n return new ColumnLazyImpl(entry.id, {\n getSpec: () => spec.getDataAsJson<PColumnSpec>(),\n getData: () => readDataAccessor(entry),\n getDataStatus: () => readDataStatus(entry),\n });\n }\n\n /**\n * Wrap a materialised {@link PColumn}. If the input is already a\n * {@link ColumnLazy} it is returned as-is.\n */\n static fromColumn(column: PColumn<ColumnLazyData> | ColumnLazy): ColumnLazy {\n if (column instanceof ColumnLazyImpl) return column;\n return new ColumnLazyImpl(column.id, {\n getSpec: () => column.spec,\n getData: () => column.data,\n getDataStatus: () => \"present\",\n });\n }\n\n /**\n * Distinguishes `present` / `resolving` / `absent` for a {@link PObjectId}\n * in the active render ctx. Falls back to the registry's `isFinal()`\n * when the id has no entry — only then we can say `absent` instead of\n * `resolving`.\n */\n static getStatusById(\n id: PObjectId,\n { ctx }: { ctx?: GlobalCfgRenderCtx } = {},\n ): ColumnResolutionStatus {\n const registry = new ColumnRegistry(getCtxProviders({ ctx }));\n const leaf = registry.resolve(id);\n if (isNil(leaf)) return registry.isFinal() ? \"absent\" : \"resolving\";\n return getLeafEntryStatus(leaf);\n }\n\n /** {@link PlRef} wrapper over {@link getStatusById}. */\n static getStatusByPlRef(\n ref: PlRef,\n opts: { ctx?: GlobalCfgRenderCtx } = {},\n ): ColumnResolutionStatus {\n return ColumnLazyImpl.getStatusById(createGlobalPObjectId(ref.blockId, ref.name), opts);\n }\n\n /** No registry — reads straight off the entry's accessor. */\n static getStatusByAccessor(entry: LeafEntry<TreeNodeAccessor>): ColumnResolutionStatus {\n return getLeafEntryStatus(entry);\n }\n}\n\n/**\n * Public type alias — `ColumnLazy` (the type) refers to the underlying\n * {@link ColumnLazyImpl} class instance. `ColumnLazy` (the value) is the\n * callable below with the static factories attached.\n */\nexport type ColumnLazy = ColumnLazyImpl;\n\n/**\n * Unified dispatcher — picks the right `ColumnLazyImpl.fromX` by source\n * shape. For ambiguous inputs callers can still use the explicit factories\n * (also attached as properties: `ColumnLazy.fromId`, `.fromPlRef`,\n * `.fromAccessor`, `.fromColumn`).\n */\nfunction ColumnLazyDispatch(\n source: PObjectId | PlRef | LeafEntry<TreeNodeAccessor> | PColumn<ColumnLazyData> | ColumnLazy,\n opts: { ctx?: GlobalCfgRenderCtx } = {},\n): undefined | ColumnLazy {\n if (typeof source === \"string\") return ColumnLazyImpl.fromId(source, opts);\n if (source instanceof ColumnLazyImpl) return source;\n if (\"accessor\" in source) return ColumnLazyImpl.fromAccessor(source);\n if (isPlRef(source)) return ColumnLazyImpl.fromPlRef(source);\n if (isPColumn(source)) return ColumnLazyImpl.fromColumn(source);\n throw new Error(\"ColumnLazy: unknown source shape\");\n}\n\n/**\n * Polymorphic counterpart to {@link ColumnLazyDispatch}: returns the\n * {@link ColumnResolutionStatus} for any factory input without constructing\n * the recipe. For already-materialised sources ({@link PColumn} value,\n * existing {@link ColumnLazy}) status is `present` by construction.\n */\nfunction ColumnLazyGetStatus(\n source: PObjectId | PlRef | LeafEntry<TreeNodeAccessor> | PColumn<ColumnLazyData> | ColumnLazy,\n opts: { ctx?: GlobalCfgRenderCtx } = {},\n): ColumnResolutionStatus {\n if (typeof source === \"string\") return ColumnLazyImpl.getStatusById(source, opts);\n if (source instanceof ColumnLazyImpl) return \"present\";\n if (\"accessor\" in source) return ColumnLazyImpl.getStatusByAccessor(source);\n if (isPlRef(source)) return ColumnLazyImpl.getStatusByPlRef(source, opts);\n if (isPColumn(source)) return \"present\";\n throw new Error(\"ColumnLazy.getStatus: unknown source shape\");\n}\n\nexport const ColumnLazy = Object.assign(ColumnLazyDispatch, {\n fromId: ColumnLazyImpl.fromId,\n fromPlRef: ColumnLazyImpl.fromPlRef,\n fromAccessor: ColumnLazyImpl.fromAccessor,\n fromColumn: ColumnLazyImpl.fromColumn,\n getStatus: ColumnLazyGetStatus,\n getStatusById: ColumnLazyImpl.getStatusById,\n getStatusByPlRef: ColumnLazyImpl.getStatusByPlRef,\n getStatusByAccessor: ColumnLazyImpl.getStatusByAccessor,\n});\n\n/**\n * Type-guard narrowing to the leaf recipe. Prefer this over\n * `instanceof ColumnLazyImpl` — `ColumnLazy` (the value) is the dispatcher\n * with statics, not the class, so `instanceof` requires the impl symbol.\n */\nexport function isColumnLazy(value: unknown): value is ColumnLazy {\n return value instanceof ColumnLazyImpl;\n}\n\nconst readSpecAccessor = memoizeByEntry(\n ({ accessor, name }: LeafEntry<TreeNodeAccessor>): undefined | TreeNodeAccessor =>\n accessor.traverse({ field: `${name}.spec`, assertFieldType: \"Input\", ignoreError: true }),\n);\n\n/**\n * Per-entry counterpart to {@link readDataStatus}: tells whether the leaf's\n * **spec** can be read in this ctx, and — for the negative cases —\n * distinguishes `resolving` from `absent` via `getInputsLocked()`.\n *\n * - spec field not yet on the entry's accessor + inputs locked → `absent`\n * - spec field not yet on the entry's accessor + still resolving → `resolving`\n * - spec resource present but bytes not yet written → `resolving`\n * (transient — the spec resource is connected, just unfilled)\n * - spec resource present and `hasData()` → `present`\n */\nfunction getLeafEntryStatus(entry: LeafEntry<TreeNodeAccessor>): ColumnResolutionStatus {\n const spec = readSpecAccessor(entry);\n if (isNil(spec)) return entry.accessor.getInputsLocked() ? \"absent\" : \"resolving\";\n if (!spec.hasData()) return \"resolving\";\n return \"present\";\n}\n\nconst readDataAccessor = memoizeByEntry(\n ({ accessor, name }: LeafEntry<TreeNodeAccessor>): undefined | TreeNodeAccessor =>\n accessor.traverse({ field: `${name}.data`, assertFieldType: \"Input\", ignoreError: true }),\n);\n\nconst readDataStatus = memoizeByEntry(\n ({ accessor, name }: LeafEntry<TreeNodeAccessor>): ColumnFieldStatus => {\n if (accessor.listInputFields().includes(`${name}.data`)) return \"present\";\n return accessor.getInputsLocked() ? \"absent\" : \"resolving\";\n },\n);\n\nfunction memoizeByEntry<R>(\n fn: (entry: LeafEntry<TreeNodeAccessor>) => R,\n): (entry: LeafEntry<TreeNodeAccessor>) => R {\n const cache = new LRUCache<string, { value: R }>({ max: 1000 });\n return (entry) => {\n const key = `${entry.accessor.handle}:${entry.name}`;\n let hit = cache.get(key);\n if (!hit) cache.set(key, (hit = { value: fn(entry) }));\n return hit.value;\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { GlobalCfgRenderCtx, PColumnDataUniversal } from "../render/internal.js";
2
+ import { TreeNodeAccessor } from "../render/accessor.js";
3
+ import { ColumnFieldStatus, ColumnRecipe, ColumnResolutionStatus } from "./column_recipes/types.js";
4
+ import { ColumnUniversalId, LeafEntry, PColumn, PColumnSpec, PObjectId, PlRef, SpecOverrides, SpecQuery } from "@milaboratories/pl-model-common";
5
+
6
+ //#region src/columns/column_lazy.d.ts
7
+ type ColumnLazyId = PObjectId;
8
+ type ColumnLazyData = undefined | PColumnDataUniversal;
9
+ /**
10
+ * Thrown by leaf-recipe factories when the requested column is provably
11
+ * absent in the active render ctx — i.e. every relevant accessor reports
12
+ * `inputsLocked` and the column did not appear. Distinct from the
13
+ * `undefined` return that the factories still use for the "resolving" case
14
+ * (the column may still appear later).
15
+ *
16
+ * Catch at the boundary (resolver / filter+sort wiring / data-table assembly)
17
+ * when partial absence should be surfaced to the user rather than silently
18
+ * producing an empty result.
19
+ */
20
+ declare class ColumnAbsentError extends Error {
21
+ readonly id: ColumnUniversalId;
22
+ constructor(id: ColumnUniversalId);
23
+ }
24
+ /**
25
+ * ColumnLazy is the leaf-recipe building block: a {@link ColumnRecipe} whose
26
+ * `id` is a bare {@link PObjectId} and whose readers are bound to a single
27
+ * tree-accessor leaf. Layered encodings (Overridden / Discovered / Filtered)
28
+ * are reified through their dedicated recipe classes and reference leaf
29
+ * columns by id.
30
+ */
31
+ declare class ColumnLazyImpl implements ColumnRecipe<PObjectId> {
32
+ readonly id: PObjectId;
33
+ private readonly options;
34
+ private specCache?;
35
+ private dataCache?;
36
+ private dataStatusCache?;
37
+ private constructor();
38
+ /** A leaf-recipe references exactly one column — its own id. */
39
+ getReferencedIds(): PObjectId[];
40
+ getSpec(): PColumnSpec;
41
+ /** Leaf-shaped — points straight at `this.id`. */
42
+ getQuery(): SpecQuery;
43
+ /** Leaf-only: not on the recipe interface — only the leaf can read data directly. */
44
+ getData(): ColumnLazyData;
45
+ getDataStatus(): ColumnFieldStatus;
46
+ /**
47
+ * Overlay overrides → produces a {@link ColumnOverriddenRecipe} wrapping
48
+ * this leaf. ColumnLazy itself stays bare (id remains a plain PObjectId);
49
+ * layering lives entirely in the recipe wrappers.
50
+ */
51
+ withSpecs(overrides: SpecOverrides): ColumnRecipe;
52
+ /**
53
+ * Resolve via the ambient {@link ColumnRegistry}. Spec is resolved eagerly:
54
+ * returns `undefined` if the leaf isn't reachable yet (resolving). Throws
55
+ * {@link ColumnAbsentError} when every relevant accessor is `inputsLocked`
56
+ * and the column did not appear — the column will not exist in this ctx.
57
+ * Data and dataStatus stay lazy.
58
+ */
59
+ static fromId(id: PObjectId, {
60
+ ctx
61
+ }?: {
62
+ ctx?: GlobalCfgRenderCtx;
63
+ }): undefined | ColumnLazy;
64
+ /** {@link PlRef} wrapper over {@link fromId}. */
65
+ static fromPlRef(ref: PlRef): undefined | ColumnLazy;
66
+ /**
67
+ * Bind directly to an accessor-backed {@link LeafEntry} — no registry.
68
+ * Throws {@link ColumnAbsentError} if the leaf has no spec field and its
69
+ * accessor is `inputsLocked`. Returns `undefined` while still resolving.
70
+ */
71
+ static fromAccessor(entry: LeafEntry<TreeNodeAccessor>): undefined | ColumnLazy;
72
+ /**
73
+ * Wrap a materialised {@link PColumn}. If the input is already a
74
+ * {@link ColumnLazy} it is returned as-is.
75
+ */
76
+ static fromColumn(column: PColumn<ColumnLazyData> | ColumnLazy): ColumnLazy;
77
+ /**
78
+ * Distinguishes `present` / `resolving` / `absent` for a {@link PObjectId}
79
+ * in the active render ctx. Falls back to the registry's `isFinal()`
80
+ * when the id has no entry — only then we can say `absent` instead of
81
+ * `resolving`.
82
+ */
83
+ static getStatusById(id: PObjectId, {
84
+ ctx
85
+ }?: {
86
+ ctx?: GlobalCfgRenderCtx;
87
+ }): ColumnResolutionStatus;
88
+ /** {@link PlRef} wrapper over {@link getStatusById}. */
89
+ static getStatusByPlRef(ref: PlRef, opts?: {
90
+ ctx?: GlobalCfgRenderCtx;
91
+ }): ColumnResolutionStatus;
92
+ /** No registry — reads straight off the entry's accessor. */
93
+ static getStatusByAccessor(entry: LeafEntry<TreeNodeAccessor>): ColumnResolutionStatus;
94
+ }
95
+ /**
96
+ * Public type alias — `ColumnLazy` (the type) refers to the underlying
97
+ * {@link ColumnLazyImpl} class instance. `ColumnLazy` (the value) is the
98
+ * callable below with the static factories attached.
99
+ */
100
+ type ColumnLazy = ColumnLazyImpl;
101
+ /**
102
+ * Unified dispatcher — picks the right `ColumnLazyImpl.fromX` by source
103
+ * shape. For ambiguous inputs callers can still use the explicit factories
104
+ * (also attached as properties: `ColumnLazy.fromId`, `.fromPlRef`,
105
+ * `.fromAccessor`, `.fromColumn`).
106
+ */
107
+ declare function ColumnLazyDispatch(source: PObjectId | PlRef | LeafEntry<TreeNodeAccessor> | PColumn<ColumnLazyData> | ColumnLazy, opts?: {
108
+ ctx?: GlobalCfgRenderCtx;
109
+ }): undefined | ColumnLazy;
110
+ /**
111
+ * Polymorphic counterpart to {@link ColumnLazyDispatch}: returns the
112
+ * {@link ColumnResolutionStatus} for any factory input without constructing
113
+ * the recipe. For already-materialised sources ({@link PColumn} value,
114
+ * existing {@link ColumnLazy}) status is `present` by construction.
115
+ */
116
+ declare function ColumnLazyGetStatus(source: PObjectId | PlRef | LeafEntry<TreeNodeAccessor> | PColumn<ColumnLazyData> | ColumnLazy, opts?: {
117
+ ctx?: GlobalCfgRenderCtx;
118
+ }): ColumnResolutionStatus;
119
+ declare const ColumnLazy: typeof ColumnLazyDispatch & {
120
+ fromId: typeof ColumnLazyImpl.fromId;
121
+ fromPlRef: typeof ColumnLazyImpl.fromPlRef;
122
+ fromAccessor: typeof ColumnLazyImpl.fromAccessor;
123
+ fromColumn: typeof ColumnLazyImpl.fromColumn;
124
+ getStatus: typeof ColumnLazyGetStatus;
125
+ getStatusById: typeof ColumnLazyImpl.getStatusById;
126
+ getStatusByPlRef: typeof ColumnLazyImpl.getStatusByPlRef;
127
+ getStatusByAccessor: typeof ColumnLazyImpl.getStatusByAccessor;
128
+ };
129
+ /**
130
+ * Type-guard narrowing to the leaf recipe. Prefer this over
131
+ * `instanceof ColumnLazyImpl` — `ColumnLazy` (the value) is the dispatcher
132
+ * with statics, not the class, so `instanceof` requires the impl symbol.
133
+ */
134
+ declare function isColumnLazy(value: unknown): value is ColumnLazy;
135
+ //#endregion
136
+ export { ColumnAbsentError, type ColumnFieldStatus, ColumnLazy, ColumnLazyData, ColumnLazyId, ColumnLazyImpl, type ColumnResolutionStatus, isColumnLazy };
137
+ //# sourceMappingURL=column_lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column_lazy.d.ts","names":[],"sources":["../../src/columns/column_lazy.ts"],"mappings":";;;;;;KA0BY,YAAA,GAAe,SAAS;AAAA,KACxB,cAAA,eAA6B,oBAAoB;AAD7D;;;;AAAoC;AACpC;;;;AAA6D;AAc7D;AAfA,cAea,iBAAA,SAA0B,KAAA;EAAA,SACT,EAAA,EAAI,iBAAA;cAAJ,EAAA,EAAI,iBAAA;AAAA;;;;;;;;cAarB,cAAA,YAA0B,YAAA,CAAa,SAAA;EAAA,SAMhC,EAAA,EAAI,SAAA;EAAA,iBACH,OAAA;EAAA,QANX,SAAA;EAAA,QACA,SAAA;EAAA,QACA,eAAA;EAAA,QAED,WAAA;EAL2C;EAelD,gBAAA,IAAoB,SAAA;EAIpB,OAAA,IAAW,WAAA;EAAA;EAQX,QAAA,IAAY,SAAA;EAKD;EAAX,OAAA,IAAW,cAAA;EAKX,aAAA,IAAiB,iBAAA;EAYoB;;;;;EAArC,SAAA,CAAU,SAAA,EAAW,aAAA,GAAgB,YAAA;EAgCK;;;;;;;EAAA,OArBnC,MAAA,CAAO,EAAA,EAAI,SAAA;IAAa;EAAA;IAAS,GAAA,GAAM,kBAAA;EAAA,gBAAwC,UAAA;EAiEnE;EAAA,OA5CZ,SAAA,CAAU,GAAA,EAAK,KAAA,eAAoB,UAAA;EAsDnC;;;;;EAAA,OA7CA,YAAA,CAAa,KAAA,EAAO,SAAA,CAAU,gBAAA,gBAAgC,UAAA;EA1FhC;;;;EAAA,OA4G9B,UAAA,CAAW,MAAA,EAAQ,OAAA,CAAQ,cAAA,IAAkB,UAAA,GAAa,UAAA;EAtG/C;;;;;;EAAA,OAqHX,aAAA,CACL,EAAA,EAAI,SAAA;IACF;EAAA;IAAS,GAAA,GAAM,kBAAA;EAAA,IAChB,sBAAA;EA3GH;EAAA,OAmHO,gBAAA,CACL,GAAA,EAAK,KAAA,EACL,IAAA;IAAQ,GAAA,GAAM,kBAAA;EAAA,IACb,sBAAA;EAzGH;EAAA,OA8GO,mBAAA,CAAoB,KAAA,EAAO,SAAA,CAAU,gBAAA,IAAoB,sBAAA;AAAA;;;;;;KAUtD,UAAA,GAAa,cAAc;;;;;;;iBAQ9B,kBAAA,CACP,MAAA,EAAQ,SAAA,GAAY,KAAA,GAAQ,SAAA,CAAU,gBAAA,IAAoB,OAAA,CAAQ,cAAA,IAAkB,UAAA,EACpF,IAAA;EAAQ,GAAA,GAAM,kBAAA;AAAA,gBACD,UAAA;;;;;;;iBAeN,mBAAA,CACP,MAAA,EAAQ,SAAA,GAAY,KAAA,GAAQ,SAAA,CAAU,gBAAA,IAAoB,OAAA,CAAQ,cAAA,IAAkB,UAAA,EACpF,IAAA;EAAQ,GAAA,GAAM,kBAAA;AAAA,IACb,sBAAA;AAAA,cASU,UAAA,SAAU,kBAAA;;;;;;;;;;;;;;;iBAgBP,YAAA,CAAa,KAAA,YAAiB,KAAA,IAAS,UAAU"}