@graview/primitives 0.1.28 → 0.1.29

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 (271) hide show
  1. package/dist/app-bar.d.ts.map +1 -1
  2. package/dist/app-bar.js +9 -9
  3. package/dist/app-bar.js.map +1 -1
  4. package/dist/app-link-door.d.ts +3 -0
  5. package/dist/app-link-door.d.ts.map +1 -0
  6. package/dist/app-link-door.js +11 -0
  7. package/dist/app-link-door.js.map +1 -0
  8. package/dist/app-link.d.ts +20 -0
  9. package/dist/app-link.d.ts.map +1 -0
  10. package/dist/app-link.js +131 -0
  11. package/dist/app-link.js.map +1 -0
  12. package/dist/arrange-bar.d.ts +47 -4
  13. package/dist/arrange-bar.d.ts.map +1 -1
  14. package/dist/arrange-bar.js +73 -11
  15. package/dist/arrange-bar.js.map +1 -1
  16. package/dist/arrange-lists.d.ts +58 -1
  17. package/dist/arrange-lists.d.ts.map +1 -1
  18. package/dist/arrange-lists.js +152 -23
  19. package/dist/arrange-lists.js.map +1 -1
  20. package/dist/arrangement.d.ts.map +1 -1
  21. package/dist/arrangement.js +3 -1
  22. package/dist/arrangement.js.map +1 -1
  23. package/dist/bar-panes.d.ts +1 -0
  24. package/dist/bar-panes.d.ts.map +1 -1
  25. package/dist/bar-panes.js +1 -0
  26. package/dist/bar-panes.js.map +1 -1
  27. package/dist/chat.d.ts.map +1 -1
  28. package/dist/chat.js +3 -1
  29. package/dist/chat.js.map +1 -1
  30. package/dist/choosing.d.ts +36 -0
  31. package/dist/choosing.d.ts.map +1 -0
  32. package/dist/choosing.js +224 -0
  33. package/dist/choosing.js.map +1 -0
  34. package/dist/connections.d.ts.map +1 -1
  35. package/dist/connections.js +2 -1
  36. package/dist/connections.js.map +1 -1
  37. package/dist/declared-lens-doors.d.ts.map +1 -1
  38. package/dist/declared-lens-doors.js +5 -1
  39. package/dist/declared-lens-doors.js.map +1 -1
  40. package/dist/declared-lenses.d.ts +3 -2
  41. package/dist/declared-lenses.d.ts.map +1 -1
  42. package/dist/declared-lenses.js +5 -4
  43. package/dist/declared-lenses.js.map +1 -1
  44. package/dist/default-views.d.ts.map +1 -1
  45. package/dist/default-views.js +74 -18
  46. package/dist/default-views.js.map +1 -1
  47. package/dist/draft-frame.d.ts +1 -0
  48. package/dist/draft-frame.d.ts.map +1 -1
  49. package/dist/draft-frame.js +1 -0
  50. package/dist/draft-frame.js.map +1 -1
  51. package/dist/editable.d.ts +19 -1
  52. package/dist/editable.d.ts.map +1 -1
  53. package/dist/editable.js +62 -34
  54. package/dist/editable.js.map +1 -1
  55. package/dist/files.d.ts +1 -0
  56. package/dist/files.d.ts.map +1 -1
  57. package/dist/files.js +1 -0
  58. package/dist/files.js.map +1 -1
  59. package/dist/find.d.ts.map +1 -1
  60. package/dist/find.js +13 -6
  61. package/dist/find.js.map +1 -1
  62. package/dist/frame.d.ts +1 -2
  63. package/dist/frame.d.ts.map +1 -1
  64. package/dist/frame.js +19 -2
  65. package/dist/frame.js.map +1 -1
  66. package/dist/framework-views.d.ts +1 -0
  67. package/dist/framework-views.d.ts.map +1 -1
  68. package/dist/framework-views.js +1 -0
  69. package/dist/framework-views.js.map +1 -1
  70. package/dist/home-view.d.ts +1 -0
  71. package/dist/home-view.d.ts.map +1 -1
  72. package/dist/home-view.js +1 -0
  73. package/dist/home-view.js.map +1 -1
  74. package/dist/index.d.ts +14 -4
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +11 -4
  77. package/dist/index.js.map +1 -1
  78. package/dist/installation.js +1 -1
  79. package/dist/installation.js.map +1 -1
  80. package/dist/kind-shape.d.ts +130 -0
  81. package/dist/kind-shape.d.ts.map +1 -0
  82. package/dist/kind-shape.js +299 -0
  83. package/dist/kind-shape.js.map +1 -0
  84. package/dist/kind-stop.d.ts +16 -0
  85. package/dist/kind-stop.d.ts.map +1 -0
  86. package/dist/kind-stop.js +377 -0
  87. package/dist/kind-stop.js.map +1 -0
  88. package/dist/lens/arranging.d.ts.map +1 -1
  89. package/dist/lens/arranging.js +13 -4
  90. package/dist/lens/arranging.js.map +1 -1
  91. package/dist/lens/calendar-dates.d.ts +4 -3
  92. package/dist/lens/calendar-dates.d.ts.map +1 -1
  93. package/dist/lens/calendar-dates.js +12 -5
  94. package/dist/lens/calendar-dates.js.map +1 -1
  95. package/dist/lens/calendar-drawing.js +8 -8
  96. package/dist/lens/calendar-drawing.js.map +1 -1
  97. package/dist/lens/calendar-options.d.ts +2 -0
  98. package/dist/lens/calendar-options.d.ts.map +1 -1
  99. package/dist/lens/calendar-options.js.map +1 -1
  100. package/dist/lens/calendar-placing.d.ts +13 -0
  101. package/dist/lens/calendar-placing.d.ts.map +1 -1
  102. package/dist/lens/calendar-placing.js +23 -2
  103. package/dist/lens/calendar-placing.js.map +1 -1
  104. package/dist/lens/calendar-spans.d.ts.map +1 -1
  105. package/dist/lens/calendar-spans.js +5 -4
  106. package/dist/lens/calendar-spans.js.map +1 -1
  107. package/dist/lens/calendar-view.js +9 -5
  108. package/dist/lens/calendar-view.js.map +1 -1
  109. package/dist/lens/columns.d.ts.map +1 -1
  110. package/dist/lens/columns.js +35 -7
  111. package/dist/lens/columns.js.map +1 -1
  112. package/dist/lens/timeline.d.ts +1 -1
  113. package/dist/lens/timeline.d.ts.map +1 -1
  114. package/dist/lens/timeline.js +126 -16
  115. package/dist/lens/timeline.js.map +1 -1
  116. package/dist/lines-key.d.ts.map +1 -1
  117. package/dist/lines-key.js +11 -5
  118. package/dist/lines-key.js.map +1 -1
  119. package/dist/map-asks.d.ts +10 -0
  120. package/dist/map-asks.d.ts.map +1 -0
  121. package/dist/map-asks.js +17 -0
  122. package/dist/map-asks.js.map +1 -0
  123. package/dist/map-key.d.ts +3 -0
  124. package/dist/map-key.d.ts.map +1 -0
  125. package/dist/map-key.js +35 -0
  126. package/dist/map-key.js.map +1 -0
  127. package/dist/map-panel-door.d.ts +26 -0
  128. package/dist/map-panel-door.d.ts.map +1 -0
  129. package/dist/map-panel-door.js +42 -0
  130. package/dist/map-panel-door.js.map +1 -0
  131. package/dist/map-panel.d.ts +8 -0
  132. package/dist/map-panel.d.ts.map +1 -0
  133. package/dist/map-panel.js +351 -0
  134. package/dist/map-panel.js.map +1 -0
  135. package/dist/markdown-body.d.ts +11 -0
  136. package/dist/markdown-body.d.ts.map +1 -0
  137. package/dist/markdown-body.js +89 -0
  138. package/dist/markdown-body.js.map +1 -0
  139. package/dist/notice-stacks.d.ts +13 -0
  140. package/dist/notice-stacks.d.ts.map +1 -0
  141. package/dist/notice-stacks.js +141 -0
  142. package/dist/notice-stacks.js.map +1 -0
  143. package/dist/notices.d.ts +2 -0
  144. package/dist/notices.d.ts.map +1 -1
  145. package/dist/notices.js +30 -132
  146. package/dist/notices.js.map +1 -1
  147. package/dist/pages.d.ts +9 -1
  148. package/dist/pages.d.ts.map +1 -1
  149. package/dist/pages.js +8 -1
  150. package/dist/pages.js.map +1 -1
  151. package/dist/places.d.ts +1 -1
  152. package/dist/places.d.ts.map +1 -1
  153. package/dist/places.js +9 -5
  154. package/dist/places.js.map +1 -1
  155. package/dist/primitives/index.d.ts +11 -1
  156. package/dist/primitives/index.d.ts.map +1 -1
  157. package/dist/primitives/index.js +15 -4
  158. package/dist/primitives/index.js.map +1 -1
  159. package/dist/problem-count.d.ts +18 -0
  160. package/dist/problem-count.d.ts.map +1 -0
  161. package/dist/problem-count.js +46 -0
  162. package/dist/problem-count.js.map +1 -0
  163. package/dist/prose-editor.d.ts +4 -1
  164. package/dist/prose-editor.d.ts.map +1 -1
  165. package/dist/prose-editor.js +13 -6
  166. package/dist/prose-editor.js.map +1 -1
  167. package/dist/relation-key.d.ts +3 -1
  168. package/dist/relation-key.d.ts.map +1 -1
  169. package/dist/relation-key.js +23 -6
  170. package/dist/relation-key.js.map +1 -1
  171. package/dist/repeat-picker-door.d.ts +10 -0
  172. package/dist/repeat-picker-door.d.ts.map +1 -0
  173. package/dist/repeat-picker-door.js +13 -0
  174. package/dist/repeat-picker-door.js.map +1 -0
  175. package/dist/repeat-picker.d.ts +29 -0
  176. package/dist/repeat-picker.d.ts.map +1 -0
  177. package/dist/repeat-picker.js +64 -0
  178. package/dist/repeat-picker.js.map +1 -0
  179. package/dist/resolve-app-context.d.ts +3 -0
  180. package/dist/resolve-app-context.d.ts.map +1 -0
  181. package/dist/resolve-app-context.js +10 -0
  182. package/dist/resolve-app-context.js.map +1 -0
  183. package/dist/rule-line.d.ts.map +1 -1
  184. package/dist/rule-line.js +2 -1
  185. package/dist/rule-line.js.map +1 -1
  186. package/dist/scene-bar.js +2 -2
  187. package/dist/scene-bar.js.map +1 -1
  188. package/dist/scene-css.d.ts.map +1 -1
  189. package/dist/scene-css.js +224 -213
  190. package/dist/scene-css.js.map +1 -1
  191. package/dist/scene-places.d.ts +6 -0
  192. package/dist/scene-places.d.ts.map +1 -1
  193. package/dist/scene-places.js +14 -14
  194. package/dist/scene-places.js.map +1 -1
  195. package/dist/scene-way-back-door.d.ts +1 -0
  196. package/dist/scene-way-back-door.d.ts.map +1 -1
  197. package/dist/scene-way-back-door.js +1 -0
  198. package/dist/scene-way-back-door.js.map +1 -1
  199. package/dist/scene.d.ts +3 -1
  200. package/dist/scene.d.ts.map +1 -1
  201. package/dist/scene.js +3 -1
  202. package/dist/scene.js.map +1 -1
  203. package/dist/seat-field.js +2 -2
  204. package/dist/seat-field.js.map +1 -1
  205. package/dist/seat-panel.d.ts +1 -0
  206. package/dist/seat-panel.d.ts.map +1 -1
  207. package/dist/seat-panel.js +5 -2
  208. package/dist/seat-panel.js.map +1 -1
  209. package/dist/seeding.d.ts.map +1 -1
  210. package/dist/seeding.js +2 -1
  211. package/dist/seeding.js.map +1 -1
  212. package/dist/several-bar.d.ts +23 -0
  213. package/dist/several-bar.d.ts.map +1 -0
  214. package/dist/several-bar.js +158 -0
  215. package/dist/several-bar.js.map +1 -0
  216. package/dist/several-door.d.ts +7 -0
  217. package/dist/several-door.d.ts.map +1 -0
  218. package/dist/several-door.js +20 -0
  219. package/dist/several-door.js.map +1 -0
  220. package/dist/shell.d.ts +10 -2
  221. package/dist/shell.d.ts.map +1 -1
  222. package/dist/shell.js +15 -12
  223. package/dist/shell.js.map +1 -1
  224. package/dist/spec-css.d.ts.map +1 -1
  225. package/dist/spec-css.js +70 -55
  226. package/dist/spec-css.js.map +1 -1
  227. package/dist/spec-views.d.ts +8 -0
  228. package/dist/spec-views.d.ts.map +1 -1
  229. package/dist/spec-views.js +16 -5
  230. package/dist/spec-views.js.map +1 -1
  231. package/dist/states-bar.d.ts +15 -0
  232. package/dist/states-bar.d.ts.map +1 -0
  233. package/dist/states-bar.js +36 -0
  234. package/dist/states-bar.js.map +1 -0
  235. package/dist/text-body.d.ts +7 -3
  236. package/dist/text-body.d.ts.map +1 -1
  237. package/dist/text-body.js +10 -2
  238. package/dist/text-body.js.map +1 -1
  239. package/dist/theme.d.ts.map +1 -1
  240. package/dist/theme.js +11 -4
  241. package/dist/theme.js.map +1 -1
  242. package/dist/workbench/activity.d.ts +2 -0
  243. package/dist/workbench/activity.d.ts.map +1 -1
  244. package/dist/workbench/activity.js +5 -2
  245. package/dist/workbench/activity.js.map +1 -1
  246. package/dist/workbench/agent-seat.d.ts.map +1 -1
  247. package/dist/workbench/agent-seat.js +3 -2
  248. package/dist/workbench/agent-seat.js.map +1 -1
  249. package/dist/workbench/answer-args.d.ts +3 -1
  250. package/dist/workbench/answer-args.d.ts.map +1 -1
  251. package/dist/workbench/answer-args.js +18 -7
  252. package/dist/workbench/answer-args.js.map +1 -1
  253. package/dist/workbench/back-out.d.ts.map +1 -1
  254. package/dist/workbench/back-out.js +12 -4
  255. package/dist/workbench/back-out.js.map +1 -1
  256. package/dist/workbench/index.d.ts +1 -1
  257. package/dist/workbench/index.d.ts.map +1 -1
  258. package/dist/workbench/index.js +1 -1
  259. package/dist/workbench/index.js.map +1 -1
  260. package/dist/workbench/inspector-door.d.ts +34 -0
  261. package/dist/workbench/inspector-door.d.ts.map +1 -0
  262. package/dist/workbench/inspector-door.js +96 -0
  263. package/dist/workbench/inspector-door.js.map +1 -0
  264. package/dist/workbench/inspector.d.ts +8 -27
  265. package/dist/workbench/inspector.d.ts.map +1 -1
  266. package/dist/workbench/inspector.js +15 -28
  267. package/dist/workbench/inspector.js.map +1 -1
  268. package/dist/workbench/trail.d.ts.map +1 -1
  269. package/dist/workbench/trail.js +3 -2
  270. package/dist/workbench/trail.js.map +1 -1
  271. package/package.json +6 -6
