@elaraai/east-ui 1.0.85 → 1.0.87

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 (561) hide show
  1. package/dist/src/buttons/button/index.d.ts +4 -0
  2. package/dist/src/buttons/button/index.d.ts.map +1 -1
  3. package/dist/src/buttons/button/index.js +8 -1
  4. package/dist/src/buttons/button/index.js.map +1 -1
  5. package/dist/src/buttons/button/types.d.ts +6 -5
  6. package/dist/src/buttons/button/types.d.ts.map +1 -1
  7. package/dist/src/buttons/button/types.js.map +1 -1
  8. package/dist/src/buttons/icon-button/index.d.ts +5 -5
  9. package/dist/src/buttons/icon-button/index.d.ts.map +1 -1
  10. package/dist/src/buttons/icon-button/index.js +8 -2
  11. package/dist/src/buttons/icon-button/index.js.map +1 -1
  12. package/dist/src/buttons/icon-button/types.d.ts +8 -12
  13. package/dist/src/buttons/icon-button/types.d.ts.map +1 -1
  14. package/dist/src/buttons/icon-button/types.js +2 -2
  15. package/dist/src/buttons/icon-button/types.js.map +1 -1
  16. package/dist/src/buttons/toggle/index.d.ts +4 -0
  17. package/dist/src/buttons/toggle/index.d.ts.map +1 -1
  18. package/dist/src/buttons/toggle/index.js +6 -1
  19. package/dist/src/buttons/toggle/index.js.map +1 -1
  20. package/dist/src/buttons/toggle/types.d.ts +3 -2
  21. package/dist/src/buttons/toggle/types.d.ts.map +1 -1
  22. package/dist/src/buttons/toggle/types.js.map +1 -1
  23. package/dist/src/charts/chart/index.d.ts.map +1 -1
  24. package/dist/src/charts/chart/index.js +3 -3
  25. package/dist/src/charts/chart/index.js.map +1 -1
  26. package/dist/src/charts/spec/index.d.ts.map +1 -1
  27. package/dist/src/charts/spec/index.js +5 -2
  28. package/dist/src/charts/spec/index.js.map +1 -1
  29. package/dist/src/collections/deck/index.d.ts.map +1 -1
  30. package/dist/src/collections/deck/index.js +2 -2
  31. package/dist/src/collections/deck/index.js.map +1 -1
  32. package/dist/src/collections/index.d.ts +0 -6
  33. package/dist/src/collections/index.d.ts.map +1 -1
  34. package/dist/src/collections/index.js +0 -6
  35. package/dist/src/collections/index.js.map +1 -1
  36. package/dist/src/collections/library/index.d.ts +1 -1
  37. package/dist/src/collections/library/index.d.ts.map +1 -1
  38. package/dist/src/collections/library/index.js +2 -2
  39. package/dist/src/collections/library/index.js.map +1 -1
  40. package/dist/src/collections/schematic/index.d.ts.map +1 -1
  41. package/dist/src/collections/schematic/index.js +2 -2
  42. package/dist/src/collections/schematic/index.js.map +1 -1
  43. package/dist/src/collections/table/index.d.ts +1 -1
  44. package/dist/src/collections/table/index.d.ts.map +1 -1
  45. package/dist/src/collections/table/index.js +2 -2
  46. package/dist/src/collections/table/index.js.map +1 -1
  47. package/dist/src/collections/tree-view/index.d.ts +11 -32
  48. package/dist/src/collections/tree-view/index.d.ts.map +1 -1
  49. package/dist/src/collections/tree-view/index.js +15 -10
  50. package/dist/src/collections/tree-view/index.js.map +1 -1
  51. package/dist/src/component.d.ts +673 -9344
  52. package/dist/src/component.d.ts.map +1 -1
  53. package/dist/src/component.js +5 -259
  54. package/dist/src/component.js.map +1 -1
  55. package/dist/src/contracts/approval.d.ts +6 -8
  56. package/dist/src/contracts/approval.d.ts.map +1 -1
  57. package/dist/src/contracts/approval.js +6 -8
  58. package/dist/src/contracts/approval.js.map +1 -1
  59. package/dist/src/contracts/drag.d.ts +1 -1
  60. package/dist/src/contracts/drag.d.ts.map +1 -1
  61. package/dist/src/contracts/drag.js +4 -5
  62. package/dist/src/contracts/drag.js.map +1 -1
  63. package/dist/src/contracts/editing.d.ts +19 -19
  64. package/dist/src/contracts/editing.js +14 -14
  65. package/dist/src/contracts/fields.d.ts +471 -0
  66. package/dist/src/contracts/fields.d.ts.map +1 -0
  67. package/dist/src/contracts/fields.js +492 -0
  68. package/dist/src/contracts/fields.js.map +1 -0
  69. package/dist/src/contracts/index.d.ts +1 -0
  70. package/dist/src/contracts/index.d.ts.map +1 -1
  71. package/dist/src/contracts/index.js +1 -0
  72. package/dist/src/contracts/index.js.map +1 -1
  73. package/dist/src/contracts/indexed-source.d.ts +118 -0
  74. package/dist/src/contracts/indexed-source.d.ts.map +1 -0
  75. package/dist/src/contracts/indexed-source.js +89 -0
  76. package/dist/src/contracts/indexed-source.js.map +1 -0
  77. package/dist/src/contracts/pick.d.ts +0 -16
  78. package/dist/src/contracts/pick.d.ts.map +1 -1
  79. package/dist/src/contracts/review.d.ts +4 -6
  80. package/dist/src/contracts/review.d.ts.map +1 -1
  81. package/dist/src/contracts/review.js +4 -6
  82. package/dist/src/contracts/review.js.map +1 -1
  83. package/dist/src/contracts/source.d.ts +2 -2
  84. package/dist/src/contracts/source.d.ts.map +1 -1
  85. package/dist/src/contracts/source.js.map +1 -1
  86. package/dist/src/contracts/states.d.ts +1 -3
  87. package/dist/src/contracts/states.d.ts.map +1 -1
  88. package/dist/src/contracts/states.js +1 -3
  89. package/dist/src/contracts/states.js.map +1 -1
  90. package/dist/src/display/editable-chip/index.d.ts +2 -0
  91. package/dist/src/display/editable-chip/index.d.ts.map +1 -1
  92. package/dist/src/display/editable-chip/index.js +4 -1
  93. package/dist/src/display/editable-chip/index.js.map +1 -1
  94. package/dist/src/display/icon/index.d.ts +14 -31
  95. package/dist/src/display/icon/index.d.ts.map +1 -1
  96. package/dist/src/display/icon/index.js +15 -19
  97. package/dist/src/display/icon/index.js.map +1 -1
  98. package/dist/src/display/icon/solid.d.ts +24 -0
  99. package/dist/src/display/icon/solid.d.ts.map +1 -0
  100. package/dist/src/display/icon/solid.js +39 -0
  101. package/dist/src/display/icon/solid.js.map +1 -0
  102. package/dist/src/display/icon/types.d.ts +14 -38
  103. package/dist/src/display/icon/types.d.ts.map +1 -1
  104. package/dist/src/display/icon/types.js +6 -15
  105. package/dist/src/display/icon/types.js.map +1 -1
  106. package/dist/src/display/metric-chip/index.d.ts +2 -0
  107. package/dist/src/display/metric-chip/index.d.ts.map +1 -1
  108. package/dist/src/display/metric-chip/index.js +4 -1
  109. package/dist/src/display/metric-chip/index.js.map +1 -1
  110. package/dist/src/display/stat/index.d.ts +2 -0
  111. package/dist/src/display/stat/index.d.ts.map +1 -1
  112. package/dist/src/display/stat/index.js +4 -1
  113. package/dist/src/display/stat/index.js.map +1 -1
  114. package/dist/src/display/stat/types.d.ts +3 -5
  115. package/dist/src/display/stat/types.d.ts.map +1 -1
  116. package/dist/src/display/stat/types.js +5 -2
  117. package/dist/src/display/stat/types.js.map +1 -1
  118. package/dist/src/feedback/banner/index.d.ts +5 -3
  119. package/dist/src/feedback/banner/index.d.ts.map +1 -1
  120. package/dist/src/feedback/banner/index.js +4 -1
  121. package/dist/src/feedback/banner/index.js.map +1 -1
  122. package/dist/src/feedback/empty-state/index.d.ts +16 -19
  123. package/dist/src/feedback/empty-state/index.d.ts.map +1 -1
  124. package/dist/src/feedback/empty-state/index.js +17 -10
  125. package/dist/src/feedback/empty-state/index.js.map +1 -1
  126. package/dist/src/feedback/status/index.d.ts +5 -3
  127. package/dist/src/feedback/status/index.d.ts.map +1 -1
  128. package/dist/src/feedback/status/index.js +4 -1
  129. package/dist/src/feedback/status/index.js.map +1 -1
  130. package/dist/src/index.d.ts +5 -6
  131. package/dist/src/index.d.ts.map +1 -1
  132. package/dist/src/index.js +12 -11
  133. package/dist/src/index.js.map +1 -1
  134. package/dist/src/internal.d.ts +23 -16
  135. package/dist/src/internal.d.ts.map +1 -1
  136. package/dist/src/internal.js +29 -13
  137. package/dist/src/internal.js.map +1 -1
  138. package/dist/src/navigation/index.d.ts +0 -2
  139. package/dist/src/navigation/index.d.ts.map +1 -1
  140. package/dist/src/navigation/index.js +0 -2
  141. package/dist/src/navigation/index.js.map +1 -1
  142. package/dist/src/navigation/nav-list/index.d.ts +2 -0
  143. package/dist/src/navigation/nav-list/index.d.ts.map +1 -1
  144. package/dist/src/navigation/nav-list/index.js +4 -1
  145. package/dist/src/navigation/nav-list/index.js.map +1 -1
  146. package/dist/src/navigation/nav-list/types.d.ts +3 -14
  147. package/dist/src/navigation/nav-list/types.d.ts.map +1 -1
  148. package/dist/src/navigation/nav-list/types.js.map +1 -1
  149. package/dist/src/overlays/command-palette/index.d.ts +2 -0
  150. package/dist/src/overlays/command-palette/index.d.ts.map +1 -1
  151. package/dist/src/overlays/command-palette/index.js +5 -0
  152. package/dist/src/overlays/command-palette/index.js.map +1 -1
  153. package/dist/src/overlays/command-palette/types.d.ts +0 -8
  154. package/dist/src/overlays/command-palette/types.d.ts.map +1 -1
  155. package/dist/src/pick/index.d.ts +1 -17
  156. package/dist/src/pick/index.d.ts.map +1 -1
  157. package/dist/src/pick/index.js +1 -1
  158. package/dist/src/platform/slice/index.d.ts +1324 -2039
  159. package/dist/src/platform/slice/index.d.ts.map +1 -1
  160. package/dist/src/platform/slice/index.js +55 -74
  161. package/dist/src/platform/slice/index.js.map +1 -1
  162. package/dist/src/platform/slice/local.d.ts +743 -0
  163. package/dist/src/platform/slice/local.d.ts.map +1 -0
  164. package/dist/src/platform/slice/local.js +133 -0
  165. package/dist/src/platform/slice/local.js.map +1 -0
  166. package/dist/src/platform/slice/record-chrome.d.ts +211 -0
  167. package/dist/src/platform/slice/record-chrome.d.ts.map +1 -0
  168. package/dist/src/platform/slice/record-chrome.js +52 -0
  169. package/dist/src/platform/slice/record-chrome.js.map +1 -0
  170. package/dist/src/platform/slice/record-interval.d.ts +24 -0
  171. package/dist/src/platform/slice/record-interval.d.ts.map +1 -0
  172. package/dist/src/platform/slice/record-interval.js +61 -0
  173. package/dist/src/platform/slice/record-interval.js.map +1 -0
  174. package/dist/src/platform/slice/record-plan.d.ts +54 -0
  175. package/dist/src/platform/slice/record-plan.d.ts.map +1 -0
  176. package/dist/src/platform/slice/record-plan.js +139 -0
  177. package/dist/src/platform/slice/record-plan.js.map +1 -0
  178. package/dist/src/platform/slice/record-types.d.ts +2739 -0
  179. package/dist/src/platform/slice/record-types.d.ts.map +1 -0
  180. package/dist/src/platform/slice/record-types.js +209 -0
  181. package/dist/src/platform/slice/record-types.js.map +1 -0
  182. package/dist/src/platform/slice/record.d.ts +109 -0
  183. package/dist/src/platform/slice/record.d.ts.map +1 -0
  184. package/dist/src/platform/slice/record.js +210 -0
  185. package/dist/src/platform/slice/record.js.map +1 -0
  186. package/dist/src/reactive/match.d.ts +4 -6
  187. package/dist/src/reactive/match.d.ts.map +1 -1
  188. package/dist/src/reactive/match.js +4 -6
  189. package/dist/src/reactive/match.js.map +1 -1
  190. package/dist/src/runtime/collections/deck.d.ts.map +1 -1
  191. package/dist/src/runtime/collections/index.d.ts +0 -6
  192. package/dist/src/runtime/collections/index.d.ts.map +1 -1
  193. package/dist/src/runtime/collections/index.js +0 -6
  194. package/dist/src/runtime/collections/index.js.map +1 -1
  195. package/dist/src/runtime/display/icon.d.ts +6 -5
  196. package/dist/src/runtime/display/icon.d.ts.map +1 -1
  197. package/dist/src/runtime/display/icon.js +6 -5
  198. package/dist/src/runtime/display/icon.js.map +1 -1
  199. package/dist/src/runtime/feedback/empty-state.d.ts +5 -5
  200. package/dist/src/runtime/feedback/empty-state.js +5 -5
  201. package/dist/src/runtime/layout/dock.d.ts +2 -1
  202. package/dist/src/runtime/layout/dock.d.ts.map +1 -1
  203. package/dist/src/runtime/layout/dock.js +2 -1
  204. package/dist/src/runtime/layout/dock.js.map +1 -1
  205. package/dist/src/runtime/navigation/index.d.ts +0 -3
  206. package/dist/src/runtime/navigation/index.d.ts.map +1 -1
  207. package/dist/src/runtime/navigation/index.js +0 -3
  208. package/dist/src/runtime/navigation/index.js.map +1 -1
  209. package/dist/src/runtime/reactive/match.d.ts +2 -3
  210. package/dist/src/runtime/reactive/match.d.ts.map +1 -1
  211. package/dist/src/runtime/reactive/match.js +2 -3
  212. package/dist/src/runtime/reactive/match.js.map +1 -1
  213. package/dist/src/runtime/record-slice-source.d.ts +78 -0
  214. package/dist/src/runtime/record-slice-source.d.ts.map +1 -0
  215. package/dist/src/runtime/record-slice-source.js +201 -0
  216. package/dist/src/runtime/record-slice-source.js.map +1 -0
  217. package/dist/src/runtime/record-slice.d.ts +110 -0
  218. package/dist/src/runtime/record-slice.d.ts.map +1 -0
  219. package/dist/src/runtime/record-slice.js +374 -0
  220. package/dist/src/runtime/record-slice.js.map +1 -0
  221. package/dist/src/runtime/slice.d.ts +11 -13
  222. package/dist/src/runtime/slice.d.ts.map +1 -1
  223. package/dist/src/runtime/slice.js +41 -93
  224. package/dist/src/runtime/slice.js.map +1 -1
  225. package/dist/src/shared/plot-gutter.d.ts +1 -1
  226. package/dist/src/shared/plot-gutter.js +1 -1
  227. package/dist/src/shared/resolve-tag.d.ts +23 -0
  228. package/dist/src/shared/resolve-tag.d.ts.map +1 -0
  229. package/dist/src/shared/resolve-tag.js +26 -0
  230. package/dist/src/shared/resolve-tag.js.map +1 -0
  231. package/dist/src/shared/tree.d.ts +1 -1
  232. package/dist/src/shared/tree.js +1 -1
  233. package/dist/src/slice/breakdown/index.d.ts +1 -1
  234. package/dist/src/slice/breakdown/index.d.ts.map +1 -1
  235. package/dist/src/slice/breakdown/index.js +3 -3
  236. package/dist/src/slice/breakdown/index.js.map +1 -1
  237. package/dist/src/slice/cohort/index.d.ts +4 -5
  238. package/dist/src/slice/cohort/index.d.ts.map +1 -1
  239. package/dist/src/slice/cohort/index.js +6 -7
  240. package/dist/src/slice/cohort/index.js.map +1 -1
  241. package/dist/src/slice/filter/index.d.ts +1 -1
  242. package/dist/src/slice/filter/index.d.ts.map +1 -1
  243. package/dist/src/slice/filter/index.js +3 -3
  244. package/dist/src/slice/filter/index.js.map +1 -1
  245. package/dist/src/slice/index.d.ts +20 -2230
  246. package/dist/src/slice/index.d.ts.map +1 -1
  247. package/dist/src/slice/legend/index.d.ts +2 -2
  248. package/dist/src/slice/legend/index.d.ts.map +1 -1
  249. package/dist/src/slice/legend/index.js +4 -4
  250. package/dist/src/slice/legend/index.js.map +1 -1
  251. package/dist/src/slice/rail/index.d.ts +7 -4
  252. package/dist/src/slice/rail/index.d.ts.map +1 -1
  253. package/dist/src/slice/rail/index.js +10 -5
  254. package/dist/src/slice/rail/index.js.map +1 -1
  255. package/dist/src/slice/range/index.d.ts +1 -1
  256. package/dist/src/slice/range/index.d.ts.map +1 -1
  257. package/dist/src/slice/range/index.js +3 -3
  258. package/dist/src/slice/range/index.js.map +1 -1
  259. package/dist/src/slice/record/index.d.ts +171 -0
  260. package/dist/src/slice/record/index.d.ts.map +1 -0
  261. package/dist/src/slice/record/index.js +10 -0
  262. package/dist/src/slice/record/index.js.map +1 -0
  263. package/dist/src/slice/search/index.d.ts +6 -6
  264. package/dist/src/slice/search/index.d.ts.map +1 -1
  265. package/dist/src/slice/search/index.js +7 -7
  266. package/dist/src/slice/search/index.js.map +1 -1
  267. package/dist/src/slice/summary/index.d.ts +1 -1
  268. package/dist/src/slice/summary/index.d.ts.map +1 -1
  269. package/dist/src/slice/summary/index.js +3 -3
  270. package/dist/src/slice/summary/index.js.map +1 -1
  271. package/dist/src/typography/list/index.d.ts +2 -8
  272. package/dist/src/typography/list/index.d.ts.map +1 -1
  273. package/dist/src/typography/list/index.js +4 -1
  274. package/dist/src/typography/list/index.js.map +1 -1
  275. package/dist/src/typography/list/types.d.ts +0 -8
  276. package/dist/src/typography/list/types.d.ts.map +1 -1
  277. package/dist/test/collections/deck.examples.d.ts.map +1 -1
  278. package/dist/test/collections/deck.examples.js +6 -7
  279. package/dist/test/collections/deck.examples.js.map +1 -1
  280. package/dist/test/collections/index.d.ts +0 -1
  281. package/dist/test/collections/index.d.ts.map +1 -1
  282. package/dist/test/collections/index.js +0 -1
  283. package/dist/test/collections/index.js.map +1 -1
  284. package/dist/test/collections/library.examples.d.ts.map +1 -1
  285. package/dist/test/collections/library.examples.js +6 -7
  286. package/dist/test/collections/library.examples.js.map +1 -1
  287. package/dist/test/collections/schematic.examples.d.ts.map +1 -1
  288. package/dist/test/collections/schematic.examples.js +11 -19
  289. package/dist/test/collections/schematic.examples.js.map +1 -1
  290. package/dist/test/collections/tree-view.examples.js +2 -2
  291. package/dist/test/contracts/editing.examples.d.ts +1 -0
  292. package/dist/test/contracts/editing.examples.d.ts.map +1 -1
  293. package/dist/test/contracts/editing.examples.js +37 -6
  294. package/dist/test/contracts/editing.examples.js.map +1 -1
  295. package/dist/test/contracts/fields.examples.d.ts +7 -0
  296. package/dist/test/contracts/fields.examples.d.ts.map +1 -0
  297. package/dist/test/contracts/fields.examples.js +42 -0
  298. package/dist/test/contracts/fields.examples.js.map +1 -0
  299. package/dist/test/display/avatar.examples.d.ts.map +1 -1
  300. package/dist/test/display/avatar.examples.js +3 -3
  301. package/dist/test/display/avatar.examples.js.map +1 -1
  302. package/dist/test/display/icon.examples.d.ts.map +1 -1
  303. package/dist/test/display/icon.examples.js +12 -11
  304. package/dist/test/display/icon.examples.js.map +1 -1
  305. package/dist/test/feedback/empty-state.examples.js +9 -9
  306. package/dist/test/feedback/empty-state.examples.js.map +1 -1
  307. package/dist/test/layout/dock.examples.d.ts +0 -8
  308. package/dist/test/layout/dock.examples.d.ts.map +1 -1
  309. package/dist/test/layout/dock.examples.js +2 -42
  310. package/dist/test/layout/dock.examples.js.map +1 -1
  311. package/dist/test/layout/snap-grid.examples.d.ts.map +1 -1
  312. package/dist/test/layout/snap-grid.examples.js +18 -28
  313. package/dist/test/layout/snap-grid.examples.js.map +1 -1
  314. package/dist/test/navigation/index.d.ts +0 -2
  315. package/dist/test/navigation/index.d.ts.map +1 -1
  316. package/dist/test/navigation/index.js +0 -2
  317. package/dist/test/navigation/index.js.map +1 -1
  318. package/dist/test/navigation/nav-list.examples.js.map +1 -1
  319. package/dist/test/platform/index.d.ts +1 -0
  320. package/dist/test/platform/index.d.ts.map +1 -1
  321. package/dist/test/platform/index.js +1 -0
  322. package/dist/test/platform/index.js.map +1 -1
  323. package/dist/test/platform/slice-local.examples.d.ts +2 -0
  324. package/dist/test/platform/slice-local.examples.d.ts.map +1 -0
  325. package/dist/test/platform/slice-local.examples.js +31 -0
  326. package/dist/test/platform/slice-local.examples.js.map +1 -0
  327. package/dist/test/platform/slice.examples.js +61 -61
  328. package/dist/test/platform/slice.examples.js.map +1 -1
  329. package/dist/test/slice/slice.examples.d.ts +0 -1
  330. package/dist/test/slice/slice.examples.d.ts.map +1 -1
  331. package/dist/test/slice/slice.examples.js +67 -181
  332. package/dist/test/slice/slice.examples.js.map +1 -1
  333. package/package.json +4 -4
  334. package/dist/src/collections/board/index.d.ts +0 -855
  335. package/dist/src/collections/board/index.d.ts.map +0 -1
  336. package/dist/src/collections/board/index.js +0 -416
  337. package/dist/src/collections/board/index.js.map +0 -1
  338. package/dist/src/collections/board/types.d.ts +0 -111
  339. package/dist/src/collections/board/types.d.ts.map +0 -1
  340. package/dist/src/collections/board/types.js +0 -89
  341. package/dist/src/collections/board/types.js.map +0 -1
  342. package/dist/src/collections/calendar/index.d.ts +0 -446
  343. package/dist/src/collections/calendar/index.d.ts.map +0 -1
  344. package/dist/src/collections/calendar/index.js +0 -287
  345. package/dist/src/collections/calendar/index.js.map +0 -1
  346. package/dist/src/collections/calendar/types.d.ts +0 -338
  347. package/dist/src/collections/calendar/types.d.ts.map +0 -1
  348. package/dist/src/collections/calendar/types.js +0 -206
  349. package/dist/src/collections/calendar/types.js.map +0 -1
  350. package/dist/src/collections/flowchart/index.d.ts +0 -430
  351. package/dist/src/collections/flowchart/index.d.ts.map +0 -1
  352. package/dist/src/collections/flowchart/index.js +0 -292
  353. package/dist/src/collections/flowchart/index.js.map +0 -1
  354. package/dist/src/collections/flowchart/types.d.ts +0 -333
  355. package/dist/src/collections/flowchart/types.d.ts.map +0 -1
  356. package/dist/src/collections/flowchart/types.js +0 -263
  357. package/dist/src/collections/flowchart/types.js.map +0 -1
  358. package/dist/src/collections/plan/assemble.d.ts +0 -2274
  359. package/dist/src/collections/plan/assemble.d.ts.map +0 -1
  360. package/dist/src/collections/plan/assemble.js +0 -210
  361. package/dist/src/collections/plan/assemble.js.map +0 -1
  362. package/dist/src/collections/plan/builders.d.ts +0 -765
  363. package/dist/src/collections/plan/builders.d.ts.map +0 -1
  364. package/dist/src/collections/plan/builders.js +0 -673
  365. package/dist/src/collections/plan/builders.js.map +0 -1
  366. package/dist/src/collections/plan/factories.d.ts +0 -512
  367. package/dist/src/collections/plan/factories.d.ts.map +0 -1
  368. package/dist/src/collections/plan/factories.js +0 -539
  369. package/dist/src/collections/plan/factories.js.map +0 -1
  370. package/dist/src/collections/plan/index.d.ts +0 -324
  371. package/dist/src/collections/plan/index.d.ts.map +0 -1
  372. package/dist/src/collections/plan/index.js +0 -193
  373. package/dist/src/collections/plan/index.js.map +0 -1
  374. package/dist/src/collections/plan/ir.d.ts +0 -2490
  375. package/dist/src/collections/plan/ir.d.ts.map +0 -1
  376. package/dist/src/collections/plan/ir.js +0 -107
  377. package/dist/src/collections/plan/ir.js.map +0 -1
  378. package/dist/src/collections/plan/pick.d.ts +0 -133
  379. package/dist/src/collections/plan/pick.d.ts.map +0 -1
  380. package/dist/src/collections/plan/pick.js +0 -208
  381. package/dist/src/collections/plan/pick.js.map +0 -1
  382. package/dist/src/collections/plan/root.d.ts +0 -297
  383. package/dist/src/collections/plan/root.d.ts.map +0 -1
  384. package/dist/src/collections/plan/root.js +0 -427
  385. package/dist/src/collections/plan/root.js.map +0 -1
  386. package/dist/src/collections/plan/series.d.ts +0 -13887
  387. package/dist/src/collections/plan/series.d.ts.map +0 -1
  388. package/dist/src/collections/plan/series.js +0 -1710
  389. package/dist/src/collections/plan/series.js.map +0 -1
  390. package/dist/src/collections/plan/types.d.ts +0 -12612
  391. package/dist/src/collections/plan/types.d.ts.map +0 -1
  392. package/dist/src/collections/plan/types.js +0 -1345
  393. package/dist/src/collections/plan/types.js.map +0 -1
  394. package/dist/src/collections/roster/index.d.ts +0 -787
  395. package/dist/src/collections/roster/index.d.ts.map +0 -1
  396. package/dist/src/collections/roster/index.js +0 -325
  397. package/dist/src/collections/roster/index.js.map +0 -1
  398. package/dist/src/collections/roster/types.d.ts +0 -97
  399. package/dist/src/collections/roster/types.d.ts.map +0 -1
  400. package/dist/src/collections/roster/types.js +0 -72
  401. package/dist/src/collections/roster/types.js.map +0 -1
  402. package/dist/src/collections/sheet/bridge.d.ts +0 -376
  403. package/dist/src/collections/sheet/bridge.d.ts.map +0 -1
  404. package/dist/src/collections/sheet/bridge.js +0 -773
  405. package/dist/src/collections/sheet/bridge.js.map +0 -1
  406. package/dist/src/collections/sheet/columns.d.ts +0 -410
  407. package/dist/src/collections/sheet/columns.d.ts.map +0 -1
  408. package/dist/src/collections/sheet/columns.js +0 -99
  409. package/dist/src/collections/sheet/columns.js.map +0 -1
  410. package/dist/src/collections/sheet/context-bridge.d.ts +0 -48
  411. package/dist/src/collections/sheet/context-bridge.d.ts.map +0 -1
  412. package/dist/src/collections/sheet/context-bridge.js +0 -216
  413. package/dist/src/collections/sheet/context-bridge.js.map +0 -1
  414. package/dist/src/collections/sheet/draft-bridge.d.ts +0 -37
  415. package/dist/src/collections/sheet/draft-bridge.d.ts.map +0 -1
  416. package/dist/src/collections/sheet/draft-bridge.js +0 -153
  417. package/dist/src/collections/sheet/draft-bridge.js.map +0 -1
  418. package/dist/src/collections/sheet/drafts.d.ts +0 -14
  419. package/dist/src/collections/sheet/drafts.d.ts.map +0 -1
  420. package/dist/src/collections/sheet/drafts.js +0 -14
  421. package/dist/src/collections/sheet/drafts.js.map +0 -1
  422. package/dist/src/collections/sheet/editing-bridge.d.ts +0 -36
  423. package/dist/src/collections/sheet/editing-bridge.d.ts.map +0 -1
  424. package/dist/src/collections/sheet/editing-bridge.js +0 -196
  425. package/dist/src/collections/sheet/editing-bridge.js.map +0 -1
  426. package/dist/src/collections/sheet/editing-types.d.ts +0 -268
  427. package/dist/src/collections/sheet/editing-types.d.ts.map +0 -1
  428. package/dist/src/collections/sheet/editing-types.js +0 -34
  429. package/dist/src/collections/sheet/editing-types.js.map +0 -1
  430. package/dist/src/collections/sheet/edits.d.ts +0 -37
  431. package/dist/src/collections/sheet/edits.d.ts.map +0 -1
  432. package/dist/src/collections/sheet/edits.js +0 -31
  433. package/dist/src/collections/sheet/edits.js.map +0 -1
  434. package/dist/src/collections/sheet/group.d.ts +0 -165
  435. package/dist/src/collections/sheet/group.d.ts.map +0 -1
  436. package/dist/src/collections/sheet/group.js +0 -52
  437. package/dist/src/collections/sheet/group.js.map +0 -1
  438. package/dist/src/collections/sheet/index.d.ts +0 -351
  439. package/dist/src/collections/sheet/index.d.ts.map +0 -1
  440. package/dist/src/collections/sheet/index.js +0 -208
  441. package/dist/src/collections/sheet/index.js.map +0 -1
  442. package/dist/src/collections/sheet/link.d.ts +0 -398
  443. package/dist/src/collections/sheet/link.d.ts.map +0 -1
  444. package/dist/src/collections/sheet/link.js +0 -228
  445. package/dist/src/collections/sheet/link.js.map +0 -1
  446. package/dist/src/collections/sheet/registers.d.ts +0 -278
  447. package/dist/src/collections/sheet/registers.d.ts.map +0 -1
  448. package/dist/src/collections/sheet/registers.js +0 -268
  449. package/dist/src/collections/sheet/registers.js.map +0 -1
  450. package/dist/src/collections/sheet/root.d.ts +0 -328
  451. package/dist/src/collections/sheet/root.d.ts.map +0 -1
  452. package/dist/src/collections/sheet/root.js +0 -432
  453. package/dist/src/collections/sheet/root.js.map +0 -1
  454. package/dist/src/collections/sheet/seed-bridge.d.ts +0 -14
  455. package/dist/src/collections/sheet/seed-bridge.d.ts.map +0 -1
  456. package/dist/src/collections/sheet/seed-bridge.js +0 -51
  457. package/dist/src/collections/sheet/seed-bridge.js.map +0 -1
  458. package/dist/src/collections/sheet/sub-rows.d.ts +0 -249
  459. package/dist/src/collections/sheet/sub-rows.d.ts.map +0 -1
  460. package/dist/src/collections/sheet/sub-rows.js +0 -222
  461. package/dist/src/collections/sheet/sub-rows.js.map +0 -1
  462. package/dist/src/collections/sheet/transactions.d.ts +0 -76
  463. package/dist/src/collections/sheet/transactions.d.ts.map +0 -1
  464. package/dist/src/collections/sheet/transactions.js +0 -40
  465. package/dist/src/collections/sheet/transactions.js.map +0 -1
  466. package/dist/src/collections/sheet/types.d.ts +0 -14992
  467. package/dist/src/collections/sheet/types.d.ts.map +0 -1
  468. package/dist/src/collections/sheet/types.js +0 -1061
  469. package/dist/src/collections/sheet/types.js.map +0 -1
  470. package/dist/src/navigation/app/index.d.ts +0 -150
  471. package/dist/src/navigation/app/index.d.ts.map +0 -1
  472. package/dist/src/navigation/app/index.js +0 -191
  473. package/dist/src/navigation/app/index.js.map +0 -1
  474. package/dist/src/navigation/pages/index.d.ts +0 -165
  475. package/dist/src/navigation/pages/index.d.ts.map +0 -1
  476. package/dist/src/navigation/pages/index.js +0 -152
  477. package/dist/src/navigation/pages/index.js.map +0 -1
  478. package/dist/src/navigation/pages/types.d.ts +0 -111
  479. package/dist/src/navigation/pages/types.d.ts.map +0 -1
  480. package/dist/src/navigation/pages/types.js +0 -101
  481. package/dist/src/navigation/pages/types.js.map +0 -1
  482. package/dist/src/runtime/collections/board.d.ts +0 -73
  483. package/dist/src/runtime/collections/board.d.ts.map +0 -1
  484. package/dist/src/runtime/collections/board.js +0 -68
  485. package/dist/src/runtime/collections/board.js.map +0 -1
  486. package/dist/src/runtime/collections/calendar.d.ts +0 -54
  487. package/dist/src/runtime/collections/calendar.d.ts.map +0 -1
  488. package/dist/src/runtime/collections/calendar.js +0 -54
  489. package/dist/src/runtime/collections/calendar.js.map +0 -1
  490. package/dist/src/runtime/collections/flowchart.d.ts +0 -58
  491. package/dist/src/runtime/collections/flowchart.d.ts.map +0 -1
  492. package/dist/src/runtime/collections/flowchart.js +0 -54
  493. package/dist/src/runtime/collections/flowchart.js.map +0 -1
  494. package/dist/src/runtime/collections/plan.d.ts +0 -181
  495. package/dist/src/runtime/collections/plan.d.ts.map +0 -1
  496. package/dist/src/runtime/collections/plan.js +0 -186
  497. package/dist/src/runtime/collections/plan.js.map +0 -1
  498. package/dist/src/runtime/collections/roster.d.ts +0 -60
  499. package/dist/src/runtime/collections/roster.d.ts.map +0 -1
  500. package/dist/src/runtime/collections/roster.js +0 -59
  501. package/dist/src/runtime/collections/roster.js.map +0 -1
  502. package/dist/src/runtime/collections/sheet.d.ts +0 -122
  503. package/dist/src/runtime/collections/sheet.d.ts.map +0 -1
  504. package/dist/src/runtime/collections/sheet.js +0 -73
  505. package/dist/src/runtime/collections/sheet.js.map +0 -1
  506. package/dist/src/runtime/navigation/app.d.ts +0 -52
  507. package/dist/src/runtime/navigation/app.d.ts.map +0 -1
  508. package/dist/src/runtime/navigation/app.js +0 -53
  509. package/dist/src/runtime/navigation/app.js.map +0 -1
  510. package/dist/src/runtime/navigation/pages.d.ts +0 -50
  511. package/dist/src/runtime/navigation/pages.d.ts.map +0 -1
  512. package/dist/src/runtime/navigation/pages.js +0 -52
  513. package/dist/src/runtime/navigation/pages.js.map +0 -1
  514. package/dist/src/runtime/navigation/route.d.ts +0 -46
  515. package/dist/src/runtime/navigation/route.d.ts.map +0 -1
  516. package/dist/src/runtime/navigation/route.js +0 -47
  517. package/dist/src/runtime/navigation/route.js.map +0 -1
  518. package/dist/test/collections/board.examples.d.ts +0 -18
  519. package/dist/test/collections/board.examples.d.ts.map +0 -1
  520. package/dist/test/collections/board.examples.js +0 -297
  521. package/dist/test/collections/board.examples.js.map +0 -1
  522. package/dist/test/collections/calendar.examples.d.ts +0 -5
  523. package/dist/test/collections/calendar.examples.d.ts.map +0 -1
  524. package/dist/test/collections/calendar.examples.js +0 -147
  525. package/dist/test/collections/calendar.examples.js.map +0 -1
  526. package/dist/test/collections/flowchart.examples.d.ts +0 -17
  527. package/dist/test/collections/flowchart.examples.d.ts.map +0 -1
  528. package/dist/test/collections/flowchart.examples.js +0 -243
  529. package/dist/test/collections/flowchart.examples.js.map +0 -1
  530. package/dist/test/collections/plan.examples.d.ts +0 -200
  531. package/dist/test/collections/plan.examples.d.ts.map +0 -1
  532. package/dist/test/collections/plan.examples.js +0 -3665
  533. package/dist/test/collections/plan.examples.js.map +0 -1
  534. package/dist/test/collections/roster.examples.d.ts +0 -26
  535. package/dist/test/collections/roster.examples.d.ts.map +0 -1
  536. package/dist/test/collections/roster.examples.js +0 -237
  537. package/dist/test/collections/roster.examples.js.map +0 -1
  538. package/dist/test/collections/sheet-link.examples.d.ts +0 -7
  539. package/dist/test/collections/sheet-link.examples.d.ts.map +0 -1
  540. package/dist/test/collections/sheet-link.examples.js +0 -41
  541. package/dist/test/collections/sheet-link.examples.js.map +0 -1
  542. package/dist/test/collections/sheet-transactions.examples.d.ts +0 -7
  543. package/dist/test/collections/sheet-transactions.examples.d.ts.map +0 -1
  544. package/dist/test/collections/sheet-transactions.examples.js +0 -58
  545. package/dist/test/collections/sheet-transactions.examples.js.map +0 -1
  546. package/dist/test/collections/sheet.examples.d.ts +0 -96
  547. package/dist/test/collections/sheet.examples.d.ts.map +0 -1
  548. package/dist/test/collections/sheet.examples.js +0 -1040
  549. package/dist/test/collections/sheet.examples.js.map +0 -1
  550. package/dist/test/navigation/app.examples.d.ts +0 -22
  551. package/dist/test/navigation/app.examples.d.ts.map +0 -1
  552. package/dist/test/navigation/app.examples.js +0 -136
  553. package/dist/test/navigation/app.examples.js.map +0 -1
  554. package/dist/test/navigation/pages.examples.d.ts +0 -13
  555. package/dist/test/navigation/pages.examples.d.ts.map +0 -1
  556. package/dist/test/navigation/pages.examples.js +0 -113
  557. package/dist/test/navigation/pages.examples.js.map +0 -1
  558. package/dist/test/navigation/route.examples.d.ts +0 -13
  559. package/dist/test/navigation/route.examples.d.ts.map +0 -1
  560. package/dist/test/navigation/route.examples.js +0 -69
  561. package/dist/test/navigation/route.examples.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /** Record narrowing, shared by the platform handle and its controls. */
