@exponential-at/ui 0.0.0-stage → 0.1.0

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 (251) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +360 -2
  4. package/catalog/a11y.json +668 -0
  5. package/catalog/basic-map.json +104 -0
  6. package/catalog/code.json +58 -0
  7. package/catalog/core.catalog.json +4752 -0
  8. package/catalog/core.schema.json +22667 -0
  9. package/catalog/host.json +64 -0
  10. package/catalog/layout.json +20 -0
  11. package/catalog/limits.json +9 -0
  12. package/catalog/locale.json +48 -0
  13. package/catalog/macros.json +3417 -0
  14. package/catalog/recipes.json +61 -0
  15. package/catalog/strings.json +72 -0
  16. package/catalog/style.json +128 -0
  17. package/catalog/theme.schema.json +42543 -0
  18. package/catalog/tokens.json +47 -0
  19. package/conformance/README.md +217 -0
  20. package/conformance/baseline.ts +101 -0
  21. package/conformance/browser-page.ts +146 -0
  22. package/conformance/browser-suites.ts +683 -0
  23. package/conformance/compare.ts +201 -0
  24. package/conformance/dom.ts +96 -0
  25. package/conformance/dump.ts +163 -0
  26. package/conformance/fonts.json +154 -0
  27. package/conformance/manifest.json +224 -0
  28. package/conformance/parity-compare.ts +191 -0
  29. package/conformance/parity-report.schema.json +73 -0
  30. package/conformance/parity.ts +412 -0
  31. package/conformance/pixel.ts +177 -0
  32. package/conformance/primitives-page.ts +49 -0
  33. package/conformance/report.schema.json +66 -0
  34. package/conformance/run.ts +118 -0
  35. package/dist/chunks/index-98npjvsd.js +3940 -0
  36. package/dist/chunks/index-98npjvsd.js.map +27 -0
  37. package/dist/chunks/index-gwkt14w3.js +7314 -0
  38. package/dist/chunks/index-gwkt14w3.js.map +10 -0
  39. package/dist/chunks/index-njt7yzzm.js +134 -0
  40. package/dist/chunks/index-njt7yzzm.js.map +9 -0
  41. package/dist/chunks/index-we7va6v6.js +7984 -0
  42. package/dist/chunks/index-we7va6v6.js.map +15 -0
  43. package/dist/chunks/index-xrm6f7wc.js +2563 -0
  44. package/dist/chunks/index-xrm6f7wc.js.map +10 -0
  45. package/dist/conformance.js +182749 -0
  46. package/dist/conformance.js.map +10 -0
  47. package/dist/entries/prompt.js +251 -0
  48. package/dist/entries/prompt.js.map +11 -0
  49. package/dist/entries/schema.js +1725 -0
  50. package/dist/entries/schema.js.map +11 -0
  51. package/dist/host/index.js +122 -0
  52. package/dist/host/index.js.map +9 -0
  53. package/dist/index.js +3213 -0
  54. package/dist/index.js.map +27 -0
  55. package/dist/types/src/a11y.d.ts +21 -0
  56. package/dist/types/src/animation.d.ts +76 -0
  57. package/dist/types/src/basic-map.d.ts +38 -0
  58. package/dist/types/src/builder.d.ts +50 -0
  59. package/dist/types/src/catalog.d.ts +54 -0
  60. package/dist/types/src/catalog.described.d.ts +33 -0
  61. package/dist/types/src/catalog.generated.d.ts +829 -0
  62. package/dist/types/src/chart.d.ts +46 -0
  63. package/dist/types/src/code.d.ts +44 -0
  64. package/dist/types/src/color.d.ts +20 -0
  65. package/dist/types/src/conformance.d.ts +39 -0
  66. package/dist/types/src/connector/app.d.ts +14 -0
  67. package/dist/types/src/connector/connector.d.ts +77 -0
  68. package/dist/types/src/connector/index.d.ts +4 -0
  69. package/dist/types/src/css.d.ts +29 -0
  70. package/dist/types/src/define.d.ts +66 -0
  71. package/dist/types/src/direction.d.ts +16 -0
  72. package/dist/types/src/dynamic.d.ts +159 -0
  73. package/dist/types/src/entries/prompt.d.ts +11 -0
  74. package/dist/types/src/entries/schema.d.ts +8 -0
  75. package/dist/types/src/expr.d.ts +71 -0
  76. package/dist/types/src/extension.d.ts +4 -0
  77. package/dist/types/src/format.d.ts +112 -0
  78. package/dist/types/src/geometry.d.ts +40 -0
  79. package/dist/types/src/host/contract.d.ts +188 -0
  80. package/dist/types/src/host/decoders.d.ts +61 -0
  81. package/dist/types/src/host/index.d.ts +11 -0
  82. package/dist/types/src/host/package.d.ts +58 -0
  83. package/dist/types/src/host/policy.d.ts +105 -0
  84. package/dist/types/src/host/router.d.ts +34 -0
  85. package/dist/types/src/host/runtime.d.ts +205 -0
  86. package/dist/types/src/host/sources.d.ts +15 -0
  87. package/dist/types/src/host/transports.d.ts +109 -0
  88. package/dist/types/src/index.d.ts +63 -0
  89. package/dist/types/src/layout.d.ts +20 -0
  90. package/dist/types/src/limits.d.ts +21 -0
  91. package/dist/types/src/list.d.ts +133 -0
  92. package/dist/types/src/locale.d.ts +22 -0
  93. package/dist/types/src/macros.d.ts +29 -0
  94. package/dist/types/src/overlay.d.ts +27 -0
  95. package/dist/types/src/prompt.d.ts +44 -0
  96. package/dist/types/src/recipes.d.ts +17 -0
  97. package/dist/types/src/reducer.d.ts +41 -0
  98. package/dist/types/src/resizable.d.ts +38 -0
  99. package/dist/types/src/schema.d.ts +7 -0
  100. package/dist/types/src/strings.d.ts +13 -0
  101. package/dist/types/src/style.d.ts +201 -0
  102. package/dist/types/src/test-preload.d.ts +1 -0
  103. package/dist/types/src/text-shimmer.d.ts +24 -0
  104. package/dist/types/src/theme-types.d.ts +162 -0
  105. package/dist/types/src/theme.d.ts +73 -0
  106. package/dist/types/src/themes.d.ts +22 -0
  107. package/dist/types/src/tree-guides.d.ts +17 -0
  108. package/dist/types/src/types.d.ts +314 -0
  109. package/dist/types/src/validate.d.ts +31 -0
  110. package/dist/types/src/web/base-css.d.ts +1 -0
  111. package/dist/types/src/web/box-css.d.ts +55 -0
  112. package/dist/types/src/web/coerce.d.ts +32 -0
  113. package/dist/types/src/web/data.d.ts +105 -0
  114. package/dist/types/src/web/dates.d.ts +12 -0
  115. package/dist/types/src/web/form.d.ts +44 -0
  116. package/dist/types/src/web/host-types.d.ts +119 -0
  117. package/dist/types/src/web/index.d.ts +28 -0
  118. package/dist/types/src/web/inputs.d.ts +55 -0
  119. package/dist/types/src/web/list.d.ts +13 -0
  120. package/dist/types/src/web/listbox.d.ts +14 -0
  121. package/dist/types/src/web/markdown.d.ts +96 -0
  122. package/dist/types/src/web/media.d.ts +62 -0
  123. package/dist/types/src/web/parts.d.ts +4 -0
  124. package/dist/types/src/web/primitives/alert-dialog.d.ts +10 -0
  125. package/dist/types/src/web/primitives/alert.d.ts +9 -0
  126. package/dist/types/src/web/primitives/avatar-color.d.ts +2 -0
  127. package/dist/types/src/web/primitives/avatar.d.ts +13 -0
  128. package/dist/types/src/web/primitives/badge.d.ts +10 -0
  129. package/dist/types/src/web/primitives/breadcrumb.d.ts +10 -0
  130. package/dist/types/src/web/primitives/button.d.ts +6 -0
  131. package/dist/types/src/web/primitives/calendar.d.ts +43 -0
  132. package/dist/types/src/web/primitives/card.d.ts +9 -0
  133. package/dist/types/src/web/primitives/checkbox.d.ts +5 -0
  134. package/dist/types/src/web/primitives/choice-tiles.d.ts +32 -0
  135. package/dist/types/src/web/primitives/cn.d.ts +3 -0
  136. package/dist/types/src/web/primitives/code-block.d.ts +24 -0
  137. package/dist/types/src/web/primitives/command.d.ts +134 -0
  138. package/dist/types/src/web/primitives/context-ring.d.ts +24 -0
  139. package/dist/types/src/web/primitives/dialog-arms.d.ts +6 -0
  140. package/dist/types/src/web/primitives/dialog.d.ts +24 -0
  141. package/dist/types/src/web/primitives/disclosure-header.d.ts +5 -0
  142. package/dist/types/src/web/primitives/dock.d.ts +42 -0
  143. package/dist/types/src/web/primitives/dropdown-menu.d.ts +14 -0
  144. package/dist/types/src/web/primitives/empty-state.d.ts +15 -0
  145. package/dist/types/src/web/primitives/glass-card.d.ts +4 -0
  146. package/dist/types/src/web/primitives/hover-card.d.ts +7 -0
  147. package/dist/types/src/web/primitives/icon-disc.d.ts +12 -0
  148. package/dist/types/src/web/primitives/index.d.ts +48 -0
  149. package/dist/types/src/web/primitives/input.d.ts +5 -0
  150. package/dist/types/src/web/primitives/kbd.d.ts +4 -0
  151. package/dist/types/src/web/primitives/label.d.ts +3 -0
  152. package/dist/types/src/web/primitives/menu-surface.d.ts +17 -0
  153. package/dist/types/src/web/primitives/meter.d.ts +21 -0
  154. package/dist/types/src/web/primitives/popover.d.ts +3 -0
  155. package/dist/types/src/web/primitives/progress-ring.d.ts +5 -0
  156. package/dist/types/src/web/primitives/progress.d.ts +8 -0
  157. package/dist/types/src/web/primitives/scroll-area.d.ts +49 -0
  158. package/dist/types/src/web/primitives/segmented-control.d.ts +5 -0
  159. package/dist/types/src/web/primitives/select.d.ts +47 -0
  160. package/dist/types/src/web/primitives/separator.d.ts +3 -0
  161. package/dist/types/src/web/primitives/sheet-chrome.d.ts +4 -0
  162. package/dist/types/src/web/primitives/sheet.d.ts +20 -0
  163. package/dist/types/src/web/primitives/skeleton.d.ts +3 -0
  164. package/dist/types/src/web/primitives/spinner.d.ts +3 -0
  165. package/dist/types/src/web/primitives/switch.d.ts +4 -0
  166. package/dist/types/src/web/primitives/table.d.ts +11 -0
  167. package/dist/types/src/web/primitives/tabs.d.ts +13 -0
  168. package/dist/types/src/web/primitives/textarea.d.ts +3 -0
  169. package/dist/types/src/web/primitives/toast.d.ts +163 -0
  170. package/dist/types/src/web/primitives/tooltip.d.ts +3 -0
  171. package/dist/types/src/web/primitives/truncate.d.ts +7 -0
  172. package/dist/types/src/web/primitives/typeahead-portal.d.ts +12 -0
  173. package/dist/types/src/web/share.d.ts +6 -0
  174. package/dist/types/src/web/table.d.ts +20 -0
  175. package/dist/types/src/web/theme-css.d.ts +69 -0
  176. package/dist/types/src/web/urls.d.ts +21 -0
  177. package/dist/web/index.js +2303 -0
  178. package/dist/web/index.js.map +26 -0
  179. package/dist/web/primitives/index.js +1450 -0
  180. package/dist/web/primitives/index.js.map +57 -0
  181. package/docs/components.generated.json +6238 -0
  182. package/docs/round-1-contract.md +679 -0
  183. package/docs/round-2-contract.md +476 -0
  184. package/docs/round-3-contract.md +174 -0
  185. package/docs/themes.generated.json +3503 -0
  186. package/fixtures/animations.json +2890 -0
  187. package/fixtures/bench-list.json +58 -0
  188. package/fixtures/bind-time.json +30664 -0
  189. package/fixtures/catalog-basic-map.json +1692 -0
  190. package/fixtures/catalog-components.json +9323 -0
  191. package/fixtures/catalog-extension.json +620 -0
  192. package/fixtures/catalog-macros.json +36370 -0
  193. package/fixtures/code-tokens.json +1993 -0
  194. package/fixtures/conformance-baseline.json +55544 -0
  195. package/fixtures/conformance-cases.json +49 -0
  196. package/fixtures/conformance-known.json +2123 -0
  197. package/fixtures/control-geometry.json +4200 -0
  198. package/fixtures/dashboard.data.json +74 -0
  199. package/fixtures/dashboard.json +752 -0
  200. package/fixtures/demo-surface.json +47 -0
  201. package/fixtures/format.json +870 -0
  202. package/fixtures/host-policy.json +1067 -0
  203. package/fixtures/host-router.json +1152 -0
  204. package/fixtures/host-transport.json +590 -0
  205. package/fixtures/interactions-round1.json +773 -0
  206. package/fixtures/kitchen-sink.expanded.json +10844 -0
  207. package/fixtures/kitchen-sink.json +3049 -0
  208. package/fixtures/layout-geometry-round1.json +7278 -0
  209. package/fixtures/layout-geometry.json +2072 -0
  210. package/fixtures/overlay-geometry.json +272 -0
  211. package/fixtures/primitive-specimens.json +58 -0
  212. package/fixtures/prompt-budget.json +33 -0
  213. package/fixtures/resizable.json +714 -0
  214. package/fixtures/round4-contract.json +2985 -0
  215. package/fixtures/specimens.json +9832 -0
  216. package/fixtures/style-conditions.json +336 -0
  217. package/fixtures/template-items.json +2215 -0
  218. package/fixtures/text-direction.json +309 -0
  219. package/fixtures/text-shimmer.json +96 -0
  220. package/fixtures/theme-extends.json +573 -0
  221. package/fixtures/theme-invalid.json +1296 -0
  222. package/fixtures/theme-recipes.json +58600 -0
  223. package/fixtures/theme-resolved.json +23949 -0
  224. package/fixtures/toast-stack.json +215 -0
  225. package/fixtures/tree-guides.json +224 -0
  226. package/fixtures/virtual-list.json +733 -0
  227. package/generated/ExponentialUICatalog.generated.kt +67 -0
  228. package/generated/ExponentialUICatalog.generated.swift +67 -0
  229. package/generated/ExponentialUIThemes.generated.kt +23 -0
  230. package/generated/ExponentialUIThemes.generated.swift +23 -0
  231. package/generated/catalog.descriptions.generated.rs +6 -0
  232. package/generated/catalog.generated.rs +80 -0
  233. package/generated/catalog.themes.generated.rs +34 -0
  234. package/generated/core.descriptions.json +2505 -0
  235. package/generated/core.runtime.json +3609 -0
  236. package/package.json +87 -4
  237. package/themes/exponential.recipes.json +49 -0
  238. package/themes/exponential.theme.json +755 -0
  239. package/themes/neutral.theme.json +5676 -0
  240. package/themes/orange.theme.json +43 -0
  241. package/themes/playful.theme.json +219 -0
  242. package/vendor/a2ui/LICENSE.txt +203 -0
  243. package/vendor/a2ui/README.md +27 -0
  244. package/vendor/a2ui/v0_9/basic_catalog.json +1387 -0
  245. package/vendor/a2ui/v0_9/basic_catalog_rules.txt +5 -0
  246. package/vendor/a2ui/v0_9/client_capabilities.json +97 -0
  247. package/vendor/a2ui/v0_9/client_to_server.json +104 -0
  248. package/vendor/a2ui/v0_9/common_types.json +315 -0
  249. package/vendor/a2ui/v0_9/server_to_client.json +132 -0
  250. package/vendor/json-render/LICENSE.txt +201 -0
  251. package/vendor/json-render/README.md +13 -0
