matterviz 0.3.5 → 0.3.6

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