@ggts-sh/svelte 0.43.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 (656) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/bin/ggts-codemod.js +47 -0
  4. package/dist/GGPlot.svelte +491 -0
  5. package/dist/GGPlot.svelte.d.ts +67 -0
  6. package/dist/a11y/CanvasA11y.svelte +115 -0
  7. package/dist/a11y/CanvasA11y.svelte.d.ts +15 -0
  8. package/dist/a11y/canvas-a11y.d.ts +1 -0
  9. package/dist/a11y/canvas-a11y.js +2 -0
  10. package/dist/assembly/assemble.d.ts +1 -0
  11. package/dist/assembly/assemble.js +1 -0
  12. package/dist/assembly/labels.d.ts +43 -0
  13. package/dist/assembly/labels.js +126 -0
  14. package/dist/assembly/layout.d.ts +158 -0
  15. package/dist/assembly/layout.js +175 -0
  16. package/dist/chrome/StatusChrome.svelte +125 -0
  17. package/dist/chrome/StatusChrome.svelte.d.ts +16 -0
  18. package/dist/chrome/ToolRail.svelte +293 -0
  19. package/dist/chrome/ToolRail.svelte.d.ts +26 -0
  20. package/dist/chrome/chrome-state.svelte.d.ts +63 -0
  21. package/dist/chrome/chrome-state.svelte.js +158 -0
  22. package/dist/chrome/theme-css.d.ts +16 -0
  23. package/dist/chrome/theme-css.js +16 -0
  24. package/dist/codemod/cli.d.ts +16 -0
  25. package/dist/codemod/cli.js +150 -0
  26. package/dist/codemod/edits.d.ts +28 -0
  27. package/dist/codemod/edits.js +36 -0
  28. package/dist/codemod/index.d.ts +10 -0
  29. package/dist/codemod/index.js +10 -0
  30. package/dist/codemod/migrate-plot-props-rewrite.d.ts +86 -0
  31. package/dist/codemod/migrate-plot-props-rewrite.js +228 -0
  32. package/dist/codemod/migrate-plot-props.d.ts +38 -0
  33. package/dist/codemod/migrate-plot-props.js +159 -0
  34. package/dist/coord/Coord.svelte +21 -0
  35. package/dist/coord/Coord.svelte.d.ts +16 -0
  36. package/dist/coord/CoordCartesian.svelte +11 -0
  37. package/dist/coord/CoordCartesian.svelte.d.ts +18 -0
  38. package/dist/coord/CoordFixed.svelte +17 -0
  39. package/dist/coord/CoordFixed.svelte.d.ts +10 -0
  40. package/dist/coord/CoordFlip.svelte +11 -0
  41. package/dist/coord/CoordFlip.svelte.d.ts +18 -0
  42. package/dist/coord/CoordPolar.svelte +16 -0
  43. package/dist/coord/CoordPolar.svelte.d.ts +9 -0
  44. package/dist/coord/CoordRadial.svelte +16 -0
  45. package/dist/coord/CoordRadial.svelte.d.ts +9 -0
  46. package/dist/coord/CoordSf.svelte +16 -0
  47. package/dist/coord/CoordSf.svelte.d.ts +9 -0
  48. package/dist/coord/CoordTransform.svelte +16 -0
  49. package/dist/coord/CoordTransform.svelte.d.ts +9 -0
  50. package/dist/data/index.d.ts +1 -0
  51. package/dist/data/index.js +2 -0
  52. package/dist/diagnostics/composition.d.ts +112 -0
  53. package/dist/diagnostics/composition.js +203 -0
  54. package/dist/diagnostics/deprecation.d.ts +58 -0
  55. package/dist/diagnostics/deprecation.js +27 -0
  56. package/dist/diagnostics/plot-engine-diagnostics.svelte.d.ts +44 -0
  57. package/dist/diagnostics/plot-engine-diagnostics.svelte.js +193 -0
  58. package/dist/facet/Facet.svelte +23 -0
  59. package/dist/facet/Facet.svelte.d.ts +16 -0
  60. package/dist/facet/FacetGrid.svelte +32 -0
  61. package/dist/facet/FacetGrid.svelte.d.ts +16 -0
  62. package/dist/facet/FacetWrap.svelte +32 -0
  63. package/dist/facet/FacetWrap.svelte.d.ts +16 -0
  64. package/dist/fonts/RobotoCondensed-Bold.ttf +0 -0
  65. package/dist/fonts/RobotoCondensed-Light.ttf +0 -0
  66. package/dist/fonts/RobotoCondensed-Regular.ttf +0 -0
  67. package/dist/fonts/THIRD_PARTY_NOTICES.txt +416 -0
  68. package/dist/geoms/GeomAbline.svelte +25 -0
  69. package/dist/geoms/GeomAbline.svelte.d.ts +7 -0
  70. package/dist/geoms/GeomArea.svelte +12 -0
  71. package/dist/geoms/GeomArea.svelte.d.ts +7 -0
  72. package/dist/geoms/GeomBar.svelte +12 -0
  73. package/dist/geoms/GeomBar.svelte.d.ts +7 -0
  74. package/dist/geoms/GeomBin2d.svelte +21 -0
  75. package/dist/geoms/GeomBin2d.svelte.d.ts +7 -0
  76. package/dist/geoms/GeomBlank.svelte +12 -0
  77. package/dist/geoms/GeomBlank.svelte.d.ts +7 -0
  78. package/dist/geoms/GeomBoxplot.svelte +25 -0
  79. package/dist/geoms/GeomBoxplot.svelte.d.ts +7 -0
  80. package/dist/geoms/GeomCol.svelte +12 -0
  81. package/dist/geoms/GeomCol.svelte.d.ts +7 -0
  82. package/dist/geoms/GeomContour.svelte +25 -0
  83. package/dist/geoms/GeomContour.svelte.d.ts +7 -0
  84. package/dist/geoms/GeomCount.svelte +12 -0
  85. package/dist/geoms/GeomCount.svelte.d.ts +7 -0
  86. package/dist/geoms/GeomCrossbar.svelte +25 -0
  87. package/dist/geoms/GeomCrossbar.svelte.d.ts +7 -0
  88. package/dist/geoms/GeomCurve.svelte +21 -0
  89. package/dist/geoms/GeomCurve.svelte.d.ts +7 -0
  90. package/dist/geoms/GeomDensity.svelte +25 -0
  91. package/dist/geoms/GeomDensity.svelte.d.ts +7 -0
  92. package/dist/geoms/GeomDensity2d.svelte +25 -0
  93. package/dist/geoms/GeomDensity2d.svelte.d.ts +7 -0
  94. package/dist/geoms/GeomDensity2dFilled.svelte +25 -0
  95. package/dist/geoms/GeomDensity2dFilled.svelte.d.ts +7 -0
  96. package/dist/geoms/GeomDotplot.svelte +25 -0
  97. package/dist/geoms/GeomDotplot.svelte.d.ts +7 -0
  98. package/dist/geoms/GeomErrorbar.svelte +25 -0
  99. package/dist/geoms/GeomErrorbar.svelte.d.ts +7 -0
  100. package/dist/geoms/GeomFreqpoly.svelte +25 -0
  101. package/dist/geoms/GeomFreqpoly.svelte.d.ts +7 -0
  102. package/dist/geoms/GeomFunction.svelte +25 -0
  103. package/dist/geoms/GeomFunction.svelte.d.ts +7 -0
  104. package/dist/geoms/GeomHex.svelte +21 -0
  105. package/dist/geoms/GeomHex.svelte.d.ts +7 -0
  106. package/dist/geoms/GeomHistogram.svelte +25 -0
  107. package/dist/geoms/GeomHistogram.svelte.d.ts +7 -0
  108. package/dist/geoms/GeomHline.svelte +12 -0
  109. package/dist/geoms/GeomHline.svelte.d.ts +7 -0
  110. package/dist/geoms/GeomJitter.svelte +35 -0
  111. package/dist/geoms/GeomJitter.svelte.d.ts +13 -0
  112. package/dist/geoms/GeomLabel.svelte +12 -0
  113. package/dist/geoms/GeomLabel.svelte.d.ts +7 -0
  114. package/dist/geoms/GeomLine.svelte +12 -0
  115. package/dist/geoms/GeomLine.svelte.d.ts +7 -0
  116. package/dist/geoms/GeomLinerange.svelte +25 -0
  117. package/dist/geoms/GeomLinerange.svelte.d.ts +7 -0
  118. package/dist/geoms/GeomMap.svelte +21 -0
  119. package/dist/geoms/GeomMap.svelte.d.ts +7 -0
  120. package/dist/geoms/GeomPath.svelte +12 -0
  121. package/dist/geoms/GeomPath.svelte.d.ts +7 -0
  122. package/dist/geoms/GeomPoint.svelte +12 -0
  123. package/dist/geoms/GeomPoint.svelte.d.ts +7 -0
  124. package/dist/geoms/GeomPointrange.svelte +25 -0
  125. package/dist/geoms/GeomPointrange.svelte.d.ts +7 -0
  126. package/dist/geoms/GeomPolygon.svelte +25 -0
  127. package/dist/geoms/GeomPolygon.svelte.d.ts +7 -0
  128. package/dist/geoms/GeomQq.svelte +21 -0
  129. package/dist/geoms/GeomQq.svelte.d.ts +7 -0
  130. package/dist/geoms/GeomQqLine.svelte +25 -0
  131. package/dist/geoms/GeomQqLine.svelte.d.ts +7 -0
  132. package/dist/geoms/GeomQuantile.svelte +25 -0
  133. package/dist/geoms/GeomQuantile.svelte.d.ts +7 -0
  134. package/dist/geoms/GeomRaster.svelte +25 -0
  135. package/dist/geoms/GeomRaster.svelte.d.ts +7 -0
  136. package/dist/geoms/GeomRect.svelte +12 -0
  137. package/dist/geoms/GeomRect.svelte.d.ts +7 -0
  138. package/dist/geoms/GeomRibbon.svelte +16 -0
  139. package/dist/geoms/GeomRibbon.svelte.d.ts +7 -0
  140. package/dist/geoms/GeomRug.svelte +21 -0
  141. package/dist/geoms/GeomRug.svelte.d.ts +7 -0
  142. package/dist/geoms/GeomRule.svelte +12 -0
  143. package/dist/geoms/GeomRule.svelte.d.ts +7 -0
  144. package/dist/geoms/GeomSegment.svelte +16 -0
  145. package/dist/geoms/GeomSegment.svelte.d.ts +7 -0
  146. package/dist/geoms/GeomSf.svelte +21 -0
  147. package/dist/geoms/GeomSf.svelte.d.ts +7 -0
  148. package/dist/geoms/GeomSfLabel.svelte +25 -0
  149. package/dist/geoms/GeomSfLabel.svelte.d.ts +7 -0
  150. package/dist/geoms/GeomSfText.svelte +25 -0
  151. package/dist/geoms/GeomSfText.svelte.d.ts +7 -0
  152. package/dist/geoms/GeomSmooth.svelte +25 -0
  153. package/dist/geoms/GeomSmooth.svelte.d.ts +7 -0
  154. package/dist/geoms/GeomSpoke.svelte +21 -0
  155. package/dist/geoms/GeomSpoke.svelte.d.ts +7 -0
  156. package/dist/geoms/GeomStep.svelte +12 -0
  157. package/dist/geoms/GeomStep.svelte.d.ts +7 -0
  158. package/dist/geoms/GeomText.svelte +12 -0
  159. package/dist/geoms/GeomText.svelte.d.ts +7 -0
  160. package/dist/geoms/GeomTile.svelte +21 -0
  161. package/dist/geoms/GeomTile.svelte.d.ts +7 -0
  162. package/dist/geoms/GeomViolin.svelte +25 -0
  163. package/dist/geoms/GeomViolin.svelte.d.ts +7 -0
  164. package/dist/geoms/GeomVline.svelte +12 -0
  165. package/dist/geoms/GeomVline.svelte.d.ts +7 -0
  166. package/dist/geoms/factory.svelte.d.ts +41 -0
  167. package/dist/geoms/factory.svelte.js +60 -0
  168. package/dist/geoms/registry.svelte.d.ts +71 -0
  169. package/dist/geoms/registry.svelte.js +177 -0
  170. package/dist/guides/GuideAxis.svelte +20 -0
  171. package/dist/guides/GuideAxis.svelte.d.ts +14 -0
  172. package/dist/guides/GuideColorbar.svelte +22 -0
  173. package/dist/guides/GuideColorbar.svelte.d.ts +13 -0
  174. package/dist/guides/GuideColorsteps.svelte +22 -0
  175. package/dist/guides/GuideColorsteps.svelte.d.ts +13 -0
  176. package/dist/guides/GuideLegend.svelte +90 -0
  177. package/dist/guides/GuideLegend.svelte.d.ts +37 -0
  178. package/dist/guides/GuideNone.svelte +19 -0
  179. package/dist/guides/GuideNone.svelte.d.ts +7 -0
  180. package/dist/guides/Guides.svelte +14 -0
  181. package/dist/guides/Guides.svelte.d.ts +13 -0
  182. package/dist/guides/factory.svelte.d.ts +36 -0
  183. package/dist/guides/factory.svelte.js +15 -0
  184. package/dist/index.d.ts +418 -0
  185. package/dist/index.js +376 -0
  186. package/dist/inspection/Inspect.svelte +71 -0
  187. package/dist/inspection/Inspect.svelte.d.ts +36 -0
  188. package/dist/inspection/Tooltip.svelte +439 -0
  189. package/dist/inspection/Tooltip.svelte.d.ts +32 -0
  190. package/dist/inspection/apply.d.ts +120 -0
  191. package/dist/inspection/apply.js +99 -0
  192. package/dist/inspection/coordinator.d.ts +51 -0
  193. package/dist/inspection/coordinator.js +354 -0
  194. package/dist/inspection/display-members.d.ts +1 -0
  195. package/dist/inspection/display-members.js +2 -0
  196. package/dist/inspection/frame.d.ts +90 -0
  197. package/dist/inspection/frame.js +76 -0
  198. package/dist/inspection/group-total.d.ts +1 -0
  199. package/dist/inspection/group-total.js +2 -0
  200. package/dist/inspection/inspect-guide-axes.d.ts +10 -0
  201. package/dist/inspection/inspect-guide-axes.js +24 -0
  202. package/dist/inspection/inspection-reconcile.svelte.d.ts +37 -0
  203. package/dist/inspection/inspection-reconcile.svelte.js +33 -0
  204. package/dist/inspection/inspection-state.svelte.d.ts +86 -0
  205. package/dist/inspection/inspection-state.svelte.js +347 -0
  206. package/dist/inspection/inspection-traversal.svelte.d.ts +29 -0
  207. package/dist/inspection/inspection-traversal.svelte.js +52 -0
  208. package/dist/inspection/pointer-inspect.d.ts +74 -0
  209. package/dist/inspection/pointer-inspect.js +158 -0
  210. package/dist/inspection/resolver.d.ts +3 -0
  211. package/dist/inspection/resolver.js +4 -0
  212. package/dist/inspection/teardown.d.ts +199 -0
  213. package/dist/inspection/teardown.js +181 -0
  214. package/dist/inspection/tooltip-chrome.d.ts +19 -0
  215. package/dist/inspection/tooltip-chrome.js +17 -0
  216. package/dist/inspection/tooltip-motion.d.ts +25 -0
  217. package/dist/inspection/tooltip-motion.js +32 -0
  218. package/dist/inspection/tooltip-presence.svelte.d.ts +49 -0
  219. package/dist/inspection/tooltip-presence.svelte.js +110 -0
  220. package/dist/inspection/tooltip-total.d.ts +1 -0
  221. package/dist/inspection/tooltip-total.js +2 -0
  222. package/dist/interaction/capability-resolution.svelte.d.ts +42 -0
  223. package/dist/interaction/capability-resolution.svelte.js +40 -0
  224. package/dist/interaction/capability.d.ts +129 -0
  225. package/dist/interaction/capability.js +134 -0
  226. package/dist/interaction/controller.svelte.d.ts +4 -0
  227. package/dist/interaction/controller.svelte.js +43 -0
  228. package/dist/interaction/inspect-geom-advisories.d.ts +10 -0
  229. package/dist/interaction/inspect-geom-advisories.js +10 -0
  230. package/dist/interaction/interaction-context.svelte.d.ts +57 -0
  231. package/dist/interaction/interaction-context.svelte.js +4 -0
  232. package/dist/interaction/interaction-diagnostics.d.ts +11 -0
  233. package/dist/interaction/interaction-diagnostics.js +173 -0
  234. package/dist/interaction/interaction-states.svelte.d.ts +84 -0
  235. package/dist/interaction/interaction-states.svelte.js +55 -0
  236. package/dist/interaction/interaction.d.ts +304 -0
  237. package/dist/interaction/interaction.js +7 -0
  238. package/dist/interaction/normalize-interaction-config.d.ts +9 -0
  239. package/dist/interaction/normalize-interaction-config.js +112 -0
  240. package/dist/interaction/reducer.d.ts +97 -0
  241. package/dist/interaction/reducer.js +117 -0
  242. package/dist/interaction/resolve-inspect-capability.d.ts +40 -0
  243. package/dist/interaction/resolve-inspect-capability.js +50 -0
  244. package/dist/interaction/scoped-store.svelte.d.ts +73 -0
  245. package/dist/interaction/scoped-store.svelte.js +93 -0
  246. package/dist/interaction/target.d.ts +91 -0
  247. package/dist/interaction/target.js +68 -0
  248. package/dist/interaction/transition-owner.d.ts +19 -0
  249. package/dist/interaction/transition-owner.js +10 -0
  250. package/dist/interaction/wiring-advisories.d.ts +33 -0
  251. package/dist/interaction/wiring-advisories.js +46 -0
  252. package/dist/interval/BoundsEditor.svelte +332 -0
  253. package/dist/interval/BoundsEditor.svelte.d.ts +10 -0
  254. package/dist/interval/bounds-editor.d.ts +1 -0
  255. package/dist/interval/bounds-editor.js +2 -0
  256. package/dist/interval/consumption.d.ts +1 -0
  257. package/dist/interval/consumption.js +2 -0
  258. package/dist/interval/interval-bounds-state.svelte.d.ts +53 -0
  259. package/dist/interval/interval-bounds-state.svelte.js +117 -0
  260. package/dist/interval/interval-state-helpers.d.ts +10 -0
  261. package/dist/interval/interval-state-helpers.js +34 -0
  262. package/dist/interval/interval-state.svelte.d.ts +60 -0
  263. package/dist/interval/interval-state.svelte.js +360 -0
  264. package/dist/interval/interval.d.ts +1 -0
  265. package/dist/interval/interval.js +2 -0
  266. package/dist/interval/precise-bounds.d.ts +1 -0
  267. package/dist/interval/precise-bounds.js +2 -0
  268. package/dist/interval/query.d.ts +1 -0
  269. package/dist/interval/query.js +2 -0
  270. package/dist/labs/Labs.svelte +29 -0
  271. package/dist/labs/Labs.svelte.d.ts +16 -0
  272. package/dist/layers/fold.d.ts +2 -0
  273. package/dist/layers/fold.js +1 -0
  274. package/dist/layers/grammar-families.d.ts +2 -0
  275. package/dist/layers/grammar-families.js +1 -0
  276. package/dist/layers/plot-layer-contract.d.ts +1 -0
  277. package/dist/layers/plot-layer-contract.js +29 -0
  278. package/dist/layers/plot-layer.svelte.d.ts +42 -0
  279. package/dist/layers/plot-layer.svelte.js +34 -0
  280. package/dist/layers/types.d.ts +2 -0
  281. package/dist/layers/types.js +1 -0
  282. package/dist/legend/Legend.svelte +24 -0
  283. package/dist/legend/Legend.svelte.d.ts +5 -0
  284. package/dist/legend/LegendFilters.svelte +196 -0
  285. package/dist/legend/LegendFilters.svelte.d.ts +8 -0
  286. package/dist/legend/LegendTargets.svelte +393 -0
  287. package/dist/legend/LegendTargets.svelte.d.ts +31 -0
  288. package/dist/legend/entry-key-index.d.ts +1 -0
  289. package/dist/legend/entry-key-index.js +2 -0
  290. package/dist/legend/entry-key-index.svelte.d.ts +34 -0
  291. package/dist/legend/entry-key-index.svelte.js +35 -0
  292. package/dist/legend/filter-state.svelte.d.ts +66 -0
  293. package/dist/legend/filter-state.svelte.js +284 -0
  294. package/dist/legend/filter.d.ts +1 -0
  295. package/dist/legend/filter.js +2 -0
  296. package/dist/legend/focus-emphasis.d.ts +72 -0
  297. package/dist/legend/focus-emphasis.js +91 -0
  298. package/dist/legend/focus-plans.d.ts +89 -0
  299. package/dist/legend/focus-plans.js +72 -0
  300. package/dist/legend/focus-reconcile.svelte.d.ts +53 -0
  301. package/dist/legend/focus-reconcile.svelte.js +113 -0
  302. package/dist/legend/focus-state.svelte.d.ts +73 -0
  303. package/dist/legend/focus-state.svelte.js +338 -0
  304. package/dist/legend/focus.d.ts +1 -0
  305. package/dist/legend/focus.js +2 -0
  306. package/dist/legend/resolve-legend-capability.d.ts +52 -0
  307. package/dist/legend/resolve-legend-capability.js +68 -0
  308. package/dist/legend/resolve-legend-filter.d.ts +65 -0
  309. package/dist/legend/resolve-legend-filter.js +54 -0
  310. package/dist/legend/resolve-legend-focus.d.ts +58 -0
  311. package/dist/legend/resolve-legend-focus.js +36 -0
  312. package/dist/legend/surface.d.ts +190 -0
  313. package/dist/legend/surface.js +158 -0
  314. package/dist/plot-engine-deriveds.svelte.d.ts +75 -0
  315. package/dist/plot-engine-deriveds.svelte.js +166 -0
  316. package/dist/plot-engine.svelte.d.ts +116 -0
  317. package/dist/plot-engine.svelte.js +316 -0
  318. package/dist/plot-props.d.ts +144 -0
  319. package/dist/plot-props.js +81 -0
  320. package/dist/runtime/announcer.svelte.d.ts +17 -0
  321. package/dist/runtime/announcer.svelte.js +28 -0
  322. package/dist/runtime/paint.d.ts +38 -0
  323. package/dist/runtime/paint.js +45 -0
  324. package/dist/runtime/resolve-datum-key.d.ts +53 -0
  325. package/dist/runtime/resolve-datum-key.js +73 -0
  326. package/dist/runtime/runtime.svelte.d.ts +37 -0
  327. package/dist/runtime/runtime.svelte.js +233 -0
  328. package/dist/runtime/semantic-candidate-projection.svelte.d.ts +29 -0
  329. package/dist/runtime/semantic-candidate-projection.svelte.js +137 -0
  330. package/dist/runtime/semantic-data-identity.d.ts +64 -0
  331. package/dist/runtime/semantic-data-identity.js +153 -0
  332. package/dist/runtime/semantic-keys-projection.d.ts +22 -0
  333. package/dist/runtime/semantic-keys-projection.js +40 -0
  334. package/dist/runtime/semantic-keys-resolve.d.ts +69 -0
  335. package/dist/runtime/semantic-keys-resolve.js +122 -0
  336. package/dist/runtime/semantic-keys.svelte.d.ts +30 -0
  337. package/dist/runtime/semantic-keys.svelte.js +69 -0
  338. package/dist/runtime/semantic-source-identity.d.ts +9 -0
  339. package/dist/runtime/semantic-source-identity.js +16 -0
  340. package/dist/scale/Scale.svelte +26 -0
  341. package/dist/scale/Scale.svelte.d.ts +21 -0
  342. package/dist/scale/ScaleAlphaBinned.svelte +14 -0
  343. package/dist/scale/ScaleAlphaBinned.svelte.d.ts +4 -0
  344. package/dist/scale/ScaleAlphaContinuous.svelte +14 -0
  345. package/dist/scale/ScaleAlphaContinuous.svelte.d.ts +4 -0
  346. package/dist/scale/ScaleAlphaDate.svelte +15 -0
  347. package/dist/scale/ScaleAlphaDate.svelte.d.ts +5 -0
  348. package/dist/scale/ScaleAlphaDatetime.svelte +15 -0
  349. package/dist/scale/ScaleAlphaDatetime.svelte.d.ts +5 -0
  350. package/dist/scale/ScaleAlphaDiscrete.svelte +14 -0
  351. package/dist/scale/ScaleAlphaDiscrete.svelte.d.ts +4 -0
  352. package/dist/scale/ScaleAlphaIdentity.svelte +14 -0
  353. package/dist/scale/ScaleAlphaIdentity.svelte.d.ts +4 -0
  354. package/dist/scale/ScaleAlphaManual.svelte +14 -0
  355. package/dist/scale/ScaleAlphaManual.svelte.d.ts +4 -0
  356. package/dist/scale/ScaleColorBinned.svelte +14 -0
  357. package/dist/scale/ScaleColorBinned.svelte.d.ts +3 -0
  358. package/dist/scale/ScaleColorBrewer.svelte +14 -0
  359. package/dist/scale/ScaleColorBrewer.svelte.d.ts +4 -0
  360. package/dist/scale/ScaleColorContinuous.svelte +14 -0
  361. package/dist/scale/ScaleColorContinuous.svelte.d.ts +4 -0
  362. package/dist/scale/ScaleColorDate.svelte +15 -0
  363. package/dist/scale/ScaleColorDate.svelte.d.ts +5 -0
  364. package/dist/scale/ScaleColorDatetime.svelte +15 -0
  365. package/dist/scale/ScaleColorDatetime.svelte.d.ts +5 -0
  366. package/dist/scale/ScaleColorDiscrete.svelte +14 -0
  367. package/dist/scale/ScaleColorDiscrete.svelte.d.ts +4 -0
  368. package/dist/scale/ScaleColorDistiller.svelte +14 -0
  369. package/dist/scale/ScaleColorDistiller.svelte.d.ts +4 -0
  370. package/dist/scale/ScaleColorFermenter.svelte +14 -0
  371. package/dist/scale/ScaleColorFermenter.svelte.d.ts +4 -0
  372. package/dist/scale/ScaleColorGradient.svelte +11 -0
  373. package/dist/scale/ScaleColorGradient.svelte.d.ts +4 -0
  374. package/dist/scale/ScaleColorGradient2.svelte +14 -0
  375. package/dist/scale/ScaleColorGradient2.svelte.d.ts +4 -0
  376. package/dist/scale/ScaleColorGradientn.svelte +14 -0
  377. package/dist/scale/ScaleColorGradientn.svelte.d.ts +4 -0
  378. package/dist/scale/ScaleColorGrey.svelte +11 -0
  379. package/dist/scale/ScaleColorGrey.svelte.d.ts +4 -0
  380. package/dist/scale/ScaleColorHue.svelte +11 -0
  381. package/dist/scale/ScaleColorHue.svelte.d.ts +4 -0
  382. package/dist/scale/ScaleColorIdentity.svelte +14 -0
  383. package/dist/scale/ScaleColorIdentity.svelte.d.ts +4 -0
  384. package/dist/scale/ScaleColorLog10.svelte +14 -0
  385. package/dist/scale/ScaleColorLog10.svelte.d.ts +4 -0
  386. package/dist/scale/ScaleColorManual.svelte +14 -0
  387. package/dist/scale/ScaleColorManual.svelte.d.ts +4 -0
  388. package/dist/scale/ScaleColorOrdinal.svelte +14 -0
  389. package/dist/scale/ScaleColorOrdinal.svelte.d.ts +3 -0
  390. package/dist/scale/ScaleColorSqrt.svelte +14 -0
  391. package/dist/scale/ScaleColorSqrt.svelte.d.ts +4 -0
  392. package/dist/scale/ScaleColorSteps.svelte +11 -0
  393. package/dist/scale/ScaleColorSteps.svelte.d.ts +4 -0
  394. package/dist/scale/ScaleColorSteps2.svelte +11 -0
  395. package/dist/scale/ScaleColorSteps2.svelte.d.ts +4 -0
  396. package/dist/scale/ScaleColorStepsn.svelte +11 -0
  397. package/dist/scale/ScaleColorStepsn.svelte.d.ts +4 -0
  398. package/dist/scale/ScaleColorViridisB.svelte +11 -0
  399. package/dist/scale/ScaleColorViridisB.svelte.d.ts +4 -0
  400. package/dist/scale/ScaleColorViridisC.svelte +11 -0
  401. package/dist/scale/ScaleColorViridisC.svelte.d.ts +4 -0
  402. package/dist/scale/ScaleColorViridisD.svelte +11 -0
  403. package/dist/scale/ScaleColorViridisD.svelte.d.ts +4 -0
  404. package/dist/scale/ScaleFillBinned.svelte +11 -0
  405. package/dist/scale/ScaleFillBinned.svelte.d.ts +3 -0
  406. package/dist/scale/ScaleFillBrewer.svelte +11 -0
  407. package/dist/scale/ScaleFillBrewer.svelte.d.ts +4 -0
  408. package/dist/scale/ScaleFillContinuous.svelte +14 -0
  409. package/dist/scale/ScaleFillContinuous.svelte.d.ts +4 -0
  410. package/dist/scale/ScaleFillDate.svelte +12 -0
  411. package/dist/scale/ScaleFillDate.svelte.d.ts +5 -0
  412. package/dist/scale/ScaleFillDatetime.svelte +15 -0
  413. package/dist/scale/ScaleFillDatetime.svelte.d.ts +5 -0
  414. package/dist/scale/ScaleFillDiscrete.svelte +14 -0
  415. package/dist/scale/ScaleFillDiscrete.svelte.d.ts +4 -0
  416. package/dist/scale/ScaleFillDistiller.svelte +14 -0
  417. package/dist/scale/ScaleFillDistiller.svelte.d.ts +4 -0
  418. package/dist/scale/ScaleFillFermenter.svelte +14 -0
  419. package/dist/scale/ScaleFillFermenter.svelte.d.ts +4 -0
  420. package/dist/scale/ScaleFillGradient.svelte +11 -0
  421. package/dist/scale/ScaleFillGradient.svelte.d.ts +4 -0
  422. package/dist/scale/ScaleFillGradient2.svelte +14 -0
  423. package/dist/scale/ScaleFillGradient2.svelte.d.ts +4 -0
  424. package/dist/scale/ScaleFillGradientn.svelte +14 -0
  425. package/dist/scale/ScaleFillGradientn.svelte.d.ts +4 -0
  426. package/dist/scale/ScaleFillGrey.svelte +11 -0
  427. package/dist/scale/ScaleFillGrey.svelte.d.ts +4 -0
  428. package/dist/scale/ScaleFillHue.svelte +11 -0
  429. package/dist/scale/ScaleFillHue.svelte.d.ts +4 -0
  430. package/dist/scale/ScaleFillIdentity.svelte +14 -0
  431. package/dist/scale/ScaleFillIdentity.svelte.d.ts +4 -0
  432. package/dist/scale/ScaleFillLog10.svelte +14 -0
  433. package/dist/scale/ScaleFillLog10.svelte.d.ts +4 -0
  434. package/dist/scale/ScaleFillManual.svelte +11 -0
  435. package/dist/scale/ScaleFillManual.svelte.d.ts +4 -0
  436. package/dist/scale/ScaleFillOrdinal.svelte +14 -0
  437. package/dist/scale/ScaleFillOrdinal.svelte.d.ts +3 -0
  438. package/dist/scale/ScaleFillSqrt.svelte +14 -0
  439. package/dist/scale/ScaleFillSqrt.svelte.d.ts +4 -0
  440. package/dist/scale/ScaleFillSteps.svelte +11 -0
  441. package/dist/scale/ScaleFillSteps.svelte.d.ts +4 -0
  442. package/dist/scale/ScaleFillSteps2.svelte +11 -0
  443. package/dist/scale/ScaleFillSteps2.svelte.d.ts +4 -0
  444. package/dist/scale/ScaleFillStepsn.svelte +11 -0
  445. package/dist/scale/ScaleFillStepsn.svelte.d.ts +4 -0
  446. package/dist/scale/ScaleFillViridisB.svelte +11 -0
  447. package/dist/scale/ScaleFillViridisB.svelte.d.ts +4 -0
  448. package/dist/scale/ScaleFillViridisC.svelte +11 -0
  449. package/dist/scale/ScaleFillViridisC.svelte.d.ts +4 -0
  450. package/dist/scale/ScaleFillViridisD.svelte +11 -0
  451. package/dist/scale/ScaleFillViridisD.svelte.d.ts +4 -0
  452. package/dist/scale/ScaleLinetypeBinned.svelte +15 -0
  453. package/dist/scale/ScaleLinetypeBinned.svelte.d.ts +4 -0
  454. package/dist/scale/ScaleLinetypeDiscrete.svelte +15 -0
  455. package/dist/scale/ScaleLinetypeDiscrete.svelte.d.ts +4 -0
  456. package/dist/scale/ScaleLinetypeIdentity.svelte +15 -0
  457. package/dist/scale/ScaleLinetypeIdentity.svelte.d.ts +4 -0
  458. package/dist/scale/ScaleLinetypeManual.svelte +15 -0
  459. package/dist/scale/ScaleLinetypeManual.svelte.d.ts +4 -0
  460. package/dist/scale/ScaleLinewidthBinned.svelte +14 -0
  461. package/dist/scale/ScaleLinewidthBinned.svelte.d.ts +4 -0
  462. package/dist/scale/ScaleLinewidthContinuous.svelte +14 -0
  463. package/dist/scale/ScaleLinewidthContinuous.svelte.d.ts +4 -0
  464. package/dist/scale/ScaleLinewidthDate.svelte +15 -0
  465. package/dist/scale/ScaleLinewidthDate.svelte.d.ts +5 -0
  466. package/dist/scale/ScaleLinewidthDatetime.svelte +15 -0
  467. package/dist/scale/ScaleLinewidthDatetime.svelte.d.ts +5 -0
  468. package/dist/scale/ScaleLinewidthDiscrete.svelte +14 -0
  469. package/dist/scale/ScaleLinewidthDiscrete.svelte.d.ts +4 -0
  470. package/dist/scale/ScaleLinewidthIdentity.svelte +14 -0
  471. package/dist/scale/ScaleLinewidthIdentity.svelte.d.ts +4 -0
  472. package/dist/scale/ScaleLinewidthManual.svelte +14 -0
  473. package/dist/scale/ScaleLinewidthManual.svelte.d.ts +4 -0
  474. package/dist/scale/ScaleRadius.svelte +11 -0
  475. package/dist/scale/ScaleRadius.svelte.d.ts +4 -0
  476. package/dist/scale/ScaleShapeBinned.svelte +15 -0
  477. package/dist/scale/ScaleShapeBinned.svelte.d.ts +4 -0
  478. package/dist/scale/ScaleShapeDiscrete.svelte +15 -0
  479. package/dist/scale/ScaleShapeDiscrete.svelte.d.ts +4 -0
  480. package/dist/scale/ScaleShapeIdentity.svelte +15 -0
  481. package/dist/scale/ScaleShapeIdentity.svelte.d.ts +4 -0
  482. package/dist/scale/ScaleShapeManual.svelte +15 -0
  483. package/dist/scale/ScaleShapeManual.svelte.d.ts +4 -0
  484. package/dist/scale/ScaleSizeArea.svelte +11 -0
  485. package/dist/scale/ScaleSizeArea.svelte.d.ts +4 -0
  486. package/dist/scale/ScaleSizeBinned.svelte +14 -0
  487. package/dist/scale/ScaleSizeBinned.svelte.d.ts +4 -0
  488. package/dist/scale/ScaleSizeBinnedArea.svelte +14 -0
  489. package/dist/scale/ScaleSizeBinnedArea.svelte.d.ts +4 -0
  490. package/dist/scale/ScaleSizeContinuous.svelte +14 -0
  491. package/dist/scale/ScaleSizeContinuous.svelte.d.ts +4 -0
  492. package/dist/scale/ScaleSizeDate.svelte +15 -0
  493. package/dist/scale/ScaleSizeDate.svelte.d.ts +5 -0
  494. package/dist/scale/ScaleSizeDatetime.svelte +15 -0
  495. package/dist/scale/ScaleSizeDatetime.svelte.d.ts +5 -0
  496. package/dist/scale/ScaleSizeDiscrete.svelte +14 -0
  497. package/dist/scale/ScaleSizeDiscrete.svelte.d.ts +4 -0
  498. package/dist/scale/ScaleSizeIdentity.svelte +14 -0
  499. package/dist/scale/ScaleSizeIdentity.svelte.d.ts +4 -0
  500. package/dist/scale/ScaleSizeManual.svelte +14 -0
  501. package/dist/scale/ScaleSizeManual.svelte.d.ts +4 -0
  502. package/dist/scale/ScaleXBinned.svelte +14 -0
  503. package/dist/scale/ScaleXBinned.svelte.d.ts +4 -0
  504. package/dist/scale/ScaleXContinuous.svelte +14 -0
  505. package/dist/scale/ScaleXContinuous.svelte.d.ts +4 -0
  506. package/dist/scale/ScaleXDate.svelte +12 -0
  507. package/dist/scale/ScaleXDate.svelte.d.ts +5 -0
  508. package/dist/scale/ScaleXDatetime.svelte +12 -0
  509. package/dist/scale/ScaleXDatetime.svelte.d.ts +5 -0
  510. package/dist/scale/ScaleXDiscrete.svelte +14 -0
  511. package/dist/scale/ScaleXDiscrete.svelte.d.ts +4 -0
  512. package/dist/scale/ScaleXLog10.svelte +14 -0
  513. package/dist/scale/ScaleXLog10.svelte.d.ts +4 -0
  514. package/dist/scale/ScaleXMonthDay.svelte +12 -0
  515. package/dist/scale/ScaleXMonthDay.svelte.d.ts +5 -0
  516. package/dist/scale/ScaleXReverse.svelte +15 -0
  517. package/dist/scale/ScaleXReverse.svelte.d.ts +4 -0
  518. package/dist/scale/ScaleXSqrt.svelte +14 -0
  519. package/dist/scale/ScaleXSqrt.svelte.d.ts +4 -0
  520. package/dist/scale/ScaleXTime.svelte +12 -0
  521. package/dist/scale/ScaleXTime.svelte.d.ts +5 -0
  522. package/dist/scale/ScaleYBinned.svelte +14 -0
  523. package/dist/scale/ScaleYBinned.svelte.d.ts +4 -0
  524. package/dist/scale/ScaleYContinuous.svelte +14 -0
  525. package/dist/scale/ScaleYContinuous.svelte.d.ts +4 -0
  526. package/dist/scale/ScaleYDate.svelte +12 -0
  527. package/dist/scale/ScaleYDate.svelte.d.ts +5 -0
  528. package/dist/scale/ScaleYDatetime.svelte +12 -0
  529. package/dist/scale/ScaleYDatetime.svelte.d.ts +5 -0
  530. package/dist/scale/ScaleYDiscrete.svelte +14 -0
  531. package/dist/scale/ScaleYDiscrete.svelte.d.ts +4 -0
  532. package/dist/scale/ScaleYLog10.svelte +14 -0
  533. package/dist/scale/ScaleYLog10.svelte.d.ts +4 -0
  534. package/dist/scale/ScaleYMonthDay.svelte +12 -0
  535. package/dist/scale/ScaleYMonthDay.svelte.d.ts +5 -0
  536. package/dist/scale/ScaleYReverse.svelte +15 -0
  537. package/dist/scale/ScaleYReverse.svelte.d.ts +4 -0
  538. package/dist/scale/ScaleYSqrt.svelte +14 -0
  539. package/dist/scale/ScaleYSqrt.svelte.d.ts +4 -0
  540. package/dist/scale/ScaleYTime.svelte +12 -0
  541. package/dist/scale/ScaleYTime.svelte.d.ts +5 -0
  542. package/dist/scene/Axis.svelte +159 -0
  543. package/dist/scene/Axis.svelte.d.ts +12 -0
  544. package/dist/scene/Batch.svelte +252 -0
  545. package/dist/scene/Batch.svelte.d.ts +23 -0
  546. package/dist/scene/InteractionOverlay.svelte +402 -0
  547. package/dist/scene/InteractionOverlay.svelte.d.ts +44 -0
  548. package/dist/scene/Legend.svelte +278 -0
  549. package/dist/scene/Legend.svelte.d.ts +8 -0
  550. package/dist/scene/MarkStrata.svelte +129 -0
  551. package/dist/scene/MarkStrata.svelte.d.ts +15 -0
  552. package/dist/scene/SceneOverlays.svelte +118 -0
  553. package/dist/scene/SceneOverlays.svelte.d.ts +49 -0
  554. package/dist/scene/SceneView.svelte +478 -0
  555. package/dist/scene/SceneView.svelte.d.ts +32 -0
  556. package/dist/scene/batch-presentation.svelte.d.ts +111 -0
  557. package/dist/scene/batch-presentation.svelte.js +207 -0
  558. package/dist/scene/geometry.d.ts +2 -0
  559. package/dist/scene/geometry.js +3 -0
  560. package/dist/scene/stratum-paint.d.ts +25 -0
  561. package/dist/scene/stratum-paint.js +40 -0
  562. package/dist/selection/selection-state.svelte.d.ts +23 -0
  563. package/dist/selection/selection-state.svelte.js +73 -0
  564. package/dist/selection/selection.d.ts +1 -0
  565. package/dist/selection/selection.js +2 -0
  566. package/dist/surface/CaptureSurface.svelte +109 -0
  567. package/dist/surface/CaptureSurface.svelte.d.ts +27 -0
  568. package/dist/surface/area-brush.d.ts +48 -0
  569. package/dist/surface/area-brush.js +44 -0
  570. package/dist/surface/brush-finish.d.ts +49 -0
  571. package/dist/surface/brush-finish.js +44 -0
  572. package/dist/surface/keyboard.d.ts +97 -0
  573. package/dist/surface/keyboard.js +105 -0
  574. package/dist/surface/pointer.d.ts +241 -0
  575. package/dist/surface/pointer.js +179 -0
  576. package/dist/surface/surface-description.d.ts +10 -0
  577. package/dist/surface/surface-description.js +11 -0
  578. package/dist/surface/surface-handlers.svelte.d.ts +53 -0
  579. package/dist/surface/surface-handlers.svelte.js +418 -0
  580. package/dist/surface/surface-state.svelte.d.ts +90 -0
  581. package/dist/surface/surface-state.svelte.js +161 -0
  582. package/dist/theme/Theme.svelte +27 -0
  583. package/dist/theme/Theme.svelte.d.ts +23 -0
  584. package/dist/theme/ThemeBase.svelte +13 -0
  585. package/dist/theme/ThemeBase.svelte.d.ts +8 -0
  586. package/dist/theme/ThemeBw.svelte +13 -0
  587. package/dist/theme/ThemeBw.svelte.d.ts +8 -0
  588. package/dist/theme/ThemeClassic.svelte +13 -0
  589. package/dist/theme/ThemeClassic.svelte.d.ts +8 -0
  590. package/dist/theme/ThemeClean.svelte +13 -0
  591. package/dist/theme/ThemeClean.svelte.d.ts +8 -0
  592. package/dist/theme/ThemeDark.svelte +13 -0
  593. package/dist/theme/ThemeDark.svelte.d.ts +8 -0
  594. package/dist/theme/ThemeDefault.svelte +13 -0
  595. package/dist/theme/ThemeDefault.svelte.d.ts +8 -0
  596. package/dist/theme/ThemeEconomist.svelte +13 -0
  597. package/dist/theme/ThemeEconomist.svelte.d.ts +8 -0
  598. package/dist/theme/ThemeEconomistwhite.svelte +13 -0
  599. package/dist/theme/ThemeEconomistwhite.svelte.d.ts +8 -0
  600. package/dist/theme/ThemeFew.svelte +13 -0
  601. package/dist/theme/ThemeFew.svelte.d.ts +8 -0
  602. package/dist/theme/ThemeFivethirtyeight.svelte +14 -0
  603. package/dist/theme/ThemeFivethirtyeight.svelte.d.ts +9 -0
  604. package/dist/theme/ThemeGgplot2.svelte +13 -0
  605. package/dist/theme/ThemeGgplot2.svelte.d.ts +8 -0
  606. package/dist/theme/ThemeGray.svelte +13 -0
  607. package/dist/theme/ThemeGray.svelte.d.ts +8 -0
  608. package/dist/theme/ThemeGrey.svelte +13 -0
  609. package/dist/theme/ThemeGrey.svelte.d.ts +8 -0
  610. package/dist/theme/ThemeHc.svelte +13 -0
  611. package/dist/theme/ThemeHc.svelte.d.ts +8 -0
  612. package/dist/theme/ThemeHcdark.svelte +13 -0
  613. package/dist/theme/ThemeHcdark.svelte.d.ts +8 -0
  614. package/dist/theme/ThemeHrbr.svelte +13 -0
  615. package/dist/theme/ThemeHrbr.svelte.d.ts +8 -0
  616. package/dist/theme/ThemeIgray.svelte +13 -0
  617. package/dist/theme/ThemeIgray.svelte.d.ts +8 -0
  618. package/dist/theme/ThemeLight.svelte +13 -0
  619. package/dist/theme/ThemeLight.svelte.d.ts +8 -0
  620. package/dist/theme/ThemeLinedraw.svelte +13 -0
  621. package/dist/theme/ThemeLinedraw.svelte.d.ts +8 -0
  622. package/dist/theme/ThemeMap.svelte +13 -0
  623. package/dist/theme/ThemeMap.svelte.d.ts +8 -0
  624. package/dist/theme/ThemeMinimal.svelte +13 -0
  625. package/dist/theme/ThemeMinimal.svelte.d.ts +8 -0
  626. package/dist/theme/ThemePander.svelte +13 -0
  627. package/dist/theme/ThemePander.svelte.d.ts +8 -0
  628. package/dist/theme/ThemeSolarized.svelte +13 -0
  629. package/dist/theme/ThemeSolarized.svelte.d.ts +8 -0
  630. package/dist/theme/ThemeSolarized2.svelte +13 -0
  631. package/dist/theme/ThemeSolarized2.svelte.d.ts +8 -0
  632. package/dist/theme/ThemeSolarized2dark.svelte +13 -0
  633. package/dist/theme/ThemeSolarized2dark.svelte.d.ts +8 -0
  634. package/dist/theme/ThemeSolarizeddark.svelte +14 -0
  635. package/dist/theme/ThemeSolarizeddark.svelte.d.ts +9 -0
  636. package/dist/theme/ThemeSolid.svelte +13 -0
  637. package/dist/theme/ThemeSolid.svelte.d.ts +8 -0
  638. package/dist/theme/ThemeStata.svelte +13 -0
  639. package/dist/theme/ThemeStata.svelte.d.ts +8 -0
  640. package/dist/theme/ThemeStatas1color.svelte +13 -0
  641. package/dist/theme/ThemeStatas1color.svelte.d.ts +8 -0
  642. package/dist/theme/ThemeTest.svelte +14 -0
  643. package/dist/theme/ThemeTest.svelte.d.ts +9 -0
  644. package/dist/theme/ThemeTufte.svelte +13 -0
  645. package/dist/theme/ThemeTufte.svelte.d.ts +8 -0
  646. package/dist/theme/ThemeVoid.svelte +14 -0
  647. package/dist/theme/ThemeVoid.svelte.d.ts +9 -0
  648. package/dist/theme/ThemeWsj.svelte +13 -0
  649. package/dist/theme/ThemeWsj.svelte.d.ts +8 -0
  650. package/dist/theme/factory.svelte.d.ts +36 -0
  651. package/dist/theme/factory.svelte.js +100 -0
  652. package/dist/zoom/zoom-state.svelte.d.ts +44 -0
  653. package/dist/zoom/zoom-state.svelte.js +121 -0
  654. package/dist/zoom/zoom.d.ts +1 -0
  655. package/dist/zoom/zoom.js +2 -0
  656. package/package.json +83 -0
