@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,158 @@
1
+ /**
2
+ * Pointer-inspect queue ownership for InspectionState.
3
+ *
4
+ * Owns queued payload + frame token + pending-pin stash, nearest schedule,
5
+ * typed cancel, and onInspectPointerFrame routing. Pure frame tables stay in
6
+ * frame.ts; the host owns $state inspection snapshot, setInspection, dismiss,
7
+ * and scene-reconcile orchestration.
8
+ *
9
+ * Construction must not invoke deps.model / deps.reducer / deps.setInspection
10
+ * (armed-getter construction discipline on the host factory).
11
+ *
12
+ * onFrame may re-enter the host via setInspection (apply-pending). Snapshot
13
+ * then clear queue fields before pure routing so re-entrant cancel sees empty
14
+ * queue fields — load-bearing for touch-tap override of a pending rAF.
15
+ */
16
+ import { resolveTarget } from "../interaction/target.js";
17
+ import { buildQueuedInspectFrame, resolveQueuedInspectFrameAction, } from "./frame.js";
18
+ /**
19
+ * hitTest resurrection when nearest misses.
20
+ *
21
+ * nearest under axis modes measures distance to the **anchor**, not painted
22
+ * geometry. hitTest finds whatever mark is under the pointer:
23
+ * - **rects** (bars/tiles): containment of the bar body — keep rescuing so
24
+ * wide columns under mode x still tooltips when the pointer is on the fill
25
+ * but farther than maxDistance from the centre anchor.
26
+ * - **paths/segments** (lines, areas, qq_line): stroke/fill can hit far from
27
+ * vertex anchors; on a two-vertex path that teleports between ends
28
+ * mid-stroke. Drop those under axis modes (and auto→axis autoMode).
29
+ *
30
+ * Exact always keeps geometric hits. Auto→exact marks (points, default bars)
31
+ * keep full hitTest. Flip-safe: no re-implementation of nearest's axis swap.
32
+ */
33
+ function hitTestFallback(model, input) {
34
+ const hit = model.candidates.hitTest(input.point.x, input.point.y);
35
+ if (hit === null)
36
+ return null;
37
+ if (input.mode === "exact")
38
+ return hit;
39
+ const resolved = input.mode === "auto" ? (hit.autoMode ?? "exact") : input.mode;
40
+ if (resolved === "exact")
41
+ return hit;
42
+ // Axis mode (explicit or auto→x/y): rect containment only.
43
+ return hit.kind === "rects" ? hit : null;
44
+ }
45
+ /**
46
+ * Create the pointer-inspect queue. Does not invoke deps at construction.
47
+ */
48
+ export function createPointerInspectQueue(deps) {
49
+ let queuedPointerToken = null;
50
+ let queuedPointerInspection = null;
51
+ let pendingPinnedPointer = null;
52
+ function schedule(input) {
53
+ const model = deps.model();
54
+ // Resolved target owns panel-scoped nearest + hover distance policy (#1080 / #787).
55
+ // panelAtOrOnly keeps single-panel axis-margin hover working.
56
+ const target = model === null
57
+ ? null
58
+ : resolveTarget({
59
+ model,
60
+ point: input.point,
61
+ intent: "hover",
62
+ inspect: { mode: input.mode, maxDistance: input.maxDistance },
63
+ });
64
+ const match = target?.match ?? null;
65
+ const frame = buildQueuedInspectFrame({
66
+ match,
67
+ source: input.source,
68
+ epoch: model?.runId ?? 0,
69
+ fallbackCandidate: () => (model === null ? null : hitTestFallback(model, input)),
70
+ });
71
+ const reducer = deps.reducer();
72
+ queuedPointerInspection = frame.queued;
73
+ queuedPointerToken = reducer.frameToken();
74
+ try {
75
+ reducer.queuePointer({
76
+ type: "inspect",
77
+ candidate: frame.candidate,
78
+ source: input.source,
79
+ });
80
+ }
81
+ catch (error) {
82
+ // No orphan payload if scheduling throws.
83
+ queuedPointerInspection = null;
84
+ queuedPointerToken = null;
85
+ throw error;
86
+ }
87
+ }
88
+ function cancel(policy) {
89
+ queuedPointerInspection = null;
90
+ if (policy.pendingPinned === "discard")
91
+ pendingPinnedPointer = null;
92
+ deps.reducer().cancelScheduledPointer("inspect");
93
+ }
94
+ /**
95
+ * Inspect branch of onPointerFrame.
96
+ *
97
+ * Snapshot then clear before pure routing — re-entrant setInspection cancel
98
+ * must observe empty queue fields.
99
+ *
100
+ * Boolean return is retained for symmetry with move-area's onPointerFrame
101
+ * contract. For `type === "inspect"` the reducer never dispatches the frame
102
+ * payload (inspection is single-authority in InspectionState); callers that
103
+ * gate on false still get the pure-table "drop" signal for stale tokens.
104
+ */
105
+ function onFrame(action) {
106
+ const pending = queuedPointerInspection;
107
+ const token = queuedPointerToken;
108
+ queuedPointerInspection = null;
109
+ queuedPointerToken = null;
110
+ // Short-circuit tokenAccepted when no pending so accepts() is not
111
+ // called for empty frames.
112
+ const frameAction = resolveQueuedInspectFrameAction({
113
+ hasPending: pending !== null,
114
+ tokenAccepted: pending === null || token === null || deps.reducer().accepts(token),
115
+ currentState: deps.inspectionState(),
116
+ candidateEpochMismatch: action.candidate !== null && action.candidate.epoch !== deps.model()?.runId,
117
+ });
118
+ switch (frameAction.type) {
119
+ case "none":
120
+ // Empty frame (payload already cleared; scheduled inspect still flushed).
121
+ return true;
122
+ case "drop":
123
+ // Stale token / epoch mismatch — pure-table drop signal.
124
+ return false;
125
+ case "stash-pending":
126
+ if (pending !== null)
127
+ pendingPinnedPointer = pending;
128
+ return true;
129
+ case "apply-pending":
130
+ if (pending !== null) {
131
+ deps.setInspection(pending.candidate, pending.source, "transient", pending.concreteMode);
132
+ }
133
+ return true;
134
+ }
135
+ return true;
136
+ }
137
+ function peekPendingPinned() {
138
+ return pendingPinnedPointer;
139
+ }
140
+ function takePendingPinned() {
141
+ const pending = pendingPinnedPointer;
142
+ pendingPinnedPointer = null;
143
+ return pending;
144
+ }
145
+ function clearForSceneInvalidate() {
146
+ queuedPointerInspection = null;
147
+ pendingPinnedPointer = null;
148
+ queuedPointerToken = null;
149
+ }
150
+ return {
151
+ schedule,
152
+ cancel,
153
+ onFrame,
154
+ peekPendingPinned,
155
+ takePendingPinned,
156
+ clearForSceneInvalidate,
157
+ };
158
+ }
@@ -0,0 +1,3 @@
1
+ export { type ResolveInspectionInput, type InspectionSnapshotCompleteness, TRANSIENT_MEMBER_LIMIT, selectTransientMembers, resolvedTarget, resolveInspection, materializeInspection, } from "@ggts-sh/core/interaction";
2
+ export { clearInspectionFingerprint } from "./coordinator.js";
3
+ export { createInspectionCoordinator } from "./coordinator.js";
@@ -0,0 +1,4 @@
1
+ // Shared pure behavior used by React and Svelte.
2
+ export { TRANSIENT_MEMBER_LIMIT, selectTransientMembers, resolvedTarget, resolveInspection, materializeInspection, } from "@ggts-sh/core/interaction";
3
+ export { clearInspectionFingerprint } from "./coordinator.js";
4
+ export { createInspectionCoordinator } from "./coordinator.js";
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Decision tables and scene-reconcile apply for capture-surface inspection
3
+ * *teardown* policy: blur/outside dismiss, scene-run reconcile (plan + bag
4
+ * apply), emit fingerprint, escape/close plan.
5
+ *
6
+ * Plan helpers are pure. `applySceneInspectReconcile` only calls the host bag
7
+ * (reducer, coordinator, queue, field writes) — no $effect registration.
8
+ */
9
+ import type { CandidateFacts, CellValue, RenderModel } from "@ggts-sh/core";
10
+ import type { InteractionSource, PlotInspectionChange } from "../interaction/interaction.js";
11
+ import type { InspectionHostState } from "./frame.js";
12
+ type InspectionChangeSnapshot = PlotInspectionChange<Record<string, CellValue>, PropertyKey>;
13
+ export type SurfaceBlurAction = {
14
+ readonly type: "ignore";
15
+ } | {
16
+ readonly type: "blur-keep-pinned";
17
+ } | {
18
+ readonly type: "blur-clear-inspection";
19
+ };
20
+ /**
21
+ * Pure decision for capture-surface `blur`.
22
+ *
23
+ * Host on non-ignore (ordering is load-bearing):
24
+ * 1. activeTraversalIndex = -1
25
+ * 2. reducer.dispatch set-active null
26
+ * 3. only blur-clear-inspection → setInspection(null, "keyboard")
27
+ *
28
+ * Host must pass `relatedTargetInsideRoot: root?.contains(related) === true`.
29
+ * `"none"` and `"transient"` both clear inspection; `"pinned"` keeps it.
30
+ */
31
+ export declare function resolveSurfaceBlurAction(input: {
32
+ readonly relatedTargetInsideRoot: boolean;
33
+ /** Host: `inspection === null ? "none" : inspection.state`. */
34
+ readonly inspectionState: InspectionHostState;
35
+ }): SurfaceBlurAction;
36
+ /**
37
+ * Whether a window pointerdown outside the plot should close a pinned
38
+ * inspection. Host: only when `surfaceInteractive` effect is installed.
39
+ * Host must pass `targetInsideRoot: root?.contains(target) === true`.
40
+ *
41
+ * Takes domain `inspectionState` (not a pre-derived `isPinned` boolean) so
42
+ * hosts pass `inspection?.state` directly — same shape as `isTooltipDocked`.
43
+ */
44
+ export declare function shouldClosePinnedOnOutsidePointer(input: {
45
+ readonly inspectionState: "transient" | "pinned" | "none" | null | undefined;
46
+ readonly targetInsideRoot: boolean;
47
+ }): boolean;
48
+ export type SceneInspectReconcilePlan = {
49
+ readonly type: "noop";
50
+ } | {
51
+ readonly type: "clear-disabled";
52
+ } | {
53
+ readonly type: "skip";
54
+ } | {
55
+ readonly type: "invalidate-clear-transient";
56
+ } | {
57
+ readonly type: "invalidate-idle";
58
+ } | {
59
+ readonly type: "invalidate-reconcile-pinned";
60
+ };
61
+ /**
62
+ * Priority table for the model-run inspection reconcile effect.
63
+ *
64
+ * 1. inspect off → clear-disabled when live inspection exists, else noop
65
+ * 2. no model / same runId as reconciledRun → skip
66
+ * 3. run advanced + transient → invalidate-clear-transient
67
+ * 4. run advanced + pinned → invalidate-reconcile-pinned
68
+ * 5. run advanced + none → invalidate-idle
69
+ *
70
+ * Host on every invalidate-*: clear queues, cancel scheduled pointer, set
71
+ * reconciledRun to the new model runId, then branch-specific side effects.
72
+ *
73
+ * `getInspectionState` is a thunk so the host `$effect` can avoid reading
74
+ * hover `inspection` state on the skip path (same runId) — otherwise every
75
+ * transient pointer update would re-run this effect only to hit skip.
76
+ */
77
+ export declare function planSceneInspectReconcile(input: {
78
+ readonly inspectionEnabled: boolean;
79
+ /** Host: `() => (inspection === null ? "none" : inspection.state)`. */
80
+ readonly getInspectionState: () => InspectionHostState;
81
+ readonly modelRunId: number | null;
82
+ readonly reconciledRun: number;
83
+ }): SceneInspectReconcilePlan;
84
+ /**
85
+ * Host mutators for `applySceneInspectReconcile`. The `$effect` shell owns
86
+ * plan + bag wiring; this bag owns field writes and coordinator/queue/reducer.
87
+ */
88
+ export type SceneInspectReconcileBag = {
89
+ /**
90
+ * Current model when the effect ran. Required non-null for invalidate-*
91
+ * plans (plan guarantees run advanced). clear-disabled / noop / skip may
92
+ * pass null.
93
+ */
94
+ readonly model: RenderModel | null;
95
+ readonly dataIdentityEpoch: () => PropertyKey;
96
+ /** Clear live inspection + seed (transient clear, disabled clear, failed pin). */
97
+ clearInspection(): void;
98
+ /** Commit a successful pinned reconcile (snapshot + seed). */
99
+ setInspectionFromReconcile(input: {
100
+ readonly snapshot: InspectionChangeSnapshot;
101
+ readonly seed: CandidateFacts;
102
+ }): void;
103
+ setActiveCandidateId(id: number | null): void;
104
+ clearDismissedLatch(): void;
105
+ setReconciledRun(runId: number): void;
106
+ /** Reducer `{ type: "invalidate", reason: "scene" }` (cancels all scheduled pointer). */
107
+ dispatchSceneInvalidate(): void;
108
+ /** clear-disabled: discard pending pin stash; inspect-only cancel. */
109
+ cancelPointerDiscardPending(): void;
110
+ /** invalidate-*: clear queue fields only (after dispatchSceneInvalidate). */
111
+ clearPointerForSceneInvalidate(): void;
112
+ coordinatorInvalidate(): void;
113
+ releaseTransient(): void;
114
+ reconcilePinned(input: {
115
+ readonly model: RenderModel;
116
+ readonly identityEpoch: PropertyKey;
117
+ readonly layoutEpoch: PropertyKey;
118
+ }): {
119
+ readonly snapshot: InspectionChangeSnapshot;
120
+ readonly seed: CandidateFacts;
121
+ readonly semanticChanged: boolean;
122
+ readonly semanticFingerprint: string;
123
+ } | null;
124
+ emitClearProgrammatic(): void;
125
+ emitSemanticChange(snapshot: InspectionChangeSnapshot, semanticFingerprint: string): void;
126
+ };
127
+ /**
128
+ * Apply a scene-run inspection reconcile plan via host mutators.
129
+ *
130
+ * Keeps the factory `$effect` as plan → apply. Ordering is load-bearing:
131
+ * invalidate-* dispatches reducer invalidate before queue field clears; pinned
132
+ * reconcile failure emits programmatic clear then clears fields.
133
+ */
134
+ export declare function applySceneInspectReconcile(plan: SceneInspectReconcilePlan, bag: SceneInspectReconcileBag): void;
135
+ export type InspectionEmitAction = {
136
+ readonly type: "skip";
137
+ } | {
138
+ readonly type: "emit";
139
+ /**
140
+ * When non-null, host assigns `lastInspectionFingerprint = updateFingerprint`
141
+ * before callbacks. When null, host must not mutate the last fingerprint
142
+ * (undefined semantic path on change — always emit without update).
143
+ */
144
+ readonly updateFingerprint: string | null;
145
+ };
146
+ /**
147
+ * Pure gate for host `emitInspection`: resolve fingerprint then skip/emit.
148
+ *
149
+ * Fingerprint production:
150
+ * clear → `clearInspectionFingerprint(source)` (`clear:${source}`)
151
+ * change → `semanticFingerprint` (coordinator token; may be undefined)
152
+ *
153
+ * `semanticFingerprint` is meaningful only when `phase === "change"`.
154
+ *
155
+ * Emit rules after fingerprint is resolved:
156
+ * undefined fingerprint → emit, do not update last
157
+ * fingerprint === last → skip (includes equal empty string; host inits last to "")
158
+ * otherwise → emit and update last to fingerprint
159
+ */
160
+ export declare function resolveInspectionEmitAction(input: {
161
+ readonly phase: "clear" | "change";
162
+ readonly source: InteractionSource;
163
+ /** Coordinator semantic fingerprint; ignored when phase is clear. */
164
+ readonly semanticFingerprint: string | undefined;
165
+ readonly lastFingerprint: string;
166
+ }): InspectionEmitAction;
167
+ export type InspectionDismissKind = "escape" | "close";
168
+ /**
169
+ * Host side-effect plan for dismissing inspection.
170
+ * Used by a single host `dismissInspection` that Escape and closeInspection share.
171
+ *
172
+ * Escape (keyboard): invalidate coordinator, clear brush, optional returnToInspect;
173
+ * discards pending pin stash so a later re-pin cannot restore a pre-Escape
174
+ * candidate (#856). Close: release pinned, clear pending, optional restore
175
+ * focus to capture surface.
176
+ */
177
+ export type InspectionDismissPlan = {
178
+ readonly emitClear: boolean;
179
+ readonly clearPendingPinned: boolean;
180
+ readonly coordinator: "invalidate" | "release-pinned";
181
+ readonly clearBrush: boolean;
182
+ readonly clearTooltipHovered: boolean;
183
+ readonly restoreFocus: boolean;
184
+ readonly returnToInspect: boolean;
185
+ };
186
+ /**
187
+ * Pure plan for unified inspection dismiss.
188
+ * Host always dispatches reducer `{ type: "escape", source }` first, then applies
189
+ * this plan for field clears / coordinator / focus / tool.
190
+ */
191
+ export declare function planInspectionDismiss(input: {
192
+ readonly kind: InspectionDismissKind;
193
+ readonly hasInspection: boolean;
194
+ /** Close only; defaults to true when omitted (matches closeInspection default). */
195
+ readonly restoreFocus?: boolean;
196
+ /** Escape only; from `resolveSurfaceKeyAction` escape.returnToInspect. */
197
+ readonly returnToInspect?: boolean;
198
+ }): InspectionDismissPlan;
199
+ export {};
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Decision tables and scene-reconcile apply for capture-surface inspection
3
+ * *teardown* policy: blur/outside dismiss, scene-run reconcile (plan + bag
4
+ * apply), emit fingerprint, escape/close plan.
5
+ *
6
+ * Plan helpers are pure. `applySceneInspectReconcile` only calls the host bag
7
+ * (reducer, coordinator, queue, field writes) — no $effect registration.
8
+ */
9
+ import { clearInspectionFingerprint } from "./coordinator.js";
10
+ /**
11
+ * Pure decision for capture-surface `blur`.
12
+ *
13
+ * Host on non-ignore (ordering is load-bearing):
14
+ * 1. activeTraversalIndex = -1
15
+ * 2. reducer.dispatch set-active null
16
+ * 3. only blur-clear-inspection → setInspection(null, "keyboard")
17
+ *
18
+ * Host must pass `relatedTargetInsideRoot: root?.contains(related) === true`.
19
+ * `"none"` and `"transient"` both clear inspection; `"pinned"` keeps it.
20
+ */
21
+ export function resolveSurfaceBlurAction(input) {
22
+ if (input.relatedTargetInsideRoot)
23
+ return { type: "ignore" };
24
+ if (input.inspectionState === "pinned")
25
+ return { type: "blur-keep-pinned" };
26
+ return { type: "blur-clear-inspection" };
27
+ }
28
+ /**
29
+ * Whether a window pointerdown outside the plot should close a pinned
30
+ * inspection. Host: only when `surfaceInteractive` effect is installed.
31
+ * Host must pass `targetInsideRoot: root?.contains(target) === true`.
32
+ *
33
+ * Takes domain `inspectionState` (not a pre-derived `isPinned` boolean) so
34
+ * hosts pass `inspection?.state` directly — same shape as `isTooltipDocked`.
35
+ */
36
+ export function shouldClosePinnedOnOutsidePointer(input) {
37
+ return input.inspectionState === "pinned" && !input.targetInsideRoot;
38
+ }
39
+ /**
40
+ * Priority table for the model-run inspection reconcile effect.
41
+ *
42
+ * 1. inspect off → clear-disabled when live inspection exists, else noop
43
+ * 2. no model / same runId as reconciledRun → skip
44
+ * 3. run advanced + transient → invalidate-clear-transient
45
+ * 4. run advanced + pinned → invalidate-reconcile-pinned
46
+ * 5. run advanced + none → invalidate-idle
47
+ *
48
+ * Host on every invalidate-*: clear queues, cancel scheduled pointer, set
49
+ * reconciledRun to the new model runId, then branch-specific side effects.
50
+ *
51
+ * `getInspectionState` is a thunk so the host `$effect` can avoid reading
52
+ * hover `inspection` state on the skip path (same runId) — otherwise every
53
+ * transient pointer update would re-run this effect only to hit skip.
54
+ */
55
+ export function planSceneInspectReconcile(input) {
56
+ if (!input.inspectionEnabled) {
57
+ return input.getInspectionState() === "none" ? { type: "noop" } : { type: "clear-disabled" };
58
+ }
59
+ if (input.modelRunId === null || input.modelRunId === input.reconciledRun) {
60
+ return { type: "skip" };
61
+ }
62
+ const inspectionState = input.getInspectionState();
63
+ if (inspectionState === "transient") {
64
+ return { type: "invalidate-clear-transient" };
65
+ }
66
+ if (inspectionState === "pinned") {
67
+ return { type: "invalidate-reconcile-pinned" };
68
+ }
69
+ return { type: "invalidate-idle" };
70
+ }
71
+ /**
72
+ * Apply a scene-run inspection reconcile plan via host mutators.
73
+ *
74
+ * Keeps the factory `$effect` as plan → apply. Ordering is load-bearing:
75
+ * invalidate-* dispatches reducer invalidate before queue field clears; pinned
76
+ * reconcile failure emits programmatic clear then clears fields.
77
+ */
78
+ export function applySceneInspectReconcile(plan, bag) {
79
+ switch (plan.type) {
80
+ case "noop":
81
+ case "skip":
82
+ return;
83
+ case "clear-disabled":
84
+ bag.coordinatorInvalidate();
85
+ bag.clearInspection();
86
+ bag.clearDismissedLatch();
87
+ // Inspect-only cancel: move-area schedules must survive.
88
+ bag.cancelPointerDiscardPending();
89
+ return;
90
+ case "invalidate-clear-transient":
91
+ case "invalidate-idle":
92
+ case "invalidate-reconcile-pinned": {
93
+ // Plan requires run advance → model is non-null for invalidate-*.
94
+ const model = bag.model;
95
+ if (model === null)
96
+ return;
97
+ const runId = model.runId;
98
+ // invalidate dispatch already cancels all scheduled pointer work.
99
+ bag.dispatchSceneInvalidate();
100
+ bag.clearPointerForSceneInvalidate();
101
+ bag.clearDismissedLatch();
102
+ bag.setReconciledRun(runId);
103
+ if (plan.type === "invalidate-clear-transient") {
104
+ bag.releaseTransient();
105
+ bag.clearInspection();
106
+ return;
107
+ }
108
+ if (plan.type === "invalidate-idle")
109
+ return;
110
+ const reconciled = bag.reconcilePinned({
111
+ model,
112
+ identityEpoch: bag.dataIdentityEpoch(),
113
+ layoutEpoch: runId,
114
+ });
115
+ if (reconciled === null) {
116
+ // Failed pinned reconcile: clear inspection only (not area Escape).
117
+ bag.emitClearProgrammatic();
118
+ bag.clearInspection();
119
+ }
120
+ else {
121
+ bag.setInspectionFromReconcile({
122
+ snapshot: reconciled.snapshot,
123
+ seed: reconciled.seed,
124
+ });
125
+ bag.setActiveCandidateId(reconciled.seed.id);
126
+ if (reconciled.semanticChanged) {
127
+ bag.emitSemanticChange(reconciled.snapshot, reconciled.semanticFingerprint);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ /**
134
+ * Pure gate for host `emitInspection`: resolve fingerprint then skip/emit.
135
+ *
136
+ * Fingerprint production:
137
+ * clear → `clearInspectionFingerprint(source)` (`clear:${source}`)
138
+ * change → `semanticFingerprint` (coordinator token; may be undefined)
139
+ *
140
+ * `semanticFingerprint` is meaningful only when `phase === "change"`.
141
+ *
142
+ * Emit rules after fingerprint is resolved:
143
+ * undefined fingerprint → emit, do not update last
144
+ * fingerprint === last → skip (includes equal empty string; host inits last to "")
145
+ * otherwise → emit and update last to fingerprint
146
+ */
147
+ export function resolveInspectionEmitAction(input) {
148
+ const fingerprint = input.phase === "clear" ? clearInspectionFingerprint(input.source) : input.semanticFingerprint;
149
+ if (fingerprint === undefined)
150
+ return { type: "emit", updateFingerprint: null };
151
+ if (fingerprint === input.lastFingerprint)
152
+ return { type: "skip" };
153
+ return { type: "emit", updateFingerprint: fingerprint };
154
+ }
155
+ /**
156
+ * Pure plan for unified inspection dismiss.
157
+ * Host always dispatches reducer `{ type: "escape", source }` first, then applies
158
+ * this plan for field clears / coordinator / focus / tool.
159
+ */
160
+ export function planInspectionDismiss(input) {
161
+ if (input.kind === "escape") {
162
+ return {
163
+ emitClear: input.hasInspection,
164
+ clearPendingPinned: true,
165
+ coordinator: "invalidate",
166
+ clearBrush: true,
167
+ clearTooltipHovered: true,
168
+ restoreFocus: false,
169
+ returnToInspect: input.returnToInspect === true,
170
+ };
171
+ }
172
+ return {
173
+ emitClear: input.hasInspection,
174
+ clearPendingPinned: true,
175
+ coordinator: "release-pinned",
176
+ clearBrush: false,
177
+ clearTooltipHovered: true,
178
+ restoreFocus: input.restoreFocus !== false,
179
+ returnToInspect: false,
180
+ };
181
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Tooltip chrome policy for theme-aware default content (#1069).
3
+ *
4
+ * Visual roles (paper / ink / border) live on the theme. This helper decides
5
+ * whether the default instructional footer ("Click to pin", overflow pin hint)
6
+ * belongs with that chrome — flat (gridless) themes drop to text on paper and
7
+ * stay silent; pinned-disabled inspect configs never advertise pinning.
8
+ */
9
+ export type TooltipPinHintInput = {
10
+ /** Whether inspect pinning is enabled on the plot. */
11
+ readonly pin: boolean;
12
+ /**
13
+ * Resolved theme tooltip keyline. Gridless themes derive `"transparent"`;
14
+ * a concrete color means the theme still wants a boxed panel.
15
+ */
16
+ readonly tooltipBorder: string;
17
+ };
18
+ /** True when the default tooltip should show pin-related instructional footers. */
19
+ export declare function shouldShowTooltipPinHint(input: TooltipPinHintInput): boolean;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Tooltip chrome policy for theme-aware default content (#1069).
3
+ *
4
+ * Visual roles (paper / ink / border) live on the theme. This helper decides
5
+ * whether the default instructional footer ("Click to pin", overflow pin hint)
6
+ * belongs with that chrome — flat (gridless) themes drop to text on paper and
7
+ * stay silent; pinned-disabled inspect configs never advertise pinning.
8
+ */
9
+ /** True when the default tooltip should show pin-related instructional footers. */
10
+ export function shouldShowTooltipPinHint(input) {
11
+ if (!input.pin)
12
+ return false;
13
+ const border = input.tooltipBorder.trim().toLowerCase();
14
+ if (border === "transparent" || border === "none")
15
+ return false;
16
+ return true;
17
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tooltip first-appear / last-leave motion policy.
3
+ *
4
+ * Hover follow and miss-between-marks stay instant. Short opacity is the
5
+ * only allowed chart-chrome motion (DESIGN.md). Scale is not used.
6
+ */
7
+ export declare const TOOLTIP_MOTION_MS = 160;
8
+ export declare const TOOLTIP_EASE = "cubic-bezier(0.23, 1, 0.32, 1)";
9
+ export type TooltipMotionReason = "hit" | "miss-on-plot" | "leave-plot" | "close";
10
+ export type TooltipMotionPhase = "enter" | "none" | "exit";
11
+ export declare function prefersReducedMotion(media: {
12
+ readonly matches: boolean;
13
+ } | null | undefined): boolean;
14
+ export declare function resolveTooltipDismissReason(input: {
15
+ readonly explicitClose: boolean;
16
+ readonly pointerOnCapture: boolean;
17
+ }): "miss-on-plot" | "leave-plot" | "close";
18
+ export declare function resolveTooltipMotion(input: {
19
+ readonly reason: TooltipMotionReason;
20
+ readonly sessionActive: boolean;
21
+ readonly reducedMotion: boolean;
22
+ }): {
23
+ readonly phase: TooltipMotionPhase;
24
+ readonly sessionActive: boolean;
25
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Tooltip first-appear / last-leave motion policy.
3
+ *
4
+ * Hover follow and miss-between-marks stay instant. Short opacity is the
5
+ * only allowed chart-chrome motion (DESIGN.md). Scale is not used.
6
+ */
7
+ export const TOOLTIP_MOTION_MS = 160;
8
+ export const TOOLTIP_EASE = "cubic-bezier(0.23, 1, 0.32, 1)";
9
+ export function prefersReducedMotion(media) {
10
+ return media?.matches === true;
11
+ }
12
+ export function resolveTooltipDismissReason(input) {
13
+ if (input.explicitClose)
14
+ return "close";
15
+ if (input.pointerOnCapture)
16
+ return "miss-on-plot";
17
+ return "leave-plot";
18
+ }
19
+ export function resolveTooltipMotion(input) {
20
+ if (input.reason === "hit") {
21
+ if (input.reducedMotion || input.sessionActive)
22
+ return { phase: "none", sessionActive: true };
23
+ return { phase: "enter", sessionActive: true };
24
+ }
25
+ if (input.reason === "miss-on-plot") {
26
+ return { phase: "none", sessionActive: input.sessionActive };
27
+ }
28
+ // leave-plot | close
29
+ if (input.sessionActive && !input.reducedMotion)
30
+ return { phase: "exit", sessionActive: false };
31
+ return { phase: "none", sessionActive: false };
32
+ }