matterviz 0.3.6 → 0.3.7

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 (863) hide show
  1. package/dist/EmptyState.svelte.d.ts +9 -0
  2. package/dist/FilePicker.svelte +360 -0
  3. package/dist/FilePicker.svelte.d.ts +17 -0
  4. package/dist/Icon.svelte.d.ts +13 -0
  5. package/dist/MillerIndexInput.svelte +66 -0
  6. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  7. package/dist/api/mp.d.ts +6 -0
  8. package/dist/api/mp.js +22 -0
  9. package/dist/api/optimade.d.ts +45 -0
  10. package/dist/api/optimade.js +135 -0
  11. package/dist/brillouin/BrillouinZone.svelte +549 -0
  12. package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
  13. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  14. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  15. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  17. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  19. package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
  20. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
  21. package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
  22. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  23. package/dist/brillouin/compute.d.ts +17 -0
  24. package/dist/brillouin/compute.js +426 -0
  25. package/dist/brillouin/index.d.ts +8 -0
  26. package/dist/brillouin/index.js +7 -0
  27. package/dist/brillouin/types.d.ts +43 -0
  28. package/dist/brillouin/types.js +1 -0
  29. package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
  30. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  31. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  32. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  33. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  34. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  36. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  37. package/dist/chempot-diagram/async-compute.svelte.js +78 -0
  38. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  39. package/dist/chempot-diagram/chempot-worker.js +11 -0
  40. package/dist/chempot-diagram/color.d.ts +10 -0
  41. package/dist/chempot-diagram/color.js +32 -0
  42. package/dist/chempot-diagram/compute.d.ts +48 -0
  43. package/dist/chempot-diagram/compute.js +806 -0
  44. package/dist/chempot-diagram/index.d.ts +6 -0
  45. package/dist/chempot-diagram/index.js +6 -0
  46. package/dist/chempot-diagram/pointer.d.ts +16 -0
  47. package/dist/chempot-diagram/pointer.js +40 -0
  48. package/dist/chempot-diagram/temperature.d.ts +15 -0
  49. package/dist/chempot-diagram/temperature.js +34 -0
  50. package/dist/chempot-diagram/types.d.ts +81 -0
  51. package/dist/chempot-diagram/types.js +28 -0
  52. package/dist/colors/index.d.ts +47 -0
  53. package/dist/colors/index.js +203 -0
  54. package/dist/composition/BarChart.svelte +297 -0
  55. package/dist/composition/BarChart.svelte.d.ts +39 -0
  56. package/dist/composition/BubbleChart.svelte +218 -0
  57. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  58. package/dist/composition/Composition.svelte +165 -0
  59. package/dist/composition/Composition.svelte.d.ts +15 -0
  60. package/dist/composition/Formula.svelte +268 -0
  61. package/dist/composition/Formula.svelte.d.ts +19 -0
  62. package/dist/composition/FormulaFilter.svelte +1257 -0
  63. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  64. package/dist/composition/PieChart.svelte +323 -0
  65. package/dist/composition/PieChart.svelte.d.ts +37 -0
  66. package/dist/composition/format.d.ts +15 -0
  67. package/dist/composition/format.js +109 -0
  68. package/dist/composition/index.d.ts +20 -0
  69. package/dist/composition/index.js +14 -0
  70. package/dist/composition/parse.d.ts +56 -0
  71. package/dist/composition/parse.js +474 -0
  72. package/dist/constants.d.ts +29 -0
  73. package/dist/constants.js +99 -0
  74. package/dist/controls.d.ts +14 -0
  75. package/dist/controls.js +30 -0
  76. package/dist/convex-hull/ConvexHull.svelte +157 -0
  77. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  78. package/dist/convex-hull/ConvexHull2D.svelte +825 -0
  79. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  80. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  81. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  82. package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
  83. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  84. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  85. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  86. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  87. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  88. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  89. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  90. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  91. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  92. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  93. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  94. package/dist/convex-hull/StructurePopup.svelte +151 -0
  95. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  96. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  97. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  98. package/dist/convex-hull/barycentric-coords.js +182 -0
  99. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  100. package/dist/convex-hull/demo-temperature.js +40 -0
  101. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  102. package/dist/convex-hull/gas-thermodynamics.js +314 -0
  103. package/dist/convex-hull/helpers.d.ts +114 -0
  104. package/dist/convex-hull/helpers.js +710 -0
  105. package/dist/convex-hull/index.d.ts +119 -0
  106. package/dist/convex-hull/index.js +58 -0
  107. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  108. package/dist/convex-hull/thermodynamics.js +1752 -0
  109. package/dist/convex-hull/types.d.ts +162 -0
  110. package/dist/convex-hull/types.js +36 -0
  111. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  112. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  113. package/dist/coordination/calc-coordination.d.ts +15 -0
  114. package/dist/coordination/calc-coordination.js +63 -0
  115. package/dist/coordination/index.d.ts +8 -0
  116. package/dist/coordination/index.js +7 -0
  117. package/dist/effects.svelte.d.ts +12 -0
  118. package/dist/effects.svelte.js +37 -0
  119. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  120. package/dist/element/ElementHeading.svelte +26 -0
  121. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  122. package/dist/element/ElementPhoto.svelte +57 -0
  123. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  124. package/dist/element/ElementStats.svelte +80 -0
  125. package/dist/element/ElementStats.svelte.d.ts +8 -0
  126. package/dist/element/ElementTile.svelte +484 -0
  127. package/dist/element/ElementTile.svelte.d.ts +29 -0
  128. package/dist/element/Nucleus.svelte.d.ts +17 -0
  129. package/dist/element/data.d.ts +2 -0
  130. package/dist/element/data.js +2 -0
  131. package/dist/element/index.d.ts +8 -0
  132. package/dist/element/index.js +7 -0
  133. package/dist/element/types.d.ts +57 -0
  134. package/dist/element/types.js +1 -0
  135. package/dist/feedback/ClickFeedback.svelte +58 -0
  136. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  137. package/dist/feedback/DragOverlay.svelte +42 -0
  138. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  139. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  140. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  141. package/dist/feedback/index.d.ts +4 -0
  142. package/dist/feedback/index.js +4 -0
  143. package/dist/fermi-surface/FermiSlice.svelte +189 -0
  144. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  145. package/dist/fermi-surface/FermiSurface.svelte +600 -0
  146. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  147. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  148. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  149. package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
  150. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  151. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  152. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  153. package/dist/fermi-surface/compute.d.ts +5 -0
  154. package/dist/fermi-surface/compute.js +538 -0
  155. package/dist/fermi-surface/constants.d.ts +9 -0
  156. package/dist/fermi-surface/constants.js +27 -0
  157. package/dist/fermi-surface/export.d.ts +5 -0
  158. package/dist/fermi-surface/export.js +50 -0
  159. package/dist/fermi-surface/index.d.ts +12 -0
  160. package/dist/fermi-surface/index.js +13 -0
  161. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  162. package/dist/fermi-surface/marching-cubes.js +2 -0
  163. package/dist/fermi-surface/parse.d.ts +2 -0
  164. package/dist/fermi-surface/parse.js +491 -0
  165. package/dist/fermi-surface/symmetry.d.ts +3 -0
  166. package/dist/fermi-surface/symmetry.js +46 -0
  167. package/dist/fermi-surface/types.d.ts +110 -0
  168. package/dist/fermi-surface/types.js +4 -0
  169. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  170. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  171. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  172. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  173. package/dist/heatmap-matrix/index.d.ts +53 -0
  174. package/dist/heatmap-matrix/index.js +100 -0
  175. package/dist/heatmap-matrix/shared.d.ts +2 -0
  176. package/dist/heatmap-matrix/shared.js +4 -0
  177. package/dist/icons.d.ts +569 -0
  178. package/dist/icons.js +648 -0
  179. package/dist/index.d.ts +39 -0
  180. package/dist/index.js +39 -0
  181. package/dist/io/decompress.d.ts +11 -0
  182. package/dist/io/decompress.js +74 -0
  183. package/dist/io/export.d.ts +16 -0
  184. package/dist/io/export.js +316 -0
  185. package/dist/io/fetch.d.ts +5 -0
  186. package/dist/io/fetch.js +39 -0
  187. package/dist/io/file-drop.d.ts +7 -0
  188. package/dist/io/file-drop.js +43 -0
  189. package/dist/io/index.d.ts +7 -0
  190. package/dist/io/index.js +6 -0
  191. package/dist/io/is-binary.d.ts +1 -0
  192. package/dist/io/is-binary.js +20 -0
  193. package/dist/io/types.d.ts +8 -0
  194. package/dist/io/types.js +1 -0
  195. package/dist/io/url-drop.d.ts +2 -0
  196. package/dist/io/url-drop.js +123 -0
  197. package/dist/isosurface/Isosurface.svelte +285 -0
  198. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  199. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  200. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  201. package/dist/isosurface/index.d.ts +5 -0
  202. package/dist/isosurface/index.js +6 -0
  203. package/dist/isosurface/parse.d.ts +6 -0
  204. package/dist/isosurface/parse.js +553 -0
  205. package/dist/isosurface/slice.d.ts +11 -0
  206. package/dist/isosurface/slice.js +140 -0
  207. package/dist/isosurface/types.d.ts +56 -0
  208. package/dist/isosurface/types.js +227 -0
  209. package/dist/labels.d.ts +53 -0
  210. package/dist/labels.js +277 -0
  211. package/dist/layout/FullscreenToggle.svelte +50 -0
  212. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  213. package/dist/layout/InfoCard.svelte +120 -0
  214. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  215. package/dist/layout/InfoTag.svelte +185 -0
  216. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  217. package/dist/layout/PropertyFilter.svelte +246 -0
  218. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  219. package/dist/layout/SettingsSection.svelte +148 -0
  220. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  221. package/dist/layout/SubpageGrid.svelte +82 -0
  222. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  223. package/dist/layout/fullscreen.d.ts +9 -0
  224. package/dist/layout/fullscreen.js +53 -0
  225. package/dist/layout/index.d.ts +10 -0
  226. package/dist/layout/index.js +8 -0
  227. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  228. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  229. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  230. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  231. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  232. package/dist/layout/json-tree/index.d.ts +3 -0
  233. package/dist/layout/json-tree/index.js +3 -0
  234. package/dist/layout/json-tree/types.d.ts +74 -0
  235. package/dist/layout/json-tree/types.js +2 -0
  236. package/dist/layout/json-tree/utils.d.ts +29 -0
  237. package/dist/layout/json-tree/utils.js +641 -0
  238. package/dist/marching-cubes.d.ts +14 -0
  239. package/dist/marching-cubes.js +540 -0
  240. package/dist/math.d.ts +101 -0
  241. package/dist/math.js +905 -0
  242. package/dist/overlays/ContextMenu.svelte +162 -0
  243. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  244. package/dist/overlays/CopyButton.svelte +45 -0
  245. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  246. package/dist/overlays/DragControlTab.svelte +98 -0
  247. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  248. package/dist/overlays/DraggablePane.svelte +487 -0
  249. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  250. package/dist/overlays/InfoPaneCards.svelte +149 -0
  251. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  252. package/dist/overlays/index.d.ts +3 -0
  253. package/dist/overlays/index.js +3 -0
  254. package/dist/periodic-table/PeriodicTable.svelte +469 -0
  255. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  256. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  257. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  258. package/dist/periodic-table/PropertySelect.svelte +37 -0
  259. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  260. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  261. package/dist/periodic-table/index.d.ts +10 -0
  262. package/dist/periodic-table/index.js +4 -0
  263. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  264. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  265. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  266. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  267. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  268. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  269. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  270. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  271. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  272. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  273. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  274. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  275. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  276. package/dist/phase-diagram/build-diagram.js +160 -0
  277. package/dist/phase-diagram/colors.d.ts +35 -0
  278. package/dist/phase-diagram/colors.js +51 -0
  279. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  280. package/dist/phase-diagram/diagram-input.js +3 -0
  281. package/dist/phase-diagram/index.d.ts +13 -0
  282. package/dist/phase-diagram/index.js +11 -0
  283. package/dist/phase-diagram/parse.d.ts +55 -0
  284. package/dist/phase-diagram/parse.js +272 -0
  285. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  286. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  287. package/dist/phase-diagram/types.d.ts +93 -0
  288. package/dist/phase-diagram/types.js +1 -0
  289. package/dist/phase-diagram/utils.d.ts +118 -0
  290. package/dist/phase-diagram/utils.js +604 -0
  291. package/dist/plot/AxisLabel.svelte +51 -0
  292. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  293. package/dist/plot/BarPlot.svelte +2113 -0
  294. package/dist/plot/BarPlot.svelte.d.ts +84 -0
  295. package/dist/plot/BarPlotControls.svelte +66 -0
  296. package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
  297. package/dist/plot/BinnedScatterPlot.svelte +1114 -0
  298. package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
  299. package/dist/plot/ColorBar.svelte +721 -0
  300. package/dist/plot/ColorBar.svelte.d.ts +31 -0
  301. package/dist/plot/ColorScaleSelect.svelte +54 -0
  302. package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
  303. package/dist/plot/ElementScatter.svelte +63 -0
  304. package/dist/plot/ElementScatter.svelte.d.ts +14 -0
  305. package/dist/plot/FillArea.svelte.d.ts +21 -0
  306. package/dist/plot/Histogram.svelte +1558 -0
  307. package/dist/plot/Histogram.svelte.d.ts +50 -0
  308. package/dist/plot/HistogramControls.svelte +212 -0
  309. package/dist/plot/HistogramControls.svelte.d.ts +22 -0
  310. package/dist/plot/InteractiveAxisLabel.svelte +96 -0
  311. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
  312. package/dist/plot/Line.svelte +84 -0
  313. package/dist/plot/Line.svelte.d.ts +15 -0
  314. package/dist/plot/PlotAxis.svelte +169 -0
  315. package/dist/plot/PlotAxis.svelte.d.ts +24 -0
  316. package/dist/plot/PlotControls.svelte +537 -0
  317. package/dist/plot/PlotControls.svelte.d.ts +4 -0
  318. package/dist/plot/PlotLegend.svelte +569 -0
  319. package/dist/plot/PlotLegend.svelte.d.ts +29 -0
  320. package/dist/plot/PlotTooltip.svelte +67 -0
  321. package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
  322. package/dist/plot/PortalSelect.svelte +253 -0
  323. package/dist/plot/PortalSelect.svelte.d.ts +16 -0
  324. package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
  325. package/dist/plot/ReferenceLine3D.svelte +156 -0
  326. package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
  327. package/dist/plot/ReferencePlane.svelte +175 -0
  328. package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
  329. package/dist/plot/ScatterPlot.svelte +2778 -0
  330. package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
  331. package/dist/plot/ScatterPlot3D.svelte +529 -0
  332. package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
  333. package/dist/plot/ScatterPlot3DControls.svelte +437 -0
  334. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
  335. package/dist/plot/ScatterPlot3DScene.svelte +912 -0
  336. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
  337. package/dist/plot/ScatterPlotControls.svelte +306 -0
  338. package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
  339. package/dist/plot/ScatterPoint.svelte +182 -0
  340. package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
  341. package/dist/plot/SpacegroupBarPlot.svelte +293 -0
  342. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
  343. package/dist/plot/Surface3D.svelte +197 -0
  344. package/dist/plot/Surface3D.svelte.d.ts +13 -0
  345. package/dist/plot/ZeroLines.svelte +97 -0
  346. package/dist/plot/ZeroLines.svelte.d.ts +33 -0
  347. package/dist/plot/ZoomRect.svelte +23 -0
  348. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  349. package/dist/plot/adaptive-density.d.ts +69 -0
  350. package/dist/plot/adaptive-density.js +191 -0
  351. package/dist/plot/auto-place.d.ts +43 -0
  352. package/dist/plot/auto-place.js +122 -0
  353. package/dist/plot/axis-utils.d.ts +19 -0
  354. package/dist/plot/axis-utils.js +78 -0
  355. package/dist/plot/binned-scatter-types.d.ts +59 -0
  356. package/dist/plot/binned-scatter-types.js +1 -0
  357. package/dist/plot/data-cleaning.d.ts +37 -0
  358. package/dist/plot/data-cleaning.js +855 -0
  359. package/dist/plot/data-transform.d.ts +16 -0
  360. package/dist/plot/data-transform.js +45 -0
  361. package/dist/plot/defaults.d.ts +19 -0
  362. package/dist/plot/defaults.js +9 -0
  363. package/dist/plot/fill-utils.d.ts +46 -0
  364. package/dist/plot/fill-utils.js +322 -0
  365. package/dist/plot/hover-lock.svelte.d.ts +14 -0
  366. package/dist/plot/hover-lock.svelte.js +46 -0
  367. package/dist/plot/index.d.ts +41 -0
  368. package/dist/plot/index.js +39 -0
  369. package/dist/plot/interactions.d.ts +12 -0
  370. package/dist/plot/interactions.js +101 -0
  371. package/dist/plot/layout.d.ts +78 -0
  372. package/dist/plot/layout.js +273 -0
  373. package/dist/plot/reference-line.d.ts +60 -0
  374. package/dist/plot/reference-line.js +314 -0
  375. package/dist/plot/scales.d.ts +48 -0
  376. package/dist/plot/scales.js +481 -0
  377. package/dist/plot/svg.d.ts +1 -0
  378. package/dist/plot/svg.js +11 -0
  379. package/dist/plot/types.d.ts +831 -0
  380. package/dist/plot/types.js +99 -0
  381. package/dist/plot/utils/label-placement.d.ts +68 -0
  382. package/dist/plot/utils/label-placement.js +326 -0
  383. package/dist/plot/utils/series-visibility.d.ts +15 -0
  384. package/dist/plot/utils/series-visibility.js +85 -0
  385. package/dist/plot/utils.d.ts +1 -0
  386. package/dist/plot/utils.js +14 -0
  387. package/dist/rdf/RdfPlot.svelte +247 -0
  388. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  389. package/dist/rdf/calc-rdf.d.ts +4 -0
  390. package/dist/rdf/calc-rdf.js +111 -0
  391. package/dist/rdf/index.d.ts +23 -0
  392. package/dist/rdf/index.js +2 -0
  393. package/dist/sanitize.d.ts +6 -0
  394. package/dist/sanitize.js +116 -0
  395. package/dist/settings.d.ts +255 -0
  396. package/dist/settings.js +1132 -0
  397. package/dist/spectral/Bands.svelte +1040 -0
  398. package/dist/spectral/Bands.svelte.d.ts +40 -0
  399. package/dist/spectral/BandsAndDos.svelte +134 -0
  400. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  401. package/dist/spectral/BrillouinBandsDos.svelte +252 -0
  402. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  403. package/dist/spectral/Dos.svelte +697 -0
  404. package/dist/spectral/Dos.svelte.d.ts +29 -0
  405. package/dist/spectral/helpers.d.ts +119 -0
  406. package/dist/spectral/helpers.js +1032 -0
  407. package/dist/spectral/index.d.ts +6 -0
  408. package/dist/spectral/index.js +6 -0
  409. package/dist/spectral/types.d.ts +84 -0
  410. package/dist/spectral/types.js +2 -0
  411. package/dist/state.svelte.d.ts +25 -0
  412. package/dist/state.svelte.js +45 -0
  413. package/dist/structure/Arrow.svelte +72 -0
  414. package/dist/structure/Arrow.svelte.d.ts +15 -0
  415. package/dist/structure/AtomLegend.svelte +815 -0
  416. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  417. package/dist/structure/Bond.svelte +140 -0
  418. package/dist/structure/Bond.svelte.d.ts +9 -0
  419. package/dist/structure/CanvasTooltip.svelte +33 -0
  420. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  421. package/dist/structure/CellSelect.svelte +349 -0
  422. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  423. package/dist/structure/Cylinder.svelte +45 -0
  424. package/dist/structure/Cylinder.svelte.d.ts +10 -0
  425. package/dist/structure/Lattice.svelte +196 -0
  426. package/dist/structure/Lattice.svelte.d.ts +17 -0
  427. package/dist/structure/Structure.svelte +2248 -0
  428. package/dist/structure/Structure.svelte.d.ts +89 -0
  429. package/dist/structure/StructureControls.svelte +1273 -0
  430. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  431. package/dist/structure/StructureExportPane.svelte +252 -0
  432. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  433. package/dist/structure/StructureInfoPane.svelte +737 -0
  434. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  435. package/dist/structure/StructureScene.svelte +2255 -0
  436. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  437. package/dist/structure/atom-properties.d.ts +37 -0
  438. package/dist/structure/atom-properties.js +200 -0
  439. package/dist/structure/bond-order-perception.d.ts +13 -0
  440. package/dist/structure/bond-order-perception.js +384 -0
  441. package/dist/structure/bonding.d.ts +68 -0
  442. package/dist/structure/bonding.js +696 -0
  443. package/dist/structure/export.d.ts +20 -0
  444. package/dist/structure/export.js +727 -0
  445. package/dist/structure/index.d.ts +126 -0
  446. package/dist/structure/index.js +169 -0
  447. package/dist/structure/label-placement.d.ts +14 -0
  448. package/dist/structure/label-placement.js +72 -0
  449. package/dist/structure/measure.d.ts +6 -0
  450. package/dist/structure/measure.js +29 -0
  451. package/dist/structure/parse.d.ts +66 -0
  452. package/dist/structure/parse.js +1392 -0
  453. package/dist/structure/partial-occupancy.d.ts +25 -0
  454. package/dist/structure/partial-occupancy.js +99 -0
  455. package/dist/structure/pbc.d.ts +9 -0
  456. package/dist/structure/pbc.js +123 -0
  457. package/dist/structure/supercell.d.ts +8 -0
  458. package/dist/structure/supercell.js +170 -0
  459. package/dist/structure/validation.d.ts +2 -0
  460. package/dist/structure/validation.js +10 -0
  461. package/dist/symmetry/SymmetryStats.svelte +226 -0
  462. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  463. package/dist/symmetry/WyckoffTable.svelte +120 -0
  464. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  465. package/dist/symmetry/cell-transform.d.ts +12 -0
  466. package/dist/symmetry/cell-transform.js +91 -0
  467. package/dist/symmetry/index.d.ts +43 -0
  468. package/dist/symmetry/index.js +228 -0
  469. package/dist/symmetry/spacegroups.d.ts +9 -0
  470. package/dist/symmetry/spacegroups.js +394 -0
  471. package/dist/table/HeatmapTable.svelte +1833 -0
  472. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  473. package/dist/table/ToggleMenu.svelte +385 -0
  474. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  475. package/dist/table/index.d.ts +74 -0
  476. package/dist/table/index.js +38 -0
  477. package/dist/theme/ThemeControl.svelte +53 -0
  478. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  479. package/dist/theme/index.d.ts +29 -0
  480. package/dist/theme/index.js +79 -0
  481. package/dist/time.d.ts +4 -0
  482. package/dist/time.js +70 -0
  483. package/dist/tooltip/TooltipContent.svelte +58 -0
  484. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  485. package/dist/tooltip/index.d.ts +2 -0
  486. package/dist/tooltip/index.js +1 -0
  487. package/dist/tooltip/types.d.ts +8 -0
  488. package/dist/tooltip/types.js +1 -0
  489. package/dist/trajectory/Trajectory.svelte +1545 -0
  490. package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
  491. package/dist/trajectory/TrajectoryError.svelte +128 -0
  492. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  493. package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
  494. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  495. package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
  496. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  497. package/dist/trajectory/constants.d.ts +6 -0
  498. package/dist/trajectory/constants.js +7 -0
  499. package/dist/trajectory/extract.d.ts +5 -0
  500. package/dist/trajectory/extract.js +162 -0
  501. package/dist/trajectory/format-detect.d.ts +9 -0
  502. package/dist/trajectory/format-detect.js +76 -0
  503. package/dist/trajectory/frame-reader.d.ts +17 -0
  504. package/dist/trajectory/frame-reader.js +332 -0
  505. package/dist/trajectory/helpers.d.ts +15 -0
  506. package/dist/trajectory/helpers.js +164 -0
  507. package/dist/trajectory/index.d.ts +63 -0
  508. package/dist/trajectory/index.js +126 -0
  509. package/dist/trajectory/parse/ase.d.ts +2 -0
  510. package/dist/trajectory/parse/ase.js +73 -0
  511. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  512. package/dist/trajectory/parse/hdf5.js +127 -0
  513. package/dist/trajectory/parse/index.d.ts +12 -0
  514. package/dist/trajectory/parse/index.js +298 -0
  515. package/dist/trajectory/parse/lammps.d.ts +5 -0
  516. package/dist/trajectory/parse/lammps.js +179 -0
  517. package/dist/trajectory/parse/vasp.d.ts +2 -0
  518. package/dist/trajectory/parse/vasp.js +68 -0
  519. package/dist/trajectory/parse/xyz.d.ts +2 -0
  520. package/dist/trajectory/parse/xyz.js +110 -0
  521. package/dist/trajectory/plotting.d.ts +28 -0
  522. package/dist/trajectory/plotting.js +423 -0
  523. package/dist/trajectory/types.d.ts +11 -0
  524. package/dist/trajectory/types.js +1 -0
  525. package/dist/utils.d.ts +6 -0
  526. package/dist/utils.js +45 -0
  527. package/dist/xrd/XrdPlot.svelte +615 -0
  528. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  529. package/dist/xrd/broadening.d.ts +20 -0
  530. package/dist/xrd/broadening.js +97 -0
  531. package/dist/xrd/calc-xrd.d.ts +37 -0
  532. package/dist/xrd/calc-xrd.js +336 -0
  533. package/dist/xrd/index.d.ts +37 -0
  534. package/dist/xrd/index.js +4 -0
  535. package/dist/xrd/parse.d.ts +13 -0
  536. package/dist/xrd/parse.js +749 -0
  537. package/license +1 -1
  538. package/package.json +232 -1457
  539. package/readme.md +98 -171
  540. package/.vscode/launch.json +0 -13
  541. package/.vscodeignore +0 -7
  542. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  543. package/dist/assets/browser-DdDecX_W.js +0 -1
  544. package/dist/assets/export-qgn-H9y6.js +0 -2
  545. package/dist/assets/main-DiKYzti2.css +0 -1
  546. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  547. package/dist/extension.js +0 -31293
  548. package/dist/src/lib/FilePicker.svelte +0 -360
  549. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  550. package/dist/src/lib/api/mp.ts +0 -26
  551. package/dist/src/lib/api/optimade.ts +0 -204
  552. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  553. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  554. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  555. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  556. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  557. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  558. package/dist/src/lib/brillouin/compute.ts +0 -529
  559. package/dist/src/lib/brillouin/index.ts +0 -8
  560. package/dist/src/lib/brillouin/types.ts +0 -51
  561. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  562. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  563. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  564. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  565. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  566. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  567. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  568. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  569. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  570. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  571. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  572. package/dist/src/lib/colors/index.ts +0 -249
  573. package/dist/src/lib/composition/BarChart.svelte +0 -297
  574. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  575. package/dist/src/lib/composition/Composition.svelte +0 -165
  576. package/dist/src/lib/composition/Formula.svelte +0 -268
  577. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  578. package/dist/src/lib/composition/PieChart.svelte +0 -323
  579. package/dist/src/lib/composition/format.ts +0 -155
  580. package/dist/src/lib/composition/index.ts +0 -37
  581. package/dist/src/lib/composition/parse.ts +0 -605
  582. package/dist/src/lib/constants.ts +0 -134
  583. package/dist/src/lib/controls.ts +0 -42
  584. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  585. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  586. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  587. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  588. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  589. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  590. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  591. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  592. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  593. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  594. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  595. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  596. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  597. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  598. package/dist/src/lib/convex-hull/index.ts +0 -202
  599. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  600. package/dist/src/lib/convex-hull/types.ts +0 -267
  601. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  602. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  603. package/dist/src/lib/coordination/index.ts +0 -9
  604. package/dist/src/lib/effects.svelte.ts +0 -48
  605. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  606. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  607. package/dist/src/lib/element/ElementStats.svelte +0 -80
  608. package/dist/src/lib/element/ElementTile.svelte +0 -484
  609. package/dist/src/lib/element/data.ts +0 -14
  610. package/dist/src/lib/element/index.ts +0 -8
  611. package/dist/src/lib/element/types.ts +0 -62
  612. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  613. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  614. package/dist/src/lib/feedback/index.ts +0 -4
  615. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  616. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  617. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  618. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  619. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  620. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  621. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  622. package/dist/src/lib/fermi-surface/export.ts +0 -64
  623. package/dist/src/lib/fermi-surface/index.ts +0 -14
  624. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  625. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  626. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  627. package/dist/src/lib/fermi-surface/types.ts +0 -159
  628. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  629. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  630. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  631. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  632. package/dist/src/lib/icons.ts +0 -650
  633. package/dist/src/lib/index.ts +0 -61
  634. package/dist/src/lib/io/decompress.ts +0 -92
  635. package/dist/src/lib/io/export.ts +0 -385
  636. package/dist/src/lib/io/fetch.ts +0 -46
  637. package/dist/src/lib/io/file-drop.ts +0 -51
  638. package/dist/src/lib/io/index.ts +0 -7
  639. package/dist/src/lib/io/is-binary.ts +0 -24
  640. package/dist/src/lib/io/types.ts +0 -8
  641. package/dist/src/lib/io/url-drop.ts +0 -141
  642. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  643. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  644. package/dist/src/lib/isosurface/index.ts +0 -7
  645. package/dist/src/lib/isosurface/parse.ts +0 -656
  646. package/dist/src/lib/isosurface/slice.ts +0 -175
  647. package/dist/src/lib/isosurface/types.ts +0 -309
  648. package/dist/src/lib/labels.ts +0 -320
  649. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  650. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  651. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  652. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  653. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  654. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  655. package/dist/src/lib/layout/fullscreen.ts +0 -65
  656. package/dist/src/lib/layout/index.ts +0 -11
  657. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  658. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  659. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  660. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  661. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  662. package/dist/src/lib/marching-cubes.ts +0 -614
  663. package/dist/src/lib/math.ts +0 -1081
  664. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  665. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  666. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  667. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  668. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  669. package/dist/src/lib/overlays/index.ts +0 -3
  670. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  671. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  672. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  673. package/dist/src/lib/periodic-table/index.ts +0 -12
  674. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  675. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  676. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  677. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  678. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  679. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  680. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  681. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  682. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  683. package/dist/src/lib/phase-diagram/index.ts +0 -13
  684. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  685. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  686. package/dist/src/lib/phase-diagram/types.ts +0 -144
  687. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  688. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  689. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  690. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  691. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  692. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  693. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  694. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  695. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  696. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  697. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  698. package/dist/src/lib/plot/Line.svelte +0 -84
  699. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  700. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  701. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  702. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  703. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  704. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  705. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  706. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  707. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  708. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  709. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  710. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  711. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  712. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  713. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  714. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  715. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  716. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  717. package/dist/src/lib/plot/auto-place.ts +0 -184
  718. package/dist/src/lib/plot/axis-utils.ts +0 -122
  719. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  720. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  721. package/dist/src/lib/plot/data-transform.ts +0 -69
  722. package/dist/src/lib/plot/defaults.ts +0 -9
  723. package/dist/src/lib/plot/fill-utils.ts +0 -494
  724. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  725. package/dist/src/lib/plot/index.ts +0 -53
  726. package/dist/src/lib/plot/interactions.ts +0 -119
  727. package/dist/src/lib/plot/layout.ts +0 -425
  728. package/dist/src/lib/plot/reference-line.ts +0 -426
  729. package/dist/src/lib/plot/scales.ts +0 -654
  730. package/dist/src/lib/plot/svg.ts +0 -23
  731. package/dist/src/lib/plot/types.ts +0 -1144
  732. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  733. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  734. package/dist/src/lib/plot/utils.ts +0 -11
  735. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  736. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  737. package/dist/src/lib/rdf/index.ts +0 -27
  738. package/dist/src/lib/sanitize.ts +0 -126
  739. package/dist/src/lib/settings.ts +0 -1479
  740. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  741. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  742. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  743. package/dist/src/lib/spectral/Dos.svelte +0 -697
  744. package/dist/src/lib/spectral/helpers.ts +0 -1381
  745. package/dist/src/lib/spectral/index.ts +0 -8
  746. package/dist/src/lib/spectral/types.ts +0 -112
  747. package/dist/src/lib/state.svelte.ts +0 -64
  748. package/dist/src/lib/structure/Arrow.svelte +0 -72
  749. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  750. package/dist/src/lib/structure/Bond.svelte +0 -140
  751. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  752. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  753. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  754. package/dist/src/lib/structure/Lattice.svelte +0 -196
  755. package/dist/src/lib/structure/Structure.svelte +0 -2248
  756. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  757. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  758. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  759. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  760. package/dist/src/lib/structure/atom-properties.ts +0 -316
  761. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  762. package/dist/src/lib/structure/bonding.ts +0 -944
  763. package/dist/src/lib/structure/export.ts +0 -861
  764. package/dist/src/lib/structure/index.ts +0 -291
  765. package/dist/src/lib/structure/label-placement.ts +0 -130
  766. package/dist/src/lib/structure/measure.ts +0 -45
  767. package/dist/src/lib/structure/parse.ts +0 -1705
  768. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  769. package/dist/src/lib/structure/pbc.ts +0 -164
  770. package/dist/src/lib/structure/supercell.ts +0 -226
  771. package/dist/src/lib/structure/validation.ts +0 -11
  772. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  773. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  774. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  775. package/dist/src/lib/symmetry/index.ts +0 -348
  776. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  777. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  778. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  779. package/dist/src/lib/table/index.ts +0 -139
  780. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  781. package/dist/src/lib/theme/index.ts +0 -107
  782. package/dist/src/lib/time.ts +0 -71
  783. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  784. package/dist/src/lib/tooltip/index.ts +0 -2
  785. package/dist/src/lib/tooltip/types.ts +0 -13
  786. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  787. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  788. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  789. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  790. package/dist/src/lib/trajectory/constants.ts +0 -7
  791. package/dist/src/lib/trajectory/extract.ts +0 -196
  792. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  793. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  794. package/dist/src/lib/trajectory/helpers.ts +0 -217
  795. package/dist/src/lib/trajectory/index.ts +0 -218
  796. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  797. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  798. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  799. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  800. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  801. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  802. package/dist/src/lib/trajectory/plotting.ts +0 -599
  803. package/dist/src/lib/trajectory/types.ts +0 -13
  804. package/dist/src/lib/utils.ts +0 -56
  805. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  806. package/dist/src/lib/xrd/broadening.ts +0 -130
  807. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  808. package/dist/src/lib/xrd/index.ts +0 -38
  809. package/dist/src/lib/xrd/parse.ts +0 -858
  810. package/dist/webview.js +0 -29421
  811. package/icon.png +0 -0
  812. package/matterviz-0.3.2.vsix +0 -0
  813. package/matterviz-0.3.4.vsix +0 -0
  814. package/matterviz-0.3.5.vsix +0 -0
  815. package/scripts/sync-config.ts +0 -101
  816. package/src/declarations.d.ts +0 -2
  817. package/src/extension.ts +0 -972
  818. package/src/node-io.ts +0 -65
  819. package/src/types.ts +0 -17
  820. package/src/webview/JsonBrowser.svelte +0 -1079
  821. package/src/webview/PlotPanel.svelte +0 -346
  822. package/src/webview/detect.ts +0 -444
  823. package/src/webview/main.ts +0 -764
  824. package/src/webview/plot-utils.ts +0 -250
  825. package/test-fixtures/all-viz-types.json.gz +0 -0
  826. package/test-fixtures/plot-demo-data.json.gz +0 -0
  827. package/tests/detect.test.ts +0 -604
  828. package/tests/extension.test.ts +0 -2041
  829. package/tests/node-io.test.ts +0 -39
  830. package/tests/plot-utils.test.ts +0 -302
  831. package/tests/vite-plugin-json-gz.test.ts +0 -114
  832. package/tests/vscode-mock.ts +0 -18
  833. package/tests/webview.test.ts +0 -231
  834. package/tsconfig.json +0 -20
  835. package/vite-plugin-json-gz.ts +0 -29
  836. package/vite.config.ts +0 -34
  837. package/vite.extension.config.ts +0 -34
  838. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  839. /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
  840. /package/dist/{src/lib/app.css → app.css} +0 -0
  841. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  842. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  843. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  844. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  845. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  846. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  847. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  848. /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
  849. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  850. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  851. /package/dist/{src/lib/element → element}/data.json +0 -0
  852. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  853. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  854. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  855. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  856. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  857. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  858. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  859. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  860. /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
  861. /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
  862. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  863. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -1,1086 +0,0 @@
