@revolist/ui 4.0.5-rc → 4.0.5

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/MIGRATION.md +36 -0
  2. package/OWNERSHIP.md +36 -36
  3. package/README.md +65 -408
  4. package/_button.scss +6 -2
  5. package/_chunks/{calendar-DsXIhybL.js → calendar-BQYQLu8Q.js} +5 -5
  6. package/_chunks/{cell-visuals-E-2oEKHg.js → cell-visuals-r6DOOhGh.js} +7 -7
  7. package/_chunks/{chart-frame-CuZABXVI.js → chart-frame-GprenwEg.js} +17 -13
  8. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  9. package/_chunks/{choice-chips-BhP8MZjs.js → choice-chips-C5OxD0GV.js} +3 -3
  10. package/_chunks/{color-palette-DMJUChWC.js → color-palette-7siNch__.js} +3 -3
  11. package/_chunks/{color-picker-B4TQvxxB.js → color-picker-Cfc9eqZb.js} +4 -4
  12. package/_chunks/{component-qKctqdzk.js → component-C3k_8uIq.js} +44 -45
  13. package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-DlVkpW3h.js} +1 -9
  14. package/_chunks/{configurator-actions-C19O1rda.js → configurator-actions-vRnI54mO.js} +3 -3
  15. package/_chunks/{control-BkWukVt9.js → control-BRfF5DWQ.js} +32 -7
  16. package/_chunks/{controller-hRBm_Lfz.js → controller-BbiQuRt-.js} +5 -5
  17. package/_chunks/{controls-BLQnWEd7.js → controls-B3EgM_DS.js} +160 -132
  18. package/_chunks/{date-control-Cgw5PwlZ.js → date-control-87dcA5br.js} +5 -5
  19. package/_chunks/{date-time-B8rK5gpC.js → date-time-CfiFYodx.js} +316 -293
  20. package/_chunks/{delete-button-CW9vjLnk.js → delete-button-jneO24wa.js} +1 -1
  21. package/_chunks/dialog.parts-NqEEVc9P.js +131 -0
  22. package/_chunks/{duration-DwFXonEV.js → duration-BGZ_qJ99.js} +10 -7
  23. package/_chunks/{editor-commit-Bq3wSgvr.js → editor-commit-Dyo-FMgD.js} +1 -1
  24. package/_chunks/{editor-popup-BaaxL89T.js → editor-popup-NNP9Fh9U.js} +12 -11
  25. package/_chunks/field-configurator-DPulsY3l.js +288 -0
  26. package/_chunks/{field-context-D57PnBbH.js → field-context-C4_WrO2z.js} +1 -1
  27. package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-D4I8HpVp.js} +2 -2
  28. package/_chunks/{icon-toolbar-xbqa0hu9.js → icon-toolbar-BAAdEvr9.js} +41 -35
  29. package/_chunks/{icons-Ci5mADVc.js → icons-B4qN13Yj.js} +1 -1
  30. package/_chunks/{iso-B0YHBK7m.js → iso-CJQl2kmq.js} +1 -1
  31. package/_chunks/{model-mPO2tG2f.js → model-CFrBgRHm.js} +3 -3
  32. package/_chunks/mount-C8CnIW9k.js +267 -0
  33. package/_chunks/{native.view-ByyZ1CT5.js → native-CJm3eq3-.js} +1 -1
  34. package/_chunks/{native-control-DO0d1kgx.js → native-control-um1L1wgZ.js} +124 -111
  35. package/_chunks/{number-input-s9ddPwX6.js → number-input-CKiA4d1N.js} +4 -4
  36. package/_chunks/{picker-AY05b41W.js → picker-igNshTRC.js} +5 -5
  37. package/_chunks/{popup-UXGCiv3n.js → popup-DECYM9FI.js} +21 -10
  38. package/_chunks/{rating-choice-BEs_QFZC.js → rating-choice-CepVfGUq.js} +2 -2
  39. package/_chunks/{render-m5eMMwFR.js → render-bTk3curw.js} +2 -2
  40. package/_chunks/{reorder-list-A49l172e.js → reorder-list-B4w3aARt.js} +2 -2
  41. package/_chunks/{request-trail-DCOfa5zw.js → request-trail-B1zVRPEf.js} +151 -142
  42. package/_chunks/{rich-text-xfMWadGi.js → rich-text-Ci4d6dHn.js} +11 -11
  43. package/_chunks/selection-list-tooltips-m00U3L6z.js +42 -0
  44. package/_chunks/{title-tooltip-Cw6LOZhb.js → title-tooltip-ncldbUwS.js} +2 -2
  45. package/_chunks/{tooltip-D4xkio5G.js → tooltip-h-Z8yFBY.js} +2 -2
  46. package/_chunks/{tooltip-owner-DjdvqKzz.js → tooltip-owner-BYho-vJl.js} +1 -1
  47. package/_chunks/{tooltip-session-B6X6x8G_.js → tooltip-session-CBtRMBPr.js} +3 -3
  48. package/_chunks/{tooltip-text-BXsUEmBH.js → tooltip-text-BN5WdGHn.js} +2 -2
  49. package/_chunks/{top-layer-popup-CNSDdfJV.js → top-layer-popup-CKJ7VJOF.js} +3 -3
  50. package/_dialog.scss +57 -22
  51. package/_form.scss +71 -21
  52. package/_legend.scss +25 -7
  53. package/_variables.scss +34 -32
  54. package/_view-switcher.scss +6 -0
  55. package/activity-message.d.ts +1 -1
  56. package/activity-message.js +1 -1
  57. package/ai/_chat.scss +7 -0
  58. package/ai/_style.scss +27 -20
  59. package/ai/components.d.ts +3 -1
  60. package/ai/index.js +2 -2
  61. package/ai/mount.d.ts +15 -7
  62. package/ai/request-trail.d.ts +9 -3
  63. package/ai/results/_style.scss +3 -0
  64. package/ai/results/index.d.ts +1 -1
  65. package/ai/translations.d.ts +1 -1
  66. package/angular/angular.d.ts +1 -1
  67. package/angular/angular.js +13 -7
  68. package/assignee/assignee.scss +28 -6
  69. package/assignee/index.js +6 -6
  70. package/avatar/avatar.style.scss +23 -6
  71. package/avatar/index.d.ts +25 -2
  72. package/avatar/index.js +2 -2
  73. package/badge.d.ts +1 -1
  74. package/badge.js +1 -1
  75. package/badge.view.d.ts +1 -1
  76. package/brush-range/_brush-range.scss +55 -49
  77. package/brush-range/component.d.ts +1 -3
  78. package/brush-range/component.js +10 -11
  79. package/buttons/delete-button.js +1 -1
  80. package/buttons/delete-button.style.scss +6 -2
  81. package/buttons/remove-button.d.ts +1 -1
  82. package/buttons/remove-button.js +2 -2
  83. package/buttons/remove-button.style.scss +1 -1
  84. package/buttons/svg-button.js +3 -3
  85. package/calendar/_calendar.scss +19 -23
  86. package/calendar/calendar.js +1 -1
  87. package/calendar/day.js +2 -2
  88. package/calendar/header.js +2 -3
  89. package/calendar/index.js +3 -3
  90. package/calendar/model.js +1 -1
  91. package/calendar/month-grid.js +2 -2
  92. package/calendar/translations.js +1 -1
  93. package/calendar/year-grid.js +2 -2
  94. package/cell-input.js +1 -1
  95. package/cell-input.scss +3 -7
  96. package/cell-visuals/badge.style.scss +6 -3
  97. package/cell-visuals/bar-chart.style.scss +2 -1
  98. package/cell-visuals/column-type.style.css +12 -0
  99. package/cell-visuals/index.js +1 -1
  100. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  101. package/cell-visuals/progress-line.style.scss +1 -4
  102. package/cell-visuals/sparkline.style.scss +2 -1
  103. package/cell-visuals/timeline.style.css +4 -2
  104. package/checkbox/checkbox.scss +6 -24
  105. package/checkbox/index.js +1 -1
  106. package/choice-chips/index.js +1 -1
  107. package/color-palette/built-in-palettes.js +1 -1
  108. package/color-palette/chart-palettes.js +1 -1
  109. package/color-palette/color-palette.js +1 -1
  110. package/color-palette/color-palette.style.scss +88 -25
  111. package/color-palette/color-picker.constants.js +1 -1
  112. package/color-palette/color-picker.js +2 -2
  113. package/color-palette/color-picker.style.scss +23 -10
  114. package/color-palette/common-palettes.d.ts +1 -1
  115. package/color-palette/common-palettes.js +2 -2
  116. package/color-palette/gantt-palettes.js +1 -1
  117. package/color-palette/native.d.ts +15 -2
  118. package/color-palette/palette.js +1 -1
  119. package/color-palette/pivot-palettes.js +1 -1
  120. package/color-palette/platform-palettes.js +1 -1
  121. package/color-palette/pro-palettes.js +1 -1
  122. package/color-palette/scheduler-palettes.js +1 -1
  123. package/component-catalog.d.ts +3 -6
  124. package/configurator-actions.d.ts +6 -6
  125. package/configurator-actions.js +1 -1
  126. package/configurator-aggregation-list.d.ts +1 -1
  127. package/configurator-aggregation-list.js +19 -17
  128. package/configurator-drop-zone.d.ts +3 -2
  129. package/configurator-drop-zone.js +34 -32
  130. package/configurator-focus.js +1 -1
  131. package/configurator-sections.d.ts +3 -3
  132. package/configurator-sections.js +1 -1
  133. package/control-attributes.js +1 -1
  134. package/control-presentation.d.ts +8 -2
  135. package/control-presentation.js +2 -2
  136. package/controls.d.ts +11 -0
  137. package/controls.js +4 -4
  138. package/core/anchored-popover.js +1 -1
  139. package/core/control-id.js +1 -1
  140. package/core/editor-popup-position.d.ts +6 -2
  141. package/core/editor-popup.d.ts +4 -0
  142. package/core/editor-popup.js +1 -1
  143. package/core/motion.js +1 -1
  144. package/{_chunks/popover-controller-D-AvKQ7B.js → core/popover-controller.js} +8 -8
  145. package/core/selection-list-tooltips.d.ts +2 -0
  146. package/core/tooltip.d.ts +1 -1
  147. package/core/top-layer-popup.d.ts +1 -1
  148. package/core/top-layer-popup.js +1 -1
  149. package/date-time/attach.d.ts +1 -1
  150. package/date-time/date-control.d.ts +1 -1
  151. package/date-time/field.d.ts +4 -2
  152. package/date-time/index.js +1 -1
  153. package/date-time/style.scss +206 -46
  154. package/date-time/time-selection.d.ts +1 -1
  155. package/date-time/types.d.ts +5 -1
  156. package/dialog/dialog-action-footer.d.ts +17 -2
  157. package/dialog/dialog.dom.d.ts +15 -2
  158. package/dialog/dialog.dom.js +3 -3
  159. package/dialog/dialog.drag.js +1 -1
  160. package/dialog/dialog.parts.d.ts +1 -1
  161. package/dialog/dialog.parts.js +1 -1
  162. package/dialog/dialog.preact.js +1 -1
  163. package/distribution-chart/_distribution-chart.scss +115 -23
  164. package/distribution-chart/area-chart.js +2 -2
  165. package/distribution-chart/bar-chart.js +2 -2
  166. package/distribution-chart/chart-frame.d.ts +1 -1
  167. package/distribution-chart/index.d.ts +1 -1
  168. package/distribution-chart/index.js +1 -1
  169. package/distribution-chart/line-chart.js +2 -2
  170. package/dropdown/content.js +1 -1
  171. package/dropdown/control.js +1 -1
  172. package/dropdown/dropdown.service.js +1 -1
  173. package/dropdown/dropdown.types.d.ts +1 -1
  174. package/dropdown/editor-dropdown.style.scss +19 -9
  175. package/dropdown/index.js +2 -2
  176. package/dropdown/lookup-field.d.ts +5 -0
  177. package/dropdown/lookup-field.js +3 -3
  178. package/dropdown/popup.js +1 -1
  179. package/duration/index.js +1 -1
  180. package/editor-actions.js +2 -2
  181. package/editor-layout/index.d.ts +4 -4
  182. package/editor-layout/index.js +40 -35
  183. package/editor-layout/style.scss +82 -18
  184. package/favicon.svg +9 -0
  185. package/field-configurator.d.ts +22 -3
  186. package/field-configurator.js +1 -1
  187. package/field-reorder.hook.js +1 -1
  188. package/field-reorder.js +1 -1
  189. package/filter/filters/slider/_single-slider.scss +57 -38
  190. package/filter/filters/slider/_slider.scss +41 -16
  191. package/filter/filters/slider/component.js +1 -1
  192. package/filter/filters/slider/control.js +1 -1
  193. package/filter/filters/slider/inputs.js +1 -1
  194. package/filter/filters/slider/logic.js +1 -1
  195. package/filter/filters/slider/preact.js +1 -1
  196. package/filter/filters/slider/runtime.js +3 -3
  197. package/filter/filters/slider/single.js +2 -2
  198. package/filter-badge.js +2 -2
  199. package/filter-controls.d.ts +0 -1
  200. package/filter-controls.js +6 -7
  201. package/form-controls/index.d.ts +10 -2
  202. package/form-controls/index.js +3 -3
  203. package/form-controls/presentation.d.ts +1 -1
  204. package/form-controls/presentation.js +2 -2
  205. package/formatting/index.d.ts +1 -1
  206. package/formatting/index.js +7 -7
  207. package/formatting/styles.scss +13 -11
  208. package/framework.js +201 -205
  209. package/history-controls.js +1 -1
  210. package/html-controls.js +1 -1
  211. package/icon-toolbar.d.ts +6 -2
  212. package/icon-toolbar.js +1 -1
  213. package/icons/icon.d.ts +1 -1
  214. package/icons/icon.js +1 -1
  215. package/legend.d.ts +1 -1
  216. package/legend.js +1 -1
  217. package/masked-input/index.js +4 -4
  218. package/native-control.js +1 -1
  219. package/native-controls.d.ts +54 -2
  220. package/native-styles.css +1 -1
  221. package/native-styles.scss +6 -2
  222. package/native.d.ts +3 -3
  223. package/native.js +35 -35
  224. package/number-input/index.d.ts +1 -1
  225. package/number-input/index.js +1 -1
  226. package/package.json +49 -1
  227. package/pagination.js +12 -12
  228. package/pdf-viewer/controller.js +1 -1
  229. package/pdf-viewer/header.d.ts +1 -1
  230. package/pdf-viewer/index.d.ts +2 -2
  231. package/pdf-viewer/index.js +3 -3
  232. package/pdf-viewer/search-bar.d.ts +1 -1
  233. package/pdf-viewer/status.d.ts +1 -1
  234. package/pdf-viewer/style.scss +203 -42
  235. package/preact-mount.js +1 -1
  236. package/preact.d.ts +6 -10
  237. package/preact.js +108 -70
  238. package/progress/_bar.scss +9 -3
  239. package/progress/_circular.scss +2 -1
  240. package/progress/bar.js +1 -1
  241. package/progress/circular.js +1 -1
  242. package/progress/range.js +1 -1
  243. package/rating-choice.js +1 -1
  244. package/react-adapter.d.ts +4 -2
  245. package/react-control.d.ts +2 -0
  246. package/react-control.js +3 -3
  247. package/react.d.ts +2 -8
  248. package/react.js +55 -56
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-avatar.js +1 -1
  253. package/resource-picker/resource-picker-option.js +1 -1
  254. package/resource-picker/resource-picker-popup.js +2 -2
  255. package/resource-picker/resource-picker.js +74 -72
  256. package/resource-picker/resource-picker.scss +62 -34
  257. package/resource-picker/resource-picker.utils.js +1 -1
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/style.scss +203 -49
  260. package/rich-text/toolbar.d.ts +1 -1
  261. package/robots.txt +4 -0
  262. package/search-input/index.js +2 -2
  263. package/search-input/native.d.ts +21 -2
  264. package/segmented-switch/index.js +1 -1
  265. package/select.js +1 -1
  266. package/selection-list.d.ts +1 -0
  267. package/selection-list.js +3 -1
  268. package/status-feedback/badge.js +2 -2
  269. package/status-feedback/exit-snapshot.js +2 -2
  270. package/status-feedback/header.js +2 -2
  271. package/status-feedback/icons.js +1 -1
  272. package/status-feedback/index.js +1 -1
  273. package/status-feedback/item.js +2 -2
  274. package/status-feedback/motion.js +1 -1
  275. package/status-feedback/placement.js +1 -1
  276. package/status-feedback/popover.js +2 -2
  277. package/status-feedback/render.js +1 -1
  278. package/status-feedback/status-feedback.scss +124 -35
  279. package/styles/_activity-message.scss +24 -7
  280. package/styles/_alert.scss +78 -17
  281. package/styles/_cell-editor-frame.scss +11 -0
  282. package/styles/_compositions.scss +399 -79
  283. package/styles/_control.scss +30 -8
  284. package/styles/_disclosure.scss +15 -5
  285. package/styles/_editor-counter.scss +16 -6
  286. package/styles/_editor-slider.scss +8 -4
  287. package/styles/_field-configurator.scss +194 -42
  288. package/styles/_fields-grid.scss +18 -4
  289. package/styles/_filter-controls.scss +10 -2
  290. package/styles/_icon-action.scss +48 -15
  291. package/styles/_loading.scss +12 -3
  292. package/styles/_motion.scss +32 -9
  293. package/styles/_palette.scss +0 -24
  294. package/styles/_primitives.scss +348 -96
  295. package/styles/_theme.scss +130 -86
  296. package/styles/_thresholds.scss +28 -25
  297. package/styles/_time-grid.scss +8 -3
  298. package/styles/_tokens.scss +6 -1
  299. package/styles/color-roles.js +1 -1
  300. package/styles/configurator-actions.scss +126 -26
  301. package/styles/pagination.css +213 -0
  302. package/styles/{legacy-rating.css → rating.css} +8 -3
  303. package/styles.css +1 -1
  304. package/styles.scss +3 -5
  305. package/surfaces.d.ts +37 -4
  306. package/surfaces.js +8 -8
  307. package/svelte/UiComponent.svelte +44 -11
  308. package/svelte-control.js +1 -1
  309. package/svelte.d.ts +1 -1
  310. package/svelte.js +5 -5
  311. package/switch/index.js +2 -2
  312. package/time-grid.d.ts +0 -1
  313. package/time-grid.js +6 -6
  314. package/timeline-track/_style.scss +96 -24
  315. package/timeline-track/index.js +3 -3
  316. package/timeline-track/model.js +1 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue-badge.js +1 -1
  320. package/vue-control.js +1 -1
  321. package/vue-segmented-switch.js +1 -1
  322. package/vue.d.ts +5 -23
  323. package/vue.js +84 -91
  324. package/_chunks/badge.view-D30pMUfi.js +0 -14
  325. package/_chunks/chevron-right-sxHQMSkq.js +0 -4
  326. package/_chunks/dialog.parts-BSbvnEwX.js +0 -134
  327. package/_chunks/field-configurator-1eQP0tKy.js +0 -223
  328. package/_chunks/mount-D1i5DLRn.js +0 -266
  329. package/_shared/data-query/binding.d.ts +0 -30
  330. package/_shared/data-query/blocks.d.ts +0 -30
  331. package/_shared/data-query/commands.d.ts +0 -47
  332. package/_shared/data-query/contracts.d.ts +0 -106
  333. package/_shared/data-query/cursor-reader.d.ts +0 -25
  334. package/_shared/data-query/direct-binding.d.ts +0 -3
  335. package/_shared/data-query/index.d.ts +0 -23
  336. package/_shared/data-query/infinite-binding.d.ts +0 -18
  337. package/_shared/data-query/keys.d.ts +0 -9
  338. package/_shared/data-query/limiter.d.ts +0 -12
  339. package/_shared/data-query/load-options.d.ts +0 -25
  340. package/_shared/data-query/materialize.d.ts +0 -2
  341. package/_shared/data-query/policy.d.ts +0 -14
  342. package/_shared/data-query/provider-queries.d.ts +0 -22
  343. package/_shared/data-query/reader.d.ts +0 -23
  344. package/_shared/data-query/remote-load.d.ts +0 -7
  345. package/_shared/data-query/source.d.ts +0 -40
  346. package/avatar/index.view.d.ts +0 -25
  347. package/color-palette/native.view.d.ts +0 -15
  348. package/control-presentation.view.d.ts +0 -8
  349. package/dialog/dialog-action-footer.view.d.ts +0 -20
  350. package/dialog/dialog.dom.view.d.ts +0 -15
  351. package/form-controls/index.view.d.ts +0 -10
  352. package/formatting/control-tooltip.d.ts +0 -2
  353. package/native-controls.view.d.ts +0 -54
  354. package/search-input/native.view.d.ts +0 -21
  355. package/styles/legacy-pagination.css +0 -129
  356. package/surfaces.view.d.ts +0 -33