@@ -0,0 +1,439 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+
4
+ import type { CellValue } from "@ggts-sh/core";
5
+
6
+ import type {
7
+ PlotInspectionChange,
8
+ TooltipTotal,
9
+ } from "../interaction/interaction.js";
10
+ import {
11
+ collapseIdenticalDisplayMembers,
12
+ defaultTooltipRows,
13
+ formatTooltipCell,
14
+ selectHoverDisplayMembers,
15
+ type TooltipAxisFormatters,
16
+ type TooltipFieldLabs,
17
+ } from "./display-members.js";
18
+ import { TRANSIENT_MEMBER_LIMIT } from "./resolver.js";
19
+ import { shouldShowTooltipPinHint } from "./tooltip-chrome.js";
20
+ import { tooltipTotalPlacement } from "./tooltip-total.js";
21
+
22
+ const {
23
+ inspection,
24
+ width,
25
+ height,
26
+ content,
27
+ interactive = false,
28
+ onclose,
29
+ onenter,
30
+ onleave,
31
+ onexited,
32
+ id,
33
+ docked = false,
34
+ motion = "none",
35
+ labs = null,
36
+ fontSizePx = 12.5,
37
+ /** Whether inspect pinning is enabled (drives instructional footers). */
38
+ pin = true,
39
+ /**
40
+ * Resolved theme tooltip keyline. Flat (gridless) themes pass
41
+ * `"transparent"` so default content stays silent (#1069).
42
+ */
43
+ tooltipBorder = "#b8b8b8",
44
+ /**
45
+ * Scale-aware x/y formatters from the render model. Position field rows
46
+ * use these so stat-layer temporal values match the axis header (#1113).
47
+ */
48
+ axisFormatters = null,
49
+ tooltipTotal = "auto",
50
+ }: {
51
+ inspection: PlotInspectionChange<Record<string, CellValue>, PropertyKey>;
52
+ width: number;
53
+ height: number;
54
+ content?:
55
+ | Snippet<[PlotInspectionChange<Record<string, CellValue>, PropertyKey>]>
56
+ | undefined;
57
+ interactive?: boolean;
58
+ onclose?: (source: "pointer" | "keyboard") => void;
59
+ onenter?: () => void;
60
+ onleave?: () => void;
61
+ onexited?: () => void;
62
+ id?: string;
63
+ docked?: boolean;
64
+ motion?: "enter" | "none" | "exit";
65
+ /** Plot labs used for default tooltip field labels (#752). */
66
+ labs?: TooltipFieldLabs | null;
67
+ /**
68
+ * Theme body type size (px). Default tooltips track plot chrome rather
69
+ * than a hard-coded 16px scale (#753 residual).
70
+ */
71
+ fontSizePx?: number;
72
+ pin?: boolean;
73
+ tooltipBorder?: string;
74
+ axisFormatters?: TooltipAxisFormatters | null;
75
+ tooltipTotal?: TooltipTotal;
76
+ } = $props();
77
+
78
+ const showPinHint = $derived(
79
+ shouldShowTooltipPinHint({ pin, tooltipBorder }),
80
+ );
81
+
82
+ const anchor = $derived(inspection.focus.anchor);
83
+ const OFFSET = 10;
84
+ const EDGE = 8;
85
+ let tooltipElement = $state<HTMLDivElement | null>(null);
86
+ let measuredWidth = $state(0);
87
+ let measuredHeight = $state(0);
88
+
89
+ $effect(() => {
90
+ if (docked || tooltipElement === null) return;
91
+ const element = tooltipElement;
92
+ const measure = () => {
93
+ measuredWidth = element.offsetWidth;
94
+ measuredHeight = element.offsetHeight;
95
+ };
96
+ measure();
97
+ const observer = new ResizeObserver(measure);
98
+ observer.observe(element);
99
+ return () => observer.disconnect();
100
+ });
101
+
102
+ // Track theme fontSize so tooltips sit with axis/legend chrome (#753).
103
+ const fontStyle = $derived(`font-size:${fontSizePx}px;`);
104
+
105
+ const style = $derived(
106
+ docked
107
+ ? fontStyle
108
+ : (() => {
109
+ const tooltipWidth = Math.min(
110
+ measuredWidth || 280,
111
+ Math.max(0, width - EDGE * 2),
112
+ );
113
+ const tooltipHeight = Math.min(
114
+ measuredHeight || 160,
115
+ Math.max(0, height - EDGE * 2),
116
+ );
117
+ const preferredX =
118
+ anchor.x + OFFSET + tooltipWidth <= width - EDGE
119
+ ? anchor.x + OFFSET
120
+ : anchor.x - OFFSET - tooltipWidth;
121
+ const preferredY =
122
+ anchor.y + OFFSET + tooltipHeight <= height - EDGE
123
+ ? anchor.y + OFFSET
124
+ : anchor.y - OFFSET - tooltipHeight;
125
+ const left = Math.max(
126
+ EDGE,
127
+ Math.min(preferredX, width - tooltipWidth - EDGE),
128
+ );
129
+ const top = Math.max(
130
+ EDGE,
131
+ Math.min(preferredY, height - tooltipHeight - EDGE),
132
+ );
133
+ return `left:${left}px;top:${top}px;${fontStyle}`;
134
+ })(),
135
+ );
136
+
137
+ // Collapse identical field blocks for default rendering only (#385). Public
138
+ // `inspection.members` stays full for custom content / oninspect.
139
+ const displayMembers = $derived(
140
+ collapseIdenticalDisplayMembers(
141
+ inspection.members,
142
+ inspection.focus,
143
+ axisFormatters,
144
+ inspection.mode,
145
+ ),
146
+ );
147
+
148
+ // Transient hover: top-k by value (focus force-included). Pin lists all
149
+ // inside the scrollable panel (#1274 / #1269).
150
+ const shownMembers = $derived(
151
+ inspection.state === "transient"
152
+ ? selectHoverDisplayMembers(displayMembers, inspection.focus, {
153
+ mode: inspection.mode,
154
+ limit: TRANSIENT_MEMBER_LIMIT,
155
+ })
156
+ : displayMembers,
157
+ );
158
+
159
+ // Prefer the full axis-group size when present (transient snapshots are
160
+ // already capped upstream, so displayMembers.length alone is always ≤8).
161
+ const overflowCount = $derived(
162
+ inspection.state === "transient"
163
+ ? Math.max(
164
+ 0,
165
+ (inspection.mode === "x" || inspection.mode === "y"
166
+ ? inspection.groupMemberCount
167
+ : displayMembers.length) - shownMembers.length,
168
+ )
169
+ : 0,
170
+ );
171
+
172
+ const totalPlacement = $derived(
173
+ tooltipTotalPlacement({
174
+ tooltipTotal,
175
+ groupTotal: inspection.groupTotal,
176
+ memberCount: displayMembers.length,
177
+ mode: inspection.mode,
178
+ }),
179
+ );
180
+ const stackTotal = $derived(
181
+ totalPlacement === null ? null : (inspection.groupTotal ?? null),
182
+ );
183
+
184
+ const departing = $derived(motion === "exit");
185
+ const liveInteractive = $derived(
186
+ !departing && interactive && inspection.state === "pinned",
187
+ );
188
+ </script>
189
+
190
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
191
+ <div
192
+ bind:this={tooltipElement}
193
+ id={departing ? undefined : id}
194
+ class={departing ? "gg-tooltip-ghost" : "gg-tooltip"}
195
+ class:gg-tooltip-interactive={!departing && interactive}
196
+ class:gg-tooltip-pinned={!departing && inspection.state === "pinned"}
197
+ class:gg-tooltip-docked={docked}
198
+ data-gg-tooltip-motion={motion === "enter" ? "enter" : undefined}
199
+ {style}
200
+ role={liveInteractive ? "dialog" : departing ? undefined : "tooltip"}
201
+ tabindex={liveInteractive ? -1 : undefined}
202
+ aria-label={liveInteractive ? "Data inspection" : undefined}
203
+ aria-hidden={departing ? true : undefined}
204
+ inert={departing ? true : undefined}
205
+ onpointerenter={departing ? undefined : onenter}
206
+ onpointerleave={departing ? undefined : onleave}
207
+ onkeydown={departing
208
+ ? undefined
209
+ : (event) => {
210
+ if (event.key === "Escape") {
211
+ event.stopPropagation();
212
+ onclose?.("keyboard");
213
+ }
214
+ }}
215
+ ontransitionend={(event) => {
216
+ if (
217
+ motion !== "exit" ||
218
+ event.target !== event.currentTarget ||
219
+ event.propertyName !== "opacity"
220
+ )
221
+ return;
222
+ onexited?.();
223
+ }}
224
+ >
225
+ {#if content !== undefined}
226
+ {@render content(inspection)}
227
+ {:else}
228
+ {#if inspection.mode === "x" || inspection.mode === "y"}
229
+ <div class="gg-tooltip-axis">{inspection.axisLabel}</div>
230
+ {/if}
231
+ <div class="gg-tooltip-members">
232
+ {#if totalPlacement === "top" && stackTotal !== null}
233
+ <dl class="gg-tooltip-total gg-tooltip-total-top">
234
+ <dt>Total</dt>
235
+ <dd>{formatTooltipCell(stackTotal)}</dd>
236
+ </dl>
237
+ {/if}
238
+ {#each shownMembers as member, index (`${member.layerIndex}:${String(member.key)}:${index}`)}
239
+ <dl class:gg-tooltip-focus={member === inspection.focus}>
240
+ {#each defaultTooltipRows( member.fields, inspection.mode, { labs } ) as row (row.key)}
241
+ <dt>{row.label}</dt>
242
+ <dd>
243
+ {formatTooltipCell(row.value, {
244
+ channel: row.valueChannel,
245
+ axisFormatters: member.row === null ? axisFormatters : null,
246
+ })}
247
+ </dd>
248
+ {/each}
249
+ </dl>
250
+ {/each}
251
+ {#if totalPlacement === "bottom" && stackTotal !== null}
252
+ <dl class="gg-tooltip-total">
253
+ <dt>Total</dt>
254
+ <dd>{formatTooltipCell(stackTotal)}</dd>
255
+ </dl>
256
+ {/if}
257
+ </div>
258
+
259
+ {#if overflowCount > 0}
260
+ <!-- Overflow is a data-completeness signal; keep it even when the pin
261
+ affordance is silent for flat chrome (#1069 / Devin). -->
262
+ <p class="gg-tooltip-more">
263
+ {#if showPinHint}
264
+ +{overflowCount} more · pin to inspect all
265
+ {:else}
266
+ +{overflowCount} more
267
+ {/if}
268
+ </p>
269
+ {:else if showPinHint && inspection.state === "transient"}
270
+ <p class="gg-tooltip-hint">Click to pin</p>
271
+ {/if}
272
+ {/if}
273
+ {#if liveInteractive}
274
+ <button type="button" onclick={() => onclose?.("pointer")}>Close</button>
275
+ {/if}
276
+ </div>
277
+
278
+ <style>
279
+ .gg-tooltip,
280
+ .gg-tooltip-ghost {
281
+ position: absolute;
282
+ pointer-events: none;
283
+ z-index: auto;
284
+ background: var(
285
+ --gg-tooltipPaper,
286
+ var(
287
+ --gg-tooltip-background,
288
+ var(--gg-theme-tooltipPaper, var(--gg-paper, #fff))
289
+ )
290
+ );
291
+ color: var(
292
+ --gg-tooltipInk,
293
+ var(
294
+ --gg-tooltip-foreground,
295
+ var(--gg-theme-tooltipInk, var(--gg-ink, #1f2328))
296
+ )
297
+ );
298
+ border: 1px solid
299
+ var(
300
+ --gg-tooltipBorder,
301
+ var(
302
+ --gg-tooltip-border,
303
+ var(--gg-theme-tooltipBorder, var(--gg-grid, #b8b8b8))
304
+ )
305
+ );
306
+ border-radius: var(--gg-tooltip-radius, 3px);
307
+ padding: 8px 10px;
308
+ font-family: var(--gg-font-family, inherit);
309
+ /* Default only — runtime size is set from theme.fontSize via style (#753).
310
+ Smoke interaction VR baselines track this size (same-PR). */
311
+ font-size: 12.5px;
312
+ line-height: 1.4;
313
+ max-width: min(280px, calc(100% - 16px));
314
+ max-height: min(320px, calc(100% - 16px));
315
+ box-sizing: border-box;
316
+ overflow: auto;
317
+ overflow-wrap: anywhere;
318
+ box-shadow: var(--gg-tooltip-shadow, none);
319
+ user-select: text;
320
+ }
321
+
322
+ .gg-tooltip[data-gg-tooltip-motion="enter"],
323
+ .gg-tooltip-ghost {
324
+ transition: opacity 160ms cubic-bezier(0.23, 1, 0.32, 1);
325
+ }
326
+
327
+ .gg-tooltip[data-gg-tooltip-motion="enter"] {
328
+ @starting-style {
329
+ opacity: 0;
330
+ }
331
+ }
332
+
333
+ .gg-tooltip-ghost {
334
+ opacity: 0;
335
+ pointer-events: none;
336
+ @starting-style {
337
+ opacity: 1;
338
+ }
339
+ }
340
+
341
+ .gg-tooltip-docked {
342
+ position: absolute;
343
+ inset: calc(100% + 8px) 0 auto;
344
+ width: auto;
345
+ max-width: none;
346
+ max-height: 240px;
347
+ box-sizing: border-box;
348
+ }
349
+
350
+ .gg-tooltip-interactive.gg-tooltip-pinned {
351
+ pointer-events: auto;
352
+ }
353
+
354
+ .gg-tooltip-members {
355
+ display: grid;
356
+ gap: 6px;
357
+ }
358
+
359
+ dl {
360
+ margin: 0;
361
+ display: grid;
362
+ grid-template-columns: auto auto;
363
+ gap: 0 10px;
364
+ contain-intrinsic-size: 28px;
365
+ content-visibility: auto;
366
+ }
367
+
368
+ .gg-tooltip-focus {
369
+ font-weight: 600;
370
+ }
371
+
372
+ .gg-tooltip-total {
373
+ border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent);
374
+ padding-top: 4px;
375
+ margin-top: 2px;
376
+ }
377
+
378
+ .gg-tooltip-total-top {
379
+ border-top: none;
380
+ padding-top: 0;
381
+ margin-top: 0;
382
+ border-bottom: 1px solid color-mix(in srgb, currentColor 18%, transparent);
383
+ padding-bottom: 4px;
384
+ margin-bottom: 2px;
385
+ }
386
+
387
+ dt {
388
+ font-weight: 600;
389
+ }
390
+
391
+ dd {
392
+ margin: 0;
393
+ text-align: right;
394
+ font-variant-numeric: tabular-nums;
395
+ }
396
+
397
+ .gg-tooltip-axis {
398
+ margin-bottom: 6px;
399
+ font-weight: 650;
400
+ font-variant-numeric: tabular-nums;
401
+ }
402
+
403
+ .gg-tooltip-more,
404
+ .gg-tooltip-hint {
405
+ margin: 7px 0 0;
406
+ /* Solid mix (not alpha) so secondary lines clear WCAG AA 4.5:1 on the
407
+ tooltip paper — transparent 65% failed axe on linked-views with pin.
408
+ Mix against the tooltip card, not page --gg-paper (dark themes). */
409
+ color: color-mix(
410
+ in srgb,
411
+ currentColor 72%,
412
+ var(
413
+ --gg-tooltipPaper,
414
+ var(
415
+ --gg-tooltip-background,
416
+ var(--gg-theme-tooltipPaper, var(--gg-paper, #fff))
417
+ )
418
+ )
419
+ );
420
+ font-size: 10px;
421
+ }
422
+
423
+ button {
424
+ min-width: 44px;
425
+ min-height: 44px;
426
+ margin-top: 8px;
427
+ }
428
+
429
+ @media (forced-colors: active) {
430
+ .gg-tooltip,
431
+ .gg-tooltip-ghost {
432
+ border-color: CanvasText;
433
+ background: Canvas;
434
+ color: CanvasText;
435
+ box-shadow: none;
436
+ forced-color-adjust: auto;
437
+ }
438
+ }
439
+ </style>
@@ -0,0 +1,32 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { CellValue } from "@ggts-sh/core";
3
+ import type { PlotInspectionChange, TooltipTotal } from "../interaction/interaction.js";
4
+ import { type TooltipAxisFormatters, type TooltipFieldLabs } from "./display-members.js";
5
+ type $$ComponentProps = {
6
+ inspection: PlotInspectionChange<Record<string, CellValue>, PropertyKey>;
7
+ width: number;
8
+ height: number;
9
+ content?: Snippet<[PlotInspectionChange<Record<string, CellValue>, PropertyKey>]> | undefined;
10
+ interactive?: boolean;
11
+ onclose?: (source: "pointer" | "keyboard") => void;
12
+ onenter?: () => void;
13
+ onleave?: () => void;
14
+ onexited?: () => void;
15
+ id?: string;
16
+ docked?: boolean;
17
+ motion?: "enter" | "none" | "exit";
18
+ /** Plot labs used for default tooltip field labels (#752). */
19
+ labs?: TooltipFieldLabs | null;
20
+ /**
21
+ * Theme body type size (px). Default tooltips track plot chrome rather
22
+ * than a hard-coded 16px scale (#753 residual).
23
+ */
24
+ fontSizePx?: number;
25
+ pin?: boolean;
26
+ tooltipBorder?: string;
27
+ axisFormatters?: TooltipAxisFormatters | null;
28
+ tooltipTotal?: TooltipTotal;
29
+ };
30
+ declare const Tooltip: import("svelte").Component<$$ComponentProps, {}, "">;
31
+ type Tooltip = ReturnType<typeof Tooltip>;
32
+ export default Tooltip;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Pure decision tables for capture-surface inspection *apply* policy:
3
+ * setInspection gates, pin toggle, mode/completeness resolution.
4
+ * Callers own resolve, reducer, emit, and DOM side effects.
5
+ */
6
+ import type { InteractionSource } from "../interaction/interaction.js";
7
+ import type { InspectionHostState, QueuedPointerInspection } from "./frame.js";
8
+ /**
9
+ * Whether the host should clear the sticky live-region announcement text
10
+ * before routing a setInspection request.
11
+ *
12
+ * Host calls this **unconditionally before** `resolveSetInspectionAction`,
13
+ * including when the later action is `ignore` (e.g. keyboard transient
14
+ * while pinned still clears the announcement).
15
+ */
16
+ export declare function shouldClearInspectionAnnouncement(input: {
17
+ readonly hasHit: boolean;
18
+ readonly source: InteractionSource;
19
+ }): boolean;
20
+ export type SetInspectionInput = {
21
+ readonly hasHit: boolean;
22
+ readonly requestedState: "transient" | "pinned";
23
+ /** Host: `inspection === null ? "none" : inspection.state`. */
24
+ readonly currentState: InspectionHostState;
25
+ readonly tooltipHovered: boolean;
26
+ };
27
+ export type SetInspectionAction = {
28
+ readonly type: "ignore";
29
+ } | {
30
+ readonly type: "clear";
31
+ /**
32
+ * Host should emit inspect clear. True when currentState !== "none"
33
+ * (after clear-gate priority, this is effectively currentState === "transient").
34
+ */
35
+ readonly emitClear: boolean;
36
+ } | {
37
+ readonly type: "apply";
38
+ };
39
+ /**
40
+ * Pure decision for the start of host `setInspection`.
41
+ *
42
+ * Priority (matches current host):
43
+ * 1. ignore — current pinned + requested transient
44
+ * 2. ignore — !hasHit && (tooltipHovered || current pinned)
45
+ * 3. clear — !hasHit (emitClear when currentState !== "none")
46
+ * 4. apply — hasHit
47
+ *
48
+ * Host note: `apply` is not terminal. After resolve, a null coordinator
49
+ * result re-enters via `setInspection(null, source)` (default transient),
50
+ * re-running these gates. InspectionState owns resolve/commit/emit.
51
+ */
52
+ export declare function resolveSetInspectionAction(input: SetInspectionInput): SetInspectionAction;
53
+ export type ToggleInspectionPinInput = {
54
+ readonly hasInspection: boolean;
55
+ readonly hasSeed: boolean;
56
+ /** Host: current inspection.state when hasInspection. */
57
+ readonly currentState: "transient" | "pinned";
58
+ /** Host: `pendingPinnedPointer` (null when none). */
59
+ readonly pending: QueuedPointerInspection | null;
60
+ };
61
+ export type ToggleInspectionPinAction = {
62
+ readonly type: "ignore";
63
+ } | {
64
+ readonly type: "restore-pending";
65
+ /** Pending queue payload to restore as transient inspection. */
66
+ readonly pending: QueuedPointerInspection;
67
+ } | {
68
+ readonly type: "flip";
69
+ /** Target inspection state after toggle-pin dispatch + re-resolve. */
70
+ readonly state: "transient" | "pinned";
71
+ };
72
+ /**
73
+ * Pure decision for host `toggleInspectionPin` after the null-seed guard.
74
+ *
75
+ * Host sequencing (preserve exactly):
76
+ * 1. if ignore → return (no reducer dispatch)
77
+ * 2. always `reducer.dispatch({ type: "toggle-pin", source })` first
78
+ * 3. restore-pending → release pinned, clear fields, setInspection(action.pending…, "transient")
79
+ * 4. flip → resolveInspection with action.state; if null return with reducer
80
+ * already toggled (host does not roll back reducer state)
81
+ *
82
+ * `pending` replaces a separate `hasPendingPinned` boolean so restore cannot
83
+ * race a null payload and the host does not non-null-assert after the gate.
84
+ */
85
+ export declare function resolveToggleInspectionPinAction(input: ToggleInspectionPinInput): ToggleInspectionPinAction;
86
+ /**
87
+ * Coordinator completeness for resolveInspection.
88
+ * Uses `!== undefined` (not truthiness): defined falsy content is complete.
89
+ */
90
+ export declare function resolveInspectionCompleteness(input: {
91
+ readonly state: "transient" | "pinned";
92
+ readonly hasCustomContent: boolean;
93
+ readonly hasInspectCallback: boolean;
94
+ readonly hasInteractionCallback: boolean;
95
+ }): "complete" | "transient";
96
+ /**
97
+ * Resolve effective inspect mode from optional concrete mode + config request.
98
+ * Host: `concreteMode ?? (requested === "auto" ? seed.autoMode : requested)`.
99
+ */
100
+ export declare function resolveInspectionMode(input: {
101
+ readonly concreteMode: "exact" | "x" | "y" | "xy" | undefined;
102
+ readonly requested: "auto" | "exact" | "x" | "y" | "xy";
103
+ readonly seedAutoMode: "exact" | "x" | "y" | "xy";
104
+ }): "exact" | "x" | "y" | "xy";
105
+ /**
106
+ * Whether unpinning should announce for a11y (keyboard/touch only).
107
+ * Host: only after a successful flip-to-transient resolve.
108
+ */
109
+ export declare function shouldAnnounceUnpin(input: {
110
+ readonly state: "transient" | "pinned";
111
+ readonly source: InteractionSource;
112
+ }): boolean;
113
+ /**
114
+ * Whether to move focus into the interactive pinned tooltip after pin.
115
+ * Host still runs the querySelector focus in a microtask.
116
+ */
117
+ export declare function shouldFocusPinnedInteractiveTooltip(input: {
118
+ readonly state: "transient" | "pinned";
119
+ readonly contentMode: "interactive" | "informational" | undefined;
120
+ }): boolean;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Pure decision tables for capture-surface inspection *apply* policy:
3
+ * setInspection gates, pin toggle, mode/completeness resolution.
4
+ * Callers own resolve, reducer, emit, and DOM side effects.
5
+ */
6
+ /**
7
+ * Whether the host should clear the sticky live-region announcement text
8
+ * before routing a setInspection request.
9
+ *
10
+ * Host calls this **unconditionally before** `resolveSetInspectionAction`,
11
+ * including when the later action is `ignore` (e.g. keyboard transient
12
+ * while pinned still clears the announcement).
13
+ */
14
+ export function shouldClearInspectionAnnouncement(input) {
15
+ return input.hasHit && (input.source === "keyboard" || input.source === "touch");
16
+ }
17
+ /**
18
+ * Pure decision for the start of host `setInspection`.
19
+ *
20
+ * Priority (matches current host):
21
+ * 1. ignore — current pinned + requested transient
22
+ * 2. ignore — !hasHit && (tooltipHovered || current pinned)
23
+ * 3. clear — !hasHit (emitClear when currentState !== "none")
24
+ * 4. apply — hasHit
25
+ *
26
+ * Host note: `apply` is not terminal. After resolve, a null coordinator
27
+ * result re-enters via `setInspection(null, source)` (default transient),
28
+ * re-running these gates. InspectionState owns resolve/commit/emit.
29
+ */
30
+ export function resolveSetInspectionAction(input) {
31
+ if (input.currentState === "pinned" && input.requestedState === "transient")
32
+ return { type: "ignore" };
33
+ if (!input.hasHit) {
34
+ if (input.tooltipHovered || input.currentState === "pinned")
35
+ return { type: "ignore" };
36
+ return { type: "clear", emitClear: input.currentState !== "none" };
37
+ }
38
+ return { type: "apply" };
39
+ }
40
+ /**
41
+ * Pure decision for host `toggleInspectionPin` after the null-seed guard.
42
+ *
43
+ * Host sequencing (preserve exactly):
44
+ * 1. if ignore → return (no reducer dispatch)
45
+ * 2. always `reducer.dispatch({ type: "toggle-pin", source })` first
46
+ * 3. restore-pending → release pinned, clear fields, setInspection(action.pending…, "transient")
47
+ * 4. flip → resolveInspection with action.state; if null return with reducer
48
+ * already toggled (host does not roll back reducer state)
49
+ *
50
+ * `pending` replaces a separate `hasPendingPinned` boolean so restore cannot
51
+ * race a null payload and the host does not non-null-assert after the gate.
52
+ */
53
+ export function resolveToggleInspectionPinAction(input) {
54
+ if (!input.hasInspection || !input.hasSeed)
55
+ return { type: "ignore" };
56
+ if (input.currentState === "pinned" && input.pending !== null)
57
+ return { type: "restore-pending", pending: input.pending };
58
+ return {
59
+ type: "flip",
60
+ state: input.currentState === "pinned" ? "transient" : "pinned",
61
+ };
62
+ }
63
+ /**
64
+ * Coordinator completeness for resolveInspection.
65
+ * Uses `!== undefined` (not truthiness): defined falsy content is complete.
66
+ */
67
+ export function resolveInspectionCompleteness(input) {
68
+ if (input.state === "pinned" ||
69
+ input.hasCustomContent ||
70
+ input.hasInspectCallback ||
71
+ input.hasInteractionCallback)
72
+ return "complete";
73
+ return "transient";
74
+ }
75
+ /**
76
+ * Resolve effective inspect mode from optional concrete mode + config request.
77
+ * Host: `concreteMode ?? (requested === "auto" ? seed.autoMode : requested)`.
78
+ */
79
+ export function resolveInspectionMode(input) {
80
+ if (input.concreteMode !== undefined)
81
+ return input.concreteMode;
82
+ if (input.requested === "auto")
83
+ return input.seedAutoMode;
84
+ return input.requested;
85
+ }
86
+ /**
87
+ * Whether unpinning should announce for a11y (keyboard/touch only).
88
+ * Host: only after a successful flip-to-transient resolve.
89
+ */
90
+ export function shouldAnnounceUnpin(input) {
91
+ return input.state === "transient" && (input.source === "keyboard" || input.source === "touch");
92
+ }
93
+ /**
94
+ * Whether to move focus into the interactive pinned tooltip after pin.
95
+ * Host still runs the querySelector focus in a microtask.
96
+ */
97
+ export function shouldFocusPinnedInteractiveTooltip(input) {
98
+ return input.state === "pinned" && input.contentMode === "interactive";
99
+ }