@@ -0,0 +1,215 @@
1
+ {
2
+ "_comment": "EXP-1031: THE toast, identical x4 (web packages/ui/src/toast.tsx over sonner, desktop crates/ui/src/toast.rs (its own ToastLayer per window over gpui_base::ToastManager, theme::motion for every transition), iOS ExpCore ToastStack + ExpUI Toast.swift, Android domain/ToastStack.kt + ui/components/Toast.kt). The numbers are sonner 2.0.7's. A toast is one sentence (`title`), an optional `description`, an optional `action` and a `kind` whose colour sits on the ICON alone (concept icons ui-success / ui-error / ui-info / ui-warning, close = ui-close); the card is the opaque glass card fill with the card hairline at radius lg, never a shadow, `width` wide on a pointer and the phone's width minus `mobileViewportOffset` on touch. `placement`: bottom-right on a pointer (web above `touchMaxWidth`, the IDE), `viewportOffset` from the edges; TOP-centre on touch (mobile web, iOS, Android) `mobileViewportOffset` below the status bar, so no bottom sheet, tab bar or keyboard ever covers it. On a top stack the older toasts peek out BELOW the front one and the stack grows downward when expanded; the swipe that dismisses goes up or sideways. The newest toast is in front; the older ones peek out behind it by `peek` and shrink by `scaleStep` per rank, `visible` of them at most. Hover (pointer) or tap (touch) EXPANDS the stack: every toast at full size, `gap` apart, and the auto-dismiss clock (`durationMs`) pauses. Dismiss = the close glyph, a swipe past `swipeThreshold` (touch and web), or the action. `geometry` is per item, oldest first: `offset` = the item's top inside the stack box (anchoredBottom stacks measure from the box's top too), `scale` its width factor, `visible` whether it draws at all; `height` is the stack box. Points (web px = desktop px = iOS pt = Android dp). Locked by packages/ui toast.test.tsx, crates/ui toast.rs tests, ExpCore ToastStackTests, Android ToastStackTest. N-12: the stack geometry is ONE function x4 (TS reference src/stack.ts `stackLayout(heights, {expanded, anchoredBottom}, constants)`), shared with THE Dock's pile (fixtures/dock.json `stack`: the same peek, scaleStep and visible, its own gap).",
3
+ "constants": {
4
+ "width": 356,
5
+ "gap": 14,
6
+ "peek": 14,
7
+ "scaleStep": 0.05,
8
+ "visible": 3,
9
+ "durationMs": 4000,
10
+ "swipeThreshold": 45,
11
+ "viewportOffset": 24,
12
+ "mobileViewportOffset": 16,
13
+ "placement": {
14
+ "pointer": "bottom-right",
15
+ "touch": "top-center"
16
+ },
17
+ "touchMaxWidth": 600,
18
+ "kinds": [
19
+ "success",
20
+ "error",
21
+ "info",
22
+ "warning"
23
+ ]
24
+ },
25
+ "geometry": [
26
+ {
27
+ "name": "no toast draws nothing",
28
+ "heights": [],
29
+ "expanded": false,
30
+ "anchoredBottom": false,
31
+ "height": 0,
32
+ "items": []
33
+ },
34
+ {
35
+ "name": "one toast sits at the origin",
36
+ "heights": [
37
+ 60
38
+ ],
39
+ "expanded": false,
40
+ "anchoredBottom": false,
41
+ "height": 60,
42
+ "items": [
43
+ {
44
+ "offset": 0,
45
+ "scale": 1,
46
+ "visible": true
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "name": "three equal toasts collapsed from the top peek by rank",
52
+ "heights": [
53
+ 60,
54
+ 60,
55
+ 60
56
+ ],
57
+ "expanded": false,
58
+ "anchoredBottom": false,
59
+ "height": 88,
60
+ "items": [
61
+ {
62
+ "offset": 28,
63
+ "scale": 0.9,
64
+ "visible": true
65
+ },
66
+ {
67
+ "offset": 14,
68
+ "scale": 0.95,
69
+ "visible": true
70
+ },
71
+ {
72
+ "offset": 0,
73
+ "scale": 1,
74
+ "visible": true
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "name": "three equal toasts expanded from the top lie gap apart at full size",
80
+ "heights": [
81
+ 60,
82
+ 60,
83
+ 60
84
+ ],
85
+ "expanded": true,
86
+ "anchoredBottom": false,
87
+ "height": 208,
88
+ "items": [
89
+ {
90
+ "offset": 148,
91
+ "scale": 1,
92
+ "visible": true
93
+ },
94
+ {
95
+ "offset": 74,
96
+ "scale": 1,
97
+ "visible": true
98
+ },
99
+ {
100
+ "offset": 0,
101
+ "scale": 1,
102
+ "visible": true
103
+ }
104
+ ]
105
+ },
106
+ {
107
+ "name": "four mixed toasts collapsed from the bottom hide the fourth",
108
+ "heights": [
109
+ 40,
110
+ 80,
111
+ 60,
112
+ 50
113
+ ],
114
+ "expanded": false,
115
+ "anchoredBottom": true,
116
+ "height": 108,
117
+ "items": [
118
+ {
119
+ "offset": 26,
120
+ "scale": 0.9,
121
+ "visible": false
122
+ },
123
+ {
124
+ "offset": 0,
125
+ "scale": 0.9,
126
+ "visible": true
127
+ },
128
+ {
129
+ "offset": 34,
130
+ "scale": 0.95,
131
+ "visible": true
132
+ },
133
+ {
134
+ "offset": 58,
135
+ "scale": 1,
136
+ "visible": true
137
+ }
138
+ ]
139
+ },
140
+ {
141
+ "name": "four mixed toasts expanded from the bottom stack upward gap apart",
142
+ "heights": [
143
+ 40,
144
+ 80,
145
+ 60,
146
+ 50
147
+ ],
148
+ "expanded": true,
149
+ "anchoredBottom": true,
150
+ "height": 272,
151
+ "items": [
152
+ {
153
+ "offset": 0,
154
+ "scale": 1,
155
+ "visible": true
156
+ },
157
+ {
158
+ "offset": 54,
159
+ "scale": 1,
160
+ "visible": true
161
+ },
162
+ {
163
+ "offset": 148,
164
+ "scale": 1,
165
+ "visible": true
166
+ },
167
+ {
168
+ "offset": 222,
169
+ "scale": 1,
170
+ "visible": true
171
+ }
172
+ ]
173
+ },
174
+ {
175
+ "name": "five toasts collapsed show three and keep the rest behind",
176
+ "heights": [
177
+ 50,
178
+ 50,
179
+ 50,
180
+ 50,
181
+ 50
182
+ ],
183
+ "expanded": false,
184
+ "anchoredBottom": false,
185
+ "height": 106,
186
+ "items": [
187
+ {
188
+ "offset": 56,
189
+ "scale": 0.9,
190
+ "visible": false
191
+ },
192
+ {
193
+ "offset": 42,
194
+ "scale": 0.9,
195
+ "visible": false
196
+ },
197
+ {
198
+ "offset": 28,
199
+ "scale": 0.9,
200
+ "visible": true
201
+ },
202
+ {
203
+ "offset": 14,
204
+ "scale": 0.95,
205
+ "visible": true
206
+ },
207
+ {
208
+ "offset": 0,
209
+ "scale": 1,
210
+ "visible": true
211
+ }
212
+ ]
213
+ }
214
+ ]
215
+ }
@@ -0,0 +1,224 @@
1
+ {
2
+ "$comment": "AUTO-GENERATED by packages/exponential-ui/scripts/generate.ts — do not edit.\nSource of truth: packages/exponential-ui/catalog/core.catalog.json (+ tokens.json, style.json, basic-map.json, strings.json, locale.json, code.json, a11y.json, layout.json). Round 3 (docs/round-3-contract.md §2): the tree connector rule the core computes for nested Rows (src/tree-guides.ts treeGuides, the ×4 app rule): depths → per row the elbow level (null for a root), whether the elbow tees on to a later sibling, and the ancestor levels passing straight through. The Rust core replays it (tree_guides.rs); the painters never compute it.",
3
+ "cases": [
4
+ {
5
+ "name": "flat",
6
+ "depths": [
7
+ 0,
8
+ 0,
9
+ 0
10
+ ],
11
+ "guides": [
12
+ {
13
+ "elbowAt": null,
14
+ "tee": false,
15
+ "passThrough": []
16
+ },
17
+ {
18
+ "elbowAt": null,
19
+ "tee": false,
20
+ "passThrough": []
21
+ },
22
+ {
23
+ "elbowAt": null,
24
+ "tee": false,
25
+ "passThrough": []
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ "name": "chain",
31
+ "depths": [
32
+ 0,
33
+ 1,
34
+ 2
35
+ ],
36
+ "guides": [
37
+ {
38
+ "elbowAt": null,
39
+ "tee": false,
40
+ "passThrough": []
41
+ },
42
+ {
43
+ "elbowAt": 0,
44
+ "tee": false,
45
+ "passThrough": []
46
+ },
47
+ {
48
+ "elbowAt": 1,
49
+ "tee": false,
50
+ "passThrough": []
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "name": "siblings",
56
+ "depths": [
57
+ 0,
58
+ 1,
59
+ 1,
60
+ 1
61
+ ],
62
+ "guides": [
63
+ {
64
+ "elbowAt": null,
65
+ "tee": false,
66
+ "passThrough": []
67
+ },
68
+ {
69
+ "elbowAt": 0,
70
+ "tee": true,
71
+ "passThrough": []
72
+ },
73
+ {
74
+ "elbowAt": 0,
75
+ "tee": true,
76
+ "passThrough": []
77
+ },
78
+ {
79
+ "elbowAt": 0,
80
+ "tee": false,
81
+ "passThrough": []
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ "name": "pass-through",
87
+ "depths": [
88
+ 0,
89
+ 1,
90
+ 2,
91
+ 2,
92
+ 1
93
+ ],
94
+ "guides": [
95
+ {
96
+ "elbowAt": null,
97
+ "tee": false,
98
+ "passThrough": []
99
+ },
100
+ {
101
+ "elbowAt": 0,
102
+ "tee": true,
103
+ "passThrough": []
104
+ },
105
+ {
106
+ "elbowAt": 1,
107
+ "tee": true,
108
+ "passThrough": [
109
+ 0
110
+ ]
111
+ },
112
+ {
113
+ "elbowAt": 1,
114
+ "tee": false,
115
+ "passThrough": [
116
+ 0
117
+ ]
118
+ },
119
+ {
120
+ "elbowAt": 0,
121
+ "tee": false,
122
+ "passThrough": []
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "name": "subtree-ends",
128
+ "depths": [
129
+ 0,
130
+ 1,
131
+ 2,
132
+ 3,
133
+ 2
134
+ ],
135
+ "guides": [
136
+ {
137
+ "elbowAt": null,
138
+ "tee": false,
139
+ "passThrough": []
140
+ },
141
+ {
142
+ "elbowAt": 0,
143
+ "tee": false,
144
+ "passThrough": []
145
+ },
146
+ {
147
+ "elbowAt": 1,
148
+ "tee": true,
149
+ "passThrough": []
150
+ },
151
+ {
152
+ "elbowAt": 2,
153
+ "tee": false,
154
+ "passThrough": [
155
+ 1
156
+ ]
157
+ },
158
+ {
159
+ "elbowAt": 1,
160
+ "tee": false,
161
+ "passThrough": []
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "name": "two-roots",
167
+ "depths": [
168
+ 0,
169
+ 1,
170
+ 0,
171
+ 1
172
+ ],
173
+ "guides": [
174
+ {
175
+ "elbowAt": null,
176
+ "tee": false,
177
+ "passThrough": []
178
+ },
179
+ {
180
+ "elbowAt": 0,
181
+ "tee": false,
182
+ "passThrough": []
183
+ },
184
+ {
185
+ "elbowAt": null,
186
+ "tee": false,
187
+ "passThrough": []
188
+ },
189
+ {
190
+ "elbowAt": 0,
191
+ "tee": false,
192
+ "passThrough": []
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "name": "orphans",
198
+ "depths": [
199
+ 1,
200
+ 2,
201
+ 1
202
+ ],
203
+ "guides": [
204
+ {
205
+ "elbowAt": 0,
206
+ "tee": true,
207
+ "passThrough": []
208
+ },
209
+ {
210
+ "elbowAt": 1,
211
+ "tee": false,
212
+ "passThrough": [
213
+ 0
214
+ ]
215
+ },
216
+ {
217
+ "elbowAt": 0,
218
+ "tee": false,
219
+ "passThrough": []
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ }