@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,68 @@
1
+ /**
2
+ * Resolved target ownership (#1080).
3
+ *
4
+ * One module owns panel-scoped nearest (#787), the per-intent distance policy,
5
+ * and the candidate match that hover / tap / point-select all need. Callers
6
+ * stop each carrying their own `panelAtOrOnly().nearest()` and maxDistance.
7
+ *
8
+ * Does not own hit geometry (core) or the inspect pin lifecycle. Semantic
9
+ * keys stay on the host (`candidateSemanticKeys`). Reducer inspect payloads
10
+ * are built from CandidateMatch / CandidateFacts in inspection/frame.ts.
11
+ */
12
+ import { panelBoundsFrom } from "../scene/geometry.js";
13
+ /**
14
+ * Nearest-candidate radius (plot px) for point-tool click.
15
+ * Deliberate constant — distinct from inspect.maxDistance (default also 24,
16
+ * but hover/tap read config; point-select does not).
17
+ */
18
+ export const POINT_SELECT_NEAREST_MAX_DISTANCE_PX = 24;
19
+ /**
20
+ * Intent → nearest search params.
21
+ *
22
+ * | intent | mode | maxDistance |
23
+ * |--------------|-------------------|--------------------------------------|
24
+ * | hover | inspect.mode | inspect.maxDistance |
25
+ * | tap | inspect.mode | inspect.maxDistance |
26
+ * | point-select | always `"xy"` | `POINT_SELECT_NEAREST_MAX_DISTANCE_PX` |
27
+ *
28
+ * Returns null when hover/tap has no inspect snapshot (nothing to resolve).
29
+ */
30
+ export function targetSearch(intent, inspect) {
31
+ if (intent === "point-select") {
32
+ return {
33
+ mode: "xy",
34
+ maxDistance: POINT_SELECT_NEAREST_MAX_DISTANCE_PX,
35
+ };
36
+ }
37
+ if (inspect === null)
38
+ return null;
39
+ return {
40
+ mode: inspect.mode,
41
+ maxDistance: inspect.maxDistance,
42
+ };
43
+ }
44
+ /**
45
+ * Panel-scoped nearest for one intent. Sole call site of
46
+ * `panelAtOrOnly().nearest()` for hover / tap / point-select.
47
+ */
48
+ export function resolveTarget(input) {
49
+ const search = input.search ?? targetSearch(input.intent, input.inspect);
50
+ if (search === null)
51
+ return null;
52
+ const panel = input.model.viewport.panelAtOrOnly(input.point);
53
+ if (panel === null)
54
+ return null;
55
+ const match = panel.nearest(input.point, search);
56
+ if (match === null)
57
+ return null;
58
+ return {
59
+ epoch: match.epoch,
60
+ candidateId: match.id,
61
+ panelId: match.panelId,
62
+ point: { x: match.x, y: match.y },
63
+ mode: match.mode,
64
+ distance: match.distance,
65
+ match,
66
+ panel: { id: panel.id, ...panelBoundsFrom(panel.bounds) },
67
+ };
68
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Cross-module interaction transition apply (issue #627).
3
+ *
4
+ * Pure decision tables live in inspection/teardown, surface/brush-finish, etc.
5
+ * This module owns only multi-module *side-effect application* after a plan is
6
+ * decided — not a method-forwarding port over sibling controllers.
7
+ */
8
+ import type { InteractionTool } from "./interaction.js";
9
+ import type { InspectionDismissPlan } from "../inspection/teardown.js";
10
+ /** Surface ops required when applying an inspection dismiss plan across modules. */
11
+ export type DismissSurfaceSink = {
12
+ clearBrush(): void;
13
+ chooseTool(next: InteractionTool): void;
14
+ };
15
+ /**
16
+ * Apply the cross-module tail of `planInspectionDismiss`.
17
+ * Local inspection clears stay in InspectionState; brush/tool live on surface.
18
+ */
19
+ export declare function applyInspectionDismissSideEffects(plan: InspectionDismissPlan, surface: DismissSurfaceSink): void;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Apply the cross-module tail of `planInspectionDismiss`.
3
+ * Local inspection clears stay in InspectionState; brush/tool live on surface.
4
+ */
5
+ export function applyInspectionDismissSideEffects(plan, surface) {
6
+ if (plan.clearBrush)
7
+ surface.clearBrush();
8
+ if (plan.returnToInspect)
9
+ surface.chooseTool("inspect");
10
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Ambiguous-wiring advisories (ADR 0013 audit): prop combinations that
3
+ * silently do nothing.
4
+ *
5
+ * Pure collection — assembly reads current prop snapshots into
6
+ * {@link collectWiringDiagnostics} from a `$derived`. Delivery (once per
7
+ * code:prop per plot instance) stays in assembly.
8
+ */
9
+ import { type InteractionDiagnostic } from "./interaction-diagnostics.js";
10
+ /** Handler prop → matching capability prop. */
11
+ declare const HANDLER_CAPABILITY_PAIRS: readonly [readonly ["oninspect", "inspect"], readonly ["onselect", "select"], readonly ["onzoom", "zoom"], readonly ["onlegendfocus", "legendFocus"], readonly ["onlegendfilter", "legendFilter"]];
12
+ type WiringHandlerName = (typeof HANDLER_CAPABILITY_PAIRS)[number][0];
13
+ type WiringCapabilityName = (typeof HANDLER_CAPABILITY_PAIRS)[number][1];
14
+ /**
15
+ * Full handler/capability bags (not Partial): missing keys would silently
16
+ * drop advisories when the pair table grows. Call sites must list every
17
+ * entry from HANDLER_CAPABILITY_PAIRS.
18
+ */
19
+ export type WiringDiagnosticInput = {
20
+ readonly interactionScope: unknown;
21
+ readonly interaction: unknown;
22
+ /** Present handlers only need defined vs undefined; values are not inspected. */
23
+ readonly handlers: Record<WiringHandlerName, unknown>;
24
+ /** Capability "requested" means not undefined and not false. */
25
+ readonly capabilities: Record<WiringCapabilityName, unknown>;
26
+ };
27
+ /**
28
+ * Collect scope-without-controller and handler-without-capability advisories
29
+ * from a plain snapshot. Re-run on every prop recompute so late-bound handlers
30
+ * still advise (assembly's once-per-code:prop Set handles dedup).
31
+ */
32
+ export declare function collectWiringDiagnostics(input: WiringDiagnosticInput): InteractionDiagnostic[];
33
+ export {};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Ambiguous-wiring advisories (ADR 0013 audit): prop combinations that
3
+ * silently do nothing.
4
+ *
5
+ * Pure collection — assembly reads current prop snapshots into
6
+ * {@link collectWiringDiagnostics} from a `$derived`. Delivery (once per
7
+ * code:prop per plot instance) stays in assembly.
8
+ */
9
+ import { INTERACTION_DIAGNOSTIC_CATALOG, } from "./interaction-diagnostics.js";
10
+ /** Handler prop → matching capability prop. */
11
+ const HANDLER_CAPABILITY_PAIRS = [
12
+ ["oninspect", "inspect"],
13
+ ["onselect", "select"],
14
+ ["onzoom", "zoom"],
15
+ ["onlegendfocus", "legendFocus"],
16
+ ["onlegendfilter", "legendFilter"],
17
+ ];
18
+ /**
19
+ * Collect scope-without-controller and handler-without-capability advisories
20
+ * from a plain snapshot. Re-run on every prop recompute so late-bound handlers
21
+ * still advise (assembly's once-per-code:prop Set handles dedup).
22
+ */
23
+ export function collectWiringDiagnostics(input) {
24
+ const list = [];
25
+ if (input.interactionScope !== undefined && input.interaction === undefined) {
26
+ list.push({ ...INTERACTION_DIAGNOSTIC_CATALOG.INTERACTION_SCOPE_WITHOUT_CONTROLLER });
27
+ }
28
+ for (const [handler, capability] of HANDLER_CAPABILITY_PAIRS) {
29
+ const handlerValue = input.handlers[handler];
30
+ if (handlerValue === undefined)
31
+ continue;
32
+ // Capability "requested" (any value but undefined/false) is enough:
33
+ // requested-but-degraded configs already get their own diagnostics
34
+ // (requires-key, faceted zoom, ...) — never advise twice for one
35
+ // mistake.
36
+ const capabilityValue = input.capabilities[capability];
37
+ if (capabilityValue !== undefined && capabilityValue !== false)
38
+ continue;
39
+ list.push({
40
+ ...INTERACTION_DIAGNOSTIC_CATALOG.INTERACTION_HANDLER_WITHOUT_CAPABILITY,
41
+ prop: handler,
42
+ actual: capability,
43
+ });
44
+ }
45
+ return list;
46
+ }
@@ -0,0 +1,332 @@
1
+ <script lang="ts">
2
+ import { onMount, tick } from "svelte";
3
+
4
+ import {
5
+ formatBoundsDraft,
6
+ validateBoundsDraft,
7
+ type BoundsDraftErrors,
8
+ type BoundsEditorInput,
9
+ type BoundsInputSource,
10
+ type PreciseBoundsApplyEvent,
11
+ } from "./bounds-editor.js";
12
+
13
+ const {
14
+ input,
15
+ onapply,
16
+ oncancel = () => {},
17
+ returnFocus = null,
18
+ }: {
19
+ input: BoundsEditorInput;
20
+ onapply: (event: PreciseBoundsApplyEvent) => void;
21
+ oncancel?: () => void;
22
+ returnFocus?: HTMLElement | null;
23
+ } = $props();
24
+
25
+ const uid = $props.id();
26
+ const initial = (() => formatBoundsDraft(input))();
27
+ let lowerDraft = $state(initial.lower);
28
+ let upperDraft = $state(initial.upper);
29
+ let errors = $state<BoundsDraftErrors>({});
30
+ let lowerControl = $state<HTMLInputElement | HTMLSelectElement | null>(null);
31
+ let upperControl = $state<HTMLInputElement | HTMLSelectElement | null>(null);
32
+ let finished = false;
33
+ let pendingInputSource: BoundsInputSource = "keyboard";
34
+
35
+ const axisName = $derived(input.axis === "x" ? "horizontal" : "vertical");
36
+ const actionName = $derived(input.action === "select" ? "selection" : "zoom");
37
+ const fieldsetLabel = $derived(`Edit ${axisName} ${actionName} bounds`);
38
+ const hint = $derived(
39
+ input.scale === "time"
40
+ ? input.temporalKind === "monthDay"
41
+ ? "Enter a month-day as MM-DD (for example 04-01)."
42
+ : "Enter an ISO 8601 date, or a date-time with Z or an explicit offset."
43
+ : input.scale === "band"
44
+ ? "Endpoints include both selected categories."
45
+ : input.transform === "log10"
46
+ ? "Enter positive values in ascending domain order."
47
+ : input.transform === "sqrt"
48
+ ? "Enter zero or positive values in ascending domain order."
49
+ : "Enter values in ascending domain order.",
50
+ );
51
+
52
+ // A parent may switch axes or replace the committed interval while keeping
53
+ // the inline editor mounted. Only prop changes reset drafts; typing itself
54
+ // does not feed back into this effect.
55
+ $effect(() => {
56
+ const draft = formatBoundsDraft(input);
57
+ lowerDraft = draft.lower;
58
+ upperDraft = draft.upper;
59
+ errors = {};
60
+ finished = false;
61
+ });
62
+
63
+ function describedBy(field: "lower" | "upper"): string {
64
+ return `${uid}-hint${errors[field] === undefined ? "" : ` ${uid}-${field}-error`}`;
65
+ }
66
+
67
+ function restoreFocus(): void {
68
+ if (returnFocus === null) return;
69
+ returnFocus.focus();
70
+ }
71
+
72
+ function resetDraft(): void {
73
+ const draft = formatBoundsDraft(input);
74
+ lowerDraft = draft.lower;
75
+ upperDraft = draft.upper;
76
+ errors = {};
77
+ }
78
+
79
+ async function apply(): Promise<void> {
80
+ const inputSource = pendingInputSource;
81
+ pendingInputSource = "keyboard";
82
+ const result = validateBoundsDraft(
83
+ input,
84
+ lowerDraft,
85
+ upperDraft,
86
+ inputSource,
87
+ );
88
+ if (!result.ok) {
89
+ errors = result.errors;
90
+ await tick();
91
+ (errors.lower === undefined ? upperControl : lowerControl)?.focus();
92
+ return;
93
+ }
94
+ errors = {};
95
+ finished = true;
96
+ onapply(result.event);
97
+ restoreFocus();
98
+ }
99
+
100
+ function cancel(): void {
101
+ resetDraft();
102
+ finished = true;
103
+ oncancel();
104
+ restoreFocus();
105
+ }
106
+
107
+ function keydown(event: KeyboardEvent): void {
108
+ if (event.key !== "Escape") return;
109
+ event.preventDefault();
110
+ event.stopPropagation();
111
+ cancel();
112
+ }
113
+
114
+ function escapeKey(node: HTMLElement): { destroy: () => void } {
115
+ node.addEventListener("keydown", keydown);
116
+ return { destroy: () => node.removeEventListener("keydown", keydown) };
117
+ }
118
+
119
+ onMount(() => {
120
+ void tick().then(() => {
121
+ if (!finished) lowerControl?.focus();
122
+ });
123
+ });
124
+ </script>
125
+
126
+ <form
127
+ class="gg-bounds-editor"
128
+ onsubmit={(event) => {
129
+ event.preventDefault();
130
+ void apply();
131
+ }}
132
+ >
133
+ <fieldset aria-label={fieldsetLabel} use:escapeKey>
134
+ <legend>Precise {axisName} bounds</legend>
135
+ <p class="gg-bounds-hint" id={`${uid}-hint`}>{hint}</p>
136
+ <div class="gg-bounds-fields">
137
+ <div class="gg-bounds-field">
138
+ <label for={`${uid}-lower`}>Lower bound</label>
139
+ {#if input.scale === "band"}
140
+ <select
141
+ id={`${uid}-lower`}
142
+ bind:this={lowerControl}
143
+ value={lowerDraft}
144
+ oninput={(event) => {
145
+ lowerDraft = event.currentTarget.value;
146
+ }}
147
+ aria-invalid={errors.lower === undefined ? undefined : "true"}
148
+ aria-describedby={describedBy("lower")}
149
+ >
150
+ {#each input.categories as category, index}
151
+ <option value={String(index)}>{category.label}</option>
152
+ {/each}
153
+ </select>
154
+ {:else}
155
+ <input
156
+ id={`${uid}-lower`}
157
+ bind:this={lowerControl}
158
+ value={lowerDraft}
159
+ oninput={(event) => {
160
+ lowerDraft = event.currentTarget.value;
161
+ }}
162
+ type={input.scale === "time" ? "text" : "number"}
163
+ inputmode={input.scale === "time" ? undefined : "decimal"}
164
+ step={input.scale === "linear" ? (input.step ?? "any") : undefined}
165
+ autocomplete="off"
166
+ aria-invalid={errors.lower === undefined ? undefined : "true"}
167
+ aria-describedby={describedBy("lower")}
168
+ />
169
+ {/if}
170
+ {#if errors.lower !== undefined}
171
+ <p class="gg-bounds-error" id={`${uid}-lower-error`} role="alert">
172
+ {errors.lower}
173
+ </p>
174
+ {/if}
175
+ </div>
176
+ <div class="gg-bounds-field">
177
+ <label for={`${uid}-upper`}>Upper bound</label>
178
+ {#if input.scale === "band"}
179
+ <select
180
+ id={`${uid}-upper`}
181
+ bind:this={upperControl}
182
+ value={upperDraft}
183
+ oninput={(event) => {
184
+ upperDraft = event.currentTarget.value;
185
+ }}
186
+ aria-invalid={errors.upper === undefined ? undefined : "true"}
187
+ aria-describedby={describedBy("upper")}
188
+ >
189
+ {#each input.categories as category, index}
190
+ <option value={String(index)}>{category.label}</option>
191
+ {/each}
192
+ </select>
193
+ {:else}
194
+ <input
195
+ id={`${uid}-upper`}
196
+ bind:this={upperControl}
197
+ value={upperDraft}
198
+ oninput={(event) => {
199
+ upperDraft = event.currentTarget.value;
200
+ }}
201
+ type={input.scale === "time" ? "text" : "number"}
202
+ inputmode={input.scale === "time" ? undefined : "decimal"}
203
+ step={input.scale === "linear" ? (input.step ?? "any") : undefined}
204
+ autocomplete="off"
205
+ aria-invalid={errors.upper === undefined ? undefined : "true"}
206
+ aria-describedby={describedBy("upper")}
207
+ />
208
+ {/if}
209
+ {#if errors.upper !== undefined}
210
+ <p class="gg-bounds-error" id={`${uid}-upper-error`} role="alert">
211
+ {errors.upper}
212
+ </p>
213
+ {/if}
214
+ </div>
215
+ </div>
216
+ <div class="gg-bounds-actions">
217
+ <button
218
+ type="submit"
219
+ onpointerdown={(event) => {
220
+ pendingInputSource =
221
+ event.pointerType === "touch" ? "touch" : "pointer";
222
+ }}
223
+ onpointercancel={() => (pendingInputSource = "keyboard")}>Apply</button
224
+ >
225
+ <button type="button" onclick={cancel}>Cancel</button>
226
+ </div>
227
+ </fieldset>
228
+ </form>
229
+
230
+ <style>
231
+ .gg-bounds-editor {
232
+ color: var(--gg-text, var(--gg-theme-text, currentColor));
233
+ font: inherit;
234
+ }
235
+
236
+ .gg-bounds-editor fieldset {
237
+ min-width: 0;
238
+ margin: 0;
239
+ border: 1px solid
240
+ var(--gg-panelBorder, var(--gg-theme-panelBorder, currentColor));
241
+ padding: 12px;
242
+ }
243
+
244
+ .gg-bounds-editor legend {
245
+ padding: 0 4px;
246
+ font-weight: 600;
247
+ }
248
+
249
+ .gg-bounds-hint,
250
+ .gg-bounds-error {
251
+ margin: 0 0 8px;
252
+ font-size: 0.875rem;
253
+ line-height: 1.4;
254
+ }
255
+
256
+ .gg-bounds-error {
257
+ margin: 4px 0 0;
258
+ color: var(--gg-error, var(--gg-theme-error, #a40000));
259
+ }
260
+
261
+ .gg-bounds-fields {
262
+ display: grid;
263
+ grid-template-columns: repeat(2, minmax(0, 1fr));
264
+ gap: 12px;
265
+ }
266
+
267
+ .gg-bounds-field {
268
+ display: grid;
269
+ align-content: start;
270
+ gap: 4px;
271
+ }
272
+
273
+ .gg-bounds-field label {
274
+ font-weight: 500;
275
+ }
276
+
277
+ .gg-bounds-field input,
278
+ .gg-bounds-field select,
279
+ .gg-bounds-actions button {
280
+ box-sizing: border-box;
281
+ min-width: 44px;
282
+ min-height: 44px;
283
+ border: 1px solid
284
+ var(--gg-panelBorder, var(--gg-theme-panelBorder, currentColor));
285
+ border-radius: 2px;
286
+ padding: 8px 10px;
287
+ background: var(--gg-panelBg, var(--gg-theme-panelBg, Canvas));
288
+ color: inherit;
289
+ font: inherit;
290
+ }
291
+
292
+ .gg-bounds-field input:focus-visible,
293
+ .gg-bounds-field select:focus-visible,
294
+ .gg-bounds-actions button:focus-visible {
295
+ outline: 2px solid var(--gg-focusRing, var(--gg-theme-focusRing, Highlight));
296
+ outline-offset: 2px;
297
+ }
298
+
299
+ .gg-bounds-actions {
300
+ display: flex;
301
+ justify-content: flex-end;
302
+ gap: 8px;
303
+ margin-top: 12px;
304
+ }
305
+
306
+ .gg-bounds-actions button {
307
+ cursor: pointer;
308
+ }
309
+
310
+ @media (max-width: 359px) {
311
+ .gg-bounds-fields {
312
+ grid-template-columns: 1fr;
313
+ }
314
+
315
+ .gg-bounds-actions button {
316
+ flex: 1;
317
+ }
318
+ }
319
+
320
+ @media (forced-colors: active) {
321
+ .gg-bounds-editor fieldset,
322
+ .gg-bounds-field input,
323
+ .gg-bounds-field select,
324
+ .gg-bounds-actions button {
325
+ border-color: CanvasText;
326
+ }
327
+
328
+ .gg-bounds-error {
329
+ color: MarkText;
330
+ }
331
+ }
332
+ </style>
@@ -0,0 +1,10 @@
1
+ import { type BoundsEditorInput, type PreciseBoundsApplyEvent } from "./bounds-editor.js";
2
+ type $$ComponentProps = {
3
+ input: BoundsEditorInput;
4
+ onapply: (event: PreciseBoundsApplyEvent) => void;
5
+ oncancel?: () => void;
6
+ returnFocus?: HTMLElement | null;
7
+ };
8
+ declare const BoundsEditor: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type BoundsEditor = ReturnType<typeof BoundsEditor>;
10
+ export default BoundsEditor;
@@ -0,0 +1 @@
1
+ export { type BoundsInputSource, type BoundsEditorInput, type PreciseBoundsApplyEvent, type BoundsDraftErrors, formatBoundsDraft, validateBoundsDraft, } from "@ggts-sh/core/interaction";
@@ -0,0 +1,2 @@
1
+ // Shared pure behavior used by React and Svelte.
2
+ export { formatBoundsDraft, validateBoundsDraft, } from "@ggts-sh/core/interaction";
@@ -0,0 +1 @@
1
+ export { type IntervalConsumptionCandidate, consumeIntervalKeys, sameIntervalRecord, nextLocalIntervalRecords, recomputePanelIntervalProjection, type PanelIntervalLookupCandidate, recomputePanelIntervalFromLookup, } from "@ggts-sh/core/interaction";
@@ -0,0 +1,2 @@
1
+ // Shared pure behavior used by React and Svelte.
2
+ export { consumeIntervalKeys, sameIntervalRecord, nextLocalIntervalRecords, recomputePanelIntervalProjection, recomputePanelIntervalFromLookup, } from "@ggts-sh/core/interaction";
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Bounds-editor state machine extracted from interval-state for S5.
3
+ *
4
+ * Owns the boundsEditor + boundsReturnFocus rune state, the boundsEditorInput
5
+ * derivation, the reactive cancel effect, and the open/cancel actions. The
6
+ * committed interval state, scoped store, interval-reconcile effect, and
7
+ * applyPreciseBounds stay in interval-state — applyPreciseBounds drives this
8
+ * module through the live `boundsEditor` getter + `cancel()`.
9
+ *
10
+ * Deps are LIVE getters — never snapshots. The factory is constructed
11
+ * synchronously during component init so the cancel effect registers at the
12
+ * derivation's original position (after the interval-reconcile effect).
13
+ */
14
+ import type { RenderModel, ScenePanel } from "@ggts-sh/core";
15
+ import type { PlotInteractionInterval } from "../interaction/interaction.js";
16
+ import type { ContinuousZoomDomains } from "../scene/geometry.js";
17
+ import type { BoundsEditorInput } from "./bounds-editor.js";
18
+ type IntervalBoundsEditorRef = {
19
+ action: "select" | "zoom";
20
+ axis: "x" | "y";
21
+ panelId?: string;
22
+ panelLabel?: string;
23
+ };
24
+ export type IntervalBoundsEditorDeps = {
25
+ /** Trained render model (null pre-model). */
26
+ readonly model: () => RenderModel | null;
27
+ /** Stable recovery target for reactive cancellation. */
28
+ readonly captureSurface: () => HTMLDivElement | null;
29
+ /** Stable announcer sink. */
30
+ readonly announce: (message: string) => void;
31
+ /** Zoom controller read path for the zoom branch (live getter). */
32
+ readonly effectiveZoomDomains: () => ContinuousZoomDomains | null;
33
+ /** Owning controller's current interval record (live getter). */
34
+ readonly currentIntervalRecord: () => PlotInteractionInterval<PropertyKey> | null;
35
+ readonly currentIntervalPanel: () => ScenePanel | undefined;
36
+ /** Handler-only inspection fallback target for the select branch. */
37
+ readonly inspectionPanel: () => Readonly<{
38
+ id: string;
39
+ }> | null;
40
+ /** Panel label resolver owned by the interval controller. */
41
+ readonly intervalPanelLabel: (panel: ScenePanel) => string;
42
+ };
43
+ export type IntervalBoundsEditorState = {
44
+ /** Live getter — applyPreciseBounds reads `panelId` through it. */
45
+ readonly boundsEditor: Readonly<IntervalBoundsEditorRef> | null;
46
+ readonly boundsEditorInput: BoundsEditorInput | null;
47
+ readonly boundsReturnFocus: HTMLElement | null;
48
+ openBoundsEditor(action: "select" | "zoom", axis: "x" | "y", trigger: HTMLElement): void;
49
+ /** Close the editor without focus restoration (Apply paths cancel it). */
50
+ cancel(): void;
51
+ };
52
+ export declare function createIntervalBoundsEditor(deps: IntervalBoundsEditorDeps): IntervalBoundsEditorState;
53
+ export {};