6
+ import { variant, type EastType, type StructType, type ValueTypeOf, type option } from "@elaraai/east";
7
+ import { type RecordSlicePlan } from "../platform/slice/record-plan.js";
8
+ import type { RecordSliceConfigType, RecordSliceStateType, RecordSliceWhereType, RecordSliceChoiceType, RecordSliceCountType, RecordSliceDomainType } from "../platform/slice/record-types.js";
9
+ import { RecordSliceSource, type RecordSliceReader } from "./record-slice-source.js";
10
+ type Config = ValueTypeOf<RecordSliceConfigType>;
11
+ type State = ValueTypeOf<RecordSliceStateType>;
12
+ type Where = ValueTypeOf<RecordSliceWhereType>;
13
+ type Choice = ValueTypeOf<RecordSliceChoiceType>;
14
+ type Count = ValueTypeOf<RecordSliceCountType>;
15
+ /** Only the index key is inspected; record rows and covering values stay opaque. */
16
+ export interface RecordSliceEntry {
17
+ /** Tagged key of the index that served the entry. */
18
+ ik: variant<string, unknown>;
19
+ /** Original key, inspected only by editing confirmation. */
20
+ key?: unknown;
21
+ /** Joined row, encoded whole only for editing confirmation. */
22
+ row?: option<unknown>;
23
+ }
24
+ /** Indexed reads together with the binding's stable identity and default path. */
25
+ export interface RecordSliceBinding extends RecordSliceReader<RecordSliceEntry> {
26
+ /** Binding identity. */
27
+ id: string;
28
+ /** Primary record identity, independent of the listed indexes. */
29
+ recordId: string;
30
+ /** Unfiltered source with one entry per primary row. */
31
+ defaultIndex: string;
32
+ /** Exact maintained entry keys for one row, for indexed membership checks. */
33
+ entryKeys(index: string, key: unknown, row: unknown): string[];
34
+ /** Follow a confirmed record state or the current state. */
35
+ refresh(hash: option<string>): null;
36
+ }
37
+ /**
38
+ * Validates all custom-control input and delegates every record query to the
39
+ * indexed binding. It never evaluates a predicate over a record row.
40
+ */
41
+ export declare class RecordSliceController {
42
+ readonly source: RecordSliceBinding;
43
+ readonly config: Config;
44
+ readonly readState: () => State;
45
+ private readonly writeState;
46
+ private readonly primaryKey;
47
+ /** Bounded, revision-aware windows shared by counts and data. */
48
+ readonly windows: RecordSliceSource<RecordSliceEntry>;
49
+ private readonly encodeRow;
50
+ private readonly decodeRow;
51
+ private readonly schemas;
52
+ private readonly parse;
53
+ private readonly print;
54
+ /**
55
+ * @param source - Bound indexed reads.
56
+ * @param config - Author-derived field metadata and paths.
57
+ * @param row - Record row type recovered from the platform's source type.
58
+ * @param readState - Tracked state read.
59
+ * @param writeState - Shared store write, including persistence.
60
+ * @param primaryKey - Original key type; String ids stay raw, other ids are East literals.
61
+ * @param indexes - Type metadata for computed fields, carried by the source.
62
+ */
63
+ constructor(source: RecordSliceBinding, config: Config, row: StructType, readState: () => State, writeState: (state: State) => void, primaryKey?: EastType, indexes?: StructType);
64
+ private schema;
65
+ private readValue;
66
+ private validate;
67
+ /** Validate the whole state before a custom control or saved view writes it. */
68
+ write(state: State): null;
69
+ /** Compile a supported narrowing, refusing an incompatible saved/custom state. */
70
+ plan(where: Where): RecordSlicePlan;
71
+ /** The next valid state for one choice; shared with prospective counts. */
72
+ proposed(field: string, choice: Choice | undefined): Where;
73
+ /** Apply one choice, clearing incompatible trailing clauses together. */
74
+ choose(field: string, choice: Choice | undefined): null;
75
+ /** Clear narrowing while preserving presentation resolution. */
76
+ clearAll(): null;
77
+ /** Set or clear a named narrowing. */
78
+ togglePreset(id: string): null;
79
+ /** Exact count, never a partial sum while another query is pending. */
80
+ count(where?: Where): option<bigint>;
81
+ /**
82
+ * Measure a numeric/date field using only boundary index entries. Leading
83
+ * choices remain applied; this field's own range is ignored. Unset entries
84
+ * are skipped with one exact search, never by walking their rows.
85
+ */
86
+ domain(field: string): option<ValueTypeOf<RecordSliceDomainType>>;
87
+ /** Confirm a saved entry without confusing a filtered-out row with a deletion. */
88
+ readEntry(id: string): option<option<Uint8Array>>;
89
+ /**
90
+ * Exact membership of one primary identity, independent of loaded pages.
91
+ * Reads that row once, then seeks its maintained keys against the selected
92
+ * server bounds. Interval fan-out and Set indexes keep primary identity;
93
+ * no predicate is evaluated over the row or a fetched run.
94
+ */
95
+ contains(where: Where, id: string): option<boolean>;
96
+ /** Labels a typical exact choice would replace, for advance explanation. */
97
+ replaces(field: string): string[];
98
+ private counted;
99
+ /** Known choices with exact prospective counts; one failure does not hide others. */
100
+ values(field: string): Count[];
101
+ /**
102
+ * Find up to eight distinct String values by jumping over each value's exact
103
+ * bounds. At most one entry is read for a visited value, even if that value
104
+ * appears millions of times. Set searches only suggest exact membership;
105
+ * they never turn their potentially duplicated prefix ranges into rows.
106
+ */
107
+ suggest(field: string, text: string): option<Count[]>;
108
+ }
109
+ export {};
110
+ //# sourceMappingURL=record-slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/record-slice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /** Record narrowing, shared by the platform handle and its controls. */
6
+ import { StringType, compareFor, decodeBeast2For, encodeBeast2For, none, parseFor, printFor, some, variant, } from "@elaraai/east";
7
+ import { recordSliceFieldSchema, recordSliceFieldTypes } from "../platform/slice/record.js";
8
+ import { planRecordSlice, recordChoiceWhere, recordPlanIndex } from "../platform/slice/record-plan.js";
9
+ import { RecordSliceSource } from "./record-slice-source.js";
10
+ /**
11
+ * Validates all custom-control input and delegates every record query to the
12
+ * indexed binding. It never evaluates a predicate over a record row.
13
+ */
14
+ export class RecordSliceController {
15
+ source;
16
+ config;
17
+ readState;
18
+ writeState;
19
+ primaryKey;
20
+ /** Bounded, revision-aware windows shared by counts and data. */
21
+ windows;
22
+ encodeRow;
23
+ decodeRow;
24
+ schemas = new Map();
25
+ parse = new Map();
26
+ print = new Map();
27
+ /**
28
+ * @param source - Bound indexed reads.
29
+ * @param config - Author-derived field metadata and paths.
30
+ * @param row - Record row type recovered from the platform's source type.
31
+ * @param readState - Tracked state read.
32
+ * @param writeState - Shared store write, including persistence.
33
+ * @param primaryKey - Original key type; String ids stay raw, other ids are East literals.
34
+ * @param indexes - Type metadata for computed fields, carried by the source.
35
+ */
36
+ constructor(source, config, row, readState, writeState, primaryKey = StringType, indexes) {
37
+ this.source = source;
38
+ this.config = config;
39
+ this.readState = readState;
40
+ this.writeState = writeState;
41
+ this.primaryKey = primaryKey;
42
+ this.encodeRow = encodeBeast2For(row);
43
+ this.decodeRow = decodeBeast2For(row);
44
+ this.windows = new RecordSliceSource(source);
45
+ const fieldTypes = recordSliceFieldTypes(row, indexes);
46
+ for (const field of config.fields) {
47
+ const type = fieldTypes[field.fieldId];
48
+ if (type === undefined)
49
+ throw new Error(`Unknown field '${field.label}'`);
50
+ const schema = recordSliceFieldSchema(type, field.fieldId);
51
+ this.schemas.set(field.fieldId, schema);
52
+ this.parse.set(field.fieldId, parseFor(schema.key));
53
+ this.print.set(field.fieldId, printFor(schema.key));
54
+ }
55
+ }
56
+ schema(field) {
57
+ const schema = this.schemas.get(field);
58
+ if (schema === undefined)
59
+ throw new Error(`Unknown field '${field}'`);
60
+ return schema;
61
+ }
62
+ readValue(field, text) {
63
+ this.schema(field);
64
+ const result = this.parse.get(field)(text);
65
+ if (!result.success)
66
+ throw new Error(`Invalid value for ${this.config.fields.find(f => f.fieldId === field).label}: ${result.error}`);
67
+ return result.value;
68
+ }
69
+ validate(field, choice) {
70
+ const schema = this.schema(field);
71
+ const print = this.print.get(field);
72
+ if (choice.type === "values") {
73
+ const values = [...new Set(choice.value.map(text => print(this.readValue(field, text))))];
74
+ if (values.length === 0 || (schema.set && values.length !== 1))
75
+ throw new Error(schema.set ? "Choose one value" : "Choose at least one value");
76
+ return variant("values", values);
77
+ }
78
+ if (choice.type === "prefix") {
79
+ if (schema.kind !== "string" || schema.set)
80
+ throw new Error("Choose an exact value for this field");
81
+ return choice;
82
+ }
83
+ if (schema.set || !["datetime", "integer", "float"].includes(schema.kind))
84
+ throw new Error("This field does not support a range");
85
+ const from = this.readValue(field, choice.value.from);
86
+ const to = this.readValue(field, choice.value.to);
87
+ if (schema.optional && (from.type === "none" || to.type === "none"))
88
+ throw new Error("Choose two range endpoints");
89
+ if (compareFor(schema.key)(from, to) >= 0)
90
+ throw new Error("The range end must be after its start");
91
+ return variant("range", { from: print(from), to: print(to) });
92
+ }
93
+ /** Validate the whole state before a custom control or saved view writes it. */
94
+ write(state) {
95
+ const where = new Map([...state.where].map(([field, choice]) => [field, this.validate(field, choice)]));
96
+ this.plan(where);
97
+ if (state.preset.type === "some" && !this.config.presets.some(preset => preset.id === state.preset.value))
98
+ throw new Error("Unknown preset");
99
+ this.writeState({ ...state, where });
100
+ return null;
101
+ }
102
+ /** Compile a supported narrowing, refusing an incompatible saved/custom state. */
103
+ plan(where) {
104
+ const plan = planRecordSlice(this.config.indexes, where, this.source.defaultIndex);
105
+ if (plan === null)
106
+ throw new Error("These choices cannot be combined; clear a field and try again");
107
+ return plan;
108
+ }
109
+ /** The next valid state for one choice; shared with prospective counts. */
110
+ proposed(field, choice) {
111
+ this.schema(field);
112
+ const next = recordChoiceWhere(this.config.indexes, this.readState().where, field, choice === undefined ? undefined : this.validate(field, choice));
113
+ if (next === null)
114
+ throw new Error("Choose the preceding fields before this field");
115
+ this.plan(next);
116
+ return next;
117
+ }
118
+ /** Apply one choice, clearing incompatible trailing clauses together. */
119
+ choose(field, choice) {
120
+ return this.write({ ...this.readState(), where: this.proposed(field, choice), preset: none });
121
+ }
122
+ /** Clear narrowing while preserving presentation resolution. */
123
+ clearAll() { return this.write({ ...this.readState(), where: new Map(), preset: none }); }
124
+ /** Set or clear a named narrowing. */
125
+ togglePreset(id) {
126
+ const state = this.readState();
127
+ if (state.preset.type === "some" && state.preset.value === id)
128
+ return this.clearAll();
129
+ const preset = this.config.presets.find(value => value.id === id);
130
+ if (preset === undefined)
131
+ throw new Error("Unknown preset");
132
+ return this.write({ ...state, where: preset.where, preset: some(id) });
133
+ }
134
+ /** Exact count, never a partial sum while another query is pending. */
135
+ count(where = this.readState().where) {
136
+ const result = this.windows.resolve(this.plan(where));
137
+ return result.type === "some" ? some(result.value.total) : none;
138
+ }
139
+ /**
140
+ * Measure a numeric/date field using only boundary index entries. Leading
141
+ * choices remain applied; this field's own range is ignored. Unset entries
142
+ * are skipped with one exact search, never by walking their rows.
143
+ */
144
+ domain(field) {
145
+ const schema = this.schema(field);
146
+ if (schema.set || !["datetime", "integer", "float"].includes(schema.kind))
147
+ throw new Error("This field has no range");
148
+ const proposal = recordChoiceWhere(this.config.indexes, this.readState().where, field, variant("range", { from: "", to: "" }));
149
+ if (proposal === null)
150
+ return none;
151
+ const index = recordPlanIndex(this.config.indexes, proposal);
152
+ if (index === undefined)
153
+ return none;
154
+ const position = index.fields.indexOf(field);
155
+ const leading = new Map([...proposal].filter(([name]) => index.fields.indexOf(name) < position));
156
+ const plan = planRecordSlice([index], leading, index.name);
157
+ const bounds = this.windows.resolve(plan);
158
+ if (bounds.type === "none")
159
+ return none;
160
+ const compare = compareFor(schema.key);
161
+ const print = this.print.get(field);
162
+ let min;
163
+ let max;
164
+ let pending = false;
165
+ const keyOf = (entry) => {
166
+ if (entry.ik.type !== index.name)
167
+ throw new Error("The source returned a different ordering");
168
+ return !index.structured ? entry.ik.value : entry.ik.value[field];
169
+ };
170
+ for (const run of bounds.value.runs) {
171
+ if (run.count === 0n)
172
+ continue;
173
+ let start = run.row;
174
+ let first = this.source.page(index.name, start, 1n);
175
+ const last = this.source.page(index.name, run.row + run.count - 1n, 1n);
176
+ if (first.type === "none" || last.type === "none") {
177
+ pending = true;
178
+ continue;
179
+ }
180
+ let entry = first.value[0];
181
+ const end = last.value[0];
182
+ if (entry === undefined || end === undefined)
183
+ throw new Error("The results changed while reading the range; retry");
184
+ if (schema.optional && keyOf(entry).type === "none") {
185
+ const fields = index.structured
186
+ ? index.fields.slice(0, position + 1).map(name => this.print.get(name)(entry.ik.value[name])) : [];
187
+ if (index.interval.type === "some")
188
+ fields.splice(index.fields.length - 1, 0, "0");
189
+ const query = !index.structured ? variant("key", print(none))
190
+ : variant("fields", { values: fields, prefix: none });
191
+ const unset = this.source.seek(index.name, query);
192
+ if (unset.type === "none") {
193
+ pending = true;
194
+ continue;
195
+ }
196
+ start = unset.value.row + unset.value.count;
197
+ if (start >= run.row + run.count)
198
+ continue;
199
+ if (start <= run.row)
200
+ throw new Error("Range search did not advance; retry");
201
+ first = this.source.page(index.name, start, 1n);
202
+ if (first.type === "none") {
203
+ pending = true;
204
+ continue;
205
+ }
206
+ entry = first.value[0];
207
+ if (entry === undefined)
208
+ throw new Error("The results changed while reading the range; retry");
209
+ }
210
+ const low = keyOf(entry);
211
+ const high = keyOf(end);
212
+ if (min === undefined || compare(low, min) < 0)
213
+ min = low;
214
+ if (max === undefined || compare(high, max) > 0)
215
+ max = high;
216
+ }
217
+ const revision = this.source.revision();
218
+ if (pending || min === undefined || revision.type === "none" || revision.value !== bounds.value.revision)
219
+ return none;
220
+ return some({ from: print(min), to: print(max) });
221
+ }
222
+ /** Confirm a saved entry without confusing a filtered-out row with a deletion. */
223
+ readEntry(id) {
224
+ const revision = this.source.revision();
225
+ if (revision.type === "none")
226
+ return none;
227
+ const text = this.primaryKey.type === "String" ? printFor(StringType)(id) : id;
228
+ const key = parseFor(this.primaryKey)(text);
229
+ if (!key.success)
230
+ throw new Error("Invalid record identity");
231
+ const found = this.source.seek("primary", variant("key", text));
232
+ if (found.type === "none")
233
+ return none;
234
+ let result = none;
235
+ if (found.value.found) {
236
+ const page = this.source.page("primary", found.value.row, 1n);
237
+ if (page.type === "none")
238
+ return none;
239
+ const entry = page.value[0];
240
+ if (entry === undefined || entry.row?.type !== "some" || compareFor(this.primaryKey)(entry.key, key.value) !== 0) {
241
+ throw new Error("The record changed while confirming the edit; retry");
242
+ }
243
+ result = some(this.encodeRow(entry.row.value));
244
+ }
245
+ const current = this.source.revision();
246
+ return current.type === "some" && current.value === revision.value ? some(result) : none;
247
+ }
248
+ /**
249
+ * Exact membership of one primary identity, independent of loaded pages.
250
+ * Reads that row once, then seeks its maintained keys against the selected
251
+ * server bounds. Interval fan-out and Set indexes keep primary identity;
252
+ * no predicate is evaluated over the row or a fetched run.
253
+ */
254
+ contains(where, id) {
255
+ const plan = this.plan(where);
256
+ const runs = this.windows.resolve(plan);
257
+ const row = this.readEntry(id);
258
+ if (runs.type === "none" || row.type === "none")
259
+ return none;
260
+ const current = this.source.revision();
261
+ if (current.type === "none" || current.value !== runs.value.revision)
262
+ return none;
263
+ if (row.value.type === "none")
264
+ return some(false);
265
+ if (plan.index === "primary")
266
+ return some(true);
267
+ const key = parseFor(this.primaryKey)(this.primaryKey.type === "String" ? printFor(StringType)(id) : id);
268
+ if (!key.success)
269
+ throw new Error("Invalid record identity");
270
+ const keys = this.source.entryKeys(plan.index, key.value, this.decodeRow(row.value.value));
271
+ let pending = false;
272
+ let included = false;
273
+ for (const key of keys) {
274
+ const found = this.windows.seek(plan, variant("key", key));
275
+ if (found.type === "none")
276
+ pending = true;
277
+ else
278
+ included ||= found.value.found;
279
+ }
280
+ const revision = this.source.revision();
281
+ if (revision.type === "none" || revision.value !== runs.value.revision || (pending && !included))
282
+ return none;
283
+ return some(included);
284
+ }
285
+ /** Labels a typical exact choice would replace, for advance explanation. */
286
+ replaces(field) {
287
+ const state = this.readState();
288
+ const where = recordChoiceWhere(this.config.indexes, state.where, field, variant("values", [""]));
289
+ if (where === null)
290
+ return [];
291
+ return this.config.fields.filter(value => state.where.has(value.fieldId) && !where.has(value.fieldId)).map(value => value.label);
292
+ }
293
+ counted(field, value, label, toggle = false) {
294
+ const selected = this.readState().where.get(field);
295
+ const base = { value, label, selected: selected?.type === "values" && selected.value.includes(value) };
296
+ try {
297
+ const active = selected?.type === "values" ? selected.value : [];
298
+ const multiple = this.config.fields.find(candidate => candidate.fieldId === field).multiple;
299
+ const values = !toggle ? [value] : base.selected ? active.filter(candidate => candidate !== value) : multiple ? [...active, value] : [value];
300
+ return { ...base, count: this.count(this.proposed(field, values.length === 0 ? undefined : variant("values", values))), error: none };
301
+ }
302
+ catch (error) {
303
+ return { ...base, count: none, error: some(error instanceof Error ? error.message : "Could not load the count") };
304
+ }
305
+ }
306
+ /** Known choices with exact prospective counts; one failure does not hide others. */
307
+ values(field) {
308
+ this.schema(field);
309
+ return this.config.fields.find(value => value.fieldId === field).values.map(value => this.counted(field, value.value, value.label, true));
310
+ }
311
+ /**
312
+ * Find up to eight distinct String values by jumping over each value's exact
313
+ * bounds. At most one entry is read for a visited value, even if that value
314
+ * appears millions of times. Set searches only suggest exact membership;
315
+ * they never turn their potentially duplicated prefix ranges into rows.
316
+ */
317
+ suggest(field, text) {
318
+ const schema = this.schema(field);
319
+ if (schema.kind !== "string")
320
+ throw new Error("This field does not support text search");
321
+ const exact = this.print.get(field)(schema.optional ? some(text) : text);
322
+ const proposal = this.proposed(field, variant("values", [exact]));
323
+ const plan = this.plan(proposal);
324
+ const index = this.config.indexes.find(value => value.name === plan.index);
325
+ const position = index.fields.indexOf(field);
326
+ const leading = new Map([...proposal].filter(([name]) => index.fields.indexOf(name) < position));
327
+ leading.set(field, variant("prefix", text));
328
+ // Suggestion bounds may include fan-out entries; each displayed value
329
+ // gets its count from a separately validated exact-membership path.
330
+ const searchPlan = planRecordSlice([{ ...index, sets: new Set(), interval: none }], leading, this.source.defaultIndex);
331
+ const ranges = this.windows.resolve(searchPlan);
332
+ if (ranges.type === "none")
333
+ return none;
334
+ const values = [];
335
+ const seen = new Set();
336
+ for (const run of ranges.value.runs) {
337
+ let offset = run.row;
338
+ while (offset < run.row + run.count && values.length < 8) {
339
+ const page = this.source.page(index.name, offset, 1n);
340
+ if (page.type === "none")
341
+ return none;
342
+ const entry = page.value[0];
343
+ if (entry === undefined)
344
+ throw new Error("The results changed while searching; retry");
345
+ if (entry.ik.type !== index.name)
346
+ throw new Error("The source returned a different ordering");
347
+ const key = !index.structured ? entry.ik.value : entry.ik.value[field];
348
+ const literal = this.print.get(field)(key);
349
+ if (!seen.has(literal)) {
350
+ seen.add(literal);
351
+ const optional = key;
352
+ const value = schema.optional ? optional.type === "some" ? optional.value : "Unset" : key;
353
+ values.push(this.counted(field, literal, value));
354
+ }
355
+ const query = !index.structured ? variant("key", literal)
356
+ : variant("fields", { values: index.fields.slice(0, position + 1).map(name => this.print.get(name)(entry.ik.value[name])), prefix: none });
357
+ const next = this.source.seek(index.name, query);
358
+ if (next.type === "none")
359
+ return none;
360
+ const end = next.value.row + next.value.count;
361
+ if (end <= offset)
362
+ throw new Error("Search did not advance; retry");
363
+ offset = end;
364
+ }
365
+ if (values.length === 8)
366
+ break;
367
+ }
368
+ const current = this.source.revision();
369
+ if (current.type === "none" || current.value !== ranges.value.revision)
370
+ return none;
371
+ return some(values);
372
+ }
373
+ }
374
+ //# sourceMappingURL=record-slice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-slice.js","sourceRoot":"","sources":["../../../src/runtime/record-slice.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  * and write one shared narrowing state, plus the platform that creates and
8
8
  * applies it. A *slice* is a typed view over a row collection: a range, a set
