@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,173 @@
1
+ /**
2
+ * Agent-facing interaction diagnostic catalog — frozen codes, messages, and
3
+ * doc URLs for capability normalization and runtime key/lineage checks.
4
+ *
5
+ * Extracted from interaction.ts so pure catalog data is not mixed with event
6
+ * types and normalizeInteractionConfig.
7
+ *
8
+ * Inspect×geom advisories (bar/col x-guide + high-cardinality) are owned by
9
+ * @ggts-sh/core so the CLI --inspect path reuses the same messages (#1531).
10
+ */
11
+ import { INSPECT_GEOM_DIAGNOSTIC_CATALOG } from "@ggts-sh/core";
12
+ export const INTERACTION_DIAGNOSTIC_CATALOG = Object.freeze({
13
+ INTERACTION_INTERVAL_FACET_UNSUPPORTED: {
14
+ severity: "warning",
15
+ code: "INTERACTION_INTERVAL_FACET_UNSUPPORTED",
16
+ message: "Brush zoom currently requires one unfaceted panel.",
17
+ prop: "zoom",
18
+ suggestions: [
19
+ "Remove the facet",
20
+ "Use faceted interval selection",
21
+ "Zoom a linked detail view",
22
+ ],
23
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-interval-facet-unsupported",
24
+ },
25
+ INTERACTION_INVALID_MAX_DISTANCE: {
26
+ severity: "error",
27
+ code: "INTERACTION_INVALID_MAX_DISTANCE",
28
+ message: "inspect.maxDistance must be a finite non-negative CSS-pixel distance.",
29
+ prop: "inspect.maxDistance",
30
+ suggestions: ["Use a finite number greater than or equal to zero"],
31
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-invalid-max-distance",
32
+ },
33
+ INTERACTION_POINT_REQUIRES_KEY: {
34
+ severity: "warning",
35
+ code: "INTERACTION_POINT_REQUIRES_KEY",
36
+ message: "Durable point selection requires resolved row identity.",
37
+ prop: "identity",
38
+ suggestions: [
39
+ "Ordinary charts omit identity — defaults to an id column or row index",
40
+ 'Override with <Inspect identity="id" /> or select={{ type: "point", identity: "id" }}',
41
+ ],
42
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-point-requires-key",
43
+ },
44
+ INTERACTION_INTERVAL_PRESET_REQUIRES_KEY: {
45
+ severity: "warning",
46
+ code: "INTERACTION_INTERVAL_PRESET_REQUIRES_KEY",
47
+ message: "Coordinated interval presets (union, cross-panel) require resolved row identity; without it they combine no rows.",
48
+ prop: "identity",
49
+ suggestions: [
50
+ "Ordinary charts omit identity — defaults to an id column or row index",
51
+ 'Override with select={{ type: "interval", identity: "id", … }} or <Inspect identity="id" />',
52
+ ],
53
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-interval-preset-requires-key",
54
+ },
55
+ INTERACTION_INVALID_KEY: {
56
+ severity: "error",
57
+ code: "INTERACTION_INVALID_KEY",
58
+ message: "A key accessor returned null, undefined, or a non-PropertyKey value.",
59
+ prop: "identity",
60
+ suggestions: ["Return a stable string, number, or symbol for every row"],
61
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-invalid-key",
62
+ },
63
+ INTERACTION_DUPLICATE_KEY: {
64
+ severity: "error",
65
+ code: "INTERACTION_DUPLICATE_KEY",
66
+ message: "The key accessor returned a duplicate value; durable interaction is disabled for that value.",
67
+ prop: "identity",
68
+ suggestions: ["Use a field that uniquely identifies each source row"],
69
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-duplicate-key",
70
+ },
71
+ INTERACTION_UNSTABLE_KEY: {
72
+ severity: "error",
73
+ code: "INTERACTION_UNSTABLE_KEY",
74
+ message: "The key accessor returned a different value for the same source row.",
75
+ prop: "identity",
76
+ suggestions: ["Return an immutable field that uniquely identifies each row"],
77
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-unstable-key",
78
+ },
79
+ INTERACTION_MISSING_LINEAGE: {
80
+ severity: "warning",
81
+ code: "INTERACTION_MISSING_LINEAGE",
82
+ message: "A synthetic or aggregate mark did not expose source-row lineage.",
83
+ prop: "layers",
84
+ suggestions: ["Use a stat that preserves source-row lineage"],
85
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-missing-lineage",
86
+ },
87
+ INTERACTION_LEGEND_REQUIRES_KEY: {
88
+ severity: "warning",
89
+ code: "INTERACTION_LEGEND_REQUIRES_KEY",
90
+ message: "Legend focus requires resolved row identity so encoded legend values never become identities.",
91
+ prop: "identity",
92
+ suggestions: [
93
+ "Ordinary charts omit identity — defaults to an id column or row index",
94
+ 'Override with <Inspect identity="id" /> or createPlotInteraction({ identity: "id" })',
95
+ ],
96
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-legend-requires-key",
97
+ },
98
+ INTERACTION_LEGEND_DISCRETE_ONLY: {
99
+ severity: "advisory",
100
+ code: "INTERACTION_LEGEND_DISCRETE_ONLY",
101
+ message: "Legend focus currently applies to discrete color and fill legends; continuous ramps remain static.",
102
+ prop: "focus",
103
+ suggestions: [
104
+ 'Enable focus on a discrete guide: <GuideLegend channel="color" focus />',
105
+ "Use a discrete color or fill mapping",
106
+ "Keep the continuous ramp static",
107
+ ],
108
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-legend-discrete-only",
109
+ },
110
+ INTERACTION_INTERVAL_SCALE_UNSUPPORTED: {
111
+ severity: "warning",
112
+ code: "INTERACTION_INTERVAL_SCALE_UNSUPPORTED",
113
+ message: "Interval domains and brush zoom require continuous linear, log, or time scales.",
114
+ prop: "scales",
115
+ suggestions: ["Use a continuous positional scale", "Use point inspection for band data"],
116
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-interval-scale-unsupported",
117
+ },
118
+ INTERACTION_TOOL_UNAVAILABLE: {
119
+ severity: "warning",
120
+ code: "INTERACTION_TOOL_UNAVAILABLE",
121
+ message: "The requested interaction tool is unavailable for the enabled capabilities.",
122
+ prop: "tool",
123
+ suggestions: ["Enable the matching capability", "Choose an available interaction tool"],
124
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-tool-unavailable",
125
+ },
126
+ INTERACTION_SCOPE_WITHOUT_CONTROLLER: {
127
+ severity: "advisory",
128
+ code: "INTERACTION_SCOPE_WITHOUT_CONTROLLER",
129
+ message: "interactionScope is ignored without an interaction controller; chart-local scope is derived from key and aes.",
130
+ prop: "interactionScope",
131
+ suggestions: [
132
+ "Pass interaction={createPlotInteraction()} to control this plot",
133
+ "Remove interactionScope from uncontrolled plots",
134
+ ],
135
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-scope-without-controller",
136
+ },
137
+ INTERACTION_HANDLER_WITHOUT_CAPABILITY: {
138
+ severity: "advisory",
139
+ code: "INTERACTION_HANDLER_WITHOUT_CAPABILITY",
140
+ // Emitted with `prop` overridden to the concrete handler name and
141
+ // `actual` naming the capability prop that would enable it.
142
+ message: "An interaction handler is set but its capability prop is not enabled, so the handler never fires.",
143
+ prop: "oninspect / onselect / onzoom / onlegendfocus / onlegendfilter",
144
+ suggestions: [
145
+ "Enable the matching capability prop (for example select for onselect)",
146
+ "Remove the unused handler",
147
+ ],
148
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-handler-without-capability",
149
+ },
150
+ ...INSPECT_GEOM_DIAGNOSTIC_CATALOG,
151
+ INTERACTION_INSPECT_IDENTITY_DROPPED: {
152
+ severity: "advisory",
153
+ code: "INTERACTION_INSPECT_IDENTITY_DROPPED",
154
+ message: "An <Inspect> child replaced the inspect prop whole (REPLACE), so the prop's `identity` no longer applies; rows fall back to an id column or row index.",
155
+ prop: "Inspect",
156
+ suggestions: [
157
+ "Move identity onto the <Inspect> child",
158
+ "Drop identity from the inspect prop if the default row identity is intended",
159
+ ],
160
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-inspect-identity-dropped",
161
+ },
162
+ INTERACTION_DUPLICATE_INSPECT_CAPABILITY: {
163
+ severity: "advisory",
164
+ code: "INTERACTION_DUPLICATE_INSPECT_CAPABILITY",
165
+ message: "Multiple <Inspect> children are registered; only the last one's options apply (REPLACE).",
166
+ prop: "Inspect",
167
+ suggestions: [
168
+ "Keep a single <Inspect> child",
169
+ "Merge options onto one <Inspect> instead of stacking siblings",
170
+ ],
171
+ docUrl: "https://ggts.sh/guide/interaction-reference#interaction-duplicate-inspect-capability",
172
+ },
173
+ });
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Interaction controller assembly — owns construction order and sibling-port
3
+ * wiring for the five interaction controllers (zoom, selection, interval,
4
+ * surface, inspection).
5
+ *
6
+ * Before this module, plot-engine.svelte.ts hand-wired the construction DAG
7
+ * across ~200 lines, with `let surfaceState!` / `let semanticCandidateProjection!`
8
+ * late bindings to break the surface ↔ inspection ↔ interval ↔ selection
9
+ * cycles.
10
+ *
11
+ * Why two phases
12
+ * --------------
13
+ * On SSR the Svelte compiler evaluates `$derived` eagerly at declaration, so
14
+ * construction order must be the exact topological order of every derived
15
+ * read — not just handler-time reads. The full DAG interleaves with host
16
+ * controllers:
17
+ *
18
+ * zoom → legendFilter → runtime → semanticKeys → selection → interval →
19
+ * surface → inspection
20
+ *
21
+ * Phase 1 (`createInteractionAssembly`) constructs zoom, the only controller
22
+ * the legend-filter / runtime chain reads. Phase 2 (`complete`) — called by
23
+ * the host once the runtime and semantic-key service exist — constructs
24
+ * selection → interval → surface → inspection and wires all sibling ports
25
+ * internally:
26
+ *
27
+ * - surface is constructed before inspection so the shared interaction
28
+ * reducer exists as a concrete instance (inspection no longer closes over
29
+ * a later surface binding);
30
+ * - interval / surface receive sibling controllers as handler-only getters
31
+ * over the bundle under construction (event-time reads only — every
32
+ * controller documents its construction-time reads as context-only).
33
+ *
34
+ * Host-derived enablement (availableTools, pointSelectEnabled, surfaceInter-
35
+ * active) and host-owned slices (dataIdentityEpoch, consumptionCandidates,
36
+ * clearAnnouncement) arrive via options; everything shared arrives via the
37
+ * InteractionContext.
38
+ */
39
+ import type { InspectionState, InspectionStateOptions } from "../inspection/inspection-state.svelte.js";
40
+ import type { IntervalState, IntervalStateOptions } from "../interval/interval-state.svelte.js";
41
+ import type { SelectionState } from "../selection/selection-state.svelte.js";
42
+ import type { SurfaceState, SurfaceStateOptions } from "../surface/surface-state.svelte.js";
43
+ import type { PlotZoomState, PlotZoomStateOptions } from "../zoom/zoom-state.svelte.js";
44
+ import type { InteractionContext } from "./interaction-context.svelte.js";
45
+ /** The five interaction controllers, keyed by role. */
46
+ type InteractionStates = {
47
+ readonly zoom: PlotZoomState;
48
+ readonly selection: SelectionState;
49
+ readonly interval: IntervalState;
50
+ readonly surface: SurfaceState;
51
+ readonly inspection: InspectionState;
52
+ };
53
+ /**
54
+ * Host-owned slices the assembly cannot derive from the context. Sibling
55
+ * ports (reducer, emitSelection, commitZoom, inspection/interval/zoom
56
+ * getters) are wired internally — hosts never see them.
57
+ */
58
+ type InteractionStatesOptions = {
59
+ readonly interval: Pick<IntervalStateOptions, "consumptionCandidates">;
60
+ readonly surface: Pick<SurfaceStateOptions, "toolProp" | "initialTool" | "availableTools" | "pointSelectEnabled" | "surfaceInteractive">;
61
+ readonly inspection: Omit<InspectionStateOptions, "reducer">;
62
+ };
63
+ /** Phase-1 result: zoom (consumed by the host's legend-filter / runtime
64
+ * chain) plus the phase-2 completion hook. */
65
+ export type InteractionAssembly = {
66
+ readonly zoom: PlotZoomState;
67
+ /**
68
+ * Phase 2 — call once the runtime and semantic-key service exist (SSR
69
+ * evaluates deriveds eagerly at construction, so model-reading controllers
70
+ * must be constructed after the runtime). Constructs selection → interval
71
+ * → surface → inspection and returns the full bundle.
72
+ */
73
+ complete(options: InteractionStatesOptions): InteractionStates;
74
+ };
75
+ /**
76
+ * Phase 1: construct the zoom controller (model-free at construction) and
77
+ * return the assembly handle. Call `complete` after the host runtime exists.
78
+ * Call once during component init (controllers register $derived/$effect in
79
+ * the calling effect tree).
80
+ */
81
+ export declare function createInteractionAssembly(context: InteractionContext, options: {
82
+ readonly zoom: PlotZoomStateOptions;
83
+ }): InteractionAssembly;
84
+ export {};
@@ -0,0 +1,55 @@
1
+ import { createInspectionState } from "../inspection/inspection-state.svelte.js";
2
+ import { createIntervalState } from "../interval/interval-state.svelte.js";
3
+ import { createSelectionState } from "../selection/selection-state.svelte.js";
4
+ import { createSurfaceState } from "../surface/surface-state.svelte.js";
5
+ import { createPlotZoomState } from "../zoom/zoom-state.svelte.js";
6
+ /**
7
+ * Phase 1: construct the zoom controller (model-free at construction) and
8
+ * return the assembly handle. Call `complete` after the host runtime exists.
9
+ * Call once during component init (controllers register $derived/$effect in
10
+ * the calling effect tree).
11
+ */
12
+ export function createInteractionAssembly(context, options) {
13
+ const zoom = createPlotZoomState(context, options.zoom);
14
+ return {
15
+ zoom,
16
+ complete(phase2) {
17
+ // Sibling ports close over these bindings; assigned in topological
18
+ // order below and read only at handler time, never during construction.
19
+ let interval;
20
+ let inspection;
21
+ const selection = createSelectionState(context);
22
+ interval = createIntervalState(context, {
23
+ consumptionCandidates: phase2.interval.consumptionCandidates,
24
+ effectiveZoomDomains: () => zoom.effectiveZoomDomains,
25
+ commitZoom: (domains, source) => {
26
+ zoom.commitZoom(domains, source);
27
+ },
28
+ inspectionPanel: () => inspection.inspectionPanel,
29
+ emitSelection: (event) => {
30
+ selection.emitSelection(event);
31
+ },
32
+ });
33
+ const surface = createSurfaceState(context, {
34
+ ...phase2.surface,
35
+ inspection: () => inspection,
36
+ interval: () => interval,
37
+ zoom: () => zoom,
38
+ emitSelection: (event) => {
39
+ selection.emitSelection(event);
40
+ },
41
+ togglePointKeys: (keys, source) => {
42
+ selection.togglePointKeys(keys, source);
43
+ },
44
+ });
45
+ inspection = createInspectionState(context, {
46
+ ...phase2.inspection,
47
+ // Concrete reducer — surface is already constructed, so inspection
48
+ // no longer closes over a later surface binding (was `let
49
+ // surfaceState!`).
50
+ reducer: surface.reducer,
51
+ });
52
+ return { zoom, selection, interval, surface, inspection };
53
+ },
54
+ };
55
+ }
@@ -0,0 +1,304 @@
1
+ import type { CellValue, PositionTransformName } from "@ggts-sh/core";
2
+ import type { Snippet } from "svelte";
3
+ import type { LegendFilterEvent } from "../legend/filter.js";
4
+ import type { InteractionDiagnostic } from "./interaction-diagnostics.js";
5
+ export { INTERACTION_DIAGNOSTIC_CATALOG } from "./interaction-diagnostics.js";
6
+ export type { InteractionDiagnostic, InteractionDiagnosticCode, } from "./interaction-diagnostics.js";
7
+ export { discreteColorFillDomainSizes, HIGH_CARDINALITY_DISCRETE_THRESHOLD, inspectAxisOnBarColDiagnostics, inspectAxisOnDistributionDiagnostics, inspectHighCardinalityDiagnostics, layerGeomsFromSpecLayers, } from "./inspect-geom-advisories.js";
8
+ export type InteractionSource = "pointer" | "keyboard" | "touch" | "programmatic";
9
+ export type InspectMode = "auto" | "exact" | "x" | "y" | "xy";
10
+ export type TooltipTotal = "auto" | "off" | "top" | "bottom";
11
+ export type ResolvedInspectMode = Exclude<InspectMode, "auto">;
12
+ export type AreaMode = "x" | "y" | "xy";
13
+ export type InteractionTool = "inspect" | "point" | "select-area" | "zoom-area";
14
+ /** Brush tools that need crosshair cursor and touch-action: none on capture. */
15
+ export type AreaInteractionTool = "select-area" | "zoom-area";
16
+ export declare function isAreaTool(tool: InteractionTool): tool is AreaInteractionTool;
17
+ export interface TooltipField {
18
+ readonly channel: string;
19
+ readonly field: string;
20
+ readonly value: CellValue;
21
+ }
22
+ export interface PlotDatum<Row, Key> {
23
+ readonly key: Key | null;
24
+ readonly row: Row | null;
25
+ readonly sourceKeys: ReadonlyArray<Key>;
26
+ readonly lineageCount: number;
27
+ readonly layerIndex: number;
28
+ readonly panelId: string | null;
29
+ readonly fields: ReadonlyArray<TooltipField>;
30
+ readonly anchor: Readonly<{
31
+ x: number;
32
+ y: number;
33
+ }>;
34
+ }
35
+ export type NonEmptyReadonlyArray<T> = readonly [T, ...T[]];
36
+ interface PlotInspectionBase<Row, Key> {
37
+ readonly type: "inspect";
38
+ readonly phase: "change";
39
+ readonly state: "transient" | "pinned";
40
+ readonly source: InteractionSource;
41
+ readonly panelId: string | null;
42
+ /**
43
+ * Sum of unique series contributions in the composition group (stack/fill),
44
+ * independent of inspect `mode`. `null` when the group is not additive
45
+ * (identity/dodge) or has no finite numeric contribution. Exact/xy keep a
46
+ * single listed member; the total still covers the whole stack.
47
+ */
48
+ readonly groupTotal?: number | null;
49
+ readonly focus: PlotDatum<Row, Key>;
50
+ readonly members: NonEmptyReadonlyArray<PlotDatum<Row, Key>>;
51
+ }
52
+ export type PlotInspectionChange<Row, Key> = (PlotInspectionBase<Row, Key> & {
53
+ readonly mode: "exact" | "xy";
54
+ }) | (PlotInspectionBase<Row, Key> & {
55
+ readonly mode: "x" | "y";
56
+ readonly axisValue: CellValue;
57
+ readonly axisLabel: string;
58
+ /**
59
+ * Sum of numeric contributions on the value axis for unique series in
60
+ * the full axis group (y when mode is x, x when mode is y). Used by
61
+ * the default tooltip Total row; independent of the hover member cap
62
+ * (#1274 / #1389). Only populated when the group includes a stack/fill
63
+ * layer — parallel multi-series (identity/dodge lines and points) leave
64
+ * this `null` so the tooltip does not invent a sum. Multi-layer paints
65
+ * of the same source series (line+point, col+text) contribute once;
66
+ * distinct series on other layers (e.g. a trend over a stack) are
67
+ * included. Also `null` when no member has a finite numeric contribution.
68
+ */
69
+ readonly groupTotal: number | null;
70
+ /**
71
+ * Unique series-contribution count in the full axis group (all layers,
72
+ * deduped). Drives the default tooltip "+N more" line when hover rows
73
+ * were truncated (#1274 / #1389).
74
+ */
75
+ readonly groupMemberCount: number;
76
+ });
77
+ export interface PlotInspectionClear {
78
+ readonly type: "inspect";
79
+ readonly phase: "clear";
80
+ readonly source: InteractionSource;
81
+ }
82
+ export type PlotInspection<Row, Key = PropertyKey> = PlotInspectionChange<Row, Key> | PlotInspectionClear;
83
+ export interface IntervalSelection<Key = PropertyKey> {
84
+ readonly type: "select";
85
+ readonly phase: "start" | "change" | "end" | "clear";
86
+ readonly mode: AreaMode;
87
+ readonly panelId: string | null;
88
+ readonly domain: Readonly<{
89
+ x?: readonly [CellValue, CellValue];
90
+ y?: readonly [CellValue, CellValue];
91
+ }>;
92
+ readonly pixels: Readonly<{
93
+ x0: number;
94
+ y0: number;
95
+ x1: number;
96
+ y1: number;
97
+ }>;
98
+ readonly keys: ReadonlyArray<Key>;
99
+ readonly lineageCount: number;
100
+ readonly source: InteractionSource;
101
+ }
102
+ export interface PointSelection<Key = PropertyKey> {
103
+ readonly type: "select";
104
+ readonly phase: "end" | "clear";
105
+ readonly mode: "point";
106
+ readonly keys: ReadonlyArray<Key>;
107
+ readonly source: InteractionSource;
108
+ }
109
+ export type PlotSelection<Key = PropertyKey> = IntervalSelection<Key> | PointSelection<Key>;
110
+ export interface ZoomEvent {
111
+ readonly type: "zoom";
112
+ readonly phase: "end" | "clear";
113
+ readonly source: InteractionSource;
114
+ readonly domains: ReadonlyZoomDomains | null;
115
+ }
116
+ export interface LegendFocusChange<Key = PropertyKey> {
117
+ readonly type: "legend-focus";
118
+ readonly phase: "change";
119
+ readonly state: "transient" | "committed";
120
+ readonly source: InteractionSource;
121
+ readonly scale: "color" | "fill" | "size" | "linewidth" | "alpha" | "shape" | "linetype";
122
+ /** Raw encoded domain value. This is deliberately distinct from row keys. */
123
+ readonly value: CellValue;
124
+ readonly label: string;
125
+ readonly keys: ReadonlyArray<Key>;
126
+ }
127
+ export interface LegendFocusClear {
128
+ readonly type: "legend-focus";
129
+ readonly phase: "clear";
130
+ readonly source: InteractionSource;
131
+ }
132
+ export type LegendFocusEvent<Key = PropertyKey> = LegendFocusChange<Key> | LegendFocusClear;
133
+ export type PlotInteractionEvent<Row, Key = PropertyKey> = PlotInspection<Row, Key> | PlotSelection<Key> | ZoomEvent | LegendFocusEvent<Key> | LegendFilterEvent;
134
+ export interface InspectOptions<Row = Record<string, CellValue>, Key = PropertyKey> {
135
+ readonly mode?: InspectMode;
136
+ readonly pin?: boolean;
137
+ readonly maxDistance?: number;
138
+ readonly contentMode?: "informational" | "interactive";
139
+ /**
140
+ * When true, inspection mutes non-focused marks (sibling bars/cols) via the
141
+ * interaction mask. Default false — tooltip-only hover avoids full-plot
142
+ * flicker when the pointer crosses gaps between rect marks (#633).
143
+ */
144
+ readonly muteSiblings?: boolean;
145
+ /**
146
+ * Where the default tooltip shows a single group total (stack/fill sum
147
+ * across series at the focused category). Independent of inspect `mode`:
148
+ * stacked bars can keep `mode="exact"` and still show a Total row.
149
+ *
150
+ * - `"auto"` (default): Total at the bottom when the group is additive
151
+ * (stack/fill) and has more than one series. Axis-mode (`x`/`y`)
152
+ * inspections already do this; exact/xy do not unless opted in.
153
+ * - `"off"`: never show Total.
154
+ * - `"top"` / `"bottom"`: force Total when a numeric group total exists.
155
+ */
156
+ readonly tooltipTotal?: TooltipTotal;
157
+ /**
158
+ * Durable row identity for interaction payloads (pin rebind, selection
159
+ * keys, legend focus). Preferred over the deprecated GGPlot `key` prop.
160
+ * Default when omitted: `id` column if present, else row index.
161
+ */
162
+ readonly identity?: Key | ((row: Row, index: number) => Key);
163
+ readonly content?: Snippet<[PlotInspectionChange<Row, Key>]>;
164
+ }
165
+ export interface SelectOptions {
166
+ readonly type: "point" | "interval";
167
+ readonly mode?: AreaMode;
168
+ readonly multiple?: boolean;
169
+ readonly persistent?: boolean;
170
+ /** Facet coordination semantics for durable interval selections. */
171
+ readonly preset?: FacetIntervalPreset;
172
+ /**
173
+ * Durable row identity for selection keys (and shared plot interaction).
174
+ * Preferred over the deprecated GGPlot `key` prop. Not selection semantics —
175
+ * omitted from the resolved select config.
176
+ */
177
+ readonly identity?: PropertyKey | ((row: Record<string, CellValue>, index: number) => PropertyKey);
178
+ }
179
+ export interface ZoomOptions {
180
+ readonly mode?: AreaMode;
181
+ readonly trigger?: "brush";
182
+ }
183
+ export type InspectInput<Row = Record<string, CellValue>, Key = PropertyKey> = boolean | InspectOptions<Row, Key>;
184
+ export type SelectInput = false | "point" | "interval" | SelectOptions;
185
+ export type ZoomInput = boolean | ZoomOptions;
186
+ export interface LegendFocusOptions {
187
+ /** Preview a legend group on pointer hover and DOM focus. */
188
+ readonly preview?: boolean;
189
+ }
190
+ export type LegendFocusInput = boolean | LegendFocusOptions;
191
+ export interface ResolvedInteractionConfig<Row = Record<string, CellValue>, Key = PropertyKey> {
192
+ readonly interactive: boolean;
193
+ readonly inspect: Readonly<Required<Omit<InspectOptions<Row, Key>, "content" | "identity">> & Pick<InspectOptions<Row, Key>, "content">> | null;
194
+ /** Select config without `identity` (identity is resolved separately for row keys). */
195
+ readonly select: Readonly<Required<Omit<SelectOptions, "identity">>> | null;
196
+ readonly zoom: Readonly<Required<ZoomOptions>> | null;
197
+ readonly legendFocus: Readonly<Required<LegendFocusOptions>> | null;
198
+ readonly initialTool: InteractionTool;
199
+ readonly availableTools: ReadonlyArray<InteractionTool>;
200
+ readonly diagnostics: ReadonlyArray<InteractionDiagnostic>;
201
+ }
202
+ export interface InteractionConfigInput<Row = Record<string, CellValue>, Key = PropertyKey> {
203
+ readonly inspect?: InspectInput<Row, Key>;
204
+ readonly select?: SelectInput;
205
+ readonly zoom?: ZoomInput;
206
+ readonly legendFocus?: LegendFocusInput;
207
+ readonly tool?: InteractionTool;
208
+ }
209
+ export { normalizeInteractionConfig } from "./normalize-interaction-config.js";
210
+ export interface ReadonlyZoomDomains {
211
+ readonly x?: readonly [number, number];
212
+ readonly y?: readonly [number, number];
213
+ }
214
+ /** Semantic namespaces used when one controller coordinates unlike views.
215
+ * Key state crosses charts only through `keys`; data-space zoom crosses one
216
+ * positional channel only when that channel's scope also matches. */
217
+ export interface PlotInteractionScope {
218
+ readonly keys: string;
219
+ readonly x?: string;
220
+ readonly y?: string;
221
+ /** Namespace for semantic facet intervals. Defaults to `keys` when omitted. */
222
+ readonly intervals?: string;
223
+ }
224
+ export type PlotInteractionChange = "selection" | "emphasis" | "interval" | "zoom";
225
+ /** How facet interval state is consumed by coordinated panels.
226
+ *
227
+ * - independent: only the matching panel consumes its interval
228
+ * - union: matching rows from every stored panel interval are combined
229
+ * - cross-panel: the sole origin interval is projected into compatible panels
230
+ */
231
+ export type FacetIntervalPreset = "independent" | "union" | "cross-panel";
232
+ export type SemanticIntervalAxis = Readonly<{
233
+ kind: "linear" | "time";
234
+ /** Pre-stat position transform (default identity). Always identity for
235
+ * kind:"time". "log"/"sqrt" semantics live in `transform`, not `kind`. */
236
+ transform?: PositionTransformName;
237
+ /** Ascending data-space values; time values are Unix milliseconds. */
238
+ domain: readonly [number, number];
239
+ }> | Readonly<{
240
+ kind: "band";
241
+ /** Ordered, encoded category identities. Labels are presentation-only. */
242
+ values: ReadonlyArray<string>;
243
+ }>;
244
+ export interface ReadonlyIntervalDomains {
245
+ readonly x?: SemanticIntervalAxis;
246
+ readonly y?: SemanticIntervalAxis;
247
+ }
248
+ export interface PlotInteractionInterval<Key extends PropertyKey> {
249
+ /** Stable structured facet identity, never a panel index. */
250
+ readonly panelId: string;
251
+ readonly preset: FacetIntervalPreset;
252
+ readonly domains: ReadonlyIntervalDomains;
253
+ /** Stable source-row identities selected by this panel interval. */
254
+ readonly keys: ReadonlyArray<Key>;
255
+ }
256
+ export interface ScopedInteractionInterval<Key extends PropertyKey> extends PlotInteractionInterval<Key> {
257
+ readonly scope: string;
258
+ }
259
+ export interface ScopedInteractionKeys<Key extends PropertyKey> {
260
+ readonly scope: string;
261
+ readonly keys: ReadonlyArray<Key>;
262
+ }
263
+ export interface ScopedInteractionDomain {
264
+ readonly scope: string;
265
+ readonly domain: readonly [number, number];
266
+ }
267
+ /** Controller semantic state. It deliberately excludes rows, renderer
268
+ * indices, pixel rectangles, candidate ids, models, and DOM references. */
269
+ export interface PlotInteractionSnapshot<Key extends PropertyKey> {
270
+ readonly revision: number;
271
+ readonly selections: ReadonlyArray<ScopedInteractionKeys<Key>>;
272
+ readonly emphases: ReadonlyArray<ScopedInteractionKeys<Key>>;
273
+ readonly intervals: ReadonlyArray<ScopedInteractionInterval<Key>>;
274
+ readonly zoom: Readonly<{
275
+ x: ReadonlyArray<ScopedInteractionDomain>;
276
+ y: ReadonlyArray<ScopedInteractionDomain>;
277
+ }>;
278
+ }
279
+ export interface PlotInteractionTransition<Key extends PropertyKey> {
280
+ readonly revision: number;
281
+ readonly kind: PlotInteractionChange | "reconcile";
282
+ readonly changes: ReadonlyArray<PlotInteractionChange>;
283
+ readonly source: InteractionSource;
284
+ readonly scope: PlotInteractionScope;
285
+ readonly snapshot: PlotInteractionSnapshot<Key>;
286
+ }
287
+ /**
288
+ * @deprecated since 0.1.0 — use IntervalSelection. Kept as a source migration
289
+ * alias only: https://ggts.sh/guide/upgrading#deprecated-type-aliases
290
+ */
291
+ export type BrushSelection = IntervalSelection;
292
+ /**
293
+ * @deprecated since 0.1.0 — use PlotInspectionChange. Kept as a source
294
+ * migration alias only: https://ggts.sh/guide/upgrading#deprecated-type-aliases
295
+ */
296
+ export type TooltipContext<Row = Record<string, CellValue>, Key = PropertyKey> = PlotInspectionChange<Row, Key>;
297
+ /**
298
+ * @deprecated since 0.1.0 — use ReadonlyZoomDomains. Kept as a source
299
+ * migration alias only: https://ggts.sh/guide/upgrading#deprecated-type-aliases
300
+ */
301
+ export type ZoomDomains = {
302
+ x?: [number, number];
303
+ y?: [number, number];
304
+ };
@@ -0,0 +1,7 @@
1
+ // Diagnostic catalog (codes + frozen messages) lives in interaction-diagnostics.ts.
2
+ export { INTERACTION_DIAGNOSTIC_CATALOG } from "./interaction-diagnostics.js";
3
+ export { discreteColorFillDomainSizes, HIGH_CARDINALITY_DISCRETE_THRESHOLD, inspectAxisOnBarColDiagnostics, inspectAxisOnDistributionDiagnostics, inspectHighCardinalityDiagnostics, layerGeomsFromSpecLayers, } from "./inspect-geom-advisories.js";
4
+ export function isAreaTool(tool) {
5
+ return tool === "select-area" || tool === "zoom-area";
6
+ }
7
+ export { normalizeInteractionConfig } from "./normalize-interaction-config.js";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Normalize public interaction capability inputs into a resolved config with
3
+ * diagnostics. Types live in ./interaction.ts; this module is pure logic only.
4
+ */
5
+ import type { InteractionConfigInput, ResolvedInteractionConfig } from "./interaction.js";
6
+ export declare function normalizeInteractionConfig<Row, Key>(input: InteractionConfigInput<Row, Key>, context?: {
7
+ faceted?: boolean;
8
+ hasKey?: boolean;
9
+ }): ResolvedInteractionConfig<Row, Key>;