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
@@ -0,0 +1,721 @@
1
+ <script lang="ts">
2
+ import { luminance } from '../colors'
3
+ import Spinner from '../feedback/Spinner.svelte'
4
+ import { format_num } from '../labels'
5
+ import { sanitize_html } from '../sanitize'
6
+ import type { Vec2 } from '../math'
7
+ import * as math from '../math'
8
+ import { format } from 'd3-format'
9
+ import * as d3 from 'd3-scale'
10
+ import * as d3_sc from 'd3-scale-chromatic'
11
+ import { timeFormat } from 'd3-time-format'
12
+ import type { HTMLAttributes } from 'svelte/elements'
13
+ import type { D3InterpolateName } from '../colors'
14
+ import PortalSelect from './PortalSelect.svelte'
15
+ import { generate_arcsinh_ticks, scale_arcsinh } from './scales'
16
+ import type {
17
+ AxisOption,
18
+ ColorBarDataLoaderFn,
19
+ ColorScaleOption,
20
+ Orientation,
21
+ ScaleType,
22
+ } from './types'
23
+ import { get_arcsinh_threshold, get_scale_type_name } from './types'
24
+
25
+ let {
26
+ title = $bindable(),
27
+ color_scale = $bindable(`interpolateViridis`),
28
+ bar_style = undefined,
29
+ title_style = undefined,
30
+ wrapper_style = undefined,
31
+ tick_labels = $bindable(4),
32
+ tick_format = undefined,
33
+ range = $bindable([0, 1]),
34
+ orientation = `horizontal`,
35
+ snap_ticks = true,
36
+ steps = 50,
37
+ nice_range = $bindable(range),
38
+ title_side = undefined, // no default here, depends on orientation and tick_side
39
+ tick_side = `primary`,
40
+ scale_type = `linear`,
41
+ color_scale_fn = undefined,
42
+ color_scale_domain = undefined,
43
+ // Property selection (interactive title)
44
+ property_options = undefined,
45
+ selected_property_key = $bindable(),
46
+ data_loader = undefined,
47
+ on_property_change = undefined,
48
+ // Color scale selection
49
+ color_scale_options = undefined,
50
+ selected_color_scale_key = $bindable(),
51
+ on_color_scale_change = undefined,
52
+ ...rest
53
+ }: HTMLAttributes<HTMLDivElement> & {
54
+ title?: string
55
+ color_scale?: ((x: number) => string) | string | null
56
+ title_side?: `left` | `right` | `top` | `bottom`
57
+ bar_style?: string
58
+ title_style?: string
59
+ wrapper_style?: string
60
+ tick_labels?: (string | number)[] | number
61
+ tick_format?: string
62
+ range?: [number, number]
63
+ // tick_side determines tick placement relative to orientation:
64
+ // 'primary' = bottom (horizontal) / right (vertical), outside bar
65
+ // 'secondary' = top (horizontal) / left (vertical), outside bar
66
+ // 'inside' = centered within bar, hiding first/last
67
+ tick_side?: `primary` | `secondary` | `inside`
68
+ orientation?: Orientation
69
+ // snap ticks to pretty, more readable values
70
+ snap_ticks?: boolean
71
+ // number of equidistant points to sample color scale
72
+ steps?: number
73
+ // computed "nice" range resulting from snapping ticks
74
+ // https://github.com/d3/d3-scale/issues/86
75
+ nice_range?: [number, number]
76
+ // type of scale to use for ticks and potentially color (if color_scale_fn not provided)
77
+ scale_type?: ScaleType
78
+ // Optional pre-configured d3 color scale function
79
+ color_scale_fn?: (value: number) => string
80
+ // Optional domain for pre-configured color scale function
81
+ color_scale_domain?: [number, number]
82
+ // Property selection options (makes title interactive)
83
+ property_options?: AxisOption[]
84
+ selected_property_key?: string
85
+ data_loader?: ColorBarDataLoaderFn
86
+ on_property_change?: (key: string, range: [number, number]) => void
87
+ // Color scale selection options
88
+ color_scale_options?: ColorScaleOption[]
89
+ selected_color_scale_key?: string
90
+ on_color_scale_change?: (key: string) => void
91
+ } = $props()
92
+
93
+ // Loading state for property data fetching
94
+ let loading = $state(false)
95
+
96
+ let actual_title_side = $derived.by(() => {
97
+ if (title_side !== undefined) return title_side // Use user-provided value if available
98
+
99
+ // Calculate default based on orientation and tick_side
100
+ if (tick_side === `inside`) return `left` // Default to left if ticks are inside
101
+
102
+ // If ticks are primary (bottom), default label to top
103
+ // If ticks are secondary (top), default label to bottom
104
+ if (orientation === `horizontal`) {
105
+ return tick_side === `primary` ? `top` : `bottom`
106
+ } else { // orientation === `vertical`
107
+ // If ticks are primary (right), default label to left
108
+ // If ticks are secondary (left), default label to right
109
+ return tick_side === `primary` ? `left` : `right`
110
+ }
111
+ })
112
+
113
+ // Number of ticks to generate
114
+ let n_ticks = $derived(
115
+ Array.isArray(tick_labels)
116
+ ? tick_labels.length
117
+ : typeof tick_labels === `number`
118
+ ? tick_labels
119
+ : 5,
120
+ )
121
+
122
+ // Scale for ticks - based *only* on 'range' prop and 'scale_type' for ticks
123
+ let scale_for_ticks = $derived.by(() => {
124
+ const type_name = get_scale_type_name(scale_type)
125
+ let use_log_for_ticks = type_name === `log`
126
+ let [scale_min, scale_max] = range
127
+
128
+ // Validate range for log scale ticks and apply epsilon if needed
129
+ if (use_log_for_ticks) {
130
+ if (scale_max <= 0) {
131
+ console.warn(
132
+ `Log scale requires a positive max value for ticks. Received max=${scale_max}. Using linear scale for ticks instead.`,
133
+ )
134
+ use_log_for_ticks = false
135
+ } else if (scale_min <= 0) {
136
+ console.warn(
137
+ `Log scale received non-positive min value (${scale_min}) for ticks. Using epsilon=${math.LOG_EPS} instead.`,
138
+ )
139
+ scale_min = math.LOG_EPS // Substitute with epsilon
140
+ }
141
+ }
142
+
143
+ // For arcsinh, use our custom scale
144
+ if (type_name === `arcsinh`) {
145
+ // Guard against very small thresholds that could cause precision issues
146
+ const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
147
+ const scale = scale_arcsinh(threshold)
148
+ .domain([scale_min, scale_max])
149
+ .range(orientation === `vertical` ? [100, 0] : [0, 100])
150
+ return scale
151
+ }
152
+
153
+ const scale = use_log_for_ticks ? d3.scaleLog() : d3.scaleLinear()
154
+ // Use potentially adjusted min/max for domain
155
+ scale.domain([scale_min, scale_max])
156
+
157
+ // Set range based on orientation for positioning (0-100 for percent)
158
+ scale.range(orientation === `vertical` ? [100, 0] : [0, 100])
159
+
160
+ // Apply scale.nice() only if snapping is enabled and not an explicit array.
161
+ if (snap_ticks && !Array.isArray(tick_labels)) {
162
+ scale.nice(n_ticks)
163
+ }
164
+
165
+ return scale
166
+ })
167
+
168
+ let ticks_array: number[] = $derived.by(() => {
169
+ if (Array.isArray(tick_labels)) {
170
+ // Use user-provided ticks directly
171
+ return tick_labels.map(Number).filter((num) => !isNaN(num))
172
+ }
173
+
174
+ // Handle edge cases for number of ticks
175
+ if (n_ticks <= 0) return []
176
+ if (n_ticks === 1) return [scale_for_ticks.domain()[0]]
177
+
178
+ const scale = scale_for_ticks // Use derived scale (which handles log validation for ticks)
179
+ const [scale_min, scale_max] = scale.domain()
180
+ const type_name = get_scale_type_name(scale_type)
181
+
182
+ // Arcsinh tick generation
183
+ if (type_name === `arcsinh`) {
184
+ // Guard against very small thresholds that could cause precision issues
185
+ const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
186
+ return generate_arcsinh_ticks(scale_min, scale_max, threshold, n_ticks)
187
+ }
188
+
189
+ // check scale_type prop for log tick generation
190
+ const use_log_ticks = type_name === `log` && scale_min > 0 && scale_max > 0
191
+
192
+ if (use_log_ticks) {
193
+ // Use D3's ticks for log scale if snapping is enabled
194
+ if (snap_ticks) {
195
+ // For snapped log ticks, manually generate integer powers of 10 within niced domain.
196
+ const [nice_min, nice_max] = scale.domain()
197
+
198
+ const start_exp = Math.ceil(Math.log10(nice_min))
199
+ const end_exp = Math.floor(Math.log10(nice_max))
200
+
201
+ const power_of_10_ticks: number[] = []
202
+ for (let exp = start_exp; exp <= end_exp; exp++) {
203
+ power_of_10_ticks.push(Math.pow(10, exp))
204
+ }
205
+
206
+ // Ensure domain endpoints are included if they are powers of 10 and missed by loop
207
+ const FRACTIONAL_TOL = 1e-10
208
+ if (
209
+ Math.abs(Math.log10(nice_min) % 1) < FRACTIONAL_TOL &&
210
+ !power_of_10_ticks.includes(nice_min)
211
+ ) power_of_10_ticks.unshift(nice_min)
212
+ if (
213
+ Math.abs(Math.log10(nice_max) % 1) < FRACTIONAL_TOL &&
214
+ !power_of_10_ticks.includes(nice_max)
215
+ ) power_of_10_ticks.push(nice_max)
216
+
217
+ // If no powers of 10 are within range (e.g. [0.1, 0.9]), fall back to D3 ticks?
218
+ // Or just return filtered list which might be empty?
219
+ // For now, let's stick with only powers of 10.
220
+ // If list is empty maybe return domain ends?
221
+ if (power_of_10_ticks.length === 0) {
222
+ // If domain is very small, e.g. [1e-9, 1e-8], no powers of 10.
223
+ // Return exact domain ends as ticks in this edge case.
224
+ return [nice_min, nice_max]
225
+ }
226
+
227
+ return power_of_10_ticks
228
+ } else {
229
+ // Generate exactly n_ticks manually for log scale if not snapping
230
+ const log_min = Math.log10(scale_min)
231
+ const log_max = Math.log10(scale_max)
232
+ return [...Array(n_ticks).keys()].map((idx) => {
233
+ const fraction = idx / (n_ticks - 1)
234
+ const log_val = log_min + fraction * (log_max - log_min)
235
+ return Math.pow(10, log_val)
236
+ })
237
+ }
238
+ } else {
239
+ // Use D3's default nice ticks for linear scale
240
+ if (snap_ticks) return scale.ticks(n_ticks)
241
+ else {
242
+ // Generate exactly n_ticks evenly spaced linear ticks
243
+ return [...Array(n_ticks).keys()].map((idx) => {
244
+ const fraction = idx / (n_ticks - 1)
245
+ return scale_min + fraction * (scale_max - scale_min)
246
+ })
247
+ }
248
+ }
249
+ })
250
+
251
+ // Update nice_range binding when snapping ticks
252
+ $effect.pre(() => {
253
+ if (snap_ticks && !Array.isArray(tick_labels)) {
254
+ // Use derived scale to get niced domain
255
+ const domain = scale_for_ticks.domain()
256
+ // Ensure domain has two elements before assigning
257
+ if (domain.length === 2) nice_range = domain as Vec2
258
+ else nice_range = range // Fallback
259
+ } else nice_range = range // Use original range if not snapping or labels provided
260
+ })
261
+
262
+ // Determine effective color scale function to use
263
+ let actual_color_scale_fn = $derived.by(() => {
264
+ if (color_scale_fn) return color_scale_fn // Prioritize passed function
265
+
266
+ // Fallback: create function from scheme name/function in 'color_scale' prop
267
+ let interpolator = d3_sc.interpolateViridis // Default interpolator
268
+ if (typeof color_scale === `string`) {
269
+ const func_name = color_scale.startsWith(`interpolate`)
270
+ ? color_scale
271
+ : `interpolate${color_scale}`
272
+ if (func_name in d3_sc) {
273
+ interpolator = d3_sc[func_name as D3InterpolateName]
274
+ } else {
275
+ console.error(
276
+ `Color scale '${color_scale}' not found. Falling back on 'Viridis'.`,
277
+ )
278
+ }
279
+ } else if (typeof color_scale === `function`) {
280
+ // User passed a function (assumed interpolator [0,1] -> color)
281
+ interpolator = color_scale
282
+ }
283
+
284
+ // Need a domain for this fallback scale! Use 'range' prop.
285
+ let [min_val, max_val] = range
286
+ const type_name = get_scale_type_name(scale_type)
287
+
288
+ // Use scale_type for fallback scale creation too. Validate domain for log.
289
+ let use_log_fallback = type_name === `log`
290
+ if (use_log_fallback) {
291
+ if (max_val <= 0) {
292
+ console.warn(
293
+ `Log scale requires a positive max value for fallback scale. Received max=${max_val}. Using linear scale for colors.`,
294
+ )
295
+ use_log_fallback = false
296
+ } else if (min_val <= 0) {
297
+ console.warn(
298
+ `Log scale received non-positive min value (${min_val}) for fallback scale. Using epsilon=${math.LOG_EPS} instead.`,
299
+ )
300
+ min_val = math.LOG_EPS // Substitute with epsilon
301
+ }
302
+ }
303
+
304
+ // Use potentially adjusted min/max for domain (ascending)
305
+ const lo = Math.min(min_val, max_val)
306
+ const hi = Math.max(min_val, max_val)
307
+ const domain_for_scale: [number, number] = [lo, hi]
308
+
309
+ // For arcsinh, create a custom color scale
310
+ if (type_name === `arcsinh`) {
311
+ // Guard against very small thresholds that could cause precision issues
312
+ const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
313
+ const t_min = Math.asinh(lo / threshold)
314
+ const t_max = Math.asinh(hi / threshold)
315
+ return (value: number): string => {
316
+ const t_val = Math.asinh(value / threshold)
317
+ const normalized = t_max === t_min ? 0.5 : (t_val - t_min) / (t_max - t_min)
318
+ return interpolator(Math.max(0, Math.min(1, normalized)))
319
+ }
320
+ }
321
+
322
+ return use_log_fallback
323
+ ? d3.scaleSequentialLog(interpolator).domain(domain_for_scale)
324
+ : d3.scaleSequential(interpolator).domain(domain_for_scale)
325
+ })
326
+
327
+ // Determine effective domain for color ramp interpolation *steps*
328
+ // Prioritize color_scale_domain if provided, otherwise use general 'range' prop.
329
+ let color_interp_domain = $derived(color_scale_domain ?? range)
330
+
331
+ let grad_dir = $derived(orientation === `horizontal` ? `to right` : `to top`)
332
+
333
+ // Generate color stops for gradient background using effective scale and domain
334
+ let ramped = $derived.by(() => {
335
+ const [min_ramp_domain, max_ramp_domain] = color_interp_domain
336
+ const type_name = get_scale_type_name(scale_type)
337
+
338
+ // Validate domain for log interpolation and apply epsilon if needed
339
+ let use_log_interp = type_name === `log`
340
+ let adjusted_min_ramp = min_ramp_domain
341
+ let adjusted_max_ramp = max_ramp_domain
342
+
343
+ if (use_log_interp) {
344
+ if (max_ramp_domain <= 0) {
345
+ console.warn(
346
+ `Log scale specified for gradient, but max domain value (${max_ramp_domain}) is not positive. Using linear interpolation.`,
347
+ )
348
+ use_log_interp = false
349
+ } else if (min_ramp_domain <= 0) {
350
+ console.warn(
351
+ `Log scale specified for gradient, but min domain value (${min_ramp_domain}) is not positive. Using epsilon=${math.LOG_EPS} instead.`,
352
+ )
353
+ adjusted_min_ramp = math.LOG_EPS // Substitute with epsilon
354
+ }
355
+ }
356
+
357
+ const n_steps = Math.max(2, Math.floor(steps)) // guard against steps <= 1 to avoid NaN/degenerate gradients
358
+
359
+ // Pre-compute loop-invariant values for each scale type
360
+ let log_min = 0, log_max = 0, log_span = 0
361
+ let asinh_threshold = 1, asinh_min = 0, asinh_max = 0, asinh_span = 0
362
+ const linear_span = max_ramp_domain - min_ramp_domain
363
+
364
+ if (use_log_interp) {
365
+ log_min = Math.log10(adjusted_min_ramp)
366
+ log_max = Math.log10(adjusted_max_ramp)
367
+ log_span = log_max - log_min
368
+ } else if (type_name === `arcsinh`) {
369
+ // Guard against very small thresholds that could cause precision issues
370
+ asinh_threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
371
+ asinh_min = Math.asinh(min_ramp_domain / asinh_threshold)
372
+ asinh_max = Math.asinh(max_ramp_domain / asinh_threshold)
373
+ asinh_span = asinh_max - asinh_min
374
+ }
375
+
376
+ return [...Array(n_steps).keys()].map((_, idx) => {
377
+ const fraction = idx / (n_steps - 1) // Normalized position 0 to 1
378
+ let data_value: number
379
+
380
+ if (use_log_interp) {
381
+ data_value = log_span === 0
382
+ ? adjusted_min_ramp
383
+ : Math.pow(10, log_min + fraction * log_span)
384
+ } else if (type_name === `arcsinh`) {
385
+ data_value = asinh_span === 0
386
+ ? min_ramp_domain
387
+ : Math.sinh(asinh_min + fraction * asinh_span) * asinh_threshold
388
+ } else {
389
+ data_value = min_ramp_domain + fraction * linear_span
390
+ }
391
+ return actual_color_scale_fn(data_value) ?? `transparent`
392
+ })
393
+ })
394
+
395
+ // Determine wrapper flex-direction based on actual title_side
396
+ let wrapper_flex_dir = $derived(
397
+ { left: `row`, right: `row-reverse`, top: `column`, bottom: `column-reverse` }[
398
+ actual_title_side
399
+ ],
400
+ )
401
+
402
+ // CSS variables for bar width/height based on orientation
403
+ let final_bar_style = $derived(
404
+ `--cbar-width: ${
405
+ orientation === `horizontal` ? `100%` : `var(--cbar-thickness, 10px)`
406
+ };
407
+ --cbar-height: ${
408
+ orientation === `vertical` ? `100%` : `var(--cbar-thickness, 10px)`
409
+ };
410
+ background: linear-gradient(${grad_dir}, ${ramped.join(`, `)}); ${
411
+ bar_style ?? ``
412
+ }`,
413
+ )
414
+
415
+ // Calculate additional margin for main label if it overlaps with ticks
416
+ let label_overlap_margin_style = $derived.by(() => {
417
+ // Overlap only possible if ticks are outside and on same side as label
418
+ if (tick_side === `inside`) return ``
419
+
420
+ // Determine concrete side outside ticks are on
421
+ const concrete_outside_tick_side = orientation === `horizontal`
422
+ ? tick_side === `primary` ? `bottom` : `top`
423
+ : tick_side === `primary`
424
+ ? `right`
425
+ : `left`
426
+
427
+ if (actual_title_side !== concrete_outside_tick_side) return ``
428
+
429
+ const offset = `var(--cbar-label-overlap-offset, 1em)`
430
+
431
+ const side_map = { top: `bottom`, bottom: `top`, left: `right`, right: `left` }
432
+ const margin_side = side_map[actual_title_side]
433
+ return `margin-${margin_side}: ${offset};`
434
+ })
435
+
436
+ // Derive whether we're in vertical side-label mode (label on left/right of vertical bar)
437
+ let is_vertical_side = $derived(
438
+ orientation === `vertical` &&
439
+ (actual_title_side === `left` || actual_title_side === `right`),
440
+ )
441
+
442
+ let actual_title_style = $derived.by(() => {
443
+ // No container-level transform - rotation is applied only to .label element via CSS
444
+ // This avoids breaking selects/dropdowns which need to remain horizontal
445
+ let size_constraint = is_vertical_side
446
+ ? `max-width: var(--cbar-label-max-width, 2em);`
447
+ : ``
448
+
449
+ return `${size_constraint} ${label_overlap_margin_style} ${title_style ?? ``}`
450
+ .trim()
451
+ })
452
+
453
+ function get_tick_text_color(tick_value: number): string | null {
454
+ // Only apply dynamic color if ticks are inside bar
455
+ if (tick_side !== `inside`) return null
456
+
457
+ const bg_color = actual_color_scale_fn(tick_value)
458
+ // Default to black if luminance calculation fails or color is invalid
459
+ try {
460
+ return luminance(bg_color) > 0.5 ? `black` : `white`
461
+ } catch (error) {
462
+ console.error(`Error calculating luminance for tick ${tick_value}:`, error)
463
+ return `black`
464
+ }
465
+ }
466
+
467
+ let has_property_select = $derived(property_options && property_options.length > 0)
468
+ let has_color_scale_select = $derived(
469
+ color_scale_options && color_scale_options.length > 0,
470
+ )
471
+ let has_any_select = $derived(has_property_select || has_color_scale_select)
472
+
473
+ // Keep bindable selected keys valid so state matches the select's first-option fallback.
474
+ $effect(() => {
475
+ if (!property_options?.length) return
476
+ if (property_options.some((option) => option.key === selected_property_key)) return
477
+ selected_property_key = property_options[0]?.key
478
+ })
479
+ $effect(() => {
480
+ if (!color_scale_options?.length) return
481
+ if (color_scale_options.some((option) => option.key === selected_color_scale_key)) return
482
+ const first_option = color_scale_options[0]
483
+ selected_color_scale_key = first_option.key
484
+ color_scale = first_option.scale
485
+ })
486
+
487
+ async function handle_property_change(new_key: string, prev_key?: string) {
488
+ if (!data_loader) return
489
+ // Capture all state for full rollback on any error
490
+ // Note: prev_key comes from PortalSelect since binding updates before callback
491
+ // prev_key can be undefined if no prior selection - that's a valid rollback state
492
+ const prev = { title, range, selected_property_key: prev_key } as const
493
+
494
+ loading = true
495
+
496
+ try {
497
+ const result = await data_loader(new_key)
498
+ range = result.range
499
+ if (result.title !== undefined) title = result.title
500
+ // Isolate callback errors - still rollback if callback throws
501
+ on_property_change?.(new_key, result.range)
502
+ } catch (err) {
503
+ console.error(`ColorBar property change failed for ${new_key}:`, err)
504
+ // Full rollback of all state
505
+ selected_property_key = prev.selected_property_key
506
+ range = prev.range
507
+ title = prev.title
508
+ } finally {
509
+ loading = false
510
+ }
511
+ }
512
+
513
+ function handle_color_scale_change(new_key: string, prev_key?: string) {
514
+ // Find option - rollback binding if not found to keep key and scale in sync
515
+ const opt = color_scale_options?.find((item) => item.key === new_key)
516
+ if (!opt) {
517
+ selected_color_scale_key = prev_key
518
+ return
519
+ }
520
+
521
+ color_scale = opt.scale
522
+ on_color_scale_change?.(new_key)
523
+ }
524
+
525
+ // Align items based on orientation and title position
526
+ let div_style = $derived(`
527
+ --cbar-wrapper-align-items: ${
528
+ orientation === `vertical` &&
529
+ (actual_title_side === `left` || actual_title_side === `right`)
530
+ ? `stretch`
531
+ : `center`
532
+ };
533
+ --cbar-label-display: ${
534
+ orientation === `vertical` &&
535
+ (actual_title_side === `left` || actual_title_side === `right`)
536
+ ? `flex`
537
+ : `inline-block`
538
+ };
539
+ height: ${
540
+ orientation === `vertical`
541
+ ? `var(--cbar-height, 100%)`
542
+ : `var(--cbar-height, auto)`
543
+ };
544
+ min-height: ${
545
+ orientation === `vertical` ? `var(--cbar-min-height, 150px)` : `auto`
546
+ };
547
+ max-height: ${
548
+ orientation === `vertical` ? `var(--cbar-max-height, 1000px)` : `none`
549
+ }; ${wrapper_style ?? ``}`)
550
+ </script>
551
+
552
+ <div
553
+ style:flex-direction={wrapper_flex_dir}
554
+ {...rest}
555
+ style={div_style + (rest.style ?? ``)}
556
+ class="colorbar {rest.class ?? ``}"
557
+ >
558
+ {#if title || has_any_select}
559
+ <div class="title-row {actual_title_side} {orientation}" style={actual_title_style}>
560
+ {#if has_property_select && property_options}
561
+ <PortalSelect
562
+ options={property_options}
563
+ bind:selected_key={selected_property_key}
564
+ on_select={handle_property_change}
565
+ disabled={loading}
566
+ class="property-select"
567
+ />
568
+ {#if loading}
569
+ <Spinner
570
+ style="--spinner-size: 0.8em; --spinner-border-width: 2px; --spinner-margin: 0"
571
+ />
572
+ {/if}
573
+ {:else if title}
574
+ <!-- Only show static title if no property select -->
575
+ <span class="label">{@html sanitize_html(title)}</span>
576
+ {/if}
577
+ {#if has_color_scale_select && color_scale_options}
578
+ <PortalSelect
579
+ options={color_scale_options}
580
+ bind:selected_key={selected_color_scale_key}
581
+ on_select={handle_color_scale_change}
582
+ format_option={(opt) => opt.label}
583
+ class="color-scale-select"
584
+ />
585
+ {/if}
586
+ </div>
587
+ {/if}
588
+ <div style={final_bar_style} class="bar">
589
+ {#each tick_side === `inside` ? ticks_array.slice(1, -1) : ticks_array as
590
+ tick_label
591
+ (tick_label)
592
+ }
593
+ {@const position_percent =
594
+ // Use derived scale's mapping function to get position percent
595
+ scale_for_ticks(tick_label)}
596
+ {@const tick_inline_style = `
597
+ position: absolute;
598
+ ${orientation === `horizontal` ? `left` : `top`}: ${position_percent}%;
599
+ color: ${get_tick_text_color(tick_label) ?? `inherit`};
600
+ `}
601
+ <span style={tick_inline_style} class="tick-label {orientation} tick-{tick_side}">
602
+ {#if tick_format}
603
+ {#if tick_format.startsWith(`%`)}
604
+ {timeFormat(tick_format)(new Date(tick_label))}
605
+ {:else}
606
+ {format(tick_format)(tick_label)}
607
+ {/if}
608
+ {:else}
609
+ {format_num(tick_label)}
610
+ {/if}
611
+ </span>
612
+ {/each}
613
+ </div>
614
+ </div>
615
+
616
+ <style>
617
+ div.colorbar {
618
+ display: flex;
619
+ box-sizing: border-box;
620
+ place-items: center;
621
+ /* Reduced default gap */
622
+ gap: var(--cbar-gap, 0);
623
+ margin: var(--cbar-margin);
624
+ padding: var(--cbar-padding);
625
+ width: var(--cbar-width, auto);
626
+ font-size: var(--cbar-font-size, 9pt);
627
+ /* align-items based on title side for vertical layout */
628
+ align-items: var(--cbar-wrapper-align-items);
629
+ }
630
+ /* color gradient bar */
631
+ div.bar {
632
+ position: relative;
633
+ border-radius: var(--cbar-border-radius, var(--border-radius, 3pt));
634
+ /* Use CSS variables set inline */
635
+ width: var(--cbar-width);
636
+ height: var(--cbar-height);
637
+ }
638
+ /* label text */
639
+ span.label {
640
+ text-align: center;
641
+ padding: var(--cbar-label-padding, 0 5px);
642
+ transform: var(--cbar-label-transform);
643
+ /* Ensure vertical labels are centered within their allocated space */
644
+ display: var(--cbar-label-display);
645
+ align-items: center;
646
+ justify-content: center;
647
+ }
648
+ span.tick-label {
649
+ position: absolute;
650
+ font-weight: var(--cbar-tick-label-font-weight, lighter);
651
+ font-size: var(--cbar-tick-label-font-size, var(--cbar-font-size));
652
+ /* text color is set dynamically/inline for inside ticks */
653
+ color: var(--cbar-tick-label-color, initial);
654
+ background: var(--cbar-tick-label-bg);
655
+ padding: var(--cbar-tick-label-padding, 0 2px);
656
+ white-space: nowrap;
657
+ /* --- Horizontal Ticks --- */
658
+ &.horizontal {
659
+ transform: translateX(-50%); /* Center horizontally by default */
660
+ &.tick-primary {
661
+ top: 100%; /* Position below bar */
662
+ margin-top: var(--cbar-tick-offset, 0);
663
+ }
664
+ &.tick-secondary {
665
+ bottom: 100%; /* Position above bar */
666
+ margin-bottom: var(--cbar-tick-offset, 0);
667
+ }
668
+ &.tick-inside {
669
+ top: 50%; /* Center vertically */
670
+ transform: translate(-50%, -50%); /* Center horizontally and vertically */
671
+ margin: 0; /* No extra margin for inside */
672
+ }
673
+ }
674
+ /* --- Vertical Ticks --- */
675
+ &.vertical {
676
+ transform: translateY(-50%); /* Center vertically by default */
677
+ &.tick-primary {
678
+ left: 100%; /* Position right of bar */
679
+ margin-left: var(--cbar-tick-offset, 1pt);
680
+ }
681
+ &.tick-secondary {
682
+ right: 100%; /* Position left of bar */
683
+ margin-right: var(--cbar-tick-offset, 1pt);
684
+ }
685
+ &.tick-inside {
686
+ left: 50%; /* Center horizontally */
687
+ transform: translate(-50%, -50%); /* Center horizontally and vertically */
688
+ padding: 0; /* No extra padding for inside */
689
+ }
690
+ }
691
+ }
692
+ /* Title row with optional selects */
693
+ .title-row {
694
+ display: inline-flex;
695
+ align-items: center;
696
+ gap: var(--cbar-select-gap, 0.3em);
697
+ white-space: nowrap;
698
+ width: auto;
699
+ &:is(.left, .right) {
700
+ flex-direction: column;
701
+ justify-content: center; /* center title vertically along the bar height */
702
+ }
703
+ /* Rotate only the label element, not the entire row (keeps selects usable) */
704
+ /* Only rotate when orientation is vertical AND title is on left/right side */
705
+ &.vertical:is(.left, .right) .label {
706
+ writing-mode: vertical-lr;
707
+ white-space: nowrap;
708
+ }
709
+ &.vertical.left .label {
710
+ transform: rotate(180deg);
711
+ }
712
+ /* Style PortalSelect triggers in colorbar context */
713
+ :global(:is(.property-select, .color-scale-select)) {
714
+ padding: 0 4px;
715
+ }
716
+ &.loading :global(.property-select) {
717
+ opacity: 0.6;
718
+ pointer-events: none;
719
+ }
720
+ }
721
+ </style>