9
9
  * of filter predicates, a search, a breakdown dimension, and saved cohorts.
10
- * You build it with the platform members (`Slice.config` declares the fields,
11
- * `Slice.bind` binds rows + initial `Slice.state` under a stable id) and then
10
+ * Bind rows with `Slice.bind(key, rows, options)` or indexed records with
11
+ * `Slice.bindRecord(key, binding, options)`, then
12
12
  * drop in whichever `<Slice.*>` controls a surface needs — they all stay in
13
13
  * sync because they target the same bound handle.
14
14
  *
@@ -25,23 +25,20 @@
25
25
  * ```tsx
26
26
  * // .tsx file with the `@jsxImportSource @elaraai/east-ui` pragma
27
27
  * import { East, StructType, StringType, IntegerType, ArrayType, none } from "@elaraai/east";
28
- * import { Reactive, Slice, Table, UIComponentType } from "@elaraai/east-ui";
28
+ * import { Reactive, Slice, Table, UIComponentType, VStack } from "@elaraai/east-ui";
29
29
  *
30
30
  * const view = East.function([], UIComponentType, _$ => {
31
31
  * const EventType = StructType({ scenario: StringType, sessions: IntegerType });
32
- * const cfg = Slice.config(EventType, {
33
- * fields: { scenario: { label: "Scenario" }, sessions: { label: "Sessions" } },
34
- * searchFieldIds: ["scenario"],
35
- * });
36
32
  * return (
37
33
  * <Reactive>{$ => {
38
34
  * const data = $.const([{ scenario: "v3", sessions: 42n }], ArrayType(EventType));
39
- * const slice = $.let(Slice.bind([EventType], "ex.slice", cfg, Slice.state(), data, none));
40
- * const filtered = $.let(Slice.apply.where([EventType], slice.read(), cfg, data));
35
+ * const slice = $.let(Slice.bind("ex.slice", data, { search: "scenario" }));
36
+ * const filtered = $.let(Slice.rows(slice));
41
37
  * return (
42
- * <Slice.Frame slice={slice} affordances={["filter", "search"]}>
38
+ * <VStack gap="3" align="stretch">
39
+ * <Slice.Rail slice={slice} affordances={["filter", "search"]} />
43
40
  * <Table data={filtered} columns={{ scenario: { header: "Scenario" }, sessions: { header: "Sessions" } }} />
44
- * </Slice.Frame>
41
+ * </VStack>
45
42
  * );
46
43
  * }}</Reactive>
47
44
  * );
@@ -49,8 +46,8 @@
49
46
  * ```