@@ -1,223 +0,0 @@
1
- import { c as e } from "./preact.module-BBM36DnO.js";
2
- import { t } from "./hooks.module-CG3gN83z.js";
3
- import { t as n } from "./jsxRuntime.module-F6UFnpT-.js";
4
- import { SvgIcon as r } from "../icons/icon.js";
5
- import { t as i } from "./native-control-DO0d1kgx.js";
6
- import { n as a } from "./delete-button-CW9vjLnk.js";
7
- import { RemoveButton as o } from "../buttons/remove-button.js";
8
- import { t as s } from "./chevron-right-sxHQMSkq.js";
9
- import { t as c } from "./tooltip-text-BXsUEmBH.js";
10
- import { t as l } from "./badge.view-D30pMUfi.js";
11
- import { DisclosureSummary as u } from "../form-controls/presentation.js";
12
- //#region ../../node_modules/.pnpm/@fortawesome+fontawesome-free@7.3.1/node_modules/@fortawesome/fontawesome-free/svgs/solid/table-columns.svg?raw
13
- var d = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 128 0 0-256-128 0zm320 0l-128 0 0 256 128 0 0-256z\"/></svg>";
14
- //#endregion
15
- //#region src/field-expansion.ts
16
- function f() {
17
- return {
18
- known: /* @__PURE__ */ new Set(),
19
- expanded: /* @__PURE__ */ new Set(),
20
- collapsed: /* @__PURE__ */ new Set()
21
- };
22
- }
23
- function p(e, t, n) {
24
- for (let n of t) e.known.has(n) || (e.known.add(n), e.expanded.add(n));
25
- return new Set(n ? t : e.expanded);
26
- }
27
- function m(e, t) {
28
- e.expanded = new Set([...t].map(String)), e.collapsed = new Set([...e.known].filter((t) => !e.expanded.has(t)));
29
- }
30
- //#endregion
31
- //#region src/field-configurator.tsx
32
- function h({ svg: e, className: t = "" }) {
33
- return /* @__PURE__ */ n(r, {
34
- svg: e,
35
- className: `rv-configurator-icon ${t}`
36
- });
37
- }
38
- function g({ children: e, className: t = "", ...r }) {
39
- return /* @__PURE__ */ n(u, {
40
- ...r,
41
- className: `rv-configurator-summary ${t}`,
42
- iconPosition: "after",
43
- icon: /* @__PURE__ */ n(h, { svg: s }),
44
- children: e
45
- });
46
- }
47
- function _({ title: e, count: t, children: r, className: i = "" }) {
48
- return /* @__PURE__ */ n("details", {
49
- class: `rv-configurator-available-fields ${i}`,
50
- open: !0,
51
- children: [/* @__PURE__ */ n(g, { children: [e, t != null && /* @__PURE__ */ n("span", {
52
- class: "rv-configurator-field-count",
53
- children: t
54
- })] }), /* @__PURE__ */ n("div", {
55
- class: "rv-configurator-library-content",
56
- children: r
57
- })]
58
- });
59
- }
60
- function v({ children: e, actions: t, className: r = "" }) {
61
- return /* @__PURE__ */ n("div", {
62
- class: `rv-configurator-zone-heading ${r}`,
63
- children: [/* @__PURE__ */ n("span", {
64
- class: "rv-configurator-zone-label",
65
- children: e
66
- }), t && /* @__PURE__ */ n("span", {
67
- class: "rv-configurator-zone-actions",
68
- children: t
69
- })]
70
- });
71
- }
72
- function y({ heading: e, actions: t, headingClassName: r, className: i = "", children: a, ...o }) {
73
- return /* @__PURE__ */ n("section", {
74
- ...o,
75
- className: `rv-configurator-zone ${i}`,
76
- children: [/* @__PURE__ */ n(v, {
77
- className: r,
78
- actions: t,
79
- children: e
80
- }), a]
81
- });
82
- }
83
- function b({ empty: e, placeholder: t, className: r = "", children: i, ...a }) {
84
- return /* @__PURE__ */ n("ul", {
85
- ...a,
86
- className: `rv-configurator-field-list ${e ? "empty" : ""} ${r}`,
87
- children: e ? /* @__PURE__ */ n("li", {
88
- className: "rv-configurator-empty-zone empty",
89
- children: t
90
- }) : i
91
- });
92
- }
93
- function x({ className: e = "", children: t, indicator: r, dropPosition: i, ...a }) {
94
- return /* @__PURE__ */ n("li", {
95
- ...a,
96
- className: `rv-configurator-field rv-configurator-field-row ${e}`,
97
- children: [
98
- r ?? (i && /* @__PURE__ */ n(A, { position: i })),
99
- /* @__PURE__ */ n("span", {
100
- className: "rv-configurator-drag-handle",
101
- "aria-hidden": "true"
102
- }),
103
- t
104
- ]
105
- });
106
- }
107
- function S({ icon: e, children: t, className: r = "" }) {
108
- return /* @__PURE__ */ n("span", {
109
- class: `rv-configurator-field-content ${r}`,
110
- children: [e, /* @__PURE__ */ n("span", {
111
- class: "rv-configurator-field-caption",
112
- children: t
113
- })]
114
- });
115
- }
116
- function C({ as: t = "div", children: n, className: r = "", ...i }) {
117
- return e(t, {
118
- ...i,
119
- class: `rv-configurator-field ${r}`
120
- }, n);
121
- }
122
- function w({ children: e, ...t }) {
123
- return /* @__PURE__ */ n("div", {
124
- ...t,
125
- className: `rv-configurator-library-list ${t.className ?? ""}`,
126
- children: e
127
- });
128
- }
129
- function T({ label: e, icon: t, actions: r, contentClassName: i, ...a }) {
130
- return /* @__PURE__ */ n(x, {
131
- ...a,
132
- children: [/* @__PURE__ */ n(S, {
133
- className: i,
134
- icon: t,
135
- children: e
136
- }), r]
137
- });
138
- }
139
- function E({ children: e, className: t = "", ...r }) {
140
- return /* @__PURE__ */ n("div", {
141
- ...r,
142
- className: `rv-configurator-field-actions ${t}`,
143
- children: e
144
- });
145
- }
146
- function D({ children: e, active: t = !1, label: r, className: i = "" }) {
147
- return /* @__PURE__ */ n(c, {
148
- className: `rv-configurator-status-badge ${i}`,
149
- "data-active": t ? "true" : void 0,
150
- title: r,
151
- "aria-label": r,
152
- children: e
153
- });
154
- }
155
- function O(e) {
156
- return /* @__PURE__ */ n(o, {
157
- ...e,
158
- className: `rv-configurator-remove-button ${e.className ?? ""}`
159
- });
160
- }
161
- function k() {
162
- return /* @__PURE__ */ n(r, { svg: a });
163
- }
164
- function A({ position: e, index: t, className: r = "" }) {
165
- return /* @__PURE__ */ n("span", {
166
- className: `rv-configurator-drop-indicator ${r}`,
167
- "data-position": e,
168
- "data-drop-index": t,
169
- "aria-hidden": "true"
170
- });
171
- }
172
- function j({ title: e, description: r, defaultOpen: i = !1, children: a, className: o = "", summaryClassName: s = "", contentClassName: c = "", descriptionClassName: l = "", renderRoot: u }) {
173
- let d = t(i), f = {
174
- class: `rv-collapsible-section rv-configurator-section ${o}`.trim(),
175
- open: d.current,
176
- children: [/* @__PURE__ */ n(g, {
177
- className: s,
178
- children: e
179
- }), /* @__PURE__ */ n("div", {
180
- class: `rv-collapsible-section__content ${c}`.trim(),
181
- children: [r && /* @__PURE__ */ n("p", {
182
- class: `rv-collapsible-section__description ${l}`.trim(),
183
- children: r
184
- }), a]
185
- })]
186
- };
187
- return u ? u(f) : /* @__PURE__ */ n("details", { ...f });
188
- }
189
- function M({ panelRef: e, standalone: t = !1, children: r, compactItems: a, compact: o = !1, onExpand: s, ...c }) {
190
- let u = (e) => {
191
- s?.(), e.onOpen?.();
192
- };
193
- return /* @__PURE__ */ n("div", {
194
- ...c,
195
- ref: e,
196
- "data-compact": o ? "true" : void 0,
197
- className: `rv-configurator-panel ${t ? "rv-configurator-panel--standalone" : ""} ${c.className ?? ""}`,
198
- children: [o && a && /* @__PURE__ */ n("div", {
199
- className: "rv-configurator-rail",
200
- role: "group",
201
- "aria-label": c["aria-label"] ?? "Configurator",
202
- children: o && a.map((e) => /* @__PURE__ */ n(i, {
203
- unstyled: !0,
204
- class: "rv-btn rv-btn-ghost rv-configurator-rail__button",
205
- "aria-label": `${e.label}${e.count === void 0 ? "" : ` (${e.count})`}`,
206
- title: `${e.label}${e.count === void 0 ? "" : ` (${e.count})`}`,
207
- disabled: e.disabled,
208
- onClick: () => u(e),
209
- children: [/* @__PURE__ */ n(h, { svg: e.icon ?? "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2026 Fonticons, Inc. --><path fill=\"currentColor\" d=\"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 128 0 0-256-128 0zm320 0l-128 0 0 256 128 0 0-256z\"/></svg>" }), e.count !== void 0 && /* @__PURE__ */ n(l, {
210
- className: "rv-configurator-rail__count",
211
- variant: e.count ? "accent" : "neutral",
212
- children: e.count
213
- })]
214
- }, e.id))
215
- }), a ? /* @__PURE__ */ n("div", {
216
- class: "rv-configurator-panel__content",
217
- hidden: o,
218
- children: r
219
- }) : r]
220
- });
221
- }
222
- //#endregion
223
- export { d as S, g as _, A as a, p as b, h as c, w as d, b as f, D as g, x as h, S as i, C as l, k as m, M as n, y as o, O as p, E as r, v as s, j as t, _ as u, T as v, m as x, f as y };
@@ -1,266 +0,0 @@
1
- import { i as e, r as t } from "./preact.module-BBM36DnO.js";
2
- import { c as n, i as r, t as i } from "./hooks.module-CG3gN83z.js";
3
- import { E as a, _ as o, a as s, c, i as l, m as u, n as d, o as f, p, r as m, t as h, u as g, v as _, y as v } from "./request-trail-DCOfa5zw.js";
4
- import { t as y } from "./jsxRuntime.module-F6UFnpT-.js";
5
- import { n as b } from "./popup-UXGCiv3n.js";
6
- import { t as x } from "./controls-BLQnWEd7.js";
7
- import { HistoryControls as S } from "../history-controls.js";
8
- import { n as C } from "./render-m5eMMwFR.js";
9
- //#region src/ai/transcript.ts
10
- var w = (e) => new TextEncoder().encode(JSON.stringify(e)).byteLength, T = (e) => {
11
- if (!e) return "";
12
- if (w(e) <= 16384) return e;
13
- let t = 0, n = Math.min(e.length, 16384);
14
- for (; t < n;) {
15
- let r = Math.ceil((t + n) / 2);
16
- w(e.slice(0, r) + "…") <= 16384 ? t = r : n = r - 1;
17
- }
18
- return /[\uD800-\uDBFF]/.test(e.charAt(t - 1)) && t--, e.slice(0, t) + "…";
19
- }, E = class {
20
- messages = [];
21
- epoch = 0;
22
- initialized = !1;
23
- requestId;
24
- ignoredRequest;
25
- currentId;
26
- active = !1;
27
- lastPhase;
28
- key = "";
29
- sequence = 0;
30
- update(e) {
31
- if (this.initialized ||= (this.epoch = e.chatKey ?? 0, !0), (e.chatKey ?? 0) !== this.epoch) {
32
- this.epoch = e.chatKey ?? 0, this.messages = [], this.requestId = void 0, this.ignoredRequest = e.request?.id, this.currentId = void 0, this.active = !1, this.key = "", this.lastPhase = void 0;
33
- return;
34
- }
35
- if (e.phase === "idle" || e.request?.id === this.ignoredRequest && this.ignoredRequest !== void 0) return;
36
- let t = e.request, n = !!t && t.id !== this.requestId, r = e.phase === "completed" && e.result && w(e.result) <= 16384 ? structuredClone(e.result) : void 0, i = {
37
- text: T(e.message),
38
- phase: e.phase,
39
- details: e.phase === "completed" && !r && e.resultDetails ? T(e.resultDetails) : void 0,
40
- pending: !!e.pendingAction,
41
- result: r
42
- }, a = JSON.stringify([t?.id, i]);
43
- if (!n && a === this.key || !n && !i.text && !i.pending) return;
44
- let o = this.messages.find((e) => e.id === this.currentId), s = this.lastPhase === "completed" && e.phase === "understanding" && o?.from === "assistant", c = o?.from === "system" && o.phase === "completed" && (e.phase === "applying" || e.phase === "completed");
45
- if (n) {
46
- this.requestId = t.id, this.ignoredRequest = void 0;
47
- let e = "turn:" + ++this.sequence;
48
- this.currentId = e + ":assistant", this.messages = [
49
- ...this.messages,
50
- {
51
- id: e + ":user",
52
- group: e,
53
- from: "user",
54
- text: T(t.prompt)
55
- },
56
- {
57
- id: this.currentId,
58
- group: e,
59
- from: "assistant",
60
- ...i
61
- }
62
- ];
63
- } else if ((this.active || s || c) && o) this.messages = this.messages.map((e) => e.id === this.currentId ? {
64
- ...e,
65
- ...i
66
- } : e);
67
- else {
68
- let e = "system:" + ++this.sequence;
69
- this.currentId = e, this.messages = [...this.messages, {
70
- id: e,
71
- group: e,
72
- from: "system",
73
- ...i
74
- }];
75
- }
76
- for (this.active = e.phase === "understanding" || e.phase === "applying" || !!e.pendingAction, this.lastPhase = e.phase, this.key = a; this.messages.length > 50 || w(this.messages) > 65536;) {
77
- let e = this.messages[0].group;
78
- this.messages = this.messages.filter((t) => t.group !== e);
79
- }
80
- }
81
- clear() {
82
- this.messages = [], this.requestId = void 0, this.currentId = void 0, this.active = !1, this.key = "";
83
- }
84
- };
85
- //#endregion
86
- //#region src/ai/mount.tsx
87
- function D(w, T) {
88
- let D = (e) => a(e, T.translations), O = !1, k = T.suggestions ?? [], A, j = _(T.promptHistory?.items ?? []), M = new E(), N = T.mode === "chat", P = [], F = 0, I = !1, L = "";
89
- function R(e) {
90
- if (e.phase === "idle" || !e.message || e.pendingAction) return;
91
- let t = e.phase === "understanding" || e.phase === "applying", n = JSON.stringify([
92
- e.phase,
93
- e.message,
94
- e.matchedRows,
95
- e.resultDetails
96
- ]);
97
- if (n === L) return;
98
- let r = P.at(-1), i = {
99
- id: I && r ? r.id : String(++F),
100
- title: e.message,
101
- busy: t,
102
- tone: e.phase === "error" ? "danger" : e.phase === "completed" ? "success" : "neutral",
103
- description: e.phase === "completed" && e.matchedRows !== void 0 ? T.countLabel?.(e.matchedRows) ?? D("{count} matching rows").replace("{count}", e.matchedRows.toLocaleString()) : void 0,
104
- detail: e.phase === "completed" && !e.result ? e.resultDetails : void 0
105
- };
106
- P = [...I && r ? P.slice(0, -1) : P, i].slice(-50), I = t, L = n;
107
- }
108
- function z({ state: t }) {
109
- let [a, E] = r(""), [O, A] = r(j), [F, I] = r(!1), L = i();
110
- n(() => {
111
- E(""), L.current = void 0;
112
- }, [t.chatKey]);
113
- let R = t.phase === "understanding" || t.phase === "applying", z = !!t.pendingAction, V = t.steps ?? [], H = i(!1);
114
- n(() => {
115
- H.current && !z && !R && w.querySelector("textarea")?.focus(), H.current = z || R && H.current;
116
- }, [z, R]), n(() => {
117
- if (R || z || t.phase === "idle" || L.current === void 0) return;
118
- let e = L.current;
119
- L.current = void 0, t.phase === "completed" && E((t) => t.trim() === e ? "" : t);
120
- }, [t]);
121
- let U = (e) => {
122
- L.current = e.trim(), T.promptHistory && (j = _([...j, e]), A(j), T.promptHistory.onChange?.([...j])), T.onSubmit(e);
123
- }, W = /* @__PURE__ */ y(o, {
124
- items: t.choices?.length ? t.choices : t.suggestions?.length ? t.suggestions : k,
125
- onSelect: (e) => {
126
- R || z || (E(e), U(e));
127
- },
128
- disabled: R || z
129
- }), G = /* @__PURE__ */ y(m, {
130
- label: T.prompt?.label ?? "Ask AI to change this view",
131
- ...T.prompt,
132
- value: a,
133
- onValueChange: E,
134
- onSubmit: U,
135
- onStop: T.onStop,
136
- busy: R,
137
- promptHistory: T.promptHistory ? O : void 0,
138
- disabled: z,
139
- hint: V.length ? "" : T.prompt?.hint,
140
- footer: W,
141
- actions: /* @__PURE__ */ y(h, {
142
- ...T.trail,
143
- items: V,
144
- onRemove: (e) => T.onRemoveStep?.(e),
145
- onClear: T.onReset,
146
- onEmpty: () => w.querySelector("textarea")?.focus(),
147
- disabled: R || z,
148
- removalsDisabled: !T.onRemoveStep || t.canEditSteps === !1,
149
- clearDescription: T.trail?.clearDescription ?? "Restore the starting view",
150
- clearLabel: T.trail?.clearLabel ?? T.resetLabel ?? "Clear all",
151
- changedMessage: !R && V.length > 0 && t.canEditSteps === !1 ? T.trail?.changedMessage ?? "The view changed manually. Start a new request to continue." : void 0
152
- })
153
- }), K = t.pendingAction && /* @__PURE__ */ y(u, {
154
- ...t.pendingAction,
155
- disabled: R || !T.onApplyAction,
156
- onApply: () => T.onApplyAction?.(),
157
- onCancel: () => T.onCancelAction?.()
158
- }), q = /* @__PURE__ */ y("div", {
159
- class: "rv-ai-result-actions",
160
- children: [
161
- (T.onUndoData || T.onRedoData) && /* @__PURE__ */ y(S, {
162
- onUndo: T.onUndoData,
163
- onRedo: T.onRedoData,
164
- canUndo: !R && !z && !!t.canUndoData,
165
- canRedo: !R && !z && !!t.canRedoData,
166
- undoLabel: D("Undo data change"),
167
- redoLabel: D("Redo data change"),
168
- label: D("Data history")
169
- }),
170
- /* @__PURE__ */ y(x, {
171
- disabled: R || z || !t.canRestore,
172
- onClick: T.onRestore,
173
- size: "compact",
174
- children: D(T.restoreLabel ?? "Restore previous view")
175
- }),
176
- !V.length && /* @__PURE__ */ y(x, {
177
- disabled: R || z,
178
- onClick: T.onReset,
179
- size: "compact",
180
- variant: "ghost",
181
- children: D(T.resetLabel ?? "Reset view")
182
- }),
183
- N && T.showClearChat !== !1 && /* @__PURE__ */ y(x, {
184
- size: "compact",
185
- variant: "ghost",
186
- disabled: R || z || !T.onClearChat || !M.messages.length,
187
- onClick: () => T.onClearChat?.(),
188
- children: D("Clear chat")
189
- })
190
- ]
191
- }), J = T.showHistoryControls === !1 ? null : T.controlsMountTo ? b(q, T.controlsMountTo) : q;
192
- return /* @__PURE__ */ y(p, {
193
- layout: T.layout,
194
- translations: T.translations,
195
- label: T.label,
196
- busy: R,
197
- footer: T.footer,
198
- children: N ? /* @__PURE__ */ y(d, {
199
- className: "rv-ai-mounted-chat",
200
- children: [
201
- /* @__PURE__ */ y(l, {
202
- busy: R,
203
- children: [!M.messages.length && T.emptyState && /* @__PURE__ */ y(s, { ...T.emptyState }), M.messages.map((e) => /* @__PURE__ */ y(f, {
204
- from: e.from,
205
- isStreaming: e.phase === "understanding" || e.phase === "applying",
206
- children: [
207
- e.from === "user" ? /* @__PURE__ */ y(c, { children: e.text }) : e.phase === "preview" && e.pending && e.id === M.messages.at(-1)?.id && t.pendingAction ? null : /* @__PURE__ */ y(c, { children: e.phase === "understanding" || e.phase === "applying" || e.phase === "error" || e.phase === "cancelled" ? /* @__PURE__ */ y(g, {
208
- title: e.text,
209
- status: e.phase === "understanding" || e.phase === "applying" ? "running" : e.phase === "error" ? "error" : "cancelled"
210
- }) : e.text }),
211
- e.result ? /* @__PURE__ */ y(v, {
212
- result: e.result,
213
- renderTable: T.renderTable
214
- }) : e.details && /* @__PURE__ */ y("pre", {
215
- class: "rv-ai-chat-result",
216
- children: e.details
217
- }),
218
- e.id === M.messages.at(-1)?.id && e.pending && K
219
- ]
220
- }, e.id))]
221
- }),
222
- G,
223
- J
224
- ]
225
- }) : /* @__PURE__ */ y(e, { children: [
226
- G,
227
- K,
228
- t.phase === "completed" && t.result && /* @__PURE__ */ y(v, {
229
- result: t.result,
230
- renderTable: T.renderTable
231
- }),
232
- !!P.length && /* @__PURE__ */ y(C, {
233
- className: "rv-ai-activity",
234
- title: D("Activity"),
235
- compact: !0,
236
- autoDismissMs: T.activityDurationMs,
237
- onDismissItem: (e) => {
238
- P = P.filter((t) => t.id !== e), B();
239
- },
240
- collapsed: F,
241
- onCollapsedChange: I,
242
- collapseLabel: D("Collapse activity"),
243
- expandLabel: D("Expand activity"),
244
- items: P
245
- }),
246
- J
247
- ] })
248
- });
249
- }
250
- let B = () => {
251
- !O && A && t(/* @__PURE__ */ y(z, { state: A }), w);
252
- };
253
- return {
254
- update(e) {
255
- N ? M.update(e) : R(e), A = e, B();
256
- },
257
- setSuggestions(e) {
258
- k = [...e], B();
259
- },
260
- destroy() {
261
- O || (O = !0, j = [], M.clear(), t(null, w));
262
- }
263
- };
264
- }
265
- //#endregion
266
- export { D as t };
@@ -1,30 +0,0 @@
1
- import type { QueryObserverOptions } from '@tanstack/query-core';
2
- import type { ReadBinding, ReadIntent, ReadPort, ReadProvider } from './contracts.js';
3
- import type { DataQueryScope, ReadValue } from './source.js';
4
- import { type NativeReadOptions } from './load-options.js';
5
- export interface QueryRead<Request, Result> {
6
- readonly source: DataQueryScope;
7
- readonly resource: string;
8
- readonly operation: string;
9
- /** Semantic request only: no AbortSignal, transport request ID or component ID. */
10
- readonly request: Request;
11
- readonly read: ReadProvider<Request, Result>;
12
- readonly observerOptions?: NativeReadOptions;
13
- /** Product-owned bounded transport copying; omit for structured cloning. */
14
- readonly materialize?: (data: Result) => Result;
15
- }
16
- export interface BindingOptions<Result> {
17
- /** Explicitly fetch before delivering cached data, independently of mount/freshness policy. */
18
- readonly force?: boolean;
19
- readonly port: ReadPort<Result>;
20
- /** Default structuredClone supports cloneable transport data, including nested values. */
21
- readonly materialize?: (data: Result) => Result;
22
- /** Optional product revision/completeness check; returning false suppresses hydration. */
23
- readonly canHydrate?: (data: Result) => boolean;
24
- }
25
- export declare function claimReadOwner(owner: object): () => void;
26
- export declare function observerPolicy<FnData, Data = FnData>(source: DataQueryScope, options?: NativeReadOptions): Pick<QueryObserverOptions<FnData, unknown, Data, Data>, keyof NativeReadOptions | 'placeholderData' | 'initialData' | 'select' | 'notifyOnChangeProps'>;
27
- export declare function queryOptions<Request, Result>(definition: QueryRead<Request, Result>): QueryObserverOptions<ReadValue<Result>, unknown>;
28
- export declare function bindQuery<Request, Result>(initial: QueryRead<Request, Result>, options: BindingOptions<Result>): ReadBinding<QueryRead<Request, Result>>;
29
- /** Connect a product-owned request subscription; dispose stops only this subscription. */
30
- export declare function bindQueryIntent<Request, Result>(intent: ReadIntent<Request>, describe: (request: Request) => QueryRead<Request, Result>, options: BindingOptions<Result>): ReadBinding<QueryRead<Request, Result>>;
@@ -1,30 +0,0 @@
1
- import type { RemoteBlockController, RemoteBlockPort } from './contracts.js';
2
- import type { ReadProvider, ReadStatus } from './contracts.js';
3
- import type { DataQueryScope } from './source.js';
4
- import type { NativeReadOptions } from './load-options.js';
5
- /** Providers must order offsets deterministically, with a unique tie-breaker. */
6
- export type BlockConsistency<Result> = {
7
- readonly mode: 'eventual';
8
- readonly reload: 'sequence' | 'route';
9
- } | {
10
- readonly mode: 'snapshot';
11
- readonly revision: string;
12
- readonly getRevision: (result: Result) => string;
13
- };
14
- export interface BlockQueryOptions<Request, Result> {
15
- readonly source?: DataQueryScope;
16
- /** Internal uncached transport mode; no QueryClient or observers. */
17
- readonly uncached?: boolean;
18
- readonly concurrency?: number;
19
- readonly read: ReadProvider<Request, Result>;
20
- readonly consistency: BlockConsistency<Result>;
21
- readonly resource?: string;
22
- readonly observerOptions?: NativeReadOptions;
23
- /** Semantic key normalization only. The provider still receives its original typed request. */
24
- readonly keyRequest?: (request: Request) => unknown;
25
- /** Application-owned pending proposals, applied only to detached data. */
26
- readonly reconcile?: (result: Result, request: Request) => Result;
27
- readonly onStatus?: (request: Request, status: ReadStatus) => void;
28
- }
29
- /** Subscription registry: cached reads use Query; bypass keeps only live operations. */
30
- export declare function createBlockQueries<Request, Result>(port: RemoteBlockPort<Request, Result>, options: BlockQueryOptions<Request, Result>, operation: string): RemoteBlockController<Request>;
@@ -1,47 +0,0 @@
1
- import type { CommandEnvelope, CommandReceipt } from './contracts.js';
2
- export type CommandProvider<Command, Changes, Revision = string, Conflict = Changes> = (envelope: CommandEnvelope<Command, Revision>, context: {
3
- readonly signal: AbortSignal;
4
- }) => CommandReceipt<Changes, Revision, Conflict> | Promise<CommandReceipt<Changes, Revision, Conflict>>;
5
- export interface CommandState<Changes, Revision = string, Conflict = Changes> {
6
- readonly status: 'idle' | 'submitting' | 'recovering' | 'accepted' | 'rejected' | 'conflict' | 'unknown' | 'disposed';
7
- readonly attempt: number;
8
- readonly receipt?: CommandReceipt<Changes, Revision, Conflict>;
9
- /** Local application/refetch errors never change a definitive server receipt. */
10
- readonly error?: unknown;
11
- }
12
- /** Write policy and domain hooks.
13
- * @see https://pro.rv-grid.com/guides/server-data-commands/#configuration-types
14
- */
15
- export interface CommandOptions<Command, Changes, Revision = string, Conflict = Changes> {
16
- /** Restore a previously submitted envelope as unknown; execute() must not resubmit it. */
17
- readonly resume?: boolean;
18
- readonly submit: CommandProvider<Command, Changes, Revision, Conflict>;
19
- /** Read a durable receipt by operation ID. Never resubmit from this callback. */
20
- readonly recover?: CommandProvider<Command, Changes, Revision, Conflict>;
21
- /** Explicit backend guarantee: identical operation IDs/payloads cannot execute twice. */
22
- readonly idempotent?: boolean;
23
- /** Validate product-specific revision, completeness and canonical-change semantics. */
24
- readonly validateReceipt?: (receipt: CommandReceipt<Changes, Revision, Conflict>) => boolean;
25
- /** Apply canonical changes atomically; domain pending/history state remains product-owned. */
26
- readonly applyAccepted?: (changes: Changes, receipt: CommandReceipt<Changes, Revision, Conflict>) => void | Promise<void>;
27
- readonly source?: {
28
- accepted(): Promise<void>;
29
- };
30
- readonly onStatus?: (state: CommandState<Changes, Revision, Conflict>) => void;
31
- }
32
- export interface CommandExecution<Command, Changes, Revision = string, Conflict = Changes> {
33
- /** A detached snapshot. Mutating it cannot change a submitted command. */
34
- readonly envelope: CommandEnvelope<Command, Revision>;
35
- getState(): CommandState<Changes, Revision, Conflict>;
36
- execute(): Promise<CommandReceipt<Changes, Revision, Conflict>>;
37
- recover(): Promise<CommandReceipt<Changes, Revision, Conflict>>;
38
- retry(): Promise<CommandReceipt<Changes, Revision, Conflict>>;
39
- /** Retry local canonical application/refetch after acceptance, without another write. */
40
- reconcile(): Promise<void>;
41
- cancel(): void;
42
- dispose(): void;
43
- }
44
- /** One logical write. Keep this handle for recovery/retry; backend receipts provide durability.
45
- * @see https://pro.rv-grid.com/guides/server-data-commands/
46
- */
47
- export declare function createCommandExecution<Command, Changes, Revision = string, Conflict = Changes>(envelope: CommandEnvelope<Command, Revision>, options: CommandOptions<Command, Changes, Revision, Conflict>): CommandExecution<Command, Changes, Revision, Conflict>;