@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
package/src/render/api.ts CHANGED
@@ -6,16 +6,15 @@ import type {
6
6
  ModelServices,
7
7
  Option,
8
8
  PColumn,
9
- PColumnLazy,
10
9
  PColumnSelector,
11
10
  PColumnSpec,
12
11
  PColumnValues,
13
12
  PFrameDef,
14
13
  PFrameHandle,
14
+ ColumnUniversalId,
15
15
  PObject,
16
16
  PObjectId,
17
17
  PObjectSpec,
18
- PSpecPredicate,
19
18
  PTableDef,
20
19
  PTableDefV2,
21
20
  PTableHandle,
@@ -45,6 +44,7 @@ import {
45
44
  withEnrichments,
46
45
  legacyColumnSelectorsToPredicate,
47
46
  extractAllColumns,
47
+ visitDataInfo,
48
48
  } from "@milaboratories/pl-model-common";
49
49
  import canonicalize from "canonicalize";
50
50
  import type { Optional } from "utility-types";
@@ -72,6 +72,8 @@ import { patchInSetFilters } from "./util/pframe_upgraders";
72
72
  import type { PColumnDataUniversal } from "./internal";
73
73
  import { getService } from "../services";
74
74
  import { allPColumnsReady } from "./util";
75
+ import { throwError } from "@milaboratories/helpers";
76
+ import { isString } from "es-toolkit";
75
77
 
76
78
  /**
77
79
  * Helper function to match domain objects
@@ -92,19 +94,25 @@ export type UniversalColumnOption = { label: string; value: SUniversalPColumnId
92
94
 
93
95
  /**
94
96
  * Transforms PColumn data into the internal representation expected by the platform
95
- * @param data Data from a PColumn to transform
97
+ * @param column Data from a PColumn to transform
96
98
  * @returns Transformed data compatible with platform API
97
99
  */
98
- function transformPColumnData(
99
- data: PColumn<undefined | PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>,
100
+ export function finalizePColumnData(
101
+ column: PColumn<PColumnDataUniversal<undefined | TreeNodeAccessor>>,
100
102
  ): PColumn<PColumnValues | AccessorHandle | DataInfo<AccessorHandle>> {
101
- return mapPObjectData(data, (d) => {
102
- if (d instanceof TreeNodeAccessor) {
103
- return d.handle;
104
- } else if (isDataInfo(d)) {
105
- return mapDataInfo(d, (accessor) => accessor.handle);
103
+ return mapPObjectData(column, (data) => {
104
+ if (data instanceof TreeNodeAccessor) {
105
+ return data.handle;
106
+ } else if (isDataInfo(data)) {
107
+ let ready = true;
108
+ visitDataInfo(data, (accessor) => (ready &&= accessor?.getIsReadyOrError() ?? false));
109
+ if (!ready) return [];
110
+ return mapDataInfo(
111
+ data,
112
+ (accessor) => accessor?.handle ?? throwError("Accessor handle is undefined"),
113
+ );
106
114
  } else {
107
- return d ?? [];
115
+ return data ?? [];
108
116
  }
109
117
  });
110
118
  }
@@ -130,16 +138,22 @@ type GetOptionsOpts = {
130
138
  label?: ((spec: PObjectSpec, ref: PlRef) => string) | LabelDerivationOps;
131
139
  };
132
140
 
141
+ /**
142
+ * @deprecated use the direct `ctx.*` methods on `RenderCtxBase` instead.
143
+ *
144
+ * Migration map:
145
+ * - `getSpecs` → `ctx.getSpecs`
146
+ * - `getSpecByRef` / `getPColumnSpecByRef` → `ctx.getSpecByRef` / `ctx.getPColumnSpecByRef`
147
+ * - `getDataByRef` / `getPColumnByRef` → `ctx.getDataByRef` / `ctx.getPColumnByRef`
148
+ * - `getOptions` → `ctx.getOptions`
149
+ *
150
+ * Eager methods `selectColumns` / `getData` / `getDataWithErrors` should be
151
+ * replaced by `ctx.getSpecs` + on-demand `ctx.getStatusByRef` /
152
+ * `ctx.getPColumnByRef` so that the data resource is not subscribed up-front.
153
+ */
133
154
  export class ResultPool implements ColumnProvider, AxisLabelProvider {
134
155
  private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();
135
156
 
136
- /**
137
- * @deprecated use getOptions()
138
- */
139
- public calculateOptions(predicate: PSpecPredicate): Option[] {
140
- return this.ctx.calculateOptions(predicate);
141
- }
142
-
143
157
  public getOptions(
144
158
  predicateOrSelector: ((spec: PObjectSpec) => boolean) | PColumnSelector | PColumnSelector[],
145
159
  opts?: GetOptionsOpts,
@@ -221,7 +235,7 @@ export class ResultPool implements ColumnProvider, AxisLabelProvider {
221
235
  | APColumnSelectorWithSplit
222
236
  | APColumnSelectorWithSplit[],
223
237
  opts?: UniversalPColumnOpts,
224
- ): PColumn<PColumnDataUniversal>[] | undefined {
238
+ ): undefined | PColumn<undefined | PColumnDataUniversal>[] {
225
239
  const anchorCtx = this.resolveAnchorCtx(anchorsOrCtx);
226
240
  if (!anchorCtx) return undefined;
227
241
  return new PColumnCollection()
@@ -351,11 +365,6 @@ export class ResultPool implements ColumnProvider, AxisLabelProvider {
351
365
  * @returns data associated with the ref
352
366
  */
353
367
  public getDataByRef(ref: PlRef): PObject<TreeNodeAccessor> | undefined {
354
- // @TODO remove after 1 Jan 2025; forward compatibility
355
- if (typeof this.ctx.getDataFromResultPoolByRef === "undefined")
356
- return this.getData().entries.find(
357
- (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name,
358
- )?.obj;
359
368
  const data = this.ctx.getDataFromResultPoolByRef(ref.blockId, ref.name); // Keep original call
360
369
  // Need to handle undefined case before mapping
361
370
  if (!data) return undefined;
@@ -491,6 +500,9 @@ export class ResultPool implements ColumnProvider, AxisLabelProvider {
491
500
  *
492
501
  * @param selectors - A predicate function, a single selector, or an array of selectors.
493
502
  * @returns An array of PColumn objects matching the selectors. Data is loaded on first access.
503
+ * @deprecated use `RenderCtxBase.rawResultPool` + `ResultPoolColumnsProvider` +
504
+ * `discoverColumns` instead. This eager path materializes column data
505
+ * unnecessarily for callers that only filter by spec.
494
506
  */
495
507
  public selectColumns(
496
508
  selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[],
@@ -552,7 +564,7 @@ export class ResultPool implements ColumnProvider, AxisLabelProvider {
552
564
 
553
565
  /** Main entry point to the API available within model lambdas (like outputs, sections, etc..) */
554
566
  export abstract class RenderCtxBase<Args = unknown, Data = unknown> {
555
- protected readonly ctx: GlobalCfgRenderCtx;
567
+ public readonly ctx: GlobalCfgRenderCtx;
556
568
 
557
569
  constructor() {
558
570
  this.ctx = getCfgRenderCtx();
@@ -611,30 +623,9 @@ export abstract class RenderCtxBase<Args = unknown, Data = unknown> {
611
623
  return this.getNamedAccessor(MainAccessorName);
612
624
  }
613
625
 
626
+ /** @deprecated use `rawResultPool` + `ResultPoolColumnsProvider` instead. */
614
627
  public readonly resultPool = new ResultPool();
615
628
 
616
- /**
617
- * Find labels data for a given axis id. It will search for a label column and return its data as a map.
618
- * @returns a map of axis value => label
619
- * @deprecated Use resultPool.findLabels instead
620
- */
621
- public findLabels(axis: AxisId): Record<string | number, string> | undefined {
622
- return this.resultPool.findLabels(axis);
623
- }
624
-
625
- private verifyInlineAndExplicitColumnsSupport(
626
- columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[],
627
- ) {
628
- const hasInlineColumns = columns.some(
629
- (c) => !(c.data instanceof TreeNodeAccessor) || isDataInfo(c.data),
630
- ); // Updated check for DataInfo
631
- const inlineColumnsSupport = this.ctx.featureFlags?.inlineColumnsSupport === true;
632
- if (hasInlineColumns && !inlineColumnsSupport)
633
- throw Error(`Inline or explicit columns not supported`); // Combined check
634
-
635
- // Removed redundant explicitColumns check
636
- }
637
-
638
629
  private patchPTableDef(
639
630
  def: PTableDef<PColumn<PColumnDataUniversal>>,
640
631
  ): PTableDef<PColumn<PColumnDataUniversal>> {
@@ -656,13 +647,10 @@ export abstract class RenderCtxBase<Args = unknown, Data = unknown> {
656
647
  return def;
657
648
  }
658
649
 
659
- // TODO remove all non-PColumn fields
660
650
  public createPFrame(
661
- def: PFrameDef<
662
- PColumn<undefined | PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>
663
- >,
651
+ def: PFrameDef<PObjectId | SUniversalPColumnId | PColumn<undefined | PColumnDataUniversal>>,
664
652
  ): PFrameHandle | undefined {
665
- return this.ctx.createPFrame(def.map((c) => transformPColumnData(c)));
653
+ return this.ctx.createPFrame(def.map((v) => (isString(v) ? v : finalizePColumnData(v))));
666
654
  }
667
655
 
668
656
  // TODO remove all non-PColumn fields
@@ -698,20 +686,16 @@ export abstract class RenderCtxBase<Args = unknown, Data = unknown> {
698
686
  rawDef = this.patchPTableDef(def);
699
687
  }
700
688
  const columns = extractAllColumns(rawDef.src);
701
- this.verifyInlineAndExplicitColumnsSupport(columns);
702
689
  if (!allPColumnsReady(columns)) return undefined;
703
- return this.ctx.createPTable(mapPTableDef(rawDef, (po) => transformPColumnData(po)));
690
+ return this.ctx.createPTable(mapPTableDef(rawDef, finalizePColumnData));
704
691
  }
705
692
 
706
693
  public createPTableV2(
707
- def: PTableDefV2<PColumn<undefined | PColumnDataUniversal>>,
694
+ def: PTableDefV2<ColumnUniversalId | PColumn<undefined | PColumnDataUniversal>>,
708
695
  ): PTableHandle | undefined {
709
- return this.ctx.createPTableV2(mapPTableDefV2(def, (po) => transformPColumnData(po)));
710
- }
711
-
712
- /** @deprecated scheduled for removal from SDK */
713
- public getBlockLabel(blockId: string): string {
714
- return this.ctx.getBlockLabel(blockId);
696
+ return this.ctx.createPTableV2(
697
+ mapPTableDefV2(def, { column: (v) => (isString(v) ? v : finalizePColumnData(v)) }),
698
+ );
715
699
  }
716
700
 
717
701
  public getCurrentUnstableMarker(): string | undefined {
@@ -3,5 +3,6 @@ export * from "./traversal_ops";
3
3
  export * from "./accessor";
4
4
  export * from "./util";
5
5
  export { FutureRef } from "./future";
6
- export type { PColumnDataUniversal } from "./internal";
6
+ export type { AccessorHandle, PColumnDataUniversal } from "./internal";
7
+ export { MainAccessorName, StagingAccessorName } from "./internal";
7
8
  export type { ExtractFutureRefType } from "./future";
@@ -1,17 +1,22 @@
1
1
  import type { Optional } from "utility-types";
2
- import type { Branded, StringifiedJson } from "@milaboratories/pl-model-common";
2
+ import type {
3
+ AccessorHandle,
4
+ Branded,
5
+ PObjectId,
6
+ StringifiedJson,
7
+ SUniversalPColumnId,
8
+ } from "@milaboratories/pl-model-common";
9
+ export type { AccessorHandle };
3
10
  import type { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from "./traversal_ops";
4
11
  import type {
5
12
  ArchiveFormat,
6
13
  AnyFunction,
7
- Option,
8
14
  PColumn,
9
15
  PColumnValues,
10
16
  PFrameDef,
11
17
  PFrameHandle,
12
18
  PObject,
13
19
  PObjectSpec,
14
- PSpecPredicate,
15
20
  PTableDef,
16
21
  PTableDefV2,
17
22
  PTableHandle,
@@ -23,10 +28,9 @@ import type {
23
28
  import type { TreeNodeAccessor } from "./accessor";
24
29
  import type { ServiceDispatch } from "@milaboratories/pl-model-common";
25
30
 
26
- export const StagingAccessorName = "staging";
27
31
  export const MainAccessorName = "main";
32
+ export const StagingAccessorName = "staging";
28
33
 
29
- export type AccessorHandle = Branded<string, "AccessorHandle">;
30
34
  export type FutureHandle = Branded<string, "FutureHandle">;
31
35
 
32
36
  export type PColumnDataUniversal<TreeEntry = TreeNodeAccessor> =
@@ -34,6 +38,10 @@ export type PColumnDataUniversal<TreeEntry = TreeNodeAccessor> =
34
38
  | DataInfo<TreeEntry>
35
39
  | PColumnValues;
36
40
 
41
+ // Raw upstream-block ctx shape lives in `@milaboratories/pl-model-common`
42
+ // (`UpstreamBlockCtx`). Import directly from there at use sites.
43
+ import type { UpstreamBlockCtx } from "@milaboratories/pl-model-common";
44
+
37
45
  export interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = FutureHandle> {
38
46
  //
39
47
  // Root accessor creation
@@ -73,11 +81,13 @@ export interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = F
73
81
 
74
82
  getKeyValueAsString(handle: AHandle, key: string): string | undefined;
75
83
 
84
+ hasData(handle: AHandle): boolean;
85
+
76
86
  getDataBase64(handle: AHandle): string | undefined;
77
87
 
78
88
  getDataAsString(handle: AHandle): string | undefined;
79
89
 
80
- /** If not final returns undefined */
90
+ /** @deprecated */
81
91
  parsePObjectCollection(
82
92
  handle: AHandle,
83
93
  errorOnUnknownField: boolean,
@@ -144,18 +154,40 @@ export interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = F
144
154
 
145
155
  getDataFromResultPoolByRef(blockId: string, exportName: string): PObject<AHandle> | undefined;
146
156
 
147
- calculateOptions(predicate: PSpecPredicate): Option[];
157
+ //
158
+ // Raw result pool — list of upstream block ctx accessor handles.
159
+ // SDK-side providers compose enumerate/status/data themselves on top of these.
160
+ //
161
+
162
+ /**
163
+ * For each upstream block in the staging graph, returns its prod/staging ctx
164
+ * accessor handles (when present). Sandbox uses these handles with
165
+ * `getPObjectEntryDataHandle` to build
166
+ * column snapshots; spec/status/data merge with prod-vs-staging precedence
167
+ * lives sandbox-side.
168
+ */
169
+ getUpstreamBlockCtx(): ReadonlyArray<UpstreamBlockCtx<AHandle>>;
148
170
 
149
171
  //
150
172
  // PFrame / PTable
151
173
  //
152
174
 
153
- createPFrame(def: PFrameDef<PColumn<AHandle | PColumnValues | DataInfo<AHandle>>>): PFrameHandle;
175
+ createPFrame(
176
+ def: PFrameDef<
177
+ PObjectId | SUniversalPColumnId | PColumn<AHandle | PColumnValues | DataInfo<AHandle>>
178
+ >,
179
+ ): PFrameHandle;
154
180
 
155
- createPTable(def: PTableDef<PColumn<AHandle | PColumnValues | DataInfo<AHandle>>>): PTableHandle;
181
+ createPTable(
182
+ def: PTableDef<
183
+ PObjectId | SUniversalPColumnId | PColumn<AHandle | PColumnValues | DataInfo<AHandle>>
184
+ >,
185
+ ): PTableHandle;
156
186
 
157
187
  createPTableV2(
158
- def: PTableDefV2<PColumn<AHandle | PColumnValues | DataInfo<AHandle>>>,
188
+ def: PTableDefV2<
189
+ PObjectId | SUniversalPColumnId | PColumn<AHandle | PColumnValues | DataInfo<AHandle>>
190
+ >,
159
191
  ): PTableHandle;
160
192
 
161
193
  //
@@ -181,6 +213,7 @@ export const GlobalCfgRenderCtxFeatureFlags = {
181
213
  activeArgs: true as const,
182
214
  pTablePartitionFiltersSupport: true as const,
183
215
  pFrameInSetFilterSupport: true as const,
216
+ lazyColumnStatusSupport: true as const,
184
217
  };
185
218
 
186
219
  export interface GlobalCfgRenderCtx extends GlobalCfgRenderCtxMethods, ServiceDispatch {
@@ -69,7 +69,6 @@ export function filterDataInfoEntries<Blob>(
69
69
  break;
70
70
  }
71
71
  default:
72
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
73
72
  throw new Error(`Unsupported data info type: ${type satisfies never}`);
74
73
  }
75
74
 
@@ -7,7 +7,6 @@ import type {
7
7
  NativePObjectId,
8
8
  PartitionedDataInfoEntries,
9
9
  PColumn,
10
- PColumnLazy,
11
10
  PColumnSelector,
12
11
  PColumnSpec,
13
12
  PColumnValues,
@@ -60,7 +59,7 @@ export interface AxisLabelProvider {
60
59
  /**
61
60
  * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.
62
61
  */
63
- class ArrayColumnProvider implements ColumnProvider {
62
+ class ArrayColumnsProvider implements ColumnProvider {
64
63
  constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}
65
64
 
66
65
  selectColumns(
@@ -76,21 +75,21 @@ class ArrayColumnProvider implements ColumnProvider {
76
75
  }
77
76
 
78
77
  /** Lazy calculates the data, returns undefined if data is not ready. */
79
- export type PColumnLazyWithLabel<T> = PColumnLazy<T> & {
78
+ export type PColumnWithLabel<T> = PColumn<T> & {
80
79
  label: string;
81
80
  };
82
81
 
83
82
  /** Universal column is a column that uses a universal column id, and always have label. */
84
- export type PColumnLazyUniversal<T> = PColumnLazyWithLabel<T> & {
83
+ export type PColumnUniversal<T> = PColumnWithLabel<T> & {
85
84
  id: SUniversalPColumnId;
86
85
  };
87
86
 
88
- /** @deprecated Use PColumnLazyWithLabel instead. */
89
- export type PColumnEntryWithLabel = PColumnLazy<undefined | PColumnDataUniversal> & {
87
+ /** @deprecated Use PColumnWithLabel instead. */
88
+ export type PColumnEntryWithLabel = PColumn<undefined | PColumnDataUniversal> & {
90
89
  label: string;
91
90
  };
92
91
 
93
- /** @deprecated Use PColumnLazyUniversal instead. */
92
+ /** @deprecated Use PColumnUniversal instead. */
94
93
  export type PColumnEntryUniversal = PColumnEntryWithLabel & {
95
94
  id: SUniversalPColumnId;
96
95
  };
@@ -220,7 +219,7 @@ type UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {
220
219
  export class PColumnCollection {
221
220
  private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];
222
221
  private readonly providers: ColumnProvider[] = [
223
- new ArrayColumnProvider(this.defaultProviderStore),
222
+ new ArrayColumnsProvider(this.defaultProviderStore),
224
223
  ];
225
224
  private readonly axisLabelProviders: AxisLabelProvider[] = [];
226
225
 
@@ -498,12 +497,13 @@ export class PColumnCollection {
498
497
  }
499
498
 
500
499
  result.push({
501
- id: finalId,
500
+ id: finalId as PObjectId,
502
501
  spec: finalSpec,
503
- data: () =>
504
- entry.type === "split"
502
+ get data() {
503
+ return entry.type === "split"
505
504
  ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))
506
- : entry.originalColumn.data,
505
+ : entry.originalColumn.data;
506
+ },
507
507
  label: label,
508
508
  });
509
509
  }
@@ -555,30 +555,30 @@ export class PColumnCollection {
555
555
  | APColumnSelectorWithSplit
556
556
  | APColumnSelectorWithSplit[],
557
557
  opts: UniversalPColumnOpts,
558
- ): PColumn<PColumnDataUniversal>[] | undefined;
558
+ ): PColumn<undefined | PColumnDataUniversal>[] | undefined;
559
559
  public getColumns(
560
560
  predicateOrSelectors:
561
561
  | ((spec: PColumnSpec) => boolean)
562
562
  | PColumnSelectorWithSplit
563
563
  | PColumnSelectorWithSplit[],
564
564
  opts?: UniversalPColumnOptsNoDeriver,
565
- ): PColumn<PColumnDataUniversal>[] | undefined;
565
+ ): PColumn<undefined | PColumnDataUniversal>[] | undefined;
566
566
  public getColumns(
567
567
  predicateOrSelectors:
568
568
  | ((spec: PColumnSpec) => boolean)
569
569
  | APColumnSelectorWithSplit
570
570
  | APColumnSelectorWithSplit[],
571
571
  opts?: Optional<UniversalPColumnOpts, "anchorCtx">,
572
- ): PColumn<PColumnDataUniversal>[] | undefined {
572
+ ): PColumn<undefined | PColumnDataUniversal>[] | undefined {
573
573
  const entries = this.getUniversalEntries(predicateOrSelectors, {
574
574
  overrideLabelAnnotation: true, // default for getColumns
575
575
  ...opts,
576
576
  } as UniversalPColumnOpts);
577
577
  if (!entries) return undefined;
578
578
 
579
- const columns: PColumn<PColumnDataUniversal>[] = [];
579
+ const columns: PColumn<undefined | PColumnDataUniversal>[] = [];
580
580
  for (const entry of entries) {
581
- const data = entry.data();
581
+ const data = entry.data;
582
582
  if (!data) {
583
583
  if (opts?.dontWaitAllData) continue;
584
584
  return undefined;
@@ -3,7 +3,6 @@ import type {
3
3
  ParquetChunkMetadata,
4
4
  PartitionedDataInfoEntries,
5
5
  PColumn,
6
- PColumnLazy,
7
6
  PColumnValues,
8
7
  } from "@milaboratories/pl-model-common";
9
8
  import {
@@ -606,14 +605,14 @@ export function getNumberOfRows(data: PColumnDataUniversal | undefined): number
606
605
  }
607
606
 
608
607
  export function isPColumnReady(
609
- c: PColumn<undefined | PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>,
610
- ): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {
608
+ c: PColumn<undefined | PColumnDataUniversal>,
609
+ ): c is PColumn<PColumnDataUniversal> {
611
610
  const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);
612
611
  const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor =>
613
612
  d instanceof TreeNodeAccessor;
614
613
 
615
614
  let ready = true;
616
- const data = typeof c.data === "function" ? c.data() : c.data;
615
+ const data = c.data;
617
616
  if (data == null) {
618
617
  return false;
619
618
  } else if (isAccessor(data)) {
@@ -627,10 +626,7 @@ export function isPColumnReady(
627
626
  }
628
627
 
629
628
  export function allPColumnsReady(
630
- columns: (
631
- | PColumn<undefined | PColumnDataUniversal>
632
- | PColumnLazy<undefined | PColumnDataUniversal>
633
- )[],
634
- ): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {
629
+ columns: PColumn<undefined | PColumnDataUniversal>[],
630
+ ): columns is PColumn<PColumnDataUniversal>[] {
635
631
  return columns.every(isPColumnReady);
636
632
  }
@@ -12,6 +12,7 @@ export const BLOCK_SERVICE_FLAGS = {
12
12
  requiresPFrameSpec: true,
13
13
  requiresPFrame: true,
14
14
  requiresDialog: true,
15
+ requiresColumnsCollection: true,
15
16
  } as const satisfies Partial<ServiceRequireFlags>;
16
17
 
17
18
  export type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;
@@ -9,8 +9,11 @@ const cachedServices = new WeakMap<
9
9
  Map<keyof ModelServices, ValueOf<ModelServices>>
10
10
  >();
11
11
 
12
- export function getService<T extends keyof ModelServices>(name: T): ModelServices[T] {
13
- const ctx = getCfgRenderCtx();
12
+ export function getService<T extends keyof ModelServices>(
13
+ name: T,
14
+ deps?: { ctx?: GlobalCfgRenderCtx },
15
+ ): ModelServices[T] {
16
+ const ctx = deps?.ctx ?? getCfgRenderCtx();
14
17
 
15
18
  const map = cachedServices.has(ctx)
16
19
  ? cachedServices.get(ctx)!