50
47
  *
51
48
  * @remarks
52
- * Carries the slice platform alongside the tags: `Slice.config` (declares the
53
- * fields), `Slice.bind` (binds rows + initial state under a stable id),
49
+ * Carries the slice platform alongside the tags: `Slice.bind` (typed rows in hand),
50
+ * `Slice.bindRecord` (paged indexed records), `Slice.config` (pure apply configuration),
54
51
  * `Slice.state` (the initial-state builder), `Slice.apply` (the pure
55
52
  * narrowing — `Slice.apply.where`, `.breakdown`, …), and `Slice.Types` (every
56
53
  * East type: `State`, `Predicate`, `Range`, `Breakdown`, `Cohort`,
@@ -72,6 +69,7 @@ type SliceTags = {
72
69
  Rail: JsxTag<OptionsProps<typeof SliceFactory.Rail.Root>>;
73
70
  config: typeof SliceFactory.config;
74
71
  bind: typeof SliceFactory.bind;
72
+ bindRecord: typeof SliceFactory.bindRecord;
75
73
  rows: typeof SliceFactory.rows;
76
74
  partition: typeof SliceFactory.partition;
77
75
  partitionRowType: typeof SliceFactory.partitionRowType;
@@ -1 +1 @@
1
- {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/slice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9E,gFAAgF;AAChF,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,YAAY,CAAC,SAAS,CAAC;IACzC,gBAAgB,EAAE,OAAO,YAAY,CAAC,gBAAgB,CAAC;IACvD,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,SAwWnB,CAAC"}
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../../src/runtime/slice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9E,gFAAgF;AAChF,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,UAAU,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,YAAY,CAAC,SAAS,CAAC;IACzC,gBAAgB,EAAE,OAAO,YAAY,CAAC,gBAAgB,CAAC;IACvD,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;IACjC,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,SAuTnB,CAAC"}