@cssints/apg-specs 0.0.0-stage → 0.5.1

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 (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -2
  3. package/dist/apg/accordion.bridge.d.mts +35 -0
  4. package/dist/apg/accordion.bridge.mjs +326 -0
  5. package/dist/apg/accordion.model.json +8397 -0
  6. package/dist/apg/alert.bridge.d.mts +22 -0
  7. package/dist/apg/alert.bridge.mjs +86 -0
  8. package/dist/apg/alert.model.json +871 -0
  9. package/dist/apg/alertdialog.bridge.d.mts +21 -0
  10. package/dist/apg/alertdialog.bridge.mjs +221 -0
  11. package/dist/apg/alertdialog.model.json +5232 -0
  12. package/dist/apg/breadcrumb.bridge.d.mts +26 -0
  13. package/dist/apg/breadcrumb.bridge.mjs +120 -0
  14. package/dist/apg/breadcrumb.model.json +574 -0
  15. package/dist/apg/button.bridge.d.mts +35 -0
  16. package/dist/apg/button.bridge.mjs +208 -0
  17. package/dist/apg/button.model.json +5814 -0
  18. package/dist/apg/carousel.bridge.d.mts +44 -0
  19. package/dist/apg/carousel.bridge.mjs +262 -0
  20. package/dist/apg/carousel.model.json +8963 -0
  21. package/dist/apg/checkbox-group.bridge.d.mts +25 -0
  22. package/dist/apg/checkbox-group.bridge.mjs +276 -0
  23. package/dist/apg/checkbox-group.model.json +3863 -0
  24. package/dist/apg/checkbox.bridge.d.mts +34 -0
  25. package/dist/apg/checkbox.bridge.mjs +253 -0
  26. package/dist/apg/checkbox.model.json +3158 -0
  27. package/dist/apg/combobox-autocomplete.bridge.d.mts +14 -0
  28. package/dist/apg/combobox-autocomplete.bridge.mjs +326 -0
  29. package/dist/apg/combobox-autocomplete.model.json +11586 -0
  30. package/dist/apg/combobox-dialog.bridge.d.mts +17 -0
  31. package/dist/apg/combobox-dialog.bridge.mjs +250 -0
  32. package/dist/apg/combobox-dialog.model.json +8981 -0
  33. package/dist/apg/combobox-grid.bridge.d.mts +17 -0
  34. package/dist/apg/combobox-grid.bridge.mjs +227 -0
  35. package/dist/apg/combobox-grid.model.json +8554 -0
  36. package/dist/apg/combobox-select-only.bridge.d.mts +24 -0
  37. package/dist/apg/combobox-select-only.bridge.mjs +304 -0
  38. package/dist/apg/combobox-select-only.model.json +7846 -0
  39. package/dist/apg/combobox-tree.bridge.d.mts +17 -0
  40. package/dist/apg/combobox-tree.bridge.mjs +211 -0
  41. package/dist/apg/combobox-tree.model.json +9345 -0
  42. package/dist/apg/dialog-modal.bridge.d.mts +35 -0
  43. package/dist/apg/dialog-modal.bridge.mjs +186 -0
  44. package/dist/apg/dialog-modal.model.json +7580 -0
  45. package/dist/apg/disclosure.bridge.d.mts +25 -0
  46. package/dist/apg/disclosure.bridge.mjs +202 -0
  47. package/dist/apg/disclosure.model.json +4703 -0
  48. package/dist/apg/feed.bridge.d.mts +31 -0
  49. package/dist/apg/feed.bridge.mjs +246 -0
  50. package/dist/apg/feed.model.json +4523 -0
  51. package/dist/apg/grid-selection.bridge.d.mts +13 -0
  52. package/dist/apg/grid-selection.bridge.mjs +160 -0
  53. package/dist/apg/grid-selection.model.json +6974 -0
  54. package/dist/apg/grid-sort.bridge.d.mts +12 -0
  55. package/dist/apg/grid-sort.bridge.mjs +138 -0
  56. package/dist/apg/grid-sort.model.json +3799 -0
  57. package/dist/apg/grid.bridge.d.mts +54 -0
  58. package/dist/apg/grid.bridge.mjs +441 -0
  59. package/dist/apg/grid.model.json +3802 -0
  60. package/dist/apg/link.bridge.d.mts +24 -0
  61. package/dist/apg/link.bridge.mjs +126 -0
  62. package/dist/apg/link.model.json +694 -0
  63. package/dist/apg/listbox-multi.bridge.d.mts +10 -0
  64. package/dist/apg/listbox-multi.bridge.mjs +261 -0
  65. package/dist/apg/listbox-multi.model.json +10893 -0
  66. package/dist/apg/listbox-rearrangeable.bridge.d.mts +20 -0
  67. package/dist/apg/listbox-rearrangeable.bridge.mjs +237 -0
  68. package/dist/apg/listbox-rearrangeable.model.json +17592 -0
  69. package/dist/apg/listbox-shared.d.mts +58 -0
  70. package/dist/apg/listbox-shared.mjs +171 -0
  71. package/dist/apg/listbox-single.bridge.d.mts +10 -0
  72. package/dist/apg/listbox-single.bridge.mjs +196 -0
  73. package/dist/apg/listbox-single.model.json +8024 -0
  74. package/dist/apg/listbox-typeahead.bridge.d.mts +10 -0
  75. package/dist/apg/listbox-typeahead.bridge.mjs +153 -0
  76. package/dist/apg/listbox-typeahead.model.json +5615 -0
  77. package/dist/apg/menu-button.bridge.d.mts +29 -0
  78. package/dist/apg/menu-button.bridge.mjs +259 -0
  79. package/dist/apg/menu-button.model.json +5706 -0
  80. package/dist/apg/menu-checkable.bridge.d.mts +25 -0
  81. package/dist/apg/menu-checkable.bridge.mjs +226 -0
  82. package/dist/apg/menu-checkable.model.json +4277 -0
  83. package/dist/apg/menu-menubar.bridge.d.mts +27 -0
  84. package/dist/apg/menu-menubar.bridge.mjs +273 -0
  85. package/dist/apg/menu-menubar.model.json +9540 -0
  86. package/dist/apg/meter.bridge.d.mts +28 -0
  87. package/dist/apg/meter.bridge.mjs +159 -0
  88. package/dist/apg/meter.model.json +1185 -0
  89. package/dist/apg/player.bridge.d.mts +24 -0
  90. package/dist/apg/player.bridge.mjs +342 -0
  91. package/dist/apg/player.model.json +11013 -0
  92. package/dist/apg/radio.bridge.d.mts +35 -0
  93. package/dist/apg/radio.bridge.mjs +371 -0
  94. package/dist/apg/radio.model.json +5011 -0
  95. package/dist/apg/slider-multithumb.bridge.d.mts +34 -0
  96. package/dist/apg/slider-multithumb.bridge.mjs +365 -0
  97. package/dist/apg/slider-multithumb.model.json +5774 -0
  98. package/dist/apg/slider.bridge.d.mts +54 -0
  99. package/dist/apg/slider.bridge.mjs +359 -0
  100. package/dist/apg/slider.model.json +4881 -0
  101. package/dist/apg/spinbutton.bridge.d.mts +41 -0
  102. package/dist/apg/spinbutton.bridge.mjs +327 -0
  103. package/dist/apg/spinbutton.model.json +7571 -0
  104. package/dist/apg/switch.bridge.d.mts +30 -0
  105. package/dist/apg/switch.bridge.mjs +243 -0
  106. package/dist/apg/switch.model.json +3159 -0
  107. package/dist/apg/tabs.bridge.d.mts +41 -0
  108. package/dist/apg/tabs.bridge.mjs +294 -0
  109. package/dist/apg/tabs.model.json +7659 -0
  110. package/dist/apg/timeline.bridge.d.mts +36 -0
  111. package/dist/apg/timeline.bridge.mjs +265 -0
  112. package/dist/apg/timeline.model.json +6189 -0
  113. package/dist/apg/toolbar.bridge.d.mts +25 -0
  114. package/dist/apg/toolbar.bridge.mjs +307 -0
  115. package/dist/apg/toolbar.model.json +6616 -0
  116. package/dist/apg/tooltip.bridge.d.mts +36 -0
  117. package/dist/apg/tooltip.bridge.mjs +208 -0
  118. package/dist/apg/tooltip.model.json +8295 -0
  119. package/dist/apg/treegrid.bridge.d.mts +28 -0
  120. package/dist/apg/treegrid.bridge.mjs +311 -0
  121. package/dist/apg/treegrid.model.json +17358 -0
  122. package/dist/apg/treeview.bridge.d.mts +26 -0
  123. package/dist/apg/treeview.bridge.mjs +396 -0
  124. package/dist/apg/treeview.model.json +13745 -0
  125. package/dist/apg/windowsplitter.bridge.d.mts +36 -0
  126. package/dist/apg/windowsplitter.bridge.mjs +242 -0
  127. package/dist/apg/windowsplitter.model.json +6253 -0
  128. package/dist/canvas/camera.model.json +6568 -0
  129. package/dist/canvas/canvas.bridge.d.mts +190 -0
  130. package/dist/canvas/canvas.bridge.mjs +729 -0
  131. package/dist/canvas/pointer.model.json +17095 -0
  132. package/dist/scenario.d.mts +233 -0
  133. package/dist/scenario.mjs +313 -0
  134. package/package.json +57 -4
  135. package/scenarios/apg/README.md +221 -0
  136. package/scenarios/apg/accordion.base-ui.json +1005 -0
  137. package/scenarios/apg/accordion.react-aria.json +929 -0
  138. package/scenarios/apg/alert.base-ui.json +81 -0
  139. package/scenarios/apg/alert.react-aria.json +98 -0
  140. package/scenarios/apg/alertdialog.base-ui.json +331 -0
  141. package/scenarios/apg/alertdialog.react-aria.json +225 -0
  142. package/scenarios/apg/breadcrumb.react-aria.json +312 -0
  143. package/scenarios/apg/button.ariakit.json +136 -0
  144. package/scenarios/apg/button.base-ui.json +747 -0
  145. package/scenarios/apg/button.react-aria.json +443 -0
  146. package/scenarios/apg/carousel.apg.json +909 -0
  147. package/scenarios/apg/checkbox.ariakit.json +299 -0
  148. package/scenarios/apg/checkbox.base-ui.json +1126 -0
  149. package/scenarios/apg/checkbox.react-aria.json +518 -0
  150. package/scenarios/apg/combobox.ariakit.json +945 -0
  151. package/scenarios/apg/combobox.base-ui.json +2444 -0
  152. package/scenarios/apg/combobox.react-aria.json +845 -0
  153. package/scenarios/apg/dialog-modal.ariakit.json +1102 -0
  154. package/scenarios/apg/dialog-modal.base-ui.json +775 -0
  155. package/scenarios/apg/dialog-modal.react-aria.json +638 -0
  156. package/scenarios/apg/disclosure.apg.json +349 -0
  157. package/scenarios/apg/disclosure.ariakit.json +163 -0
  158. package/scenarios/apg/disclosure.base-ui.json +451 -0
  159. package/scenarios/apg/disclosure.react-aria.json +643 -0
  160. package/scenarios/apg/feed.apg.json +442 -0
  161. package/scenarios/apg/grid.ariakit.json +197 -0
  162. package/scenarios/apg/grid.base-ui.json +720 -0
  163. package/scenarios/apg/grid.react-aria.json +969 -0
  164. package/scenarios/apg/landmarks.ariakit.json +93 -0
  165. package/scenarios/apg/landmarks.react-aria.json +330 -0
  166. package/scenarios/apg/link.ariakit.json +83 -0
  167. package/scenarios/apg/link.base-ui.json +88 -0
  168. package/scenarios/apg/link.react-aria.json +186 -0
  169. package/scenarios/apg/listbox.ariakit.json +78 -0
  170. package/scenarios/apg/listbox.base-ui.json +163 -0
  171. package/scenarios/apg/listbox.react-aria.json +1118 -0
  172. package/scenarios/apg/menu-button.ariakit.json +924 -0
  173. package/scenarios/apg/menu-button.base-ui.json +1155 -0
  174. package/scenarios/apg/menu-button.react-aria.json +1080 -0
  175. package/scenarios/apg/menubar.ariakit.json +758 -0
  176. package/scenarios/apg/menubar.base-ui.json +673 -0
  177. package/scenarios/apg/meter.base-ui.json +243 -0
  178. package/scenarios/apg/meter.react-aria.json +201 -0
  179. package/scenarios/apg/radio.ariakit.json +459 -0
  180. package/scenarios/apg/radio.base-ui.json +581 -0
  181. package/scenarios/apg/radio.react-aria.json +576 -0
  182. package/scenarios/apg/slider-multithumb.base-ui.json +316 -0
  183. package/scenarios/apg/slider-multithumb.react-aria.json +363 -0
  184. package/scenarios/apg/slider.base-ui.json +544 -0
  185. package/scenarios/apg/slider.react-aria.json +456 -0
  186. package/scenarios/apg/spinbutton.base-ui.json +1688 -0
  187. package/scenarios/apg/spinbutton.react-aria.json +426 -0
  188. package/scenarios/apg/switch.base-ui.json +456 -0
  189. package/scenarios/apg/switch.react-aria.json +303 -0
  190. package/scenarios/apg/table.ariakit.json +65 -0
  191. package/scenarios/apg/table.react-aria.json +221 -0
  192. package/scenarios/apg/tabs.ariakit.json +329 -0
  193. package/scenarios/apg/tabs.base-ui.json +875 -0
  194. package/scenarios/apg/tabs.react-aria.json +644 -0
  195. package/scenarios/apg/toolbar.ariakit.json +595 -0
  196. package/scenarios/apg/toolbar.base-ui.json +1189 -0
  197. package/scenarios/apg/toolbar.react-aria.json +383 -0
  198. package/scenarios/apg/tooltip.ariakit.json +441 -0
  199. package/scenarios/apg/tooltip.base-ui.json +411 -0
  200. package/scenarios/apg/tooltip.react-aria.json +454 -0
  201. package/scenarios/apg/treegrid.apg.json +2558 -0
  202. package/scenarios/apg/treegrid.react-aria.json +5094 -0
  203. package/scenarios/apg/treeview.apg.json +928 -0
  204. package/scenarios/apg/windowsplitter.apg.json +557 -0
  205. package/scenarios/canvas/README.md +69 -0
  206. package/scenarios/canvas/camera.contract.json +237 -0
  207. package/scenarios/canvas/camera.excalidraw.json +57 -0
  208. package/scenarios/canvas/marquee.excalidraw.json +122 -0
  209. package/scenarios/canvas/pan.excalidraw.json +46 -0
  210. package/scenarios/canvas/pointer.contract.json +528 -0
  211. package/scenarios/parts.json +291 -0
  212. package/shared/aria.qnt +186 -0
  213. package/shared/details-group.qnt +50 -0
  214. package/shared/focusgroup.qnt +152 -0
  215. package/shared/invokers.qnt +81 -0
  216. package/shared/popover.qnt +71 -0
  217. package/specs/apg/STATIC.md +103 -0
  218. package/specs/apg/accordion.qnt +578 -0
  219. package/specs/apg/alert.qnt +131 -0
  220. package/specs/apg/alertdialog.qnt +455 -0
  221. package/specs/apg/breadcrumb.qnt +88 -0
  222. package/specs/apg/button.qnt +445 -0
  223. package/specs/apg/carousel.qnt +732 -0
  224. package/specs/apg/checkbox-group.qnt +388 -0
  225. package/specs/apg/checkbox.qnt +394 -0
  226. package/specs/apg/combobox-autocomplete.qnt +764 -0
  227. package/specs/apg/combobox-dialog.qnt +627 -0
  228. package/specs/apg/combobox-grid.qnt +632 -0
  229. package/specs/apg/combobox-select-only.qnt +626 -0
  230. package/specs/apg/combobox-tree.qnt +633 -0
  231. package/specs/apg/dialog-modal.qnt +499 -0
  232. package/specs/apg/disclosure.qnt +309 -0
  233. package/specs/apg/feed.qnt +485 -0
  234. package/specs/apg/grid-selection.qnt +512 -0
  235. package/specs/apg/grid-sort.qnt +330 -0
  236. package/specs/apg/grid.qnt +360 -0
  237. package/specs/apg/link.qnt +119 -0
  238. package/specs/apg/listbox-multi.qnt +799 -0
  239. package/specs/apg/listbox-rearrangeable.qnt +801 -0
  240. package/specs/apg/listbox-single.qnt +511 -0
  241. package/specs/apg/listbox-typeahead.qnt +396 -0
  242. package/specs/apg/menu-button.qnt +363 -0
  243. package/specs/apg/menu-checkable.qnt +304 -0
  244. package/specs/apg/menu-menubar.qnt +531 -0
  245. package/specs/apg/meter.qnt +129 -0
  246. package/specs/apg/player.qnt +1081 -0
  247. package/specs/apg/radio.qnt +394 -0
  248. package/specs/apg/slider-multithumb.qnt +441 -0
  249. package/specs/apg/slider.qnt +396 -0
  250. package/specs/apg/spinbutton.qnt +494 -0
  251. package/specs/apg/switch.qnt +389 -0
  252. package/specs/apg/tabs.qnt +412 -0
  253. package/specs/apg/timeline.qnt +612 -0
  254. package/specs/apg/toolbar.qnt +364 -0
  255. package/specs/apg/tooltip.qnt +553 -0
  256. package/specs/apg/treegrid.qnt +983 -0
  257. package/specs/apg/treeview.qnt +1004 -0
  258. package/specs/apg/windowsplitter.qnt +487 -0
  259. package/specs/canvas/camera.qnt +407 -0
  260. package/specs/canvas/pointer.qnt +841 -0
@@ -0,0 +1,190 @@
1
+ import { ActionStep, Probe, ScenarioConfig, SpecBridge } from "../scenario.mjs";
2
+ import { QuintModelValue } from "@quint-machine/core";
3
+ import { Schema } from "effect";
4
+ //#region src/canvas/canvas.bridge.d.ts
5
+ /**
6
+ * Canvas vocabulary <-> `specs/canvas/camera.qnt` and `specs/canvas/pointer.qnt`.
7
+ *
8
+ * Two machines, so two bridges (`cameraBridge`, `pointerBridge`). Both parse a scenario step into
9
+ * a typed, library-neutral OP (`parseCameraOp`, `parsePointerOp`); the spec side turns the op into
10
+ * spec events, the DOM driver (packages/headless/test) turns the same op into real input. Anything
11
+ * outside the model's pools throws `Unsupported`, which skips the scenario on every target.
12
+ *
13
+ * Why steps are pool-shaped: the specs pick every selector from a small fixed pool (one nondet per
14
+ * action), so a step may only name a pool member - a palette position `p0..p11`, a pan delta from
15
+ * {-9e6, -400, 0, 5, 9e6}, a zoom factor from {1/2, 3/4, 5/4, 3/2, 2, 16, 1/16}, a named anchor.
16
+ *
17
+ * Observation targets (probe / `expect.attrs`):
18
+ * `layer` `--canvas-x` `--canvas-y` `--canvas-zoom` the rendered camera custom properties
19
+ * `node<i>` `aria-selected` `--node-x` `--node-y` `content-visibility`
20
+ * `live` `text` the live region
21
+ * `state` `mode owner selection cursor editing guides culled announcements` (pointer)
22
+ * `camera viewport tweening reducedMotion` (camera)
23
+ * `state` reads the primitive's own snapshot (`Canvas.peek()`), JSON-formatted by `formatValue`.
24
+ *
25
+ * Not an oracle: `culled` is an independent TS port of the spec's `culled` def (defs are not
26
+ * callable from the reference model), so it checks the primitive against the port, not the spec.
27
+ */
28
+ /** pointer.qnt's three nodes, bottom of the z-order first. */
29
+ export declare const NODES: readonly [{
30
+ readonly id: "0";
31
+ readonly x: 100;
32
+ readonly y: 100;
33
+ readonly width: 200;
34
+ readonly height: 100;
35
+ readonly label: "Node A";
36
+ }, {
37
+ readonly id: "1";
38
+ readonly x: 250;
39
+ readonly y: 150;
40
+ readonly width: 200;
41
+ readonly height: 150;
42
+ readonly label: "Node B";
43
+ }, {
44
+ readonly id: "2";
45
+ readonly x: 600;
46
+ readonly y: 400;
47
+ readonly width: 100;
48
+ readonly height: 100;
49
+ readonly label: "Node C";
50
+ }];
51
+ /** pointer.qnt's VW / VH: the viewport its culling predicate uses. */
52
+ export declare const POINTER_VIEWPORT: {
53
+ readonly width: 1024;
54
+ readonly height: 768;
55
+ };
56
+ /** pointer.qnt's screen palette (px): `p<k>` is `PALETTE[k]`. */
57
+ export declare const PALETTE: ReadonlyArray<readonly [x: number, y: number]>;
58
+ /** pointer.qnt's `extX(k)` / `extY(k)`: the positions a host move can set (the last is far past the world bound). */
59
+ export declare const HOST_POSITIONS: ReadonlyArray<readonly [x: number, y: number]>;
60
+ /** pointer.qnt's `zoomPreset(level)`, as zoom values. */
61
+ export declare const ZOOM_LEVELS: ReadonlyArray<number>;
62
+ export declare const VIEWPORTS: ReadonlyArray<readonly [width: number, height: number]>;
63
+ export declare const PAN_DELTAS: ReadonlyArray<number>;
64
+ export declare const ZOOM_FACTORS: ReadonlyArray<number>;
65
+ export declare const ANCHORS: readonly ["top-left", "centre", "bottom-right", "quarter"];
66
+ export type AnchorName = (typeof ANCHORS)[number];
67
+ export declare const CENTRE_POINTS: ReadonlyArray<readonly [x: number, y: number]>;
68
+ /** camera.qnt's `anchorX` / `anchorY`: where an anchor name sits in a viewport of this size. */
69
+ export declare const anchorPoint: (anchor: AnchorName, width: number, height: number) => readonly [x: number, y: number];
70
+ type Json = Schema.Json;
71
+ export type CameraOp = {
72
+ readonly op: "resize";
73
+ readonly viewport: number;
74
+ } | {
75
+ readonly op: "motion";
76
+ readonly reduced: boolean;
77
+ } | {
78
+ readonly op: "pan";
79
+ readonly dx: number;
80
+ readonly dy: number;
81
+ } | {
82
+ readonly op: "zoom";
83
+ /** Fixed point (4096 = x1). */
84
+ readonly factor: number;
85
+ readonly anchor: AnchorName;
86
+ } | {
87
+ readonly op: "zoomLimit";
88
+ readonly limit: "min" | "max";
89
+ readonly anchor: AnchorName;
90
+ } | {
91
+ readonly op: "tween";
92
+ readonly goal: {
93
+ readonly kind: "zoom";
94
+ readonly zoom: number;
95
+ readonly anchor: AnchorName;
96
+ } | {
97
+ readonly kind: "centre";
98
+ readonly x: number;
99
+ readonly y: number;
100
+ };
101
+ } | {
102
+ readonly op: "tick";
103
+ } | {
104
+ readonly op: "cancelTween";
105
+ };
106
+ /** A camera step -> an op; `Unsupported` for anything the camera machine does not model. */
107
+ export declare const parseCameraOp: (step: ActionStep) => CameraOp;
108
+ export type PointerId = 1 | 2;
109
+ export type PointerOp = {
110
+ readonly op: "down" | "move";
111
+ readonly pointer: PointerId;
112
+ readonly at: number;
113
+ } | {
114
+ readonly op: "up" | "cancel";
115
+ readonly pointer: PointerId;
116
+ } | {
117
+ readonly op: "shift" | "space" | "snap";
118
+ readonly on: boolean;
119
+ } | {
120
+ readonly op: "marquee";
121
+ readonly mode: "contain" | "overlap";
122
+ } | {
123
+ readonly op: "zoom";
124
+ readonly level: number;
125
+ } | {
126
+ readonly op: "edit";
127
+ } |
128
+ /** A host sets node `node`'s committed position to `HOST_POSITIONS[position]`. */
129
+ {
130
+ readonly op: "place";
131
+ readonly node: number;
132
+ readonly position: number;
133
+ };
134
+ /**
135
+ * A pointer step -> an op. Pointer input is `{ event: pointerdown | pointermove | pointerup |
136
+ * pointercancel, target: "p<k>", value: <pointer id, default 1> }`; modifiers and parameters are
137
+ * `prop` steps (`shift`, `space`, `snap`, `marquee`, `zoom`, `edit`).
138
+ */
139
+ export declare const parsePointerOp: (step: ActionStep) => PointerOp;
140
+ export interface CameraConfig {
141
+ readonly reducedMotion: boolean;
142
+ }
143
+ /** Scenario `config` -> what both targets are mounted with. */
144
+ export declare const cameraConfig: (config: ScenarioConfig) => CameraConfig;
145
+ export interface PointerConfig {
146
+ readonly marquee: "contain" | "overlap";
147
+ readonly snap: boolean;
148
+ }
149
+ export declare const pointerConfig: (config: ScenarioConfig) => PointerConfig;
150
+ /** How a `state` value is read as an attribute: a string as is, `null` = absent, the rest JSON. */
151
+ export declare const formatValue: (value: Json | undefined) => string | null;
152
+ type CameraValue = {
153
+ readonly camera: {
154
+ readonly tx: number;
155
+ readonly ty: number;
156
+ readonly z: number;
157
+ };
158
+ readonly viewport: {
159
+ readonly width: number;
160
+ readonly height: number;
161
+ };
162
+ readonly tweening: boolean;
163
+ readonly reducedMotion: boolean;
164
+ };
165
+ export declare const cameraValue: (state: QuintModelValue) => CameraValue;
166
+ export declare const cameraBridge: SpecBridge;
167
+ type PointerValue = {
168
+ readonly mode: string;
169
+ readonly owner: number | null;
170
+ readonly selection: ReadonlyArray<string>;
171
+ readonly cursor: string | null;
172
+ readonly editing: string | null;
173
+ readonly guides: {
174
+ readonly x: boolean;
175
+ readonly y: boolean;
176
+ };
177
+ readonly culled: ReadonlyArray<string>;
178
+ readonly announcements: number;
179
+ };
180
+ export declare const pointerValue: (state: QuintModelValue) => PointerValue;
181
+ /** The text the primitive's default messages give a settled selection. */
182
+ export declare const selectionText: (ids: ReadonlyArray<string>) => string;
183
+ export declare const pointerBridge: SpecBridge;
184
+ /** The user-level steps a pointer differential walk draws from. */
185
+ export declare const pointerSteps: ReadonlyArray<ActionStep>;
186
+ export declare const pointerProbe: Probe;
187
+ /** The user-level steps a camera differential walk draws from. */
188
+ export declare const cameraSteps: ReadonlyArray<ActionStep>;
189
+ export declare const cameraProbe: Probe;
190
+ //#endregion