1
- <script lang="ts">
2
- import { format_num } from '$lib/labels'
3
- import {
4
- FullscreenToggle,
5
- set_fullscreen_bg,
6
- setup_fullscreen_effect,
7
- } from '$lib/layout'
8
- import { sanitize_svg } from '$lib/sanitize'
9
- import { compute_bounding_box_2d, polygon_centroid, type Vec2 } from '$lib/math'
10
- import type { AxisConfig } from '$lib/plot'
11
- import { constrain_tooltip_position } from '$lib/plot/layout'
12
- import { scaleLinear } from 'd3-scale'
13
- import type { ComponentProps, Snippet } from 'svelte'
14
- import type { HTMLAttributes } from 'svelte/elements'
15
- import { build_diagram } from './build-diagram'
16
- import type { DiagramInput } from './diagram-input'
17
- import PhaseDiagramControls from './PhaseDiagramControls.svelte'
18
- import PhaseDiagramEditorPane from './PhaseDiagramEditorPane.svelte'
19
- import PhaseDiagramExportPane from './PhaseDiagramExportPane.svelte'
20
- import PhaseDiagramTooltip from './PhaseDiagramTooltip.svelte'
21
- import { parse_phase_diagram_svg } from './svg-to-diagram'
22
- import type {
23
- LeverRuleMode,
24
- PhaseDiagramConfig,
25
- PhaseDiagramData,
26
- PhaseDiagramTooltipConfig,
27
- PhaseHoverInfo,
28
- PhaseRegion,
29
- TempUnit,
30
- } from './types'
31
- import {
32
- calculate_lever_rule,
33
- calculate_vertical_lever_rule,
34
- compute_label_properties,
35
- compute_x_domain,
36
- convert_temp,
37
- find_phase_at_point,
38
- format_composition,
39
- format_formula_svg,
40
- format_hover_info_text,
41
- format_label_svg,
42
- generate_boundary_path,
43
- generate_region_path,
44
- get_multi_phase_gradient,
45
- get_phase_color,
46
- merge_phase_diagram_config,
47
- PHASE_COLOR_RGB,
48
- transform_vertices,
49
- } from './utils'
50
-
51
- let {
52
- data,
53
- config = $bindable({}),
54
- on_phase_hover,
55
- fullscreen = $bindable(false),
56
- wrapper = $bindable(),
57
- hovered_region = $bindable(null),
58
- show_boundaries = $bindable(true),
59
- show_labels = $bindable(true),
60
- show_special_points = $bindable(true),
61
- show_grid = $bindable(true),
62
- show_component_labels = $bindable(true),
63
- fullscreen_toggle = true,
64
- enable_export = true,
65
- show_controls = true,
66
- display_temp_unit = $bindable(),
67
- controls_open = $bindable(false),
68
- controls_props = {},
69
- export_pane_open = $bindable(false),
70
- png_dpi = $bindable(150),
71
- export_filename = `phase-diagram`,
72
- lever_rule_mode = $bindable(`horizontal`),
73
- diagram_input = $bindable<DiagramInput | null>(null),
74
- editor_open = $bindable(false),
75
- x_axis = $bindable({}),
76
- y_axis = $bindable({}),
77
- tooltip,
78
- children,
79
- ...rest
80
- }: HTMLAttributes<HTMLDivElement> & {
81
- data: PhaseDiagramData
82
- config?: Partial<PhaseDiagramConfig>
83
- // Hover callback
84
- on_phase_hover?: (info: PhaseHoverInfo | null) => void
85
- // Bindable state
86
- fullscreen?: boolean
87
- wrapper?: HTMLDivElement
88
- hovered_region?: PhaseRegion | null
89
- // Display options
90
- show_boundaries?: boolean
91
- show_labels?: boolean
92
- show_special_points?: boolean
93
- show_grid?: boolean
94
- show_component_labels?: boolean
95
- fullscreen_toggle?: boolean
96
- enable_export?: boolean
97
- show_controls?: boolean
98
- // Temperature display unit (can differ from data.temperature_unit)
99
- display_temp_unit?: `K` | `°C` | `°F`
100
- // Controls pane
101
- controls_open?: boolean
102
- controls_props?: Partial<ComponentProps<typeof PhaseDiagramControls>>
103
- // Export options
104
- export_pane_open?: boolean
105
- png_dpi?: number
106
- export_filename?: string
107
- // Lever rule mode (horizontal = composition tie-line, vertical = temperature tie-line)
108
- lever_rule_mode?: LeverRuleMode
109
- // Diagram input editor (for SVG drop editing)
110
- diagram_input?: DiagramInput | null
111
- editor_open?: boolean
112
- // Axis configuration
113
- x_axis?: AxisConfig
114
- y_axis?: AxisConfig
115
- // Custom tooltip - can be a snippet (replaces default), config object (adds prefix/suffix),
116
- // or false to disable tooltip entirely
117
- tooltip?: Snippet<[PhaseHoverInfo]> | PhaseDiagramTooltipConfig | false
118
- children?: Snippet<
119
- [{ width: number; height: number; fullscreen: boolean }]
120
- >
121
- } = $props()
122
-
123
- // Shared icon/toggle styling for controls and export panes
124
- const pane_icon_style = `width: 14px; height: 14px`
125
- const pane_toggle_props = { style: `padding: 0` }
126
-
127
- // Rebuild diagram data when diagram_input changes ($derived auto-recomputes)
128
- const rebuilt_data = $derived.by(() => {
129
- if (!diagram_input) return null
130
- try {
131
- return build_diagram(diagram_input)
132
- } catch (error) {
133
- console.warn(`Failed to rebuild diagram from input:`, error)
134
- return null
135
- }
136
- })
137
-
138
- // Override from direct PhaseDiagramData edits in the editor pane
139
- let data_override = $state<PhaseDiagramData | null>(null)
140
-
141
- // Clear data_override when source data changes (e.g. new SVG dropped or data prop updated)
142
- $effect(() => {
143
- if (diagram_input || data) data_override = null
144
- })
145
-
146
- // Use editor override first (clears rebuilt_data path), then rebuilt, then data prop
147
- const effective_data = $derived(data_override ?? rebuilt_data ?? data)
148
-
149
- // Handle SVG file drop directly on the component
150
- function handle_svg_drop(event: DragEvent) {
151
- event.preventDefault()
152
- const file = event.dataTransfer?.files[0]
153
- if (!file || (!file.name.endsWith(`.svg`) && file.type !== `image/svg+xml`)) {
154
- return
155
- }
156
- const reader = new FileReader()
157
- reader.addEventListener(`load`, () => {
158
- try {
159
- diagram_input = parse_phase_diagram_svg(reader.result as string)
160
- } catch (error) {
161
- console.error(`Failed to parse dropped SVG:`, error)
162
- }
163
- })
164
- reader.readAsText(file)
165
- }
166
-
167
- // Merge config with centralized defaults using shared helper
168
- const merged_config = $derived(merge_phase_diagram_config(config))
169
-
170
- // Dimensions - use container size directly, no fallback to avoid layout shift
171
- let width = $state(0)
172
- let height = $state(0)
173
-
174
- // Margin from config
175
- const margin = $derived(merged_config.margin)
176
-
177
- // Pre-computed plot edges to avoid repeated calculations
178
- const left = $derived(margin.l)
179
- const right = $derived(width - margin.r)
180
- const top = $derived(margin.t)
181
- const bottom = $derived(height - margin.b)
182
- const plot_width = $derived(right - left)
183
- const plot_height = $derived(bottom - top)
184
-
185
- // Compute x domain from data extent, x_axis.range override, or default [0, 1]
186
- // Auto-extends to 0/1 when edge regions contain a pure component
187
- const x_domain = $derived(compute_x_domain(x_axis.range, effective_data))
188
-
189
- // Scales
190
- const x_scale = $derived(scaleLinear().domain(x_domain).range([left, right]))
191
-
192
- // Temperature units (guard for initial render when data may be undefined)
193
- const data_temp_unit = $derived<TempUnit>(
194
- (effective_data?.temperature_unit ?? `K`) as TempUnit,
195
- )
196
- const temp_unit = $derived<TempUnit>(display_temp_unit ?? data_temp_unit)
197
- const temp_range = $derived(effective_data?.temperature_range ?? [0, 1000])
198
-
199
- // Convert temperature range for display
200
- const display_temp_range = $derived<Vec2>([
201
- convert_temp(temp_range[0], data_temp_unit, temp_unit),
202
- convert_temp(temp_range[1], data_temp_unit, temp_unit),
203
- ])
204
-
205
- // y_scale maps data temperatures to SVG coordinates
206
- // We keep this in data units so region vertices render correctly
207
- const y_scale = $derived(
208
- scaleLinear().domain(temp_range).range([bottom, top]),
209
- )
210
-
211
- // y_scale_display maps display temperatures (after unit conversion) to SVG
212
- // Used for axis labels and ticks
213
- const y_scale_display = $derived(
214
- scaleLinear().domain(display_temp_range).range([bottom, top]),
215
- )
216
-
217
- // Generate tick values using d3 scale's built-in ticks method
218
- const x_ticks = $derived(
219
- x_scale.ticks(typeof x_axis.ticks === `number` ? x_axis.ticks : 5),
220
- )
221
- // Use display scale for y ticks so they show converted temperatures
222
- const y_ticks = $derived(
223
- y_scale_display.ticks(typeof y_axis.ticks === `number` ? y_axis.ticks : 6),
224
- )
225
-
226
- // Transform regions to SVG coordinates
227
- const transformed_regions = $derived(
228
- (effective_data?.regions ?? []).map((region) => {
229
- const svg_vertices = transform_vertices(region.vertices, x_scale, y_scale)
230
- const { width: box_width, height: box_height } = compute_bounding_box_2d(svg_vertices)
231
- const label_props = compute_label_properties(
232
- region.name,
233
- { width: box_width, height: box_height },
234
- merged_config.font_size,
235
- )
236
- // Get gradient stops for multi-phase regions (2+, supports 3+ phases)
237
- const gradient = get_multi_phase_gradient(region.name)
238
- const x_coords = svg_vertices.map(([vx]) => vx)
239
- return {
240
- ...region,
241
- svg_path: generate_region_path(svg_vertices),
242
- label_pos: region.label_position
243
- ? [x_scale(region.label_position[0]), y_scale(region.label_position[1])]
244
- : polygon_centroid(svg_vertices),
245
- label_rotation: label_props.rotation,
246
- label_lines: label_props.lines,
247
- label_scale: label_props.scale,
248
- gradient,
249
- x_min: Math.min(...x_coords),
250
- x_max: Math.max(...x_coords),
251
- }
252
- }),
253
- )
254
-
255
- // Transform boundaries to SVG coordinates
256
- const transformed_boundaries = $derived(
257
- (effective_data?.boundaries ?? []).map((boundary) => ({
258
- ...boundary,
259
- svg_path: generate_boundary_path(
260
- transform_vertices(boundary.points, x_scale, y_scale),
261
- ),
262
- })),
263
- )
264
-
265
- // Transform special points to SVG coordinates
266
- const transformed_special_points = $derived(
267
- (effective_data?.special_points ?? []).map((point) => ({
268
- ...point,
269
- svg_x: x_scale(point.position[0]),
270
- svg_y: y_scale(point.position[1]),
271
- })),
272
- )
273
-
274
- // Hover state
275
- let hover_info = $state<PhaseHoverInfo | null>(null)
276
- // Locked tooltip state (click to lock, click again to unlock)
277
- let locked_hover_info = $state<PhaseHoverInfo | null>(null)
278
-
279
- // Clear hover state helper (used in multiple places)
280
- function clear_hover() {
281
- hover_info = null
282
- hovered_region = null
283
- on_phase_hover?.(null)
284
- }
285
-
286
- // Handle click to lock/unlock tooltip
287
- function handle_click() {
288
- if (locked_hover_info) {
289
- // Unlock if already locked
290
- locked_hover_info = null
291
- } else if (hover_info) {
292
- // Lock current hover info
293
- locked_hover_info = { ...hover_info }
294
- }
295
- }
296
-
297
- // Effective hover info - locked takes precedence
298
- const effective_hover_info = $derived(locked_hover_info ?? hover_info)
299
-
300
- // Copy feedback state
301
- let copy_feedback_visible = $state(false)
302
- let copy_feedback_pos = $state({ x: 0, y: 0 })
303
- let copy_feedback_timeout: ReturnType<typeof setTimeout> | undefined
304
-
305
- // Handle double-click to copy tooltip data
306
- async function handle_double_click(event: MouseEvent) {
307
- if (!hover_info) return
308
- try {
309
- await navigator.clipboard.writeText(
310
- format_hover_info_text(
311
- hover_info,
312
- temp_unit,
313
- comp_unit,
314
- component_a,
315
- component_b,
316
- data_temp_unit,
317
- lever_rule_mode,
318
- ),
319
- )
320
- if (copy_feedback_timeout) clearTimeout(copy_feedback_timeout)
321
- copy_feedback_pos = { x: event.clientX, y: event.clientY }
322
- copy_feedback_visible = true
323
- copy_feedback_timeout = setTimeout(() => {
324
- copy_feedback_visible = false
325
- copy_feedback_timeout = undefined
326
- }, 1500)
327
- } catch (error) {
328
- console.error(`Failed to copy phase data:`, error)
329
- }
330
- }
331
-
332
- // Tooltip element reference for measuring actual size
333
- let tooltip_el = $state<HTMLDivElement | null>(null)
334
-
335
- // Tooltip positioning using shared utility (uses effective_hover_info for locked state)
336
- const tooltip_pos = $derived.by(() => {
337
- const info = effective_hover_info
338
- if (!info) return { x: 0, y: 0 }
339
- return constrain_tooltip_position(
340
- info.position.x,
341
- info.position.y,
342
- tooltip_el?.offsetWidth ?? 200,
343
- tooltip_el?.offsetHeight ?? 150,
344
- globalThis.innerWidth ?? 1000,
345
- globalThis.innerHeight ?? 800,
346
- { offset: 15 },
347
- )
348
- })
349
-
350
- // Find nearest special point within threshold (in SVG pixels)
351
- function find_nearby_special_point(
352
- svg_x: number,
353
- svg_y: number,
354
- threshold: number = 20,
355
- ) {
356
- let nearest: (typeof transformed_special_points)[0] | null = null
357
- let min_dist = threshold
358
- for (const point of transformed_special_points) {
359
- const dist = Math.hypot(point.svg_x - svg_x, point.svg_y - svg_y)
360
- if (dist < min_dist) {
361
- min_dist = dist
362
- nearest = point
363
- }
364
- }
365
- return nearest
366
- }
367
-
368
- // Pointer move handler (unified mouse/touch via Pointer Events API)
369
- function handle_pointer_move(
370
- event: PointerEvent & { currentTarget: SVGElement },
371
- ) {
372
- const svg = event.currentTarget
373
- const rect = svg.getBoundingClientRect()
374
- const svg_x = event.clientX - rect.left
375
- const svg_y = event.clientY - rect.top
376
-
377
- // Check if within plot area
378
- if (
379
- svg_x < left || svg_x > right || svg_y < top || svg_y > bottom ||
380
- !effective_data
381
- ) {
382
- clear_hover()
383
- return
384
- }
385
-
386
- // Convert to data coordinates and find phase
387
- const composition = x_scale.invert(svg_x)
388
- const temperature = y_scale.invert(svg_y)
389
- const region = find_phase_at_point(composition, temperature, effective_data)
390
-
391
- // Check for nearby special point
392
- const nearby_special = show_special_points
393
- ? find_nearby_special_point(svg_x, svg_y)
394
- : null
395
-
396
- if (region) {
397
- hovered_region = region
398
- hover_info = {
399
- region,
400
- composition,
401
- temperature,
402
- position: { x: event.clientX, y: event.clientY },
403
- lever_rule: calculate_lever_rule(region, composition, temperature) ||
404
- undefined,
405
- vertical_lever_rule:
406
- calculate_vertical_lever_rule(region, composition, temperature) ||
407
- undefined,
408
- special_point: nearby_special || undefined,
409
- }
410
- on_phase_hover?.(hover_info)
411
- } else {
412
- clear_hover()
413
- }
414
- }
415
-
416
- function handle_pointer_leave(event: PointerEvent) {
417
- // Don't clear on touch lift (allows reading tooltip) or when locked
418
- if (event.pointerType === `touch` || locked_hover_info) return
419
- clear_hover()
420
- }
421
-
422
- // Document-level keyboard shortcuts
423
- function handle_doc_keydown(event: KeyboardEvent) {
424
- if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === `E`) {
425
- event.preventDefault()
426
- export_pane_open = !export_pane_open
427
- } else if (event.key === `Escape` && locked_hover_info) {
428
- locked_hover_info = null
429
- }
430
- }
431
-
432
- // SVG keyboard handler (Enter/Space to toggle lock)
433
- function handle_svg_keydown(event: KeyboardEvent) {
434
- if (event.key === `Enter` || event.key === ` `) {
435
- event.preventDefault()
436
- handle_click()
437
- }
438
- }
439
-
440
- // Fullscreen handling
441
- $effect(() => {
442
- setup_fullscreen_effect(fullscreen, wrapper)
443
- set_fullscreen_bg(wrapper, fullscreen, `--phase-diagram-bg-fullscreen`)
444
- })
445
-
446
- // Cleanup timeout on unmount to prevent memory leaks
447
- $effect(() => {
448
- return () => {
449
- if (copy_feedback_timeout) clearTimeout(copy_feedback_timeout)
450
- }
451
- })
452
-
453
- // Component labels (guard for initial render when data may be undefined)
454
- const component_a = $derived(effective_data?.components?.[0] ?? ``)
455
- const component_b = $derived(effective_data?.components?.[1] ?? ``)
456
- const comp_unit = $derived(effective_data?.composition_unit ?? `at%`)
457
-
458
- // Pseudo-binary support: format compound names with subscripts when enabled
459
- const use_subscripts = $derived(
460
- effective_data?.pseudo_binary?.use_subscripts ?? true,
461
- )
462
-
463
- // Formatted component labels for SVG axis labels (with tspan subscripts if compound)
464
- const component_a_svg = $derived(format_formula_svg(component_a, use_subscripts))
465
- const component_b_svg = $derived(format_formula_svg(component_b, use_subscripts))
466
-
467
- // Default x-axis label as a single string (avoids mixing plain text with {@html})
468
- const default_x_axis_label = $derived.by(() => {
469
- const prefix = comp_unit === `fraction` ? `x ` : ``
470
- const unit = comp_unit === `fraction` ? `mole fraction` : comp_unit
471
- return `${prefix}${component_b_svg} (${unit})`
472
- })
473
- </script>
474
-
475
- <!-- Grid lines snippet for DRY rendering -->
476
- {#snippet grid_lines(ticks: number[], vertical: boolean)}
477
- {#each ticks as tick (tick)}
478
- <line
479
- x1={vertical ? x_scale(tick) : left}
480
- y1={vertical ? top : y_scale_display(tick)}
481
- x2={vertical ? x_scale(tick) : right}
482
- y2={vertical ? bottom : y_scale_display(tick)}
483
- stroke={merged_config.colors.grid}
484
- stroke-dasharray="4"
485
- />
486
- {/each}
487
- {/snippet}
488
-
489
- <!-- Tie-line snippet: renders line with white outline, phase endpoints, and cursor marker -->
490
- {#snippet tie_line_viz(
491
- x1: number,
492
- y1: number,
493
- x2: number,
494
- y2: number,
495
- endpoints: Array<{ cx: number; cy: number; color: string }>,
496
- cursor_cx: number,
497
- cursor_cy: number,
498
- )}
499
- {@const tl = merged_config.tie_line}
500
- <g class="tie-line" class:locked={locked_hover_info}>
501
- {#each [`white`, `rgb(${PHASE_COLOR_RGB.tie_line})`] as stroke (stroke)}
502
- <line
503
- {x1}
504
- {y1}
505
- {x2}
506
- {y2}
507
- {stroke}
508
- stroke-width={tl.stroke_width + (stroke === `white` ? 1 : 0)}
509
- stroke-linecap="round"
510
- />
511
- {/each}
512
- {#each endpoints as ep, idx (idx)}
513
- <circle
514
- cx={ep.cx}
515
- cy={ep.cy}
516
- r={tl.endpoint_radius}
517
- fill="rgb({ep.color})"
518
- stroke="white"
519
- stroke-width={1.5}
520
- />
521
- {/each}
522
- <circle
523
- cx={cursor_cx}
524
- cy={cursor_cy}
525
- r={tl.cursor_radius}
526
- fill="rgb({PHASE_COLOR_RGB.tie_line})"
527
- stroke="white"
528
- stroke-width={2}
529
- />
530
- </g>
531
- {/snippet}
532
-
533
- <svelte:document
534
- onfullscreenchange={() => {
535
- fullscreen = Boolean(document.fullscreenElement)
536
- }}
537
- onkeydown={handle_doc_keydown}
538
- />
539
-
540
- <div
541
- {...rest}
542
- class="binary-phase-diagram {rest.class ?? ``}"
543
- class:fullscreen
544
- bind:this={wrapper}
545
- bind:clientWidth={width}
546
- bind:clientHeight={height}
547
- role="img"
548
- aria-label="{component_a}-{component_b} binary phase diagram"
549
- ondrop={handle_svg_drop}
550
- ondragover={(ev) => ev.preventDefault()}
551
- >
552
- {#if width > 0 && height > 0}
553
- <!-- Header controls -->
554
- <div class="header-controls">
555
- {#if show_controls}
556
- <PhaseDiagramControls
557
- bind:controls_open
558
- bind:show_boundaries
559
- bind:show_labels
560
- bind:show_special_points
561
- bind:show_grid
562
- bind:show_component_labels
563
- bind:config
564
- bind:lever_rule_mode
565
- bind:x_axis
566
- bind:y_axis
567
- bind:png_dpi
568
- data={effective_data}
569
- {enable_export}
570
- {...controls_props}
571
- icon_style={pane_icon_style}
572
- toggle_props={pane_toggle_props}
573
- />
574
- {/if}
575
- {#if enable_export}
576
- <PhaseDiagramExportPane
577
- bind:export_pane_open
578
- bind:png_dpi
579
- data={effective_data}
580
- {wrapper}
581
- filename={export_filename}
582
- icon_style={pane_icon_style}
583
- toggle_props={pane_toggle_props}
584
- />
585
- {/if}
586
- <PhaseDiagramEditorPane
587
- bind:editor_open
588
- bind:diagram_input
589
- data={effective_data}
590
- ondata={(edited) => data_override = edited}
591
- icon_style={pane_icon_style}
592
- toggle_props={pane_toggle_props}
593
- />
594
- {#if fullscreen_toggle}
595
- <FullscreenToggle bind:fullscreen />
596
- {/if}
597
- </div>
598
-
599
- <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
600
- <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
601
- <svg
602
- class="binary-phase-diagram"
603
- {width}
604
- {height}
605
- onpointermove={handle_pointer_move}
606
- onpointerleave={handle_pointer_leave}
607
- onclick={handle_click}
608
- onkeydown={handle_svg_keydown}
609
- ondblclick={handle_double_click}
610
- tabindex="0"
611
- style:display="block"
612
- style:cursor={effective_hover_info ? `crosshair` : `default`}
613
- style:touch-action="none"
614
- role="application"
615
- aria-label="Binary phase diagram. Use mouse to explore phases. Click to lock tooltip, double-click to copy data. Press Ctrl/Cmd+Shift+E to export."
616
- >
617
- <!-- Gradient definitions for multi-phase regions (2+ phases) -->
618
- <defs>
619
- {#each transformed_regions as region (region.id)}
620
- {#if region.gradient}
621
- <linearGradient
622
- id="gradient-{region.id}"
623
- x1={region.x_min}
624
- x2={region.x_max}
625
- y1="0"
626
- y2="0"
627
- gradientUnits="userSpaceOnUse"
628
- >
629
- {#each region.gradient as stop, idx (idx)}
630
- <stop
631
- offset="{stop.offset * 100}%"
632
- stop-color={stop.color}
633
- stop-opacity="0.6"
634
- />
635
- {/each}
636
- </linearGradient>
637
- {/if}
638
- {/each}
639
- </defs>
640
-
641
- <!-- Background -->
642
- <rect
643
- x={left}
644
- y={top}
645
- width={plot_width}
646
- height={plot_height}
647
- fill={merged_config.colors.background}
648
- />
649
-
650
- <!-- Grid lines -->
651
- {#if show_grid}
652
- <g class="grid">
653
- {@render grid_lines(x_ticks, true)}
654
- {@render grid_lines(y_ticks, false)}
655
- </g>
656
- {/if}
657
-
658
- <!-- Phase regions -->
659
- <g class="phase-regions">
660
- {#each transformed_regions as region (region.id)}
661
- <path
662
- d={region.svg_path}
663
- fill={region.gradient
664
- ? `url(#gradient-${region.id})`
665
- : (region.color || get_phase_color(region.name))}
666
- stroke="none"
667
- class:hovered={hovered_region?.id === region.id}
668
- />
669
- {/each}
670
- </g>
671
-
672
- <!-- Boundaries -->
673
- {#if show_boundaries}
674
- <g class="boundaries">
675
- {#each transformed_boundaries as boundary (boundary.id)}
676
- <path
677
- d={boundary.svg_path}
678
- fill="none"
679
- stroke={boundary.style?.color ?? merged_config.colors.boundary}
680
- stroke-width={boundary.style?.width || 2}
681
- stroke-dasharray={boundary.style?.dash || ``}
682
- stroke-linecap="round"
683
- stroke-linejoin="round"
684
- />
685
- {/each}
686
- </g>
687
- {/if}
688
-
689
- <!-- Region labels -->
690
- {#if show_labels}
691
- <g class="region-labels">
692
- {#each transformed_regions as region (region.id)}
693
- {@const line_height = merged_config.font_size * 1.2}
694
- <g
695
- transform="translate({region.label_pos[0]}, {region.label_pos[1]}) rotate({region.label_rotation}) scale({region.label_scale})"
696
- >
697
- {#each region.label_lines as line, line_idx (line_idx)}
698
- <text
699
- x={0}
700
- y={(line_idx - (region.label_lines.length - 1) / 2) * line_height}
701
- text-anchor="middle"
702
- dominant-baseline="middle"
703
- fill={merged_config.colors.text}
704
- font-size={merged_config.font_size}
705
- font-weight="500"
706
- class="region-label"
707
- >
708
- {@html sanitize_svg(format_label_svg(line, use_subscripts))}
709
- </text>
710
- {/each}
711
- </g>
712
- {/each}
713
- </g>
714
- {/if}
715
-
716
- <!-- Tie-line visualization for two-phase regions -->
717
- {#if lever_rule_mode === `vertical` && effective_hover_info?.vertical_lever_rule}
718
- {@const vlr = effective_hover_info.vertical_lever_rule}
719
- {@const cx = x_scale(effective_hover_info.composition)}
720
- {@const y_bot = y_scale(vlr.bottom_temperature)}
721
- {@const y_top = y_scale(vlr.top_temperature)}
722
- {@render tie_line_viz(
723
- cx,
724
- y_bot,
725
- cx,
726
- y_top,
727
- [
728
- { cx, cy: y_bot, color: get_phase_color(vlr.bottom_phase, `rgb`) },
729
- { cx, cy: y_top, color: get_phase_color(vlr.top_phase, `rgb`) },
730
- ],
731
- cx,
732
- y_scale(effective_hover_info.temperature),
733
- )}
734
- {:else if lever_rule_mode === `horizontal` && effective_hover_info?.lever_rule}
735
- {@const lr = effective_hover_info.lever_rule}
736
- {@const cy = y_scale(effective_hover_info.temperature)}
737
- {@const x_l = x_scale(lr.left_composition)}
738
- {@const x_r = x_scale(lr.right_composition)}
739
- {@render tie_line_viz(
740
- x_l,
741
- cy,
742
- x_r,
743
- cy,
744
- [
745
- { cx: x_l, cy, color: get_phase_color(lr.left_phase, `rgb`) },
746
- { cx: x_r, cy, color: get_phase_color(lr.right_phase, `rgb`) },
747
- ],
748
- x_scale(effective_hover_info.composition),
749
- cy,
750
- )}
751
- {/if}
752
-
753
- <!-- Special points (rendered last for highest z-index) -->
754
- {#if show_special_points}
755
- <g class="special-points">
756
- {#each transformed_special_points as point (point.id)}
757
- <!-- Larger hit area for easier hovering (2x radius) -->
758
- <circle
759
- cx={point.svg_x}
760
- cy={point.svg_y}
761
- r={merged_config.special_point_radius * 2}
762
- fill="transparent"
763
- class="special-point-hit-area"
764
- />
765
- <circle
766
- cx={point.svg_x}
767
- cy={point.svg_y}
768
- r={merged_config.special_point_radius}
769
- fill={merged_config.colors.special_point}
770
- stroke="white"
771
- stroke-width={1.5}
772
- class="special-point-marker"
773
- />
774
- {#if point.label}
775
- {@const is_near_left = point.position[0] <= 0.05}
776
- {@const is_near_right = point.position[0] >= 0.95}
777
- {@const anchor = is_near_left ? `start` : is_near_right ? `end` : `middle`}
778
- {@const x_offset = is_near_left ? 4 : is_near_right ? -4 : 0}
779
- <text
780
- x={point.svg_x + x_offset}
781
- y={point.svg_y - merged_config.special_point_radius * 2}
782
- text-anchor={anchor}
783
- fill={merged_config.colors.text}
784
- font-size={merged_config.font_size}
785
- font-weight="bold"
786
- >
787
- {point.label}
788
- </text>
789
- {/if}
790
- {/each}
791
- </g>
792
- {/if}
793
-
794
- <!-- X-axis -->
795
- <g class="x-axis">
796
- <line
797
- x1={left}
798
- y1={bottom}
799
- x2={right}
800
- y2={bottom}
801
- stroke={merged_config.colors.axis}
802
- stroke-width={1}
803
- />
804
- {#each x_ticks as tick (tick)}
805
- <g transform="translate({x_scale(tick)}, {bottom})">
806
- <line y2={6} stroke={merged_config.colors.axis} />
807
- <text
808
- y={20}
809
- text-anchor="middle"
810
- fill={merged_config.colors.text}
811
- font-size={merged_config.font_size}
812
- >
813
- {format_composition(tick, comp_unit, false)}
814
- </text>
815
- </g>
816
- {/each}
817
- <!-- X-axis label (supports custom labels from props, data, or auto-generated with subscripts) -->
818
- <text
819
- x={left + plot_width / 2}
820
- y={height - 10}
821
- text-anchor="middle"
822
- fill={merged_config.colors.text}
823
- font-size={merged_config.font_size + 2}
824
- >
825
- {#if x_axis.label}
826
- {@html sanitize_svg(x_axis.label)}
827
- {:else if effective_data?.x_axis_label}
828
- {@html sanitize_svg(effective_data.x_axis_label)}
829
- {:else}
830
- {@html sanitize_svg(default_x_axis_label)}
831
- {/if}
832
- </text>
833
- </g>
834
-
835
- <!-- Y-axis -->
836
- <g class="y-axis">
837
- <line
838
- x1={left}
839
- y1={top}
840
- x2={left}
841
- y2={bottom}
842
- stroke={merged_config.colors.axis}
843
- stroke-width={1}
844
- />
845
- {#each y_ticks as tick (tick)}
846
- <g transform="translate({left}, {y_scale_display(tick)})">
847
- <line x2={-6} stroke={merged_config.colors.axis} />
848
- <text
849
- x={-10}
850
- text-anchor="end"
851
- dominant-baseline="middle"
852
- fill={merged_config.colors.text}
853
- font-size={merged_config.font_size}
854
- >
855
- {format_num(tick, `.0f`)}
856
- </text>
857
- </g>
858
- {/each}
859
- <!-- Y-axis label (supports custom labels from props or data) -->
860
- <text
861
- transform="rotate(-90)"
862
- x={-(top + plot_height / 2)}
863
- y={16}
864
- text-anchor="middle"
865
- fill={merged_config.colors.text}
866
- font-size={merged_config.font_size + 2}
867
- >
868
- {#if y_axis.label}
869
- {@html sanitize_svg(y_axis.label)}
870
- {:else if effective_data?.y_axis_label}
871
- {@html sanitize_svg(effective_data.y_axis_label)}
872
- {:else}
873
- Temperature ({temp_unit})
874
- {/if}
875
- </text>
876
- </g>
877
-
878
- <!-- Component labels at corners (supports compound formulas with subscripts) -->
879
- {#if show_component_labels}
880
- <text
881
- x={left}
882
- y={bottom + 45}
883
- text-anchor="middle"
884
- fill={merged_config.colors.text}
885
- font-size={merged_config.font_size + 2}
886
- font-weight="bold"
887
- >
888
- {@html sanitize_svg(component_a_svg)}
889
- </text>
890
- <text
891
- x={right}
892
- y={bottom + 45}
893
- text-anchor="middle"
894
- fill={merged_config.colors.text}
895
- font-size={merged_config.font_size + 2}
896
- font-weight="bold"
897
- >
898
- {@html sanitize_svg(component_b_svg)}
899
- </text>
900
- {/if}
901
- </svg>
902
-
903
- <!-- Tooltip (uses effective_hover_info which respects locked state) -->
904
- <!-- tooltip={false} disables tooltip entirely -->
905
- {#if effective_hover_info && tooltip !== false}
906
- <div
907
- bind:this={tooltip_el}
908
- class="tooltip-container"
909
- class:locked={locked_hover_info}
910
- style:left="{tooltip_pos.x}px"
911
- style:top="{tooltip_pos.y}px"
912
- >
913
- {#if locked_hover_info}
914
- <div class="tooltip-lock-indicator" title="Click diagram to unlock">🔒</div>
915
- {/if}
916
- {#if typeof tooltip === `function`}
917
- {@render tooltip(effective_hover_info)}
918
- {:else}
919
- <PhaseDiagramTooltip
920
- hover_info={effective_hover_info}
921
- temperature_unit={temp_unit}
922
- data_temperature_unit={data_temp_unit}
923
- composition_unit={comp_unit}
924
- {component_a}
925
- {component_b}
926
- boundaries={effective_data?.boundaries ?? []}
927
- {lever_rule_mode}
928
- {use_subscripts}
929
- {tooltip}
930
- />
931
- {/if}
932
- </div>
933
- {/if}
934
-
935
- <!-- Copy feedback indicator -->
936
- {#if copy_feedback_visible}
937
- <div
938
- class="copy-feedback"
939
- style:left="{copy_feedback_pos.x}px"
940
- style:top="{copy_feedback_pos.y}px"
941
- >
942
- ✓ Copied
943
- </div>
944
- {/if}
945
-
946
- <!-- Custom children -->
947
- {@render children?.({ width, height, fullscreen })}
948
- {/if}
949
- </div>
950
-
951
- <style>
952
- .binary-phase-diagram {
953
- position: relative;
954
- width: 100%;
955
- height: 100%;
956
- min-height: 400px;
957
- aspect-ratio: 6 / 5; /* Default aspect ratio matching 600x500 */
958
- background: var(--pd-bg, transparent);
959
- container-type: inline-size;
960
-
961
- &.fullscreen {
962
- background: var(--phase-diagram-bg-fullscreen, var(--page-bg, #1a1a2e)) !important;
963
- }
964
- @container (max-width: 500px) {
965
- min-height: 300px;
966
- }
967
- }
968
- .header-controls {
969
- position: absolute;
970
- top: var(--ctrl-btn-top, 30px);
971
- right: var(--ctrl-btn-right, 20px);
972
- display: flex;
973
- align-items: center;
974
- gap: 6px;
975
- z-index: 10;
976
- }
977
- /* Override absolute positioning since container handles it */
978
- .header-controls :global(:is(.fullscreen-toggle, .phase-diagram-controls-toggle)) {
979
- position: static;
980
- }
981
- .header-controls :global(.fullscreen-toggle) {
982
- opacity: 1; /* Always visible when inside header-controls */
983
- }
984
- /* Hide controls and fullscreen toggles by default, show on hover/focus */
985
- .binary-phase-diagram :global(:is(.pane-toggle, .header-controls)) {
986
- opacity: 0;
987
- transition: opacity 0.2s ease;
988
- }
989
- /* Keep editor toggle always visible so users discover the edit feature */
990
- .binary-phase-diagram :global(.pd-editor-toggle) {
991
- opacity: 1;
992
- }
993
- .binary-phase-diagram:is(:hover, :focus-within)
994
- :is(:global(.pane-toggle), .header-controls),
995
- .binary-phase-diagram :global(.pane-toggle:is(:focus-visible, [aria-expanded='true'])),
996
- .header-controls:has(:global(.pane-open)) {
997
- opacity: 1;
998
- }
999
- .phase-regions path {
1000
- transition: opacity 0.15s ease;
1001
-
1002
- &.hovered {
1003
- opacity: 0.85;
1004
- filter: brightness(1.1);
1005
- }
1006
- }
1007
- .special-points {
1008
- pointer-events: auto;
1009
- }
1010
- .special-point-hit-area {
1011
- cursor: pointer;
1012
- pointer-events: auto;
1013
- }
1014
- .special-point-hit-area:hover + .special-point-marker {
1015
- filter: brightness(1.3) drop-shadow(0 0 4px currentColor);
1016
- }
1017
- .special-point-marker {
1018
- pointer-events: none; /* Let hit-area handle events */
1019
- }
1020
- /* Grouped pointer-events: none */
1021
- .region-label, .tie-line, .tooltip-container, .copy-feedback, .grid, .region-labels {
1022
- pointer-events: none;
1023
- }
1024
- .region-label {
1025
- user-select: none;
1026
- }
1027
- .tie-line {
1028
- animation: tie-line-fade-in 150ms ease-out;
1029
-
1030
- &.locked {
1031
- filter: drop-shadow(0 0 3px rgba(255, 107, 107, 0.5));
1032
- }
1033
- }
1034
- @keyframes tie-line-fade-in {
1035
- from {
1036
- opacity: 0;
1037
- }
1038
- }
1039
- :is(.tooltip-container, .copy-feedback) {
1040
- position: fixed;
1041
- }
1042
- .tooltip-container {
1043
- z-index: 1000;
1044
-
1045
- &.locked {
1046
- pointer-events: auto; /* Allow interaction when locked */
1047
- filter: drop-shadow(0 0 4px rgba(99, 102, 241, 0.4));
1048
- }
1049
- }
1050
- .tooltip-lock-indicator {
1051
- position: absolute;
1052
- top: -8px;
1053
- right: -8px;
1054
- font-size: 12px;
1055
- background: rgba(99, 102, 241, 0.9);
1056
- border-radius: 50%;
1057
- width: 20px;
1058
- height: 20px;
1059
- display: flex;
1060
- align-items: center;
1061
- justify-content: center;
1062
- cursor: pointer;
1063
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
1064
- }
1065
- .copy-feedback {
1066
- z-index: 1001;
1067
- background: rgba(76, 175, 80, 0.95);
1068
- color: white;
1069
- padding: 6px 12px;
1070
- border-radius: 4px;
1071
- font-size: 13px;
1072
- font-weight: 500;
1073
- transform: translate(-50%, calc(-100% - 10px));
1074
- animation: copy-fade-up 1.5s ease-out forwards;
1075
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
1076
- }
1077
- @keyframes copy-fade-up {
1078
- 0%, 70% {
1079
- opacity: 1;
1080
- }
1081
- 100% {
1082
- opacity: 0;
1083
- transform: translate(-50%, calc(-100% - 30px));
1084
- }
1085
- }
1086
- </style>