matterviz 0.4.0 → 0.4.1

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 (326) hide show
  1. package/dist/brillouin/BrillouinZone.svelte +68 -145
  2. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -14
  3. package/dist/brillouin/BrillouinZoneExportPane.svelte +43 -96
  4. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  5. package/dist/brillouin/BrillouinZoneInfoPane.svelte +9 -32
  6. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  7. package/dist/brillouin/BrillouinZoneScene.svelte +49 -203
  8. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
  9. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  10. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  11. package/dist/brillouin/compute.d.ts +2 -0
  12. package/dist/brillouin/compute.js +80 -77
  13. package/dist/brillouin/geometry.d.ts +8 -0
  14. package/dist/brillouin/geometry.js +57 -0
  15. package/dist/brillouin/index.d.ts +2 -0
  16. package/dist/brillouin/index.js +2 -0
  17. package/dist/brillouin/types.d.ts +2 -2
  18. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  19. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +100 -191
  20. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  21. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +176 -464
  22. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  23. package/dist/chempot-diagram/color.d.ts +3 -6
  24. package/dist/chempot-diagram/color.js +5 -5
  25. package/dist/chempot-diagram/compute.d.ts +3 -3
  26. package/dist/chempot-diagram/compute.js +3 -1
  27. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  28. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  29. package/dist/chempot-diagram/export.d.ts +47 -0
  30. package/dist/chempot-diagram/export.js +133 -0
  31. package/dist/chempot-diagram/index.d.ts +1 -0
  32. package/dist/chempot-diagram/index.js +1 -0
  33. package/dist/chempot-diagram/pointer.d.ts +0 -10
  34. package/dist/chempot-diagram/pointer.js +4 -4
  35. package/dist/chempot-diagram/types.d.ts +3 -3
  36. package/dist/colors/index.js +2 -2
  37. package/dist/composition/FormulaFilter.svelte +6 -5
  38. package/dist/composition/PieChart.svelte +5 -5
  39. package/dist/composition/chem-sys.js +3 -2
  40. package/dist/composition/format.js +3 -2
  41. package/dist/composition/parse.d.ts +0 -1
  42. package/dist/composition/parse.js +17 -19
  43. package/dist/controls.d.ts +1 -0
  44. package/dist/controls.js +0 -1
  45. package/dist/convex-hull/ConvexHull.svelte +8 -10
  46. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  47. package/dist/convex-hull/ConvexHull2D.svelte +94 -175
  48. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  49. package/dist/convex-hull/ConvexHull3D.svelte +176 -680
  50. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  51. package/dist/convex-hull/ConvexHull4D.svelte +180 -680
  52. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  53. package/dist/convex-hull/ConvexHullChrome.svelte +268 -0
  54. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  55. package/dist/convex-hull/ConvexHullControls.svelte +88 -7
  56. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  57. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  58. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  59. package/dist/convex-hull/ConvexHullStats.svelte +29 -168
  60. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  61. package/dist/convex-hull/ConvexHullTooltip.svelte +11 -2
  62. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  63. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  64. package/dist/convex-hull/barycentric-coords.js +6 -33
  65. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  66. package/dist/convex-hull/canvas-interactions.svelte.js +278 -0
  67. package/dist/convex-hull/helpers.d.ts +39 -7
  68. package/dist/convex-hull/helpers.js +154 -69
  69. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  70. package/dist/convex-hull/hull-state.svelte.js +124 -0
  71. package/dist/convex-hull/index.d.ts +9 -7
  72. package/dist/convex-hull/index.js +7 -2
  73. package/dist/convex-hull/thermodynamics.js +91 -920
  74. package/dist/convex-hull/types.d.ts +12 -4
  75. package/dist/convex-hull/types.js +12 -0
  76. package/dist/coordination/CoordinationBarPlot.svelte +4 -11
  77. package/dist/element/BohrAtom.svelte +2 -1
  78. package/dist/element/ElementTile.svelte.d.ts +1 -1
  79. package/dist/element/index.d.ts +4 -0
  80. package/dist/element/index.js +18 -0
  81. package/dist/feedback/DragOverlay.svelte +3 -1
  82. package/dist/feedback/DragOverlay.svelte.d.ts +1 -0
  83. package/dist/feedback/StatusMessage.svelte +13 -3
  84. package/dist/fermi-surface/FermiSurface.svelte +67 -146
  85. package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -14
  86. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  87. package/dist/fermi-surface/FermiSurfaceScene.svelte +72 -224
  88. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  89. package/dist/fermi-surface/compute.js +11 -10
  90. package/dist/fermi-surface/export.js +4 -15
  91. package/dist/fermi-surface/index.d.ts +0 -1
  92. package/dist/fermi-surface/index.js +0 -1
  93. package/dist/fermi-surface/parse.d.ts +1 -1
  94. package/dist/fermi-surface/parse.js +64 -75
  95. package/dist/fermi-surface/types.d.ts +2 -2
  96. package/dist/heatmap-matrix/HeatmapMatrix.svelte +55 -40
  97. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +4 -3
  98. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +3 -2
  99. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  100. package/dist/heatmap-matrix/index.d.ts +3 -2
  101. package/dist/index.d.ts +1 -0
  102. package/dist/index.js +1 -0
  103. package/dist/io/ExportPane.svelte +166 -0
  104. package/dist/io/ExportPane.svelte.d.ts +17 -0
  105. package/dist/io/decompress.js +1 -2
  106. package/dist/io/export.d.ts +5 -1
  107. package/dist/io/export.js +32 -28
  108. package/dist/io/fetch.d.ts +2 -1
  109. package/dist/io/file-drop.d.ts +7 -0
  110. package/dist/io/file-drop.js +13 -0
  111. package/dist/io/index.d.ts +2 -0
  112. package/dist/io/index.js +10 -0
  113. package/dist/io/types.d.ts +13 -0
  114. package/dist/isosurface/parse.js +46 -44
  115. package/dist/labels.js +1 -1
  116. package/dist/layout/FullscreenButton.svelte +33 -0
  117. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  118. package/dist/layout/FullscreenToggle.svelte +8 -14
  119. package/dist/layout/ViewerChrome.svelte +116 -0
  120. package/dist/layout/ViewerChrome.svelte.d.ts +17 -0
  121. package/dist/layout/fullscreen.d.ts +4 -0
  122. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  123. package/dist/layout/fullscreen.svelte.js +37 -0
  124. package/dist/layout/index.d.ts +3 -0
  125. package/dist/layout/index.js +3 -0
  126. package/dist/math.d.ts +7 -3
  127. package/dist/math.js +18 -21
  128. package/dist/overlays/index.d.ts +4 -0
  129. package/dist/periodic-table/PeriodicTable.svelte +9 -8
  130. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  131. package/dist/phase-diagram/PhaseDiagramControls.svelte +3 -2
  132. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  133. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  134. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  135. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +47 -132
  136. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  137. package/dist/phase-diagram/colors.js +1 -1
  138. package/dist/phase-diagram/parse.d.ts +2 -1
  139. package/dist/plot/bar/BarPlot.svelte +79 -316
  140. package/dist/plot/bar/BarPlot.svelte.d.ts +7 -15
  141. package/dist/plot/bar/BarPlotControls.svelte.d.ts +1 -1
  142. package/dist/plot/bar/SpacegroupBarPlot.svelte +2 -1
  143. package/dist/plot/box/BoxPlot.svelte +76 -246
  144. package/dist/plot/box/BoxPlot.svelte.d.ts +4 -3
  145. package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
  146. package/dist/plot/box/Violin.svelte.d.ts +1 -1
  147. package/dist/plot/box/box-plot.d.ts +3 -2
  148. package/dist/plot/box/box-plot.js +5 -2
  149. package/dist/plot/box/kde.d.ts +2 -1
  150. package/dist/plot/box/kde.js +4 -4
  151. package/dist/plot/core/auto-place.d.ts +1 -1
  152. package/dist/plot/core/auto-place.js +4 -1
  153. package/dist/plot/core/components/ColorBar.svelte +5 -5
  154. package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
  155. package/dist/plot/core/components/Line.svelte +3 -2
  156. package/dist/plot/core/components/Line.svelte.d.ts +3 -2
  157. package/dist/plot/core/components/PlotAxis.svelte +2 -1
  158. package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
  159. package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
  160. package/dist/plot/core/components/ReferenceLine3D.svelte +2 -2
  161. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
  162. package/dist/plot/core/components/ReferencePlane.svelte +2 -2
  163. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
  164. package/dist/plot/core/data-cleaning.js +18 -18
  165. package/dist/plot/core/fill-utils.d.ts +4 -3
  166. package/dist/plot/core/fill-utils.js +6 -3
  167. package/dist/plot/core/interactions.d.ts +5 -1
  168. package/dist/plot/core/interactions.js +14 -0
  169. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  170. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  171. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  172. package/dist/plot/core/placed-tween.svelte.js +68 -0
  173. package/dist/plot/core/reference-line.d.ts +10 -10
  174. package/dist/plot/core/reference-line.js +6 -6
  175. package/dist/plot/core/scales.d.ts +17 -25
  176. package/dist/plot/core/scales.js +10 -8
  177. package/dist/plot/core/svg.d.ts +2 -1
  178. package/dist/plot/core/types.d.ts +18 -7
  179. package/dist/plot/core/utils/label-placement.d.ts +1 -1
  180. package/dist/plot/core/utils/label-placement.js +3 -3
  181. package/dist/plot/core/utils.d.ts +2 -1
  182. package/dist/plot/histogram/Histogram.svelte +77 -314
  183. package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
  184. package/dist/plot/sankey/Sankey.svelte +2 -5
  185. package/dist/plot/sankey/Sankey.svelte.d.ts +1 -1
  186. package/dist/plot/sankey/sankey.js +3 -1
  187. package/dist/plot/scatter/BinnedScatterPlot.svelte +3 -5
  188. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +4 -4
  189. package/dist/plot/scatter/ScatterPlot.svelte +160 -450
  190. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +7 -15
  191. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  192. package/dist/plot/scatter/binned-scatter-types.d.ts +4 -11
  193. package/dist/plot/scatter/index.d.ts +1 -1
  194. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +15 -26
  195. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
  196. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +9 -10
  197. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
  198. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +122 -121
  199. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
  200. package/dist/plot/scatter-3d/Surface3D.svelte +6 -5
  201. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
  202. package/dist/plot/sunburst/Sunburst.svelte +16 -20
  203. package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
  204. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +1 -1
  205. package/dist/plot/sunburst/sunburst.js +4 -1
  206. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  207. package/dist/sanitize.js +13 -2
  208. package/dist/scene/SceneCamera.svelte +62 -0
  209. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  210. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  211. package/dist/scene/bind-renderer.svelte.js +14 -0
  212. package/dist/scene/index.d.ts +4 -0
  213. package/dist/scene/index.js +5 -0
  214. package/dist/scene/props.js +52 -0
  215. package/dist/scene/types.d.ts +26 -0
  216. package/dist/scene/types.js +1 -0
  217. package/dist/settings.d.ts +14 -2
  218. package/dist/settings.js +59 -1
  219. package/dist/spectral/Bands.svelte +8 -7
  220. package/dist/spectral/Bands.svelte.d.ts +3 -2
  221. package/dist/spectral/BandsAndDos.svelte +22 -24
  222. package/dist/spectral/BrillouinBandsDos.svelte +3 -3
  223. package/dist/spectral/Dos.svelte +5 -4
  224. package/dist/spectral/Dos.svelte.d.ts +2 -1
  225. package/dist/spectral/helpers.d.ts +6 -6
  226. package/dist/spectral/helpers.js +43 -37
  227. package/dist/state.svelte.d.ts +0 -7
  228. package/dist/state.svelte.js +0 -6
  229. package/dist/structure/Arrow.svelte +2 -4
  230. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  231. package/dist/structure/CanvasTooltip.svelte +1 -0
  232. package/dist/structure/CellSelect.svelte +11 -3
  233. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  234. package/dist/structure/Lattice.svelte +2 -2
  235. package/dist/structure/Structure.svelte +291 -355
  236. package/dist/structure/Structure.svelte.d.ts +5 -15
  237. package/dist/structure/StructureControls.svelte +217 -2
  238. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  239. package/dist/structure/StructureExportPane.svelte +54 -156
  240. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  241. package/dist/structure/StructureInfoPane.svelte +5 -3
  242. package/dist/structure/StructureInfoPane.svelte.d.ts +5 -5
  243. package/dist/structure/StructureScene.svelte +365 -198
  244. package/dist/structure/StructureScene.svelte.d.ts +22 -20
  245. package/dist/structure/{label-placement.d.ts → atom-label-placement.d.ts} +3 -3
  246. package/dist/structure/{label-placement.js → atom-label-placement.js} +12 -2
  247. package/dist/structure/atom-properties.d.ts +1 -1
  248. package/dist/structure/atom-properties.js +11 -16
  249. package/dist/structure/bond-order-perception.js +2 -4
  250. package/dist/structure/bonding.d.ts +3 -0
  251. package/dist/structure/bonding.js +91 -48
  252. package/dist/structure/export.d.ts +24 -4
  253. package/dist/structure/export.js +64 -122
  254. package/dist/structure/index.d.ts +2 -0
  255. package/dist/structure/index.js +2 -0
  256. package/dist/structure/parse.d.ts +3 -2
  257. package/dist/structure/parse.js +333 -370
  258. package/dist/structure/partial-occupancy.d.ts +0 -1
  259. package/dist/structure/partial-occupancy.js +1 -1
  260. package/dist/structure/pbc.d.ts +1 -1
  261. package/dist/structure/pbc.js +186 -13
  262. package/dist/structure/polyhedra.d.ts +41 -0
  263. package/dist/structure/polyhedra.js +602 -0
  264. package/dist/structure/site.d.ts +4 -0
  265. package/dist/structure/site.js +1 -0
  266. package/dist/structure/supercell.js +3 -2
  267. package/dist/structure/validation.js +5 -6
  268. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  269. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  270. package/dist/symmetry/SymmetryElements.svelte +354 -0
  271. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  272. package/dist/symmetry/SymmetryStats.svelte +111 -6
  273. package/dist/symmetry/WyckoffTable.svelte +68 -7
  274. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  275. package/dist/symmetry/cell-transform.js +7 -14
  276. package/dist/symmetry/index.d.ts +14 -4
  277. package/dist/symmetry/index.js +301 -80
  278. package/dist/symmetry/spacegroups.d.ts +5 -1
  279. package/dist/symmetry/spacegroups.js +15 -1
  280. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  281. package/dist/symmetry/symmetry-elements.js +521 -0
  282. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  283. package/dist/symmetry/wyckoff-db.js +87 -0
  284. package/dist/table/HeatmapTable.svelte +4 -15
  285. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  286. package/dist/trajectory/Trajectory.svelte +58 -61
  287. package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
  288. package/dist/trajectory/TrajectoryExportPane.svelte +15 -24
  289. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  290. package/dist/trajectory/TrajectoryInfoPane.svelte +3 -2
  291. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  292. package/dist/trajectory/constants.js +6 -2
  293. package/dist/trajectory/extract.js +17 -37
  294. package/dist/trajectory/format-detect.d.ts +0 -1
  295. package/dist/trajectory/format-detect.js +3 -9
  296. package/dist/trajectory/frame-reader.d.ts +0 -1
  297. package/dist/trajectory/frame-reader.js +62 -128
  298. package/dist/trajectory/helpers.d.ts +10 -2
  299. package/dist/trajectory/helpers.js +56 -36
  300. package/dist/trajectory/parse/ase.d.ts +9 -1
  301. package/dist/trajectory/parse/ase.js +47 -32
  302. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  303. package/dist/trajectory/parse/diagnostics.js +14 -0
  304. package/dist/trajectory/parse/index.d.ts +1 -1
  305. package/dist/trajectory/parse/index.js +54 -102
  306. package/dist/trajectory/parse/lammps.d.ts +0 -2
  307. package/dist/trajectory/parse/lammps.js +8 -6
  308. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  309. package/dist/trajectory/parse/pymatgen.js +74 -0
  310. package/dist/trajectory/parse/vasp.js +4 -3
  311. package/dist/trajectory/parse/xyz.d.ts +9 -21
  312. package/dist/trajectory/parse/xyz.js +28 -33
  313. package/dist/trajectory/plotting.d.ts +0 -1
  314. package/dist/trajectory/plotting.js +3 -100
  315. package/dist/utils.d.ts +1 -0
  316. package/dist/utils.js +1 -1
  317. package/dist/xrd/XrdPlot.svelte +14 -29
  318. package/dist/xrd/broadening.d.ts +2 -1
  319. package/dist/xrd/calc-xrd.js +6 -11
  320. package/dist/xrd/index.d.ts +2 -2
  321. package/package.json +29 -16
  322. package/dist/element/data.json +0 -11864
  323. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  324. package/dist/fermi-surface/marching-cubes.js +0 -2
  325. package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
  326. package/dist/plot/core/hover-lock.svelte.js +0 -45
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ // Fullscreen toggle button (default Icon or custom snippet content), shared by the
3
+ // Trajectory/ChemPotDiagram3D/ConvexHull viewer chromes
4
+ import Icon from '../Icon.svelte'
5
+ import type { HTMLButtonAttributes } from 'svelte/elements'
6
+ import { type FullscreenToggleProp, toggle_fullscreen } from './fullscreen'
7
+
8
+ let {
9
+ fullscreen = false,
10
+ toggle = true, // pass a snippet to render custom button content
11
+ wrapper = undefined, // element sent fullscreen
12
+ ...rest
13
+ }: HTMLButtonAttributes & {
14
+ fullscreen?: boolean
15
+ toggle?: FullscreenToggleProp
16
+ wrapper?: HTMLDivElement
17
+ } = $props()
18
+ </script>
19
+
20
+ <button
21
+ type="button"
22
+ onclick={() => toggle_fullscreen(wrapper)}
23
+ title="{fullscreen ? `Exit` : `Enter`} fullscreen"
24
+ aria-pressed={fullscreen}
25
+ {...rest}
26
+ class="fullscreen-btn {rest.class ?? ``}"
27
+ >
28
+ {#if typeof toggle === `function`}
29
+ {@render toggle({ fullscreen })}
30
+ {:else}
31
+ <Icon icon={fullscreen ? `ExitFullscreen` : `Fullscreen`} />
32
+ {/if}
33
+ </button>
@@ -0,0 +1,10 @@
1
+ import type { HTMLButtonAttributes } from 'svelte/elements';
2
+ import { type FullscreenToggleProp } from './fullscreen';
3
+ type $$ComponentProps = HTMLButtonAttributes & {
4
+ fullscreen?: boolean;
5
+ toggle?: FullscreenToggleProp;
6
+ wrapper?: HTMLDivElement;
7
+ };
8
+ declare const FullscreenButton: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type FullscreenButton = ReturnType<typeof FullscreenButton>;
10
+ export default FullscreenButton;
@@ -1,28 +1,22 @@
1
1
  <script lang="ts">
2
+ // Toggles a bindable `fullscreen` flag (plot components manage browser fullscreen
3
+ // themselves). For chromes that call the browser API directly, use FullscreenButton.
2
4
  import Icon from '../Icon.svelte'
3
5
  import type { HTMLButtonAttributes } from 'svelte/elements'
4
6
 
5
- let {
6
- fullscreen = $bindable(false),
7
- class: className,
8
- ...rest
9
- }: HTMLButtonAttributes & {
7
+ let { fullscreen = $bindable(false), ...rest }: HTMLButtonAttributes & {
10
8
  fullscreen?: boolean
11
9
  } = $props()
12
10
  </script>
13
11
 
14
12
  <button
15
- class="fullscreen-toggle {className ?? ``}"
13
+ {...rest}
14
+ class="fullscreen-toggle {rest.class ?? ``}"
16
15
  onclick={() => (fullscreen = !fullscreen)}
17
16
  aria-label={fullscreen ? `Exit fullscreen` : `Enter fullscreen`}
18
17
  type="button"
19
- {...rest}
20
18
  >
21
- <Icon
22
- icon={fullscreen ? `ExitFullscreen` : `Fullscreen`}
23
- width="18"
24
- height="18"
25
- />
19
+ <Icon icon="{fullscreen ? `Exit` : ``}Fullscreen" width="18" height="18" />
26
20
  </button>
27
21
 
28
22
  <style>
@@ -45,6 +39,6 @@
45
39
  background-color: color-mix(in srgb, currentColor 8%, transparent);
46
40
  opacity: var(--fullscreen-btn-hover-opacity, 1);
47
41
  }
48
- /* Note: Parent component should add styles to show on parent hover */
49
- /* Example: .parent:hover :global(.fullscreen-toggle) { opacity: 1; } */
42
+ /* Note: Parent component should add styles to show on parent hover
43
+ Example: .parent:hover :global(.fullscreen-toggle) { opacity: 1; } */
50
44
  </style>
@@ -0,0 +1,116 @@
1
+ <script lang="ts">
2
+ import type { FullscreenToggleProp } from './fullscreen'
3
+ import type { ShowControlsState } from '../controls'
4
+ // Shared control-buttons row (filename chip + fullscreen toggle + snippet buttons/panes) for BrillouinZone/FermiSurface/Structure viewers; themed via neutral --viewer-* CSS vars
5
+ // TODO Trajectory.svelte still has its own control-buttons variant — migrate it here.
6
+ import type { Snippet } from 'svelte'
7
+ import { createAttachmentKey } from 'svelte/attachments'
8
+ import { tooltip } from 'svelte-multiselect/attachments'
9
+ import FullscreenButton from './FullscreenButton.svelte'
10
+
11
+ let {
12
+ controls_config,
13
+ filename = undefined,
14
+ fullscreen = false,
15
+ fullscreen_toggle = true,
16
+ fullscreen_btn_style = undefined,
17
+ wrapper = undefined,
18
+ style = undefined,
19
+ before = undefined,
20
+ children = undefined,
21
+ }: {
22
+ controls_config: ShowControlsState
23
+ filename?: string
24
+ fullscreen?: boolean
25
+ fullscreen_toggle?: FullscreenToggleProp
26
+ fullscreen_btn_style?: string
27
+ wrapper?: HTMLDivElement
28
+ style?: string // extra styles/CSS vars for the section (user config style wins)
29
+ before?: Snippet // rendered before filename/fullscreen (e.g. reset-camera button)
30
+ children?: Snippet // rendered after the fullscreen toggle (panes, controls, ...)
31
+ } = $props()
32
+
33
+ // Styled tooltip (reads the button's title attr), forwarded as a spreadable attachment
34
+ const tooltip_attachment = { [createAttachmentKey()]: tooltip() }
35
+ </script>
36
+
37
+ <section
38
+ class="control-buttons {controls_config.class}"
39
+ style={[style, controls_config.style].filter(Boolean).join(`; `)}
40
+ >
41
+ {#if controls_config.mode !== `never`}
42
+ {@render before?.()}
43
+
44
+ {#if filename && controls_config.visible(`filename`)}
45
+ <span class="filename">{filename}</span>
46
+ {/if}
47
+
48
+ {#if fullscreen_toggle && controls_config.visible(`fullscreen`)}
49
+ <FullscreenButton
50
+ {fullscreen}
51
+ toggle={fullscreen_toggle}
52
+ {wrapper}
53
+ class="fullscreen-toggle"
54
+ style={fullscreen_btn_style}
55
+ {...tooltip_attachment}
56
+ />
57
+ {/if}
58
+
59
+ {@render children?.()}
60
+ {/if}
61
+ </section>
62
+
63
+ <style>
64
+ section.control-buttons {
65
+ position: absolute;
66
+ display: flex;
67
+ top: var(--viewer-buttons-top, var(--ctrl-btn-top, 1ex));
68
+ right: var(--viewer-buttons-right, var(--ctrl-btn-right, 1ex));
69
+ gap: var(--viewer-buttons-gap, clamp(6pt, 1cqmin, 9pt));
70
+ z-index: var(
71
+ --viewer-buttons-z-index,
72
+ var(--z-index-overlay-controls, 100000000)
73
+ );
74
+ opacity: 0;
75
+ pointer-events: none;
76
+ transition: opacity 0.2s ease;
77
+ align-items: var(--viewer-buttons-align, center);
78
+ }
79
+ /* Mode: always - controls always visible */
80
+ section.control-buttons.always-visible {
81
+ opacity: 1;
82
+ pointer-events: auto;
83
+ }
84
+ /* Mode: hover - controls visible while the parent viewer is hovered/focused */
85
+ :global(.structure:hover) > section.control-buttons.hover-visible,
86
+ :global(.structure:focus-within) > section.control-buttons.hover-visible,
87
+ :global(.brillouin-zone:hover) > section.control-buttons.hover-visible,
88
+ :global(.brillouin-zone:focus-within) > section.control-buttons.hover-visible,
89
+ :global(.fermi-surface:hover) > section.control-buttons.hover-visible,
90
+ :global(.fermi-surface:focus-within) > section.control-buttons.hover-visible {
91
+ opacity: 1;
92
+ pointer-events: auto;
93
+ }
94
+ /* Mode: never - stays hidden (default state, no additional CSS needed) */
95
+ section.control-buttons > :global(button) {
96
+ background-color: transparent;
97
+ display: flex;
98
+ padding: var(--viewer-buttons-btn-padding, 4px);
99
+ border-radius: var(--border-radius, 3pt);
100
+ font-size: clamp(0.85em, 2cqmin, 1.3em);
101
+ }
102
+ section.control-buttons :global(button:hover) {
103
+ background-color: color-mix(in srgb, currentColor 8%, transparent);
104
+ }
105
+ .filename {
106
+ font-family: monospace;
107
+ font-size: 0.9em;
108
+ background: var(--code-bg, rgba(0, 0, 0, 0.1));
109
+ padding: 3pt 6pt;
110
+ border-radius: 3pt;
111
+ max-width: 200px;
112
+ overflow: hidden;
113
+ text-overflow: ellipsis;
114
+ white-space: nowrap;
115
+ }
116
+ </style>
@@ -0,0 +1,17 @@
1
+ import type { FullscreenToggleProp } from './fullscreen';
2
+ import type { ShowControlsState } from '../controls';
3
+ import type { Snippet } from 'svelte';
4
+ type $$ComponentProps = {
5
+ controls_config: ShowControlsState;
6
+ filename?: string;
7
+ fullscreen?: boolean;
8
+ fullscreen_toggle?: FullscreenToggleProp;
9
+ fullscreen_btn_style?: string;
10
+ wrapper?: HTMLDivElement;
11
+ style?: string;
12
+ before?: Snippet;
13
+ children?: Snippet;
14
+ };
15
+ declare const ViewerChrome: import("svelte").Component<$$ComponentProps, {}, "">;
16
+ type ViewerChrome = ReturnType<typeof ViewerChrome>;
17
+ export default ViewerChrome;
@@ -1,3 +1,7 @@
1
+ import type { Snippet } from 'svelte';
2
+ export type FullscreenToggleProp = Snippet<[{
3
+ fullscreen: boolean;
4
+ }]> | boolean;
1
5
  export type InfoItem = Readonly<{
2
6
  label: string;
3
7
  value: string | number;
@@ -0,0 +1,8 @@
1
+ export declare function sync_fullscreen(opts: {
2
+ get_wrapper: () => HTMLDivElement | undefined;
3
+ get_fullscreen: () => boolean;
4
+ set_fullscreen: (fullscreen: boolean) => void;
5
+ bg_css_var: string;
6
+ on_request_error?: (err: Error) => void;
7
+ on_change?: (fullscreen: boolean) => void;
8
+ }): void;
@@ -0,0 +1,37 @@
1
+ import { set_fullscreen_bg } from './fullscreen';
2
+ // Two-way sync between a bindable `fullscreen` flag, the browser fullscreen state of a wrapper, and the fullscreen background CSS var. Creates $effects (call during component init). Shared by BrillouinZone/FermiSurface/Structure viewers.
3
+ // TODO Trajectory.svelte still has its own fullscreen variant — migrate it here.
4
+ export function sync_fullscreen(opts) {
5
+ // Flag -> browser: enter/exit fullscreen when the bound flag changes
6
+ $effect(() => {
7
+ if (typeof window === `undefined`)
8
+ return;
9
+ const wrapper = opts.get_wrapper();
10
+ const fullscreen = opts.get_fullscreen();
11
+ const fs_el = document.fullscreenElement;
12
+ if (fullscreen && fs_el !== wrapper && wrapper) {
13
+ wrapper.requestFullscreen().catch((err) => {
14
+ console.error(err);
15
+ opts.on_request_error?.(err);
16
+ });
17
+ }
18
+ else if (!fullscreen && fs_el === wrapper) {
19
+ document.exitFullscreen().catch(console.error);
20
+ }
21
+ set_fullscreen_bg(wrapper, fullscreen, opts.bg_css_var);
22
+ });
23
+ // Browser -> flag: track fullscreenchange events (covers Esc key, programmatic exit, ...)
24
+ $effect(() => {
25
+ if (typeof document === `undefined`)
26
+ return () => { };
27
+ const handler = () => {
28
+ // tie state to this component's own wrapper so another element entering fullscreen
29
+ // doesn't flip every viewer's flag (would also trigger a requestFullscreen cascade)
30
+ const is_fullscreen = document.fullscreenElement === opts.get_wrapper();
31
+ opts.set_fullscreen(is_fullscreen);
32
+ opts.on_change?.(is_fullscreen);
33
+ };
34
+ document.addEventListener(`fullscreenchange`, handler);
35
+ return () => document.removeEventListener(`fullscreenchange`, handler);
36
+ });
37
+ }
@@ -1,4 +1,6 @@
1
1
  export * from './fullscreen';
2
+ export * from './fullscreen.svelte';
3
+ export { default as FullscreenButton } from './FullscreenButton.svelte';
2
4
  export { default as FullscreenToggle } from './FullscreenToggle.svelte';
3
5
  export { default as InfoCard } from './InfoCard.svelte';
4
6
  export { default as InfoTag } from './InfoTag.svelte';
@@ -6,5 +8,6 @@ export * from './json-tree';
6
8
  export { default as PropertyFilter } from './PropertyFilter.svelte';
7
9
  export { default as SettingsSection } from './SettingsSection.svelte';
8
10
  export { default as SubpageGrid } from './SubpageGrid.svelte';
11
+ export { default as ViewerChrome } from './ViewerChrome.svelte';
9
12
  export type InfoTagVariant = `default` | `success` | `warning` | `error` | `info`;
10
13
  export type InfoTagSize = `sm` | `md` | `lg`;
@@ -1,4 +1,6 @@
1
1
  export * from './fullscreen';
2
+ export * from './fullscreen.svelte';
3
+ export { default as FullscreenButton } from './FullscreenButton.svelte';
2
4
  export { default as FullscreenToggle } from './FullscreenToggle.svelte';
3
5
  export { default as InfoCard } from './InfoCard.svelte';
4
6
  export { default as InfoTag } from './InfoTag.svelte';
@@ -6,3 +8,4 @@ export * from './json-tree';
6
8
  export { default as PropertyFilter } from './PropertyFilter.svelte';
7
9
  export { default as SettingsSection } from './SettingsSection.svelte';
8
10
  export { default as SubpageGrid } from './SubpageGrid.svelte';
11
+ export { default as ViewerChrome } from './ViewerChrome.svelte';
package/dist/math.d.ts CHANGED
@@ -2,6 +2,7 @@ import type { LatticeParams, Pbc } from './structure/index';
2
2
  export type Vec2 = [number, number];
3
3
  export type Vec3 = [number, number, number];
4
4
  export type Vec4 = [number, number, number, number];
5
+ export type Vec5 = [number, number, number, number, number];
5
6
  export type Vec9 = [number, number, number, number, number, number, number, number, number];
6
7
  export type Point2D = {
7
8
  x: number;
@@ -51,12 +52,14 @@ export declare function matrix_inverse_3x3(matrix: Matrix3x3): Matrix3x3;
51
52
  export declare function mat3x3_vec3_multiply(matrix: Matrix3x3, vector: Vec3): Vec3;
52
53
  export declare function add<T extends NdVector>(...vecs: T[]): T;
53
54
  export declare function subtract<T extends NdVector>(vec1: T, vec2: T): T;
55
+ export declare function dot(vec1: Matrix3x3, vec2: Matrix3x3): Matrix3x3;
56
+ export declare function dot(vec1: Matrix3x3, vec2: Vec3): Vec3;
54
57
  export declare function dot(vec1: NdVector, vec2: NdVector): number;
55
58
  export declare function dot(vec1: NdVector[], vec2: NdVector): number[];
56
59
  export declare function dot(vec1: NdVector[], vec2: NdVector[]): number[][];
57
60
  export declare function to_voigt(tensor: number[][]): number[];
58
- export declare function from_voigt(voigt: number[]): number[][];
59
- export declare function vec9_to_mat3x3(flat_array: number[]): number[][];
61
+ export declare function from_voigt(voigt: number[]): Matrix3x3;
62
+ export declare function vec9_to_mat3x3(flat_array: number[]): Matrix3x3;
60
63
  export declare function tensor_to_flat_array(tensor: number[][]): number[];
61
64
  export declare const transpose_3x3_matrix: (matrix: Matrix3x3) => Matrix3x3;
62
65
  export declare function scale_lattice_matrix(orig_matrix: Matrix3x3, scaling_factors: Vec3): Matrix3x3;
@@ -89,7 +92,7 @@ export declare function compute_bounding_box(vertices: Vec3[]): {
89
92
  min: Vec3;
90
93
  max: Vec3;
91
94
  };
92
- export declare function is_square_matrix(matrix: unknown, dim: number): boolean;
95
+ export declare function is_square_matrix(matrix: unknown, dim: number): matrix is number[][];
93
96
  export declare function point_in_polygon(point_x: number, point_y: number, vertices: Vec2[]): boolean;
94
97
  export declare function compute_bounding_box_2d(vertices: Vec2[]): {
95
98
  min: Vec2;
@@ -101,5 +104,6 @@ export declare function polygon_centroid(vertices: Vec2[]): Vec2;
101
104
  export declare function solve_linear_system(A: number[][], // NxN coefficient matrix
102
105
  b: number[]): number[] | null;
103
106
  export declare const cross_2d: (origin: Vec2, point_a: Vec2, point_b: Vec2) => number;
107
+ export declare const monotone_chain: (sorted: Vec2[]) => Vec2[];
104
108
  export declare function convex_hull_2d(points: Vec2[]): Vec2[];
105
109
  export {};
package/dist/math.js CHANGED
@@ -737,13 +737,14 @@ export function compute_bounding_box(vertices) {
737
737
  }
738
738
  return { min, max };
739
739
  }
740
- // Check if a matrix is square with dimension NxN
740
+ // Check if a matrix is a finite-numeric square matrix of dimension NxN (type predicate
741
+ // so callers get number[][] narrowing without assertions). Rejects NaN/Infinity entries.
741
742
  export function is_square_matrix(matrix, dim) {
742
743
  if (!Array.isArray(matrix))
743
744
  return false;
744
745
  if (matrix.length !== dim)
745
746
  return false;
746
- return matrix.every((row) => Array.isArray(row) && row.length === dim);
747
+ return matrix.every((row) => Array.isArray(row) && row.length === dim && row.every((val) => Number.isFinite(val)));
747
748
  }
748
749
  // --- 2D Geometry Utilities ---
749
750
  // Point-in-polygon test using ray casting algorithm
@@ -888,31 +889,27 @@ b) {
888
889
  }
889
890
  export const cross_2d = (origin, point_a, point_b) => (point_a[0] - origin[0]) * (point_b[1] - origin[1]) -
890
891
  (point_a[1] - origin[1]) * (point_b[0] - origin[0]);
892
+ // One half of Andrew's monotone chain built from x-then-y *pre-sorted* points
893
+ // (lower chain; pass reversed input for the upper chain).
894
+ export const monotone_chain = (sorted) => {
895
+ const chain = [];
896
+ for (const pt of sorted) {
897
+ while (chain.length >= 2 &&
898
+ cross_2d(chain[chain.length - 2], chain[chain.length - 1], pt) <= 0) {
899
+ chain.pop();
900
+ }
901
+ chain.push(pt);
902
+ }
903
+ return chain;
904
+ };
891
905
  // Full 2D convex hull via Andrew's monotone chain algorithm.
892
906
  // Returns vertices in counter-clockwise order.
893
907
  export function convex_hull_2d(points) {
894
908
  if (points.length < 3)
895
909
  return [...points];
896
910
  const sorted = points.toSorted((a, b) => a[0] - b[0] || a[1] - b[1]);
897
- // Lower hull
898
- const lower = [];
899
- for (const pt of sorted) {
900
- while (lower.length >= 2 &&
901
- cross_2d(lower[lower.length - 2], lower[lower.length - 1], pt) <= 0) {
902
- lower.pop();
903
- }
904
- lower.push(pt);
905
- }
906
- // Upper hull
907
- const upper = [];
908
- for (let idx = sorted.length - 1; idx >= 0; idx--) {
909
- const pt = sorted[idx];
910
- while (upper.length >= 2 &&
911
- cross_2d(upper[upper.length - 2], upper[upper.length - 1], pt) <= 0) {
912
- upper.pop();
913
- }
914
- upper.push(pt);
915
- }
911
+ const lower = monotone_chain(sorted);
912
+ const upper = monotone_chain(sorted.toReversed());
916
913
  // Remove last point of each half (it's the first point of the other)
917
914
  lower.pop();
918
915
  upper.pop();
@@ -1,3 +1,7 @@
1
+ import type { ComponentProps } from 'svelte';
2
+ import type DraggablePane from './DraggablePane.svelte';
1
3
  export { default as ContextMenu } from './ContextMenu.svelte';
2
4
  export { default as DraggablePane } from './DraggablePane.svelte';
3
5
  export { default as DragControlTab } from './DragControlTab.svelte';
6
+ export type PaneToggleProps = ComponentProps<typeof DraggablePane>[`toggle_props`];
7
+ export type PaneProps = ComponentProps<typeof DraggablePane>[`pane_props`];
@@ -1,12 +1,11 @@
1
1
  <script lang="ts">
2
- import { is_color } from '../colors'
2
+ import { get_d3_interpolator, is_color } from '../colors'
3
3
  import type { ChemicalElement, ElementCategory, ElementSymbol } from '../element'
4
4
  import { element_data, ElementPhoto, ElementTile } from '../element'
5
5
  import { ELEM_SYMBOLS } from '../labels'
6
6
  import type { Point2D, Vec2 } from '../math'
7
7
  import { ColorBar } from '../plot'
8
8
  import { colors } from '../state.svelte'
9
- import * as d3_sc from 'd3-scale-chromatic'
10
9
  import type { ComponentProps, Snippet } from 'svelte'
11
10
  import type { HTMLAttributes } from 'svelte/elements'
12
11
  import type { D3InterpolateName } from '../colors'
@@ -186,14 +185,14 @@
186
185
  }
187
186
 
188
187
  let color_scale_fn = $derived(
189
- typeof color_scale === `string` ? d3_sc[color_scale] : color_scale,
188
+ typeof color_scale === `string` ? get_d3_interpolator(color_scale) : color_scale,
190
189
  )
191
190
 
192
191
  let cs_min = $derived(
193
192
  color_scale_range[0] ??
194
193
  (heat_values.length > 0
195
194
  ? Math.min(
196
- ...heat_values.flat().filter((v): v is number => typeof v === `number`),
195
+ ...heat_values.flat().filter((val): val is number => typeof val === `number`),
197
196
  )
198
197
  : 0),
199
198
  )
@@ -201,7 +200,7 @@
201
200
  color_scale_range[1] ??
202
201
  (heat_values.length > 0
203
202
  ? Math.max(
204
- ...heat_values.flat().filter((v): v is number => typeof v === `number`),
203
+ ...heat_values.flat().filter((val): val is number => typeof val === `number`),
205
204
  )
206
205
  : 1),
207
206
  )
@@ -209,7 +208,9 @@
209
208
  // smallest positive bound for log color mapping (matches the auto ColorBar's log scale)
210
209
  let cs_min_pos = $derived.by(() => {
211
210
  if (cs_min > 0) return cs_min
212
- const pos = heat_values.flat().filter((v): v is number => typeof v === `number` && v > 0)
211
+ const pos = heat_values.flat().filter((val): val is number =>
212
+ typeof val === `number` && val > 0
213
+ )
213
214
  return pos.length > 0 ? Math.min(...pos) : cs_max
214
215
  })
215
216
 
@@ -224,7 +225,7 @@
224
225
  }
225
226
 
226
227
  // If it's already a color string, return it directly
227
- if (is_color(value)) return value as string
228
+ if (is_color(value)) return value
228
229
 
229
230
  // Return missing color for zero/invalid values or when no heatmap data
230
231
  if (
@@ -264,7 +265,7 @@
264
265
 
265
266
  return value.map((val) => {
266
267
  // If it's already a color string, return it directly
267
- if (is_color(val)) return val as string
268
+ if (is_color(val)) return val
268
269
  // Otherwise, map it through the color scale
269
270
  return bg_color(val as number, element)
270
271
  })
@@ -39,6 +39,6 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
39
39
  }
40
40
  ]>;
41
41
  };
42
- declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<$$ComponentProps, {}, "fullscreen" | "controls_open" | "x_axis" | "y_axis" | "show_grid" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "wrapper" | "config" | "export_pane_open" | "lever_rule_mode" | "editor_open" | "diagram_input" | "hovered_region" | "display_temp_unit">;
42
+ declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "fullscreen" | "wrapper" | "controls_open" | "x_axis" | "export_pane_open" | "png_dpi" | "config" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode" | "editor_open" | "diagram_input" | "hovered_region" | "display_temp_unit">;
43
43
  type IsobaricBinaryPhaseDiagram = ReturnType<typeof IsobaricBinaryPhaseDiagram>;
44
44
  export default IsobaricBinaryPhaseDiagram;
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import type { PaneProps, PaneToggleProps } from '../overlays'
2
3
  // NOTE: Axis config objects must be reassigned (not mutated) to trigger $bindable reactivity.
3
4
  import { css_color_to_hex } from '../colors'
4
5
  import { format_num } from '../labels'
@@ -58,8 +59,8 @@
58
59
  enable_export?: boolean
59
60
  png_dpi?: number
60
61
  // Pane customization
61
- pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
62
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
62
+ pane_props?: PaneProps
63
+ toggle_props?: PaneToggleProps
63
64
  // Custom content snippets
64
65
  children?: Snippet<[{ controls_open: boolean }]>
65
66
  post_children?: Snippet<[{ controls_open: boolean }]>
@@ -1,3 +1,4 @@
1
+ import type { PaneProps, PaneToggleProps } from '../overlays';
1
2
  import DraggablePane from '../overlays/DraggablePane.svelte';
2
3
  import type { AxisConfig } from '../plot';
3
4
  import type { ComponentProps, Snippet } from 'svelte';
@@ -16,8 +17,8 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
16
17
  data?: PhaseDiagramData;
17
18
  enable_export?: boolean;
18
19
  png_dpi?: number;
19
- pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`];
20
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
20
+ pane_props?: PaneProps;
21
+ toggle_props?: PaneToggleProps;
21
22
  children?: Snippet<[{
22
23
  controls_open: boolean;
23
24
  }]>;
@@ -25,6 +26,6 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
25
26
  controls_open: boolean;
26
27
  }]>;
27
28
  };
28
- declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "x_axis" | "y_axis" | "show_grid" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "config" | "lever_rule_mode">;
29
+ declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "controls_open" | "x_axis" | "png_dpi" | "config" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode">;
29
30
  type PhaseDiagramControls = ReturnType<typeof PhaseDiagramControls>;
30
31
  export default PhaseDiagramControls;
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import type { PaneToggleProps } from '../overlays'
2
3
  import { JsonTree } from '../layout/json-tree'
3
4
  import { set_at_path } from '../layout/json-tree/utils'
4
5
  import DraggablePane from '../overlays/DraggablePane.svelte'
@@ -21,7 +22,7 @@
21
22
  data?: PhaseDiagramData | null
22
23
  ondata?: (data: PhaseDiagramData) => void
23
24
  icon_style?: string
24
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
25
+ toggle_props?: PaneToggleProps
25
26
  } = $props()
26
27
 
27
28
  // The source object currently displayed (DiagramInput or PhaseDiagramData)
@@ -1,5 +1,4 @@
1
- import DraggablePane from '../overlays/DraggablePane.svelte';
2
- import type { ComponentProps } from 'svelte';
1
+ import type { PaneToggleProps } from '../overlays';
3
2
  import type { DiagramInput } from './diagram-input';
4
3
  import type { PhaseDiagramData } from './types';
5
4
  type $$ComponentProps = {
@@ -8,7 +7,7 @@ type $$ComponentProps = {
8
7
  data?: PhaseDiagramData | null;
9
8
  ondata?: (data: PhaseDiagramData) => void;
10
9
  icon_style?: string;
11
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
10
+ toggle_props?: PaneToggleProps;
12
11
  };
13
12
  declare const PhaseDiagramEditorPane: import("svelte").Component<$$ComponentProps, {}, "editor_open" | "diagram_input">;
14
13
  type PhaseDiagramEditorPane = ReturnType<typeof PhaseDiagramEditorPane>;