@@ -0,0 +1,10 @@
1
+ import { createContext } from "react";
2
+ /*
3
+ * THE SHELL'S OWN WAY TO NAME ANOTHER APP (FR-171). A host that draws the
4
+ * Shell hands it `resolveApp` as it hands it `files`, rather than wrapping
5
+ * the provider to reach it; an app-link drawn under the Shell asks this
6
+ * first and the provider's after. Its own module, so a page that draws no
7
+ * Shell and no app-link carries none of it.
8
+ */
9
+ export const ResolveAppContext = /* @__PURE__ */ createContext(undefined);
10
+ //# sourceMappingURL=resolve-app-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-app-context.js","sourceRoot":"","sources":["../src/resolve-app-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,aAAa,CAAyB,SAAS,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rule-line.d.ts","sourceRoot":"","sources":["../src/rule-line.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAG3I,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAoBzE,KAAK,KAAK,GAAG,cAAc,qBAAqB,CAAC,CAAC;AAClD,KAAK,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAwBpD,6HAA6H;AAC7H,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAGxG;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAW5I;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAI9F;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAGlF;AAYD,0HAA0H;AAC1H,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,+BAa3E;AAQD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAoD,EACpD,OAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,8HAA8H;IAC9H,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC,+BA6BA;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAGzG"}
1
+ {"version":3,"file":"rule-line.d.ts","sourceRoot":"","sources":["../src/rule-line.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAG3I,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAoBzE,KAAK,KAAK,GAAG,cAAc,qBAAqB,CAAC,CAAC;AAClD,KAAK,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAwBpD,6HAA6H;AAC7H,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAGxG;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAW5I;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAI9F;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAGlF;AAYD,0HAA0H;AAC1H,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,+BAa3E;AAQD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAoD,EACpD,OAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,8HAA8H;IAC9H,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC,+BA6BA;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAIzG"}
package/dist/rule-line.js CHANGED
@@ -95,8 +95,9 @@ export function RuleLineView({ line, schema, brand, lead = line.record === undef
95
95
  * own title where it says something the line does not.
96
96
  */
97
97
  export function problemTitle(violation) {
98
+ // A label the sentence already begins with is said once, in the sentence.
98
99
  if (!violation.line)
99
- return violation.label && violation.label !== violation.message ? violation.label : undefined;
100
+ return violation.label && violation.label !== violation.message && !violation.message.startsWith(violation.label) ? violation.label : undefined;
100
101
  return violation.label && violation.label.trim().length > 0 ? violation.label : undefined;
101
102
  }
102
103
  //# sourceMappingURL=rule-line.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-line.js","sourceRoot":"","sources":["../src/rule-line.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-line.js","sourceRoot":"","sources":["../src/rule-line.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAsG,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoB1D,IAAI,IAAsD,CAAC;AAC3D,qFAAqF;AACrF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/F,8DAA8D;AAC9D,SAAS,QAAQ,CAAC,MAAe;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,IAAI,IAAI;YAAE,OAAO;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,EAAE;aACJ,IAAI,EAAE;aACN,IAAI,CACH,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EACnC,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACJ,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6HAA6H;AAC7H,MAAM,UAAU,QAAQ,CAAsB,MAAkB,EAAE,UAAwB;IACxF,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAChH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAAC,MAAiB,EAAE,KAA6D;IAC3G,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,SAA8C;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,WAAW,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7H,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,SAA8C;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9G,CAAC;AAED,MAAM,IAAI,GAAoD;IAC5D,IAAI,EAAE,EAAE;IACR,yGAAyG;IACzG,EAAE,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,UAAU,EAAE,GAAG,EAAE;IAC1D,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,EAAE,cAAc,EAAE;IAC9D,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;IAC3C,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;CAC7C,CAAC;AAEF,0HAA0H;AAC1H,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAA2C;IAC1E,OAAO,CACL,4BACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CACvB,2BACG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EACtB,yCAA8B,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YACxD,IAAI,CAAC,IAAI,GACL,KAJE,EAAE,CAKN,CACR,CAAC,GACD,CACJ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,MAA6B,EAAE,IAAY;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EACpD,OAAO,GAAG,KAAK,EACf,KAAK,GASN;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACzH,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpI,OAAO,CACL,0CAA6B,EAAE,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,aAC3E,eAAM,KAAK,EAAE,eAAe,YAAG,MAAM,GAAQ,EAC7C,+BAAkB,MAAM,aACrB,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CACzB,eAAM,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,YACpF,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,KAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,GAAI,GAC7F,CACR,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,0CAA6B,EAAE,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,aAChH,IAAI,EACJ,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,UAAU,EAAE,GAAG,EAAE,yBAAY,CAAC,CAAC,CAAC,IAAI,IAClH,CACR,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,cAAM,CAAC,CAAC,CAAC,IAAI,EAChC,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,EAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,0CAA6B,EAAE,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,wBACnE,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAI,IACjC,CACR,CAAC,CAAC,CAAC,IAAI,IACH,IACF,CACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,SAAwD;IACnF,0EAA0E;IAC1E,IAAI,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACrK,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC"}
package/dist/scene-bar.js CHANGED
@@ -59,8 +59,8 @@ export function SceneTrail({ home = null }) {
59
59
  position: "absolute",
60
60
  top: 14,
61
61
  left: 14,
62
- // Up, at the other corner, keeps its room.
63
- maxWidth: "calc(100% - 150px)",
62
+ // Up, at the other corner, keeps its room, and a panel docked beside the map its own.
63
+ maxWidth: "calc(100% - 150px - var(--graview-dock, 0px))",
64
64
  zIndex: layer("overview"),
65
65
  display: "flex",
66
66
  alignItems: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"scene-bar.js","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wHAAwH;AACxH,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAAc,EAAE,EAAE;QAC5C,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,mEAAmE;YACnE,qEAAqE;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1G,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAsB,EACjD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,GAAG,KAAK,GAQlB;IACC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,CACL,8BACG,YAAY,CAAC,KAAC,OAAO,IAAI,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,KAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IACxI,CACJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,EAAqC;IAC3E,OAAO,CACL,2CAC2B,EAAE,EAC3B,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,2CAA2C;YAC3C,QAAQ,EAAE,oBAAoB;YAC9B,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,MAAM;SACtB,aAED,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,SAAG,EAC/B,eAAM,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YACpC,KAAC,aAAa,KAAG,GACZ,IACH,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scene-bar.js","sourceRoot":"","sources":["../src/scene-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,eAAe,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wHAAwH;AACxH,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAAc,EAAE,EAAE;QAC5C,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,mEAAmE;YACnE,qEAAqE;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1G,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAsB,EACjD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,GAAG,KAAK,GAQlB;IACC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,CACL,8BACG,YAAY,CAAC,KAAC,OAAO,IAAI,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,KAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IACxI,CACJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,EAAqC;IAC3E,OAAO,CACL,2CAC2B,EAAE,EAC3B,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,sFAAsF;YACtF,QAAQ,EAAE,+CAA+C;YACzD,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC;YACzB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,MAAM;SACtB,aAED,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,SAAG,EAC/B,eAAM,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YACpC,KAAC,aAAa,KAAG,GACZ,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,MAAM,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA2wCtG,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,KAAK,GAAE,KAAqB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGrH"}
1
+ {"version":3,"file":"scene-css.d.ts","sourceRoot":"","sources":["../src/scene-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAA0C,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAsxCtG,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGvF;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAe,EAAE,KAAK,GAAE,KAAqB,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGrH"}
package/dist/scene-css.js CHANGED
@@ -1,11 +1,11 @@
1
- import { isoShade, layer, SCENE_LAYERS } from "@graview/core";
2
- import { MARQUEE_GAP, MARQUEE_NAME_FLOOR, MARQUEE_WIDTH } from "@graview/layout/view";
1
+ import { layer, SCENE_LAYERS } from "@graview/core";
2
+ import { MARQUEE_GAP, MARQUEE_NAME_FLOOR, MARQUEE_WIDTH } from "@graview/layout/sizes";
3
3
  import { baseSheet, GRAVIEW_BRAND, withinTheBox } from "./theme.js";
4
4
  import { SPEC_VIEW_CSS } from "./spec-css.js";
5
5
  /*
6
6
  * THE SCENE'S OWN RULES (FR-104).
7
7
  *
8
- * The districts from altitude, their plots, the village and the roads, the
8
+ * The districts from altitude, their plots, the village and the ribbons, the
9
9
  * billboards and their rails, the bands and what they could not hold, the
10
10
  * kind's tag, the zoom: everything here names an element only the scene
11
11
  * draws. They were a third of the one theme sheet, and the sheet is drawn
@@ -16,10 +16,7 @@ import { SPEC_VIEW_CSS } from "./spec-css.js";
16
16
  * stand in `themeCss`. The rules are where theme.ts had them, in its
17
17
  * order, and each still carries its note.
18
18
  */
19
- const face = (f) => `${f.saturation}% ${f.lightness}%`;
20
- const wash = (f) => `${face(f)} / ${f.alpha}`;
21
19
  function sceneSheet(scheme) {
22
- const iso = isoShade(scheme);
23
20
  return `
24
21
  ${ /* What theme.ts drew for the scene alone, before FR-104's own rules and
25
22
  in the order it drew them: the altitude control, the kind's card, its
@@ -559,69 +556,77 @@ ${ /* From altitude a district is a village on its plot, not a card: hovering
559
556
  background: transparent;
560
557
  }
561
558
 
562
- ${ /* THE GROUND UNDER A DISTRICT: its plot, drawn. Four lattice corners in
563
- the kind's hue, a curb, a cast shadow toward the light — the arithmetic
564
- the layout already did, made visible, so a district stands on land
565
- rather than floating on a hatch. Fades in with the altitude number the
566
- lattice fades in with; a hand-placed district's curb is dashed, which is
567
- the pinned mark on the ground rather than a box over the drawing. */""}
568
- .graview-plots {
569
- z-index: ${SCENE_LAYERS.plots};
559
+ ${ /* THE RIBBONS between districts: one per relation, as wide as the links
560
+ along it (the width is set on each), in the ground's ink and quiet at
561
+ rest; the relation a person points at, or the Key asks about, or a chosen
562
+ district's own come up in the accent. One manner, one meaning: what is
563
+ joined to what, and how much. */""}
564
+ .graview-ribbons {
570
565
  opacity: var(--graview-altitude);
571
- transition: opacity 640ms cubic-bezier(0.33, 0, 0.2, 1);
572
566
  }
573
- .graview-plot-tile {
574
- fill: hsl(var(--graview-hue, 200) ${wash(iso.plot)});
575
- stroke: hsl(var(--graview-hue, 200) ${wash(iso.plotEdge)});
576
- stroke-width: 1;
577
- stroke-linejoin: round;
578
- pointer-events: auto;
579
- cursor: pointer;
580
- filter: drop-shadow(${scheme === "light" ? "5px 4px 6px rgba(20,30,32,0.14)" : "6px 5px 8px rgba(0,0,0,0.4)"});
581
- transition: fill 170ms ease;
582
- }
583
- .graview-plot-tile:hover {
584
- fill: hsl(var(--graview-hue, 200) 45% ${scheme === "light" ? "58%" : "48%"} / ${scheme === "light" ? "0.2" : "0.3"});
585
- }
586
- .graview-plot[data-graview-pinned] .graview-plot-tile {
587
- stroke-dasharray: 4 3;
588
- }
589
- ${ /* THE VILLAGE on the tile: one small iso building per member in the kind's
590
- own faces (the same roof and walls the block had), a flagged member's roof
591
- in the warning color, a selected member's building lit in the accent.
592
- Architecture, not controls: the tile under them takes the click. */""}
593
- .graview-village { pointer-events: none; }
594
- .graview-building polygon { stroke-width: 0.8; }
595
- .graview-building[data-graview-flagged] .graview-iso-roof { fill: var(--graview-warn); stroke: var(--graview-warn); }
596
- .graview-building[data-graview-selected] polygon { stroke: var(--graview-accent); stroke-width: 1.4; }
597
- .graview-building[data-graview-selected] .graview-iso-roof { fill: color-mix(in oklab, var(--graview-accent) 45%, var(--graview-panel)); }
598
- .graview-village-rest {
599
- font-size: 0.75rem;
600
- letter-spacing: 0.06em;
601
- fill: var(--graview-ink-muted);
602
- }
603
- ${ /* THE ROADS between plots: the lattice's own two legs from curb to curb, a
604
- bed between two edges in the ground's ink. Under the tiles and the
605
- buildings, over the fields. A road the legend is asking about comes up
606
- in the accent. */""}
607
- .graview-road-edge {
567
+ .graview-ribbon-band {
608
568
  fill: none;
609
569
  stroke: var(--graview-ink);
610
- stroke-opacity: ${scheme === "light" ? "0.28" : "0.4"};
611
- stroke-width: 7;
570
+ stroke-opacity: ${scheme === "light" ? "0.2" : "0.3"};
612
571
  stroke-linejoin: round;
613
- stroke-linecap: round;
572
+ stroke-linecap: butt;
573
+ transition: stroke 170ms ease, stroke-opacity 170ms ease;
614
574
  }
615
- .graview-road-bed {
575
+ .graview-ribbon[data-graview-lit] .graview-ribbon-band {
576
+ stroke: var(--graview-accent);
577
+ stroke-opacity: 0.62;
578
+ }
579
+ .graview-ribbon[data-graview-receded] .graview-ribbon-band {
580
+ stroke-opacity: 0.07;
581
+ }
582
+ ${ /* A row in the panel beside the map is a press: it says so under the pointer and the keyboard. */""}
583
+ .graview-map-panel-row:hover,
584
+ .graview-map-panel-row:focus-visible {
585
+ background: var(--graview-panel-muted);
586
+ color: var(--graview-accent);
587
+ }
588
+ .graview-ribbon-said,
589
+ .graview-record-link-said {
590
+ z-index: ${SCENE_LAYERS.tieLabels};
591
+ box-sizing: border-box;
592
+ white-space: nowrap;
593
+ font-size: 0.8125rem;
594
+ line-height: 1.3;
595
+ color: var(--graview-ink);
596
+ background: var(--graview-float);
597
+ border: 1px solid var(--graview-edge);
598
+ border-radius: 6px;
599
+ box-shadow: var(--graview-lift-low);
600
+ }
601
+ .graview-ribbon-said {
602
+ transform: translate(-50%, calc(-100% - 8px));
603
+ padding: 4px 9px;
604
+ width: max-content;
605
+ max-width: min(320px, 80cqw);
606
+ white-space: normal;
607
+ }
608
+ ${ /* A CHOSEN RECORD'S LINKS: solid to a record the map draws on its own,
609
+ ending in a dot on it; dashed into a district, for the records in it the
610
+ map does not draw one by one. Each says its relation at its far end. */""}
611
+ .graview-record-link-line {
616
612
  fill: none;
617
- stroke: var(--graview-ground);
618
- stroke-width: 5;
619
- stroke-linejoin: round;
613
+ stroke: var(--graview-accent);
614
+ stroke-width: 1.8;
620
615
  stroke-linecap: round;
621
616
  }
622
- .graview-road[data-graview-lit] .graview-road-edge {
623
- stroke: var(--graview-accent);
624
- stroke-opacity: 0.9;
617
+ .graview-record-link[data-graview-lands="district"] .graview-record-link-line {
618
+ stroke-dasharray: 5 4;
619
+ stroke-opacity: 0.85;
620
+ }
621
+ .graview-record-link-end {
622
+ fill: var(--graview-accent);
623
+ }
624
+ .graview-record-link-said {
625
+ max-width: 260px;
626
+ overflow: hidden;
627
+ text-overflow: ellipsis;
628
+ padding: 2px 7px;
629
+ font-size: 0.75rem;
625
630
  }
626
631
  ${ /* FIELDS. From altitude the ground darkens a shade toward the near edge and
627
632
  fades to the page at the horizon, so the lattice is land with a distance
@@ -636,10 +641,26 @@ ${ /* THE OPEN CHEVRON APPEARS WHEN REACHED FOR. Drawn on every plate at
636
641
  altitude it was noise times the number of districts; it shows on hover,
637
642
  on keyboard focus, and while the district is open — and stays a real
638
643
  button in between, so Tab still finds it and Enter still opens. */""}
639
- [data-graview-altitude] .graview-kind-open {
640
- opacity: 0.5;
644
+ [data-graview-altitude] .graview-kind-open,
645
+ [data-graview-altitude] .graview-kind-past {
646
+ opacity: 0;
641
647
  transition: opacity 150ms ease;
642
648
  }
649
+ [data-graview-altitude] .graview-kind-card:hover .graview-kind-past,
650
+ [data-graview-altitude] .graview-kind-card:focus-within .graview-kind-past {
651
+ opacity: 1;
652
+ }
653
+ ${ /* Beside the name rather than in it: the name is measured for its three things. */""}
654
+ [data-graview-altitude] .graview-kind-face .graview-kind-open {
655
+ position: absolute;
656
+ left: calc(100% + 2px);
657
+ top: 1px;
658
+ }
659
+ [data-graview-altitude] .graview-kind-face .graview-kind-past {
660
+ position: absolute;
661
+ right: calc(100% + 2px);
662
+ top: 1px;
663
+ }
643
664
  ${ /* Quiet: the chevron alone until reached for. Never opacity zero — a
644
665
  button nobody can see is a button a driven browser cannot press either,
645
666
  and Tab must land on something that looks like something. */""}
@@ -696,68 +717,6 @@ ${ /* Quiet: the chevron alone until reached for. Never opacity zero — a
696
717
  color: var(--graview-accent);
697
718
  text-decoration: underline;
698
719
  }
699
- ${ /* THE BILLBOARD'S FULL-SCREEN CONTROL: the one way down from a picture. */""}
700
- ${ /* THE RAIL A BILLBOARD IS MOVED BY: a title bar, in the board's own frame
701
- ink, along its top edge. Positioned like the full-screen control beside
702
- it — the host wraps its children, so the rail is a grandchild of the
703
- screen box and a child selector never reaches it. Wide enough to be an
704
- easy target, short enough that the picture underneath is still what you
705
- see, and present only at altitude, because only up there is the board
706
- standing on a plot it could be moved around. */""}
707
- .graview-screen-grip {
708
- display: none;
709
- }
710
- [data-graview-altitude] [data-graview-screen] .graview-screen-grip {
711
- display: flex;
712
- align-items: center;
713
- gap: 8px;
714
- position: absolute;
715
- left: 0;
716
- right: 0;
717
- top: 0;
718
- ${ /* Drawn height, not CSS height: a district's plane is scaled down at
719
- altitude, and 14 here reached the screen as an eight-pixel strip that
720
- took three attempts to catch. */""}
721
- height: 32px;
722
- padding: 0 6px 0 12px;
723
- box-sizing: border-box;
724
- cursor: grab;
725
- ${ /* A title bar in the panel's own colors, not a gray strip: the board is
726
- a window onto the picture, and its bar reads as the window's. */""}
727
- background: var(--graview-panel-muted);
728
- border-bottom: 1px solid var(--graview-edge);
729
- z-index: ${SCENE_LAYERS.lines};
730
- }
731
- [data-graview-altitude] [data-graview-screen] .graview-screen-title {
732
- flex: 1 1 auto;
733
- min-width: 0;
734
- overflow: hidden;
735
- text-overflow: ellipsis;
736
- white-space: nowrap;
737
- font-size: 0.8125rem;
738
- font-weight: 600;
739
- color: var(--graview-ink);
740
- }
741
- [data-graview-altitude] [data-graview-screen] .graview-screen-grip:active {
742
- cursor: grabbing;
743
- }
744
- .graview-screen-fullscreen {
745
- flex: 0 0 auto;
746
- min-height: max(1.5rem, 24px);
747
- padding: 1px 10px;
748
- border-radius: 999px;
749
- border: 1px solid var(--graview-edge);
750
- background: var(--graview-panel);
751
- color: var(--graview-accent);
752
- font-size: 0.8125rem;
753
- font-weight: 600;
754
- white-space: nowrap;
755
- cursor: pointer;
756
- box-shadow: none;
757
- }
758
- .graview-screen-fullscreen:hover:not(:disabled) {
759
- border-color: var(--graview-accent);
760
- }
761
720
  [data-graview-altitude] .graview-kind-members > [data-graview-pick] {
762
721
  width: 100%;
763
722
  box-sizing: border-box;
@@ -1012,81 +971,158 @@ ${ /* The panel stands above the card, inside the scene, and never clips: the
1012
971
  font-variant-numeric: tabular-nums;
1013
972
  color: var(--graview-ink-faint);
1014
973
  }
1015
- .graview-iso-roof {
1016
- fill: hsl(var(--graview-hue, 200) ${face(iso.roof)});
1017
- stroke: ${iso.roofEdge};
1018
- stroke-width: 1;
1019
- }
1020
- .graview-iso-right {
1021
- fill: hsl(var(--graview-hue, 200) ${face(iso.right)});
1022
- }
1023
- .graview-iso-left {
1024
- fill: hsl(var(--graview-hue, 200) ${face(iso.left)});
1025
- }
1026
- ${ /* A SIGNPOST at the plot's front corner. From altitude the nameplate stood
1027
- at the top of the card — over the back row of the village — and the
1028
- screen had to clear it. It is planted at the front vertex of the tile
1029
- now, on a short post, where a sign stands at the entrance to a place;
1030
- the scene says where that vertex is in --graview-front-y. */""}
974
+ ${ /* THE NAME UNDER A DISTRICT, from altitude: under the plot's front
975
+ corner, on a solid backing at a fixed size on the screen, saying three
976
+ things — what it is, how many, how many have a problem — and, for a kind
977
+ with a status, the bar of where its records stand. The name used to be
978
+ words haloed on the ground with marks after them that nobody could read
979
+ ("PEOPLE 10 ◆ •") and the lens names hanging under it, over the next
980
+ district's buildings. The lens names are in the bar and come up on hover;
981
+ the rest is gone. Where two names would collide the layout says which
982
+ one is quieter (data-graview-nameplate): short is the name and the count,
983
+ none comes back when the district is reached for. */""}
1031
984
  [data-graview-altitude] .graview-kind-face {
1032
985
  position: absolute !important;
1033
986
  left: 50% !important;
1034
987
  top: 2% !important;
1035
988
  transform: translateX(-50%);
1036
989
  width: max-content;
1037
- ${ /* Wider than the block when the name is: a label overflows its building
1038
- the way a map label does. "REQUIRE / MENTS" on two lines does not. */""}
1039
990
  max-width: none;
1040
991
  white-space: nowrap;
1041
992
  height: auto !important;
1042
- flex-direction: row !important;
993
+ ${ /* A grid of two: the name and its count on one line, the bar across both under them. */""}
994
+ display: grid !important;
995
+ grid-template-columns: auto auto;
1043
996
  align-items: baseline !important;
1044
- gap: 7px !important;
1045
- padding: 3px 4px !important;
1046
- ${ /* TEXT ON THE PLOT, NOT A CAPSULE (FR-117). Every district's name stood
1047
- in a pill — "PEOPLE 2 ◆ open ▾" — so the city read as a row of buttons
1048
- and the one capsule that meant "press" did not stand out. A map writes
1049
- a district's name on the ground: the words, haloed in the ground's own
1050
- color so a lattice line or a roof under them never cuts a letter. */""}
1051
- border-color: transparent !important;
1052
- border-radius: 0 !important;
1053
- background: none !important;
1054
- box-shadow: none !important;
1055
- text-shadow: 0 0 3px var(--graview-ground), 0 0 6px var(--graview-ground), 0 0 10px var(--graview-ground);
997
+ column-gap: 6px !important;
998
+ row-gap: 3px !important;
999
+ padding: 1px 6px 2px !important;
1000
+ line-height: 1.25;
1001
+ border: 1px solid var(--graview-edge) !important;
1002
+ border-radius: 5px !important;
1003
+ background: var(--graview-panel) !important;
1004
+ box-shadow: 0 1px 2px rgba(0, 0, 0, ${scheme === "light" ? "0.08" : "0.3"}) !important;
1056
1005
  z-index: ${SCENE_LAYERS.tag};
1057
1006
  }
1058
- ${ /* How much of it is in trouble, as the name's baseline rather than a bar over a capsule. */""}
1059
- [data-graview-altitude] .graview-kind-face > [data-graview-tally] {
1060
- top: auto !important;
1061
- bottom: 0;
1062
- height: 2px !important;
1007
+ [data-graview-altitude] [data-graview-plot] .graview-kind-face {
1008
+ top: calc(var(--graview-front-y) + 4px) !important;
1009
+ }
1010
+ [data-graview-altitude] .graview-kind-face > div {
1011
+ gap: 6px !important;
1012
+ }
1013
+ ${ /* THE PROBLEM COUNT IS A CONTROL: a fingertip's height, quiet until it is reached for, and it says what it opens. */""}
1014
+ .graview-district-problems {
1015
+ display: inline-flex;
1016
+ align-items: center;
1017
+ ${ /* On the ground the card is drawn at its plane's 0.9: a fingertip there is 27, so it draws 24. */""}
1018
+ min-height: max(1.67rem, 27px);
1019
+ min-width: max(1.67rem, 27px);
1020
+ margin: -5px -4px;
1021
+ padding: 0 4px;
1022
+ border: 1px solid transparent;
1023
+ border-radius: 6px;
1024
+ background: none;
1025
+ box-shadow: none;
1026
+ color: var(--graview-warn);
1027
+ font: inherit;
1028
+ font-variant-numeric: tabular-nums;
1029
+ font-weight: 600;
1030
+ cursor: pointer;
1031
+ white-space: nowrap;
1032
+ }
1033
+ [data-graview-altitude] .graview-district-problems {
1034
+ min-height: max(1.5rem, 24px);
1035
+ min-width: max(1.5rem, 24px);
1036
+ margin: -4px -4px;
1037
+ }
1038
+ .graview-district-problems:hover {
1039
+ background: color-mix(in oklab, var(--graview-warn) 14%, transparent);
1040
+ text-decoration: underline;
1041
+ }
1042
+ .graview-district-problems[aria-expanded="true"] {
1043
+ border-color: color-mix(in oklab, var(--graview-warn) 55%, transparent);
1044
+ }
1045
+ [data-graview-altitude] .graview-kind-face > .graview-kind-members {
1046
+ grid-column: 1 / -1;
1047
+ }
1048
+ .graview-district-states {
1049
+ display: flex;
1050
+ grid-column: 1 / -1;
1051
+ ${ /* Its words never widen the name: the bar is as wide as the name, or its least. */""}
1052
+ contain: inline-size;
1053
+ min-width: 168px;
1054
+ height: 13px;
1055
+ gap: 1px;
1056
+ border-radius: 2px;
1057
+ overflow: hidden;
1058
+ }
1059
+ .graview-district-states > span {
1060
+ flex-basis: 0;
1061
+ min-width: 2px;
1062
+ font-size: 0.625rem;
1063
+ line-height: 13px;
1064
+ padding: 0 3px;
1065
+ overflow: hidden;
1066
+ text-overflow: ellipsis;
1067
+ white-space: nowrap;
1068
+ font-variant-numeric: tabular-nums;
1069
+ color: var(--graview-ink);
1070
+ background: color-mix(in oklab, var(--graview-ink) ${scheme === "light" ? "24%" : "34%"}, var(--graview-panel));
1071
+ }
1072
+ .graview-district-states > [data-graview-tier="active"] {
1073
+ color: var(--graview-panel);
1074
+ background: color-mix(in oklab, var(--graview-ink) ${scheme === "light" ? "72%" : "78%"}, var(--graview-panel));
1075
+ }
1076
+ .graview-district-states > [data-graview-tier="done"] {
1077
+ color: var(--graview-ink-muted);
1078
+ background: color-mix(in oklab, var(--graview-ink) 8%, var(--graview-panel));
1079
+ }
1080
+ [data-graview-nameplate^="short"] .graview-district-states {
1081
+ display: none;
1063
1082
  }
1064
- [data-graview-altitude] .graview-kind-face > [data-graview-tally]:not([data-graview-broken]) {
1083
+ ${ /* Over the plot and its blocks, or beside it, where the ground under it is the next district's. */""}
1084
+ [data-graview-altitude] [data-graview-plot] .graview-kind-face[data-graview-nameplate$="above"] {
1085
+ top: calc(-4px - 0.45 * var(--graview-lattice-cell)) !important;
1086
+ transform: translate(-50%, -100%);
1087
+ }
1088
+ [data-graview-altitude] [data-graview-plot] .graview-kind-face[data-graview-nameplate$="aside"] {
1089
+ left: calc(100% + 4px) !important;
1090
+ top: calc(var(--graview-center-y) - 11px) !important;
1091
+ transform: none;
1092
+ }
1093
+ [data-graview-nameplate="none"] {
1065
1094
  opacity: 0;
1095
+ pointer-events: none;
1066
1096
  }
1067
- [data-graview-altitude] [data-graview-plot] .graview-kind-face {
1068
- top: calc(var(--graview-front-y) - 22px) !important;
1097
+ [data-graview-altitude] .graview-kind-card:hover [data-graview-nameplate],
1098
+ [data-graview-altitude] .graview-kind-card:focus-within [data-graview-nameplate] {
1099
+ opacity: 1;
1100
+ pointer-events: auto;
1069
1101
  }
1070
- [data-graview-altitude] [data-graview-plot] .graview-kind-face::after {
1071
- content: "";
1072
- position: absolute;
1073
- left: 50%;
1074
- top: 100%;
1075
- width: 1px;
1076
- height: 10px;
1077
- background: var(--graview-ink-faint);
1102
+ [data-graview-altitude] [data-graview-plot]:hover,
1103
+ [data-graview-altitude] [data-graview-plot]:focus-within {
1104
+ z-index: ${SCENE_LAYERS.opened} !important;
1078
1105
  }
1079
1106
  ${ /* A landmark WITHOUT a plot — a nested card — keeps its plate floating
1080
- above the drawing rather than across its head; one on a plot stands at
1081
- the signpost like every other district (the rule above). */""}
1107
+ above the drawing rather than across its head. */""}
1082
1108
  [data-graview-altitude] [data-graview-landmark]:not([data-graview-plot] *) .graview-kind-face {
1083
1109
  top: 0 !important;
1084
1110
  transform: translate(-50%, calc(-100% - 7px));
1085
1111
  }
1086
- ${ /* The drive-in's board hangs UNDER the signpost, in the ground the layout
1087
- reserved for it below the tile's front corner, not over the village. */""}
1112
+ ${ /* THE SHOWINGS COME UP WHEN THE DISTRICT IS REACHED FOR: under its name,
1113
+ on a backing of their own, and in the bar's place list always. */""}
1088
1114
  [data-graview-altitude] .graview-drive-in {
1089
- top: calc(var(--graview-front-y, 42px) + 12px);
1115
+ ${ /* Straight under the name, touching it, so the hand that reached for the name reaches the showings without crossing a gap. */""}
1116
+ top: calc(var(--graview-front-y, 42px) + var(--graview-plate-h, 26px));
1117
+ padding: 4px 6px;
1118
+ border-radius: 5px;
1119
+ background: var(--graview-panel);
1120
+ box-shadow: var(--graview-lift-low);
1121
+ transition: opacity 150ms ease;
1122
+ }
1123
+ [data-graview-altitude] .graview-kind-card:not(:hover):not(:focus-within) .graview-drive-in:not([data-graview-showing]) {
1124
+ opacity: 0;
1125
+ pointer-events: none;
1090
1126
  }
1091
1127
  ${ /* An OPENED district's listing takes the ground under the signpost; the
1092
1128
  board steps up over the village, which the listing covers anyway. */""}
@@ -1105,8 +1141,9 @@ ${ /* ZOOM, in the ground's corner: the way a map carries its own. Two
1105
1141
  fingertip-sized buttons and the level between them, shown from altitude. */""}
1106
1142
  .graview-zoom {
1107
1143
  position: absolute;
1108
- right: 16px;
1109
- bottom: 16px;
1144
+ ${ /* Clear of a panel floating over the scene's right edge, or a sheet over its foot. */""}
1145
+ right: calc(16px + var(--graview-dock, 0px));
1146
+ bottom: calc(16px + var(--graview-sheet, 0px));
1110
1147
  ${ /* Above the occupants: a robot walking past a control must not cover it. */""}
1111
1148
  z-index: ${SCENE_LAYERS.zoom};
1112
1149
  display: inline-flex;
@@ -1134,6 +1171,15 @@ ${ /* ZOOM, in the ground's corner: the way a map carries its own. Two
1134
1171
  .graview-zoom-button:hover:not(:disabled) {
1135
1172
  background: var(--graview-edge);
1136
1173
  }
1174
+ .graview-zoom-above {
1175
+ margin-left: 2px;
1176
+ padding: 0 8px;
1177
+ font-size: 0.75rem;
1178
+ color: var(--graview-ink-muted);
1179
+ }
1180
+ .graview-zoom-above[aria-pressed="true"] {
1181
+ color: var(--graview-accent);
1182
+ }
1137
1183
  .graview-zoom-button:disabled {
1138
1184
  opacity: 0.35;
1139
1185
  cursor: default;
@@ -1146,41 +1192,6 @@ ${ /* ZOOM, in the ground's corner: the way a map carries its own. Two
1146
1192
  font-variant-numeric: tabular-nums;
1147
1193
  }
1148
1194
 
1149
- ${ /* THE SCREEN IS A BILLBOARD at the back of the village: a frame, and two
1150
- posts into the ground at its foot. */""}
1151
- ${ /* On the NATURAL BOX, which is the picture now: the layout cuts the
1152
- billboard to what the lens drew (measured by the scene), never shorter
1153
- than a screen's worth — so the box is the picture, and an empty lens is a
1154
- header over an empty screen rather than a strip floating over the
1155
- village. The frame used to sit on the drawing itself, from the days the
1156
- box was as tall as the window with the picture in its top third. It
1157
- carries the panel's own ground so the empty part of a screen is a screen
1158
- and not the field showing through a frame. */""}
1159
- [data-graview-altitude] [data-graview-screen] > [data-graview-natural],
1160
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag) {
1161
- outline: 2px solid color-mix(in oklab, var(--graview-ink) 60%, var(--graview-panel));
1162
- outline-offset: 0;
1163
- background: var(--graview-panel);
1164
- }
1165
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag) {
1166
- position: relative;
1167
- }
1168
- [data-graview-altitude] [data-graview-screen] > [data-graview-natural]::before,
1169
- [data-graview-altitude] [data-graview-screen] > [data-graview-natural]::after,
1170
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag)::before,
1171
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag)::after {
1172
- content: "";
1173
- position: absolute;
1174
- top: 100%;
1175
- width: 3px;
1176
- height: 16px;
1177
- background: color-mix(in oklab, var(--graview-ink) 60%, var(--graview-panel));
1178
- }
1179
- [data-graview-altitude] [data-graview-screen] > [data-graview-natural]::before,
1180
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag)::before { left: 22%; }
1181
- [data-graview-altitude] [data-graview-screen] > [data-graview-natural]::after,
1182
- [data-graview-altitude] [data-graview-screen] > :not([data-graview-natural]):not(.graview-kind-tag)::after { right: 22%; }
1183
-
1184
1195
  ${ /* A thing inside a view that is itself a thing: an event in a calendar, a
1185
1196
  person in a list. It has to look reachable, and it has to SHOW focus —
1186
1197
  these are the primary way anyone moves through the graph, so a keyboard