matterviz 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (926) 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 +44 -0
  5. package/dist/Icon.svelte.d.ts +13 -0
  6. package/dist/MillerIndexInput.svelte +66 -0
  7. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  8. package/dist/api/mp.d.ts +6 -0
  9. package/dist/api/mp.js +22 -0
  10. package/dist/api/optimade.d.ts +45 -0
  11. package/dist/api/optimade.js +141 -0
  12. package/dist/app.css +244 -0
  13. package/dist/brillouin/BrillouinZone.svelte +554 -0
  14. package/dist/brillouin/BrillouinZone.svelte.d.ts +84 -0
  15. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  17. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  19. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  20. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  21. package/dist/brillouin/BrillouinZoneScene.svelte +522 -0
  22. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +49 -0
  23. package/dist/brillouin/BrillouinZoneTooltip.svelte +83 -0
  24. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  25. package/dist/brillouin/compute.d.ts +17 -0
  26. package/dist/brillouin/compute.js +422 -0
  27. package/dist/brillouin/index.d.ts +8 -0
  28. package/dist/brillouin/index.js +7 -0
  29. package/dist/brillouin/types.d.ts +43 -0
  30. package/dist/brillouin/types.js +1 -0
  31. package/dist/chempot-diagram/ChemPotDiagram.svelte +328 -0
  32. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  33. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +843 -0
  34. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3191 -0
  36. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  37. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  38. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  39. package/dist/chempot-diagram/async-compute.svelte.js +80 -0
  40. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  41. package/dist/chempot-diagram/chempot-worker.js +12 -0
  42. package/dist/chempot-diagram/color.d.ts +10 -0
  43. package/dist/chempot-diagram/color.js +32 -0
  44. package/dist/chempot-diagram/compute.d.ts +48 -0
  45. package/dist/chempot-diagram/compute.js +804 -0
  46. package/dist/chempot-diagram/index.d.ts +6 -0
  47. package/dist/chempot-diagram/index.js +6 -0
  48. package/dist/chempot-diagram/pointer.d.ts +16 -0
  49. package/dist/chempot-diagram/pointer.js +40 -0
  50. package/dist/chempot-diagram/temperature.d.ts +15 -0
  51. package/dist/chempot-diagram/temperature.js +34 -0
  52. package/dist/chempot-diagram/types.d.ts +81 -0
  53. package/dist/chempot-diagram/types.js +28 -0
  54. package/dist/colors/index.d.ts +47 -0
  55. package/dist/colors/index.js +204 -0
  56. package/dist/composition/BarChart.svelte +297 -0
  57. package/dist/composition/BarChart.svelte.d.ts +39 -0
  58. package/dist/composition/BubbleChart.svelte +218 -0
  59. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  60. package/dist/composition/Composition.svelte +165 -0
  61. package/dist/composition/Composition.svelte.d.ts +15 -0
  62. package/dist/composition/Formula.svelte +268 -0
  63. package/dist/composition/Formula.svelte.d.ts +19 -0
  64. package/dist/composition/FormulaFilter.svelte +1263 -0
  65. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  66. package/dist/composition/PieChart.svelte +324 -0
  67. package/dist/composition/PieChart.svelte.d.ts +37 -0
  68. package/dist/composition/chem-sys.d.ts +8 -0
  69. package/dist/composition/chem-sys.js +85 -0
  70. package/dist/composition/format.d.ts +15 -0
  71. package/dist/composition/format.js +111 -0
  72. package/dist/composition/index.d.ts +21 -0
  73. package/dist/composition/index.js +15 -0
  74. package/dist/composition/parse.d.ts +56 -0
  75. package/dist/composition/parse.js +486 -0
  76. package/dist/constants.d.ts +29 -0
  77. package/dist/constants.js +99 -0
  78. package/dist/controls.d.ts +14 -0
  79. package/dist/controls.js +30 -0
  80. package/dist/convex-hull/ConvexHull.svelte +157 -0
  81. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  82. package/dist/convex-hull/ConvexHull2D.svelte +827 -0
  83. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  84. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  85. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  86. package/dist/convex-hull/ConvexHull4D.svelte +1394 -0
  87. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  88. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  89. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  90. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  91. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  92. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  93. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  94. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  95. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  96. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  97. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  98. package/dist/convex-hull/StructurePopup.svelte +151 -0
  99. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  100. package/dist/convex-hull/TemperatureSlider.svelte +140 -0
  101. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  102. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  103. package/dist/convex-hull/barycentric-coords.js +182 -0
  104. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  105. package/dist/convex-hull/demo-temperature.js +38 -0
  106. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  107. package/dist/convex-hull/gas-thermodynamics.js +306 -0
  108. package/dist/convex-hull/helpers.d.ts +117 -0
  109. package/dist/convex-hull/helpers.js +718 -0
  110. package/dist/convex-hull/index.d.ts +119 -0
  111. package/dist/convex-hull/index.js +58 -0
  112. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  113. package/dist/convex-hull/thermodynamics.js +1757 -0
  114. package/dist/convex-hull/types.d.ts +162 -0
  115. package/dist/convex-hull/types.js +36 -0
  116. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  117. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  118. package/dist/coordination/calc-coordination.d.ts +15 -0
  119. package/dist/coordination/calc-coordination.js +63 -0
  120. package/dist/coordination/index.d.ts +8 -0
  121. package/dist/coordination/index.js +7 -0
  122. package/dist/effects.svelte.d.ts +12 -0
  123. package/dist/effects.svelte.js +37 -0
  124. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  125. package/dist/element/ElementHeading.svelte +26 -0
  126. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  127. package/dist/element/ElementPhoto.svelte +57 -0
  128. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  129. package/dist/element/ElementStats.svelte +80 -0
  130. package/dist/element/ElementStats.svelte.d.ts +8 -0
  131. package/dist/element/ElementTile.svelte +484 -0
  132. package/dist/element/ElementTile.svelte.d.ts +29 -0
  133. package/dist/element/Nucleus.svelte.d.ts +17 -0
  134. package/dist/element/data.d.ts +2 -0
  135. package/dist/element/data.js +2 -0
  136. package/dist/element/index.d.ts +8 -0
  137. package/dist/element/index.js +7 -0
  138. package/dist/element/types.d.ts +57 -0
  139. package/dist/element/types.js +1 -0
  140. package/dist/feedback/ClickFeedback.svelte +58 -0
  141. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  142. package/dist/feedback/DragOverlay.svelte +42 -0
  143. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  144. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  145. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  146. package/dist/feedback/index.d.ts +4 -0
  147. package/dist/feedback/index.js +4 -0
  148. package/dist/fermi-surface/FermiSlice.svelte +197 -0
  149. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  150. package/dist/fermi-surface/FermiSurface.svelte +606 -0
  151. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  152. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  153. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  154. package/dist/fermi-surface/FermiSurfaceScene.svelte +797 -0
  155. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  156. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +85 -0
  157. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  158. package/dist/fermi-surface/compute.d.ts +5 -0
  159. package/dist/fermi-surface/compute.js +538 -0
  160. package/dist/fermi-surface/constants.d.ts +9 -0
  161. package/dist/fermi-surface/constants.js +27 -0
  162. package/dist/fermi-surface/export.d.ts +5 -0
  163. package/dist/fermi-surface/export.js +51 -0
  164. package/dist/fermi-surface/index.d.ts +12 -0
  165. package/dist/fermi-surface/index.js +13 -0
  166. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  167. package/dist/fermi-surface/marching-cubes.js +2 -0
  168. package/dist/fermi-surface/parse.d.ts +2 -0
  169. package/dist/fermi-surface/parse.js +494 -0
  170. package/dist/fermi-surface/symmetry.d.ts +3 -0
  171. package/dist/fermi-surface/symmetry.js +46 -0
  172. package/dist/fermi-surface/types.d.ts +111 -0
  173. package/dist/fermi-surface/types.js +4 -0
  174. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1547 -0
  175. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  176. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  177. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  178. package/dist/heatmap-matrix/index.d.ts +53 -0
  179. package/dist/heatmap-matrix/index.js +100 -0
  180. package/dist/heatmap-matrix/shared.d.ts +2 -0
  181. package/dist/heatmap-matrix/shared.js +4 -0
  182. package/dist/icons.d.ts +569 -0
  183. package/dist/icons.js +648 -0
  184. package/dist/index.d.ts +39 -0
  185. package/dist/index.js +39 -0
  186. package/dist/io/decompress.d.ts +11 -0
  187. package/dist/io/decompress.js +76 -0
  188. package/dist/io/export.d.ts +16 -0
  189. package/dist/io/export.js +338 -0
  190. package/dist/io/fetch.d.ts +5 -0
  191. package/dist/io/fetch.js +43 -0
  192. package/dist/io/file-drop.d.ts +7 -0
  193. package/dist/io/file-drop.js +42 -0
  194. package/dist/io/index.d.ts +7 -0
  195. package/dist/io/index.js +6 -0
  196. package/dist/io/is-binary.d.ts +1 -0
  197. package/dist/io/is-binary.js +20 -0
  198. package/dist/io/types.d.ts +8 -0
  199. package/dist/io/types.js +1 -0
  200. package/dist/io/url-drop.d.ts +2 -0
  201. package/dist/io/url-drop.js +154 -0
  202. package/dist/isosurface/Isosurface.svelte +285 -0
  203. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  204. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  205. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  206. package/dist/isosurface/index.d.ts +5 -0
  207. package/dist/isosurface/index.js +6 -0
  208. package/dist/isosurface/parse.d.ts +6 -0
  209. package/dist/isosurface/parse.js +552 -0
  210. package/dist/isosurface/slice.d.ts +11 -0
  211. package/dist/isosurface/slice.js +141 -0
  212. package/dist/isosurface/types.d.ts +56 -0
  213. package/dist/isosurface/types.js +227 -0
  214. package/dist/keyboard.d.ts +3 -0
  215. package/dist/keyboard.js +23 -0
  216. package/dist/labels.d.ts +53 -0
  217. package/dist/labels.js +278 -0
  218. package/dist/layout/FullscreenToggle.svelte +50 -0
  219. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  220. package/dist/layout/InfoCard.svelte +120 -0
  221. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  222. package/dist/layout/InfoTag.svelte +185 -0
  223. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  224. package/dist/layout/PropertyFilter.svelte +247 -0
  225. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  226. package/dist/layout/SettingsSection.svelte +148 -0
  227. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  228. package/dist/layout/SubpageGrid.svelte +82 -0
  229. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  230. package/dist/layout/fullscreen.d.ts +9 -0
  231. package/dist/layout/fullscreen.js +53 -0
  232. package/dist/layout/index.d.ts +10 -0
  233. package/dist/layout/index.js +8 -0
  234. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  235. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  236. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  237. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  238. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  239. package/dist/layout/json-tree/index.d.ts +3 -0
  240. package/dist/layout/json-tree/index.js +3 -0
  241. package/dist/layout/json-tree/types.d.ts +74 -0
  242. package/dist/layout/json-tree/types.js +2 -0
  243. package/dist/layout/json-tree/utils.d.ts +29 -0
  244. package/dist/layout/json-tree/utils.js +642 -0
  245. package/dist/marching-cubes.d.ts +14 -0
  246. package/dist/marching-cubes.js +535 -0
  247. package/dist/math.d.ts +105 -0
  248. package/dist/math.js +920 -0
  249. package/dist/overlays/ContextMenu.svelte +162 -0
  250. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  251. package/dist/overlays/CopyButton.svelte +45 -0
  252. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  253. package/dist/overlays/DragControlTab.svelte +98 -0
  254. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  255. package/dist/overlays/DraggablePane.svelte +487 -0
  256. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  257. package/dist/overlays/InfoPaneCards.svelte +149 -0
  258. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  259. package/dist/overlays/index.d.ts +3 -0
  260. package/dist/overlays/index.js +3 -0
  261. package/dist/periodic-table/PeriodicTable.svelte +480 -0
  262. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  263. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  264. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  265. package/dist/periodic-table/PropertySelect.svelte +38 -0
  266. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  267. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  268. package/dist/periodic-table/index.d.ts +10 -0
  269. package/dist/periodic-table/index.js +4 -0
  270. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1092 -0
  271. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  272. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  273. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  274. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +127 -0
  275. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  276. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  277. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  278. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  279. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  280. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  281. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  282. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  283. package/dist/phase-diagram/build-diagram.js +160 -0
  284. package/dist/phase-diagram/colors.d.ts +35 -0
  285. package/dist/phase-diagram/colors.js +51 -0
  286. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  287. package/dist/phase-diagram/diagram-input.js +3 -0
  288. package/dist/phase-diagram/index.d.ts +13 -0
  289. package/dist/phase-diagram/index.js +11 -0
  290. package/dist/phase-diagram/parse.d.ts +55 -0
  291. package/dist/phase-diagram/parse.js +273 -0
  292. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  293. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  294. package/dist/phase-diagram/types.d.ts +93 -0
  295. package/dist/phase-diagram/types.js +1 -0
  296. package/dist/phase-diagram/utils.d.ts +118 -0
  297. package/dist/phase-diagram/utils.js +600 -0
  298. package/dist/plot/bar/BarPlot.svelte +1755 -0
  299. package/dist/plot/bar/BarPlot.svelte.d.ts +84 -0
  300. package/dist/plot/bar/BarPlotControls.svelte +67 -0
  301. package/dist/plot/bar/BarPlotControls.svelte.d.ts +18 -0
  302. package/dist/plot/bar/SpacegroupBarPlot.svelte +293 -0
  303. package/dist/plot/bar/SpacegroupBarPlot.svelte.d.ts +9 -0
  304. package/dist/plot/bar/data.d.ts +40 -0
  305. package/dist/plot/bar/data.js +154 -0
  306. package/dist/plot/bar/geometry.d.ts +39 -0
  307. package/dist/plot/bar/geometry.js +60 -0
  308. package/dist/plot/bar/index.d.ts +3 -0
  309. package/dist/plot/bar/index.js +3 -0
  310. package/dist/plot/box/BoxPlot.svelte +1462 -0
  311. package/dist/plot/box/BoxPlot.svelte.d.ts +94 -0
  312. package/dist/plot/box/BoxPlotControls.svelte +109 -0
  313. package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
  314. package/dist/plot/box/Violin.svelte +14 -0
  315. package/dist/plot/box/Violin.svelte.d.ts +70 -0
  316. package/dist/plot/box/box-plot.d.ts +55 -0
  317. package/dist/plot/box/box-plot.js +126 -0
  318. package/dist/plot/box/index.d.ts +5 -0
  319. package/dist/plot/box/index.js +5 -0
  320. package/dist/plot/box/kde.d.ts +16 -0
  321. package/dist/plot/box/kde.js +160 -0
  322. package/dist/plot/box/quantile.d.ts +3 -0
  323. package/dist/plot/box/quantile.js +53 -0
  324. package/dist/plot/core/auto-place.d.ts +43 -0
  325. package/dist/plot/core/auto-place.js +122 -0
  326. package/dist/plot/core/axis-utils.d.ts +46 -0
  327. package/dist/plot/core/axis-utils.js +110 -0
  328. package/dist/plot/core/components/AxisLabel.svelte +51 -0
  329. package/dist/plot/core/components/AxisLabel.svelte.d.ts +16 -0
  330. package/dist/plot/core/components/ColorBar.svelte +724 -0
  331. package/dist/plot/core/components/ColorBar.svelte.d.ts +31 -0
  332. package/dist/plot/core/components/ColorScaleSelect.svelte +55 -0
  333. package/dist/plot/core/components/ColorScaleSelect.svelte.d.ts +15 -0
  334. package/dist/plot/core/components/ControlPane.svelte +46 -0
  335. package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
  336. package/dist/plot/core/components/FillArea.svelte +234 -0
  337. package/dist/plot/core/components/FillArea.svelte.d.ts +21 -0
  338. package/dist/plot/core/components/InteractiveAxisLabel.svelte +96 -0
  339. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +14 -0
  340. package/dist/plot/core/components/Line.svelte +101 -0
  341. package/dist/plot/core/components/Line.svelte.d.ts +15 -0
  342. package/dist/plot/core/components/PlotAxis.svelte +171 -0
  343. package/dist/plot/core/components/PlotAxis.svelte.d.ts +25 -0
  344. package/dist/plot/core/components/PlotControls.svelte +525 -0
  345. package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
  346. package/dist/plot/core/components/PlotLegend.svelte +580 -0
  347. package/dist/plot/core/components/PlotLegend.svelte.d.ts +30 -0
  348. package/dist/plot/core/components/PlotTooltip.svelte +83 -0
  349. package/dist/plot/core/components/PlotTooltip.svelte.d.ts +25 -0
  350. package/dist/plot/core/components/PortalSelect.svelte +257 -0
  351. package/dist/plot/core/components/PortalSelect.svelte.d.ts +16 -0
  352. package/dist/plot/core/components/ReferenceLine.svelte +204 -0
  353. package/dist/plot/core/components/ReferenceLine.svelte.d.ts +20 -0
  354. package/dist/plot/core/components/ReferenceLine3D.svelte +156 -0
  355. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +14 -0
  356. package/dist/plot/core/components/ReferencePlane.svelte +175 -0
  357. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +14 -0
  358. package/dist/plot/core/components/ZeroLines.svelte +97 -0
  359. package/dist/plot/core/components/ZeroLines.svelte.d.ts +33 -0
  360. package/dist/plot/core/components/ZoomRect.svelte +23 -0
  361. package/dist/plot/core/components/ZoomRect.svelte.d.ts +8 -0
  362. package/dist/plot/core/components/index.d.ts +17 -0
  363. package/dist/plot/core/components/index.js +17 -0
  364. package/dist/plot/core/data-cleaning.d.ts +107 -0
  365. package/dist/plot/core/data-cleaning.js +853 -0
  366. package/dist/plot/core/data-transform.d.ts +16 -0
  367. package/dist/plot/core/data-transform.js +45 -0
  368. package/dist/plot/core/fill-utils.d.ts +33 -0
  369. package/dist/plot/core/fill-utils.js +388 -0
  370. package/dist/plot/core/hover-lock.svelte.d.ts +14 -0
  371. package/dist/plot/core/hover-lock.svelte.js +45 -0
  372. package/dist/plot/core/index.d.ts +10 -0
  373. package/dist/plot/core/index.js +11 -0
  374. package/dist/plot/core/interactions.d.ts +35 -0
  375. package/dist/plot/core/interactions.js +195 -0
  376. package/dist/plot/core/layout.d.ts +79 -0
  377. package/dist/plot/core/layout.js +281 -0
  378. package/dist/plot/core/reference-line.d.ts +60 -0
  379. package/dist/plot/core/reference-line.js +301 -0
  380. package/dist/plot/core/scales.d.ts +48 -0
  381. package/dist/plot/core/scales.js +480 -0
  382. package/dist/plot/core/svg.d.ts +2 -0
  383. package/dist/plot/core/svg.js +41 -0
  384. package/dist/plot/core/types.d.ts +771 -0
  385. package/dist/plot/core/types.js +99 -0
  386. package/dist/plot/core/utils/label-placement.d.ts +68 -0
  387. package/dist/plot/core/utils/label-placement.js +326 -0
  388. package/dist/plot/core/utils/series-visibility.d.ts +26 -0
  389. package/dist/plot/core/utils/series-visibility.js +112 -0
  390. package/dist/plot/core/utils.d.ts +11 -0
  391. package/dist/plot/core/utils.js +27 -0
  392. package/dist/plot/histogram/Histogram.svelte +1418 -0
  393. package/dist/plot/histogram/Histogram.svelte.d.ts +50 -0
  394. package/dist/plot/histogram/HistogramControls.svelte +212 -0
  395. package/dist/plot/histogram/HistogramControls.svelte.d.ts +22 -0
  396. package/dist/plot/histogram/index.d.ts +2 -0
  397. package/dist/plot/histogram/index.js +2 -0
  398. package/dist/plot/index.d.ts +8 -0
  399. package/dist/plot/index.js +10 -0
  400. package/dist/plot/sankey/Sankey.svelte +700 -0
  401. package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
  402. package/dist/plot/sankey/SankeyControls.svelte +98 -0
  403. package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
  404. package/dist/plot/sankey/index.d.ts +4 -0
  405. package/dist/plot/sankey/index.js +3 -0
  406. package/dist/plot/sankey/sankey-types.d.ts +42 -0
  407. package/dist/plot/sankey/sankey-types.js +4 -0
  408. package/dist/plot/sankey/sankey.d.ts +52 -0
  409. package/dist/plot/sankey/sankey.js +187 -0
  410. package/dist/plot/scatter/BinnedScatterPlot.svelte +1116 -0
  411. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +66 -0
  412. package/dist/plot/scatter/ElementScatter.svelte +63 -0
  413. package/dist/plot/scatter/ElementScatter.svelte.d.ts +14 -0
  414. package/dist/plot/scatter/ScatterPlot.svelte +2357 -0
  415. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +96 -0
  416. package/dist/plot/scatter/ScatterPlotControls.svelte +307 -0
  417. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +17 -0
  418. package/dist/plot/scatter/ScatterPoint.svelte +182 -0
  419. package/dist/plot/scatter/ScatterPoint.svelte.d.ts +22 -0
  420. package/dist/plot/scatter/adaptive-density.d.ts +79 -0
  421. package/dist/plot/scatter/adaptive-density.js +217 -0
  422. package/dist/plot/scatter/binned-scatter-types.d.ts +59 -0
  423. package/dist/plot/scatter/binned-scatter-types.js +1 -0
  424. package/dist/plot/scatter/index.d.ts +7 -0
  425. package/dist/plot/scatter/index.js +5 -0
  426. package/dist/plot/scatter/scatter-data.d.ts +19 -0
  427. package/dist/plot/scatter/scatter-data.js +212 -0
  428. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +531 -0
  429. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +95 -0
  430. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +438 -0
  431. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +20 -0
  432. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +912 -0
  433. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +74 -0
  434. package/dist/plot/scatter-3d/Surface3D.svelte +197 -0
  435. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +13 -0
  436. package/dist/plot/scatter-3d/index.d.ts +4 -0
  437. package/dist/plot/scatter-3d/index.js +4 -0
  438. package/dist/plot/sunburst/Sunburst.svelte +1045 -0
  439. package/dist/plot/sunburst/Sunburst.svelte.d.ts +96 -0
  440. package/dist/plot/sunburst/SunburstControls.svelte +200 -0
  441. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
  442. package/dist/plot/sunburst/index.d.ts +4 -0
  443. package/dist/plot/sunburst/index.js +4 -0
  444. package/dist/plot/sunburst/render.d.ts +34 -0
  445. package/dist/plot/sunburst/render.js +122 -0
  446. package/dist/plot/sunburst/sunburst.d.ts +62 -0
  447. package/dist/plot/sunburst/sunburst.js +266 -0
  448. package/dist/rdf/RdfPlot.svelte +248 -0
  449. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  450. package/dist/rdf/calc-rdf.d.ts +4 -0
  451. package/dist/rdf/calc-rdf.js +98 -0
  452. package/dist/rdf/index.d.ts +23 -0
  453. package/dist/rdf/index.js +2 -0
  454. package/dist/sanitize.d.ts +6 -0
  455. package/dist/sanitize.js +116 -0
  456. package/dist/settings.d.ts +319 -0
  457. package/dist/settings.js +1394 -0
  458. package/dist/spectral/Bands.svelte +1050 -0
  459. package/dist/spectral/Bands.svelte.d.ts +39 -0
  460. package/dist/spectral/BandsAndDos.svelte +134 -0
  461. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  462. package/dist/spectral/BrillouinBandsDos.svelte +264 -0
  463. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  464. package/dist/spectral/Dos.svelte +688 -0
  465. package/dist/spectral/Dos.svelte.d.ts +29 -0
  466. package/dist/spectral/helpers.d.ts +121 -0
  467. package/dist/spectral/helpers.js +1098 -0
  468. package/dist/spectral/index.d.ts +6 -0
  469. package/dist/spectral/index.js +6 -0
  470. package/dist/spectral/types.d.ts +84 -0
  471. package/dist/spectral/types.js +2 -0
  472. package/dist/state.svelte.d.ts +25 -0
  473. package/dist/state.svelte.js +45 -0
  474. package/dist/structure/Arrow.svelte +72 -0
  475. package/dist/structure/Arrow.svelte.d.ts +15 -0
  476. package/dist/structure/AtomLegend.svelte +814 -0
  477. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  478. package/dist/structure/Bond.svelte +140 -0
  479. package/dist/structure/Bond.svelte.d.ts +9 -0
  480. package/dist/structure/CanvasTooltip.svelte +33 -0
  481. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  482. package/dist/structure/CellSelect.svelte +348 -0
  483. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  484. package/dist/structure/Cylinder.svelte +49 -0
  485. package/dist/structure/Cylinder.svelte.d.ts +13 -0
  486. package/dist/structure/Lattice.svelte +196 -0
  487. package/dist/structure/Lattice.svelte.d.ts +17 -0
  488. package/dist/structure/Structure.svelte +2254 -0
  489. package/dist/structure/Structure.svelte.d.ts +89 -0
  490. package/dist/structure/StructureControls.svelte +1273 -0
  491. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  492. package/dist/structure/StructureExportPane.svelte +252 -0
  493. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  494. package/dist/structure/StructureInfoPane.svelte +736 -0
  495. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  496. package/dist/structure/StructureScene.svelte +2256 -0
  497. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  498. package/dist/structure/atom-properties.d.ts +37 -0
  499. package/dist/structure/atom-properties.js +200 -0
  500. package/dist/structure/bond-order-perception.d.ts +13 -0
  501. package/dist/structure/bond-order-perception.js +384 -0
  502. package/dist/structure/bonding.d.ts +69 -0
  503. package/dist/structure/bonding.js +724 -0
  504. package/dist/structure/export.d.ts +20 -0
  505. package/dist/structure/export.js +731 -0
  506. package/dist/structure/index.d.ts +124 -0
  507. package/dist/structure/index.js +167 -0
  508. package/dist/structure/label-placement.d.ts +14 -0
  509. package/dist/structure/label-placement.js +72 -0
  510. package/dist/structure/measure.d.ts +7 -0
  511. package/dist/structure/measure.js +30 -0
  512. package/dist/structure/parse.d.ts +66 -0
  513. package/dist/structure/parse.js +1410 -0
  514. package/dist/structure/partial-occupancy.d.ts +25 -0
  515. package/dist/structure/partial-occupancy.js +99 -0
  516. package/dist/structure/pbc.d.ts +9 -0
  517. package/dist/structure/pbc.js +127 -0
  518. package/dist/structure/supercell.d.ts +8 -0
  519. package/dist/structure/supercell.js +170 -0
  520. package/dist/structure/validation.d.ts +2 -0
  521. package/dist/structure/validation.js +10 -0
  522. package/dist/symmetry/SymmetryStats.svelte +226 -0
  523. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  524. package/dist/symmetry/WyckoffTable.svelte +120 -0
  525. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  526. package/dist/symmetry/cell-transform.d.ts +12 -0
  527. package/dist/symmetry/cell-transform.js +91 -0
  528. package/dist/symmetry/index.d.ts +43 -0
  529. package/dist/symmetry/index.js +226 -0
  530. package/dist/symmetry/spacegroups.d.ts +16 -0
  531. package/dist/symmetry/spacegroups.js +429 -0
  532. package/dist/table/HeatmapTable.svelte +1885 -0
  533. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  534. package/dist/table/ToggleMenu.svelte +385 -0
  535. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  536. package/dist/table/index.d.ts +72 -0
  537. package/dist/table/index.js +38 -0
  538. package/dist/theme/ThemeControl.svelte +53 -0
  539. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  540. package/dist/theme/index.d.ts +29 -0
  541. package/dist/theme/index.js +79 -0
  542. package/dist/time.d.ts +4 -0
  543. package/dist/time.js +70 -0
  544. package/dist/tooltip/KCoords.svelte +45 -0
  545. package/dist/tooltip/KCoords.svelte.d.ts +8 -0
  546. package/dist/tooltip/TooltipContent.svelte +58 -0
  547. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  548. package/dist/tooltip/index.d.ts +3 -0
  549. package/dist/tooltip/index.js +2 -0
  550. package/dist/tooltip/types.d.ts +8 -0
  551. package/dist/tooltip/types.js +1 -0
  552. package/dist/trajectory/Trajectory.svelte +1571 -0
  553. package/dist/trajectory/Trajectory.svelte.d.ts +78 -0
  554. package/dist/trajectory/TrajectoryError.svelte +128 -0
  555. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  556. package/dist/trajectory/TrajectoryExportPane.svelte +358 -0
  557. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  558. package/dist/trajectory/TrajectoryInfoPane.svelte +314 -0
  559. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  560. package/dist/trajectory/constants.d.ts +6 -0
  561. package/dist/trajectory/constants.js +7 -0
  562. package/dist/trajectory/extract.d.ts +5 -0
  563. package/dist/trajectory/extract.js +162 -0
  564. package/dist/trajectory/format-detect.d.ts +10 -0
  565. package/dist/trajectory/format-detect.js +90 -0
  566. package/dist/trajectory/frame-reader.d.ts +17 -0
  567. package/dist/trajectory/frame-reader.js +299 -0
  568. package/dist/trajectory/helpers.d.ts +15 -0
  569. package/dist/trajectory/helpers.js +164 -0
  570. package/dist/trajectory/index.d.ts +63 -0
  571. package/dist/trajectory/index.js +126 -0
  572. package/dist/trajectory/parse/ase.d.ts +2 -0
  573. package/dist/trajectory/parse/ase.js +73 -0
  574. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  575. package/dist/trajectory/parse/hdf5.js +127 -0
  576. package/dist/trajectory/parse/index.d.ts +12 -0
  577. package/dist/trajectory/parse/index.js +306 -0
  578. package/dist/trajectory/parse/lammps.d.ts +5 -0
  579. package/dist/trajectory/parse/lammps.js +179 -0
  580. package/dist/trajectory/parse/vasp.d.ts +2 -0
  581. package/dist/trajectory/parse/vasp.js +87 -0
  582. package/dist/trajectory/parse/xyz.d.ts +26 -0
  583. package/dist/trajectory/parse/xyz.js +123 -0
  584. package/dist/trajectory/plotting.d.ts +28 -0
  585. package/dist/trajectory/plotting.js +423 -0
  586. package/dist/trajectory/types.d.ts +11 -0
  587. package/dist/trajectory/types.js +1 -0
  588. package/dist/utils.d.ts +7 -0
  589. package/dist/utils.js +47 -0
  590. package/dist/xrd/XrdPlot.svelte +616 -0
  591. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  592. package/dist/xrd/broadening.d.ts +20 -0
  593. package/dist/xrd/broadening.js +97 -0
  594. package/dist/xrd/calc-xrd.d.ts +37 -0
  595. package/dist/xrd/calc-xrd.js +339 -0
  596. package/dist/xrd/index.d.ts +37 -0
  597. package/dist/xrd/index.js +4 -0
  598. package/dist/xrd/parse.d.ts +13 -0
  599. package/dist/xrd/parse.js +749 -0
  600. package/license +1 -1
  601. package/package.json +237 -1458
  602. package/readme.md +98 -171
  603. package/.vscode/launch.json +0 -13
  604. package/.vscodeignore +0 -7
  605. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  606. package/dist/assets/browser-DdDecX_W.js +0 -1
  607. package/dist/assets/export-qgn-H9y6.js +0 -2
  608. package/dist/assets/main-DiKYzti2.css +0 -1
  609. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  610. package/dist/extension.js +0 -31293
  611. package/dist/src/lib/FilePicker.svelte +0 -360
  612. package/dist/src/lib/Icon.svelte +0 -41
  613. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  614. package/dist/src/lib/api/mp.ts +0 -26
  615. package/dist/src/lib/api/optimade.ts +0 -204
  616. package/dist/src/lib/app.css +0 -247
  617. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  618. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  619. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  620. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  621. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  622. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  623. package/dist/src/lib/brillouin/compute.ts +0 -529
  624. package/dist/src/lib/brillouin/index.ts +0 -8
  625. package/dist/src/lib/brillouin/types.ts +0 -51
  626. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  627. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  628. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  629. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  630. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  631. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  632. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  633. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  634. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  635. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  636. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  637. package/dist/src/lib/colors/index.ts +0 -249
  638. package/dist/src/lib/composition/BarChart.svelte +0 -297
  639. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  640. package/dist/src/lib/composition/Composition.svelte +0 -165
  641. package/dist/src/lib/composition/Formula.svelte +0 -268
  642. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  643. package/dist/src/lib/composition/PieChart.svelte +0 -323
  644. package/dist/src/lib/composition/format.ts +0 -155
  645. package/dist/src/lib/composition/index.ts +0 -37
  646. package/dist/src/lib/composition/parse.ts +0 -605
  647. package/dist/src/lib/constants.ts +0 -134
  648. package/dist/src/lib/controls.ts +0 -42
  649. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  650. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  651. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  652. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  653. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  654. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  655. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  656. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  657. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  658. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  659. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +0 -140
  660. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  661. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  662. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  663. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  664. package/dist/src/lib/convex-hull/index.ts +0 -202
  665. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  666. package/dist/src/lib/convex-hull/types.ts +0 -267
  667. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  668. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  669. package/dist/src/lib/coordination/index.ts +0 -9
  670. package/dist/src/lib/effects.svelte.ts +0 -48
  671. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  672. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  673. package/dist/src/lib/element/ElementStats.svelte +0 -80
  674. package/dist/src/lib/element/ElementTile.svelte +0 -484
  675. package/dist/src/lib/element/data.ts +0 -14
  676. package/dist/src/lib/element/index.ts +0 -8
  677. package/dist/src/lib/element/types.ts +0 -62
  678. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  679. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  680. package/dist/src/lib/feedback/index.ts +0 -4
  681. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  682. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  683. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  684. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  685. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  686. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  687. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  688. package/dist/src/lib/fermi-surface/export.ts +0 -64
  689. package/dist/src/lib/fermi-surface/index.ts +0 -14
  690. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  691. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  692. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  693. package/dist/src/lib/fermi-surface/types.ts +0 -159
  694. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  695. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  696. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  697. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  698. package/dist/src/lib/icons.ts +0 -650
  699. package/dist/src/lib/index.ts +0 -61
  700. package/dist/src/lib/io/decompress.ts +0 -92
  701. package/dist/src/lib/io/export.ts +0 -385
  702. package/dist/src/lib/io/fetch.ts +0 -46
  703. package/dist/src/lib/io/file-drop.ts +0 -51
  704. package/dist/src/lib/io/index.ts +0 -7
  705. package/dist/src/lib/io/is-binary.ts +0 -24
  706. package/dist/src/lib/io/types.ts +0 -8
  707. package/dist/src/lib/io/url-drop.ts +0 -141
  708. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  709. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  710. package/dist/src/lib/isosurface/index.ts +0 -7
  711. package/dist/src/lib/isosurface/parse.ts +0 -656
  712. package/dist/src/lib/isosurface/slice.ts +0 -175
  713. package/dist/src/lib/isosurface/types.ts +0 -309
  714. package/dist/src/lib/labels.ts +0 -320
  715. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  716. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  717. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  718. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  719. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  720. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  721. package/dist/src/lib/layout/fullscreen.ts +0 -65
  722. package/dist/src/lib/layout/index.ts +0 -11
  723. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  724. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  725. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  726. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  727. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  728. package/dist/src/lib/marching-cubes.ts +0 -614
  729. package/dist/src/lib/math.ts +0 -1081
  730. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  731. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  732. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  733. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  734. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  735. package/dist/src/lib/overlays/index.ts +0 -3
  736. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  737. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  738. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  739. package/dist/src/lib/periodic-table/index.ts +0 -12
  740. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  741. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  742. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  743. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  744. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  745. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  746. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  747. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  748. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  749. package/dist/src/lib/phase-diagram/index.ts +0 -13
  750. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  751. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  752. package/dist/src/lib/phase-diagram/types.ts +0 -144
  753. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  754. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  755. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  756. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  757. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  758. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  759. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  760. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  761. package/dist/src/lib/plot/FillArea.svelte +0 -223
  762. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  763. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  764. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  765. package/dist/src/lib/plot/Line.svelte +0 -84
  766. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  767. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  768. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  769. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  770. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  771. package/dist/src/lib/plot/ReferenceLine.svelte +0 -204
  772. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  773. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  774. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  775. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  776. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  777. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  778. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  779. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  780. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  781. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  782. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  783. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  784. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  785. package/dist/src/lib/plot/auto-place.ts +0 -184
  786. package/dist/src/lib/plot/axis-utils.ts +0 -122
  787. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  788. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  789. package/dist/src/lib/plot/data-transform.ts +0 -69
  790. package/dist/src/lib/plot/defaults.ts +0 -9
  791. package/dist/src/lib/plot/fill-utils.ts +0 -494
  792. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  793. package/dist/src/lib/plot/index.ts +0 -53
  794. package/dist/src/lib/plot/interactions.ts +0 -119
  795. package/dist/src/lib/plot/layout.ts +0 -425
  796. package/dist/src/lib/plot/reference-line.ts +0 -426
  797. package/dist/src/lib/plot/scales.ts +0 -654
  798. package/dist/src/lib/plot/svg.ts +0 -23
  799. package/dist/src/lib/plot/types.ts +0 -1144
  800. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  801. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  802. package/dist/src/lib/plot/utils.ts +0 -11
  803. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  804. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  805. package/dist/src/lib/rdf/index.ts +0 -27
  806. package/dist/src/lib/sanitize.ts +0 -126
  807. package/dist/src/lib/settings.ts +0 -1479
  808. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  809. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  810. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  811. package/dist/src/lib/spectral/Dos.svelte +0 -697
  812. package/dist/src/lib/spectral/helpers.ts +0 -1381
  813. package/dist/src/lib/spectral/index.ts +0 -8
  814. package/dist/src/lib/spectral/types.ts +0 -112
  815. package/dist/src/lib/state.svelte.ts +0 -64
  816. package/dist/src/lib/structure/Arrow.svelte +0 -72
  817. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  818. package/dist/src/lib/structure/Bond.svelte +0 -140
  819. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  820. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  821. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  822. package/dist/src/lib/structure/Lattice.svelte +0 -196
  823. package/dist/src/lib/structure/Structure.svelte +0 -2248
  824. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  825. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  826. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  827. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  828. package/dist/src/lib/structure/atom-properties.ts +0 -316
  829. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  830. package/dist/src/lib/structure/bonding.ts +0 -944
  831. package/dist/src/lib/structure/export.ts +0 -861
  832. package/dist/src/lib/structure/index.ts +0 -291
  833. package/dist/src/lib/structure/label-placement.ts +0 -130
  834. package/dist/src/lib/structure/measure.ts +0 -45
  835. package/dist/src/lib/structure/parse.ts +0 -1705
  836. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  837. package/dist/src/lib/structure/pbc.ts +0 -164
  838. package/dist/src/lib/structure/supercell.ts +0 -226
  839. package/dist/src/lib/structure/validation.ts +0 -11
  840. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  841. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  842. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  843. package/dist/src/lib/symmetry/index.ts +0 -348
  844. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  845. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  846. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  847. package/dist/src/lib/table/index.ts +0 -139
  848. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  849. package/dist/src/lib/theme/index.ts +0 -107
  850. package/dist/src/lib/time.ts +0 -71
  851. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  852. package/dist/src/lib/tooltip/index.ts +0 -2
  853. package/dist/src/lib/tooltip/types.ts +0 -13
  854. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  855. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  856. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  857. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  858. package/dist/src/lib/trajectory/constants.ts +0 -7
  859. package/dist/src/lib/trajectory/extract.ts +0 -196
  860. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  861. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  862. package/dist/src/lib/trajectory/helpers.ts +0 -217
  863. package/dist/src/lib/trajectory/index.ts +0 -218
  864. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  865. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  866. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  867. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  868. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  869. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  870. package/dist/src/lib/trajectory/plotting.ts +0 -599
  871. package/dist/src/lib/trajectory/types.ts +0 -13
  872. package/dist/src/lib/utils.ts +0 -56
  873. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  874. package/dist/src/lib/xrd/broadening.ts +0 -130
  875. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  876. package/dist/src/lib/xrd/index.ts +0 -38
  877. package/dist/src/lib/xrd/parse.ts +0 -858
  878. package/dist/webview.js +0 -29421
  879. package/icon.png +0 -0
  880. package/matterviz-0.3.2.vsix +0 -0
  881. package/matterviz-0.3.4.vsix +0 -0
  882. package/matterviz-0.3.5.vsix +0 -0
  883. package/scripts/sync-config.ts +0 -101
  884. package/src/declarations.d.ts +0 -2
  885. package/src/extension.ts +0 -972
  886. package/src/node-io.ts +0 -65
  887. package/src/types.ts +0 -17
  888. package/src/webview/JsonBrowser.svelte +0 -1079
  889. package/src/webview/PlotPanel.svelte +0 -346
  890. package/src/webview/detect.ts +0 -444
  891. package/src/webview/main.ts +0 -764
  892. package/src/webview/plot-utils.ts +0 -250
  893. package/test-fixtures/all-viz-types.json.gz +0 -0
  894. package/test-fixtures/plot-demo-data.json.gz +0 -0
  895. package/tests/detect.test.ts +0 -604
  896. package/tests/extension.test.ts +0 -2041
  897. package/tests/node-io.test.ts +0 -39
  898. package/tests/plot-utils.test.ts +0 -302
  899. package/tests/vite-plugin-json-gz.test.ts +0 -114
  900. package/tests/vscode-mock.ts +0 -18
  901. package/tests/webview.test.ts +0 -231
  902. package/tsconfig.json +0 -20
  903. package/vite-plugin-json-gz.ts +0 -29
  904. package/vite.config.ts +0 -34
  905. package/vite.extension.config.ts +0 -34
  906. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  907. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  908. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  909. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  910. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  911. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  912. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  913. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  914. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  915. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  916. /package/dist/{src/lib/element → element}/data.json +0 -0
  917. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  918. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  919. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  920. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  921. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  922. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  923. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  924. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  925. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  926. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,724 @@
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
+ } // 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(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
+ }
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 10 ** log_val
236
+ })
237
+ }
238
+ // Use D3's default nice ticks for linear scale
239
+ if (snap_ticks) return scale.ticks(n_ticks)
240
+ // Generate exactly n_ticks evenly spaced linear ticks
241
+ return [...Array(n_ticks).keys()].map((idx) => {
242
+ const fraction = idx / (n_ticks - 1)
243
+ return scale_min + fraction * (scale_max - scale_min)
244
+ })
245
+
246
+ })
247
+
248
+ // Update nice_range binding when snapping ticks
249
+ $effect.pre(() => {
250
+ if (snap_ticks && !Array.isArray(tick_labels)) {
251
+ // Use derived scale to get niced domain
252
+ const domain = scale_for_ticks.domain()
253
+ // Ensure domain has two elements before assigning
254
+ if (domain.length === 2) nice_range = domain as Vec2
255
+ else nice_range = range // Fallback
256
+ } else nice_range = range // Use original range if not snapping or labels provided
257
+ })
258
+
259
+ // Determine effective color scale function to use
260
+ let actual_color_scale_fn = $derived.by(() => {
261
+ if (color_scale_fn) return color_scale_fn // Prioritize passed function
262
+
263
+ // Fallback: create function from scheme name/function in 'color_scale' prop
264
+ let interpolator = d3_sc.interpolateViridis // Default interpolator
265
+ if (typeof color_scale === `string`) {
266
+ const func_name = color_scale.startsWith(`interpolate`)
267
+ ? color_scale
268
+ : `interpolate${color_scale}`
269
+ if (func_name in d3_sc) {
270
+ interpolator = d3_sc[func_name as D3InterpolateName]
271
+ } else {
272
+ console.error(
273
+ `Color scale '${color_scale}' not found. Falling back on 'Viridis'.`,
274
+ )
275
+ }
276
+ } else if (typeof color_scale === `function`) {
277
+ // User passed a function (assumed interpolator [0,1] -> color)
278
+ interpolator = color_scale
279
+ }
280
+
281
+ // Need a domain for this fallback scale! Use 'range' prop.
282
+ let [min_val, max_val] = range
283
+ const type_name = get_scale_type_name(scale_type)
284
+
285
+ // Use scale_type for fallback scale creation too. Validate domain for log.
286
+ let use_log_fallback = type_name === `log`
287
+ if (use_log_fallback) {
288
+ if (max_val <= 0) {
289
+ console.warn(
290
+ `Log scale requires a positive max value for fallback scale. Received max=${max_val}. Using linear scale for colors.`,
291
+ )
292
+ use_log_fallback = false
293
+ } else if (min_val <= 0) {
294
+ console.warn(
295
+ `Log scale received non-positive min value (${min_val}) for fallback scale. Using epsilon=${math.LOG_EPS} instead.`,
296
+ )
297
+ min_val = math.LOG_EPS // Substitute with epsilon
298
+ }
299
+ }
300
+
301
+ // Use potentially adjusted min/max for domain (ascending)
302
+ const lo = Math.min(min_val, max_val)
303
+ const hi = Math.max(min_val, max_val)
304
+ const domain_for_scale: [number, number] = [lo, hi]
305
+
306
+ // For arcsinh, create a custom color scale
307
+ if (type_name === `arcsinh`) {
308
+ // Guard against very small thresholds that could cause precision issues
309
+ const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
310
+ const t_min = Math.asinh(lo / threshold)
311
+ const t_max = Math.asinh(hi / threshold)
312
+ return (value: number): string => {
313
+ const t_val = Math.asinh(value / threshold)
314
+ const normalized = t_max === t_min ? 0.5 : (t_val - t_min) / (t_max - t_min)
315
+ return interpolator(Math.max(0, Math.min(1, normalized)))
316
+ }
317
+ }
318
+
319
+ return use_log_fallback
320
+ ? d3.scaleSequentialLog(interpolator).domain(domain_for_scale)
321
+ : d3.scaleSequential(interpolator).domain(domain_for_scale)
322
+ })
323
+
324
+ // Determine effective domain for color ramp interpolation *steps*
325
+ // Prioritize color_scale_domain if provided, otherwise use general 'range' prop.
326
+ let color_interp_domain = $derived(color_scale_domain ?? range)
327
+
328
+ let grad_dir = $derived(orientation === `horizontal` ? `to right` : `to top`)
329
+
330
+ // Generate color stops for gradient background using effective scale and domain
331
+ let ramped = $derived.by(() => {
332
+ const [min_ramp_domain, max_ramp_domain] = color_interp_domain
333
+ const type_name = get_scale_type_name(scale_type)
334
+
335
+ // Validate domain for log interpolation and apply epsilon if needed
336
+ let use_log_interp = type_name === `log`
337
+ let adjusted_min_ramp = min_ramp_domain
338
+ let adjusted_max_ramp = max_ramp_domain
339
+
340
+ if (use_log_interp) {
341
+ if (max_ramp_domain <= 0) {
342
+ console.warn(
343
+ `Log scale specified for gradient, but max domain value (${max_ramp_domain}) is not positive. Using linear interpolation.`,
344
+ )
345
+ use_log_interp = false
346
+ } else if (min_ramp_domain <= 0) {
347
+ console.warn(
348
+ `Log scale specified for gradient, but min domain value (${min_ramp_domain}) is not positive. Using epsilon=${math.LOG_EPS} instead.`,
349
+ )
350
+ adjusted_min_ramp = math.LOG_EPS // Substitute with epsilon
351
+ }
352
+ }
353
+
354
+ const n_steps = Math.max(2, Math.floor(steps)) // guard against steps <= 1 to avoid NaN/degenerate gradients
355
+
356
+ // Pre-compute loop-invariant values for each scale type
357
+ let log_min = 0, log_max = 0, log_span = 0
358
+ let asinh_threshold = 1, asinh_min = 0, asinh_max = 0, asinh_span = 0
359
+ const linear_span = max_ramp_domain - min_ramp_domain
360
+
361
+ if (use_log_interp) {
362
+ log_min = Math.log10(adjusted_min_ramp)
363
+ log_max = Math.log10(adjusted_max_ramp)
364
+ log_span = log_max - log_min
365
+ } else if (type_name === `arcsinh`) {
366
+ // Guard against very small thresholds that could cause precision issues
367
+ asinh_threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
368
+ asinh_min = Math.asinh(min_ramp_domain / asinh_threshold)
369
+ asinh_max = Math.asinh(max_ramp_domain / asinh_threshold)
370
+ asinh_span = asinh_max - asinh_min
371
+ }
372
+
373
+ return [...Array(n_steps).keys()].map((_, idx) => {
374
+ const fraction = idx / (n_steps - 1) // Normalized position 0 to 1
375
+ let data_value: number
376
+
377
+ if (use_log_interp) {
378
+ data_value = log_span === 0
379
+ ? adjusted_min_ramp
380
+ : 10 ** (log_min + fraction * log_span)
381
+ } else if (type_name === `arcsinh`) {
382
+ data_value = asinh_span === 0
383
+ ? min_ramp_domain
384
+ : Math.sinh(asinh_min + fraction * asinh_span) * asinh_threshold
385
+ } else {
386
+ data_value = min_ramp_domain + fraction * linear_span
387
+ }
388
+ return actual_color_scale_fn(data_value) ?? `transparent`
389
+ })
390
+ })
391
+
392
+ // Determine wrapper flex-direction based on actual title_side
393
+ let wrapper_flex_dir = $derived(
394
+ { left: `row`, right: `row-reverse`, top: `column`, bottom: `column-reverse` }[
395
+ actual_title_side
396
+ ],
397
+ )
398
+
399
+ // CSS variables for bar width/height based on orientation
400
+ let final_bar_style = $derived(
401
+ `--cbar-width: ${
402
+ orientation === `horizontal` ? `100%` : `var(--cbar-thickness, 10px)`
403
+ };
404
+ --cbar-height: ${
405
+ orientation === `vertical` ? `100%` : `var(--cbar-thickness, 10px)`
406
+ };
407
+ background: linear-gradient(${grad_dir}, ${ramped.join(`, `)}); ${
408
+ bar_style ?? ``
409
+ }`,
410
+ )
411
+
412
+ // Calculate additional margin for main label if it overlaps with ticks
413
+ let label_overlap_margin_style = $derived.by(() => {
414
+ // Overlap only possible if ticks are outside and on same side as label
415
+ if (tick_side === `inside`) return ``
416
+
417
+ // Determine concrete side outside ticks are on
418
+ const concrete_outside_tick_side = orientation === `horizontal`
419
+ ? tick_side === `primary` ? `bottom` : `top`
420
+ : tick_side === `primary`
421
+ ? `right`
422
+ : `left`
423
+
424
+ if (actual_title_side !== concrete_outside_tick_side) return ``
425
+
426
+ const offset = `var(--cbar-label-overlap-offset, 1em)`
427
+
428
+ const side_map = { top: `bottom`, bottom: `top`, left: `right`, right: `left` }
429
+ const margin_side = side_map[actual_title_side]
430
+ return `margin-${margin_side}: ${offset};`
431
+ })
432
+
433
+ // Derive whether we're in vertical side-label mode (label on left/right of vertical bar)
434
+ let is_vertical_side = $derived(
435
+ orientation === `vertical` &&
436
+ (actual_title_side === `left` || actual_title_side === `right`),
437
+ )
438
+
439
+ let actual_title_style = $derived.by(() => {
440
+ // No container-level transform - rotation is applied only to .label element via CSS
441
+ // This avoids breaking selects/dropdowns which need to remain horizontal
442
+ let size_constraint = is_vertical_side
443
+ ? `max-width: var(--cbar-label-max-width, 2em);`
444
+ : ``
445
+
446
+ return `${size_constraint} ${label_overlap_margin_style} ${title_style ?? ``}`
447
+ .trim()
448
+ })
449
+
450
+ function get_tick_text_color(tick_value: number): string | null {
451
+ // Only apply dynamic color if ticks are inside bar
452
+ if (tick_side !== `inside`) return null
453
+
454
+ const bg_color = actual_color_scale_fn(tick_value)
455
+ // Default to black if luminance calculation fails or color is invalid
456
+ try {
457
+ return luminance(bg_color) > 0.5 ? `black` : `white`
458
+ } catch (error) {
459
+ console.error(`Error calculating luminance for tick ${tick_value}:`, error)
460
+ return `black`
461
+ }
462
+ }
463
+
464
+ let has_property_select = $derived(property_options && property_options.length > 0)
465
+ let has_color_scale_select = $derived(
466
+ color_scale_options && color_scale_options.length > 0,
467
+ )
468
+ let has_any_select = $derived(has_property_select || has_color_scale_select)
469
+
470
+ // Keep bindable selected keys valid so state matches the select's first-option fallback.
471
+ $effect(() => {
472
+ if (!property_options?.length) return
473
+ if (property_options.some((option) => option.key === selected_property_key)) return
474
+ selected_property_key = property_options[0]?.key
475
+ })
476
+ $effect(() => {
477
+ if (!color_scale_options?.length) return
478
+ if (color_scale_options.some((option) => option.key === selected_color_scale_key)) return
479
+ const first_option = color_scale_options[0]
480
+ selected_color_scale_key = first_option.key
481
+ color_scale = first_option.scale
482
+ })
483
+
484
+ async function handle_property_change(new_key: string, prev_key?: string) {
485
+ if (!data_loader) return
486
+ // Capture all state for full rollback on any error
487
+ // Note: prev_key comes from PortalSelect since binding updates before callback
488
+ // prev_key can be undefined if no prior selection - that's a valid rollback state
489
+ const prev = { title, range, selected_property_key: prev_key } as const
490
+
491
+ loading = true
492
+
493
+ try {
494
+ const result = await data_loader(new_key)
495
+ range = result.range
496
+ if (result.title !== undefined) title = result.title
497
+ // Isolate callback errors - still rollback if callback throws
498
+ on_property_change?.(new_key, result.range)
499
+ } catch (err) {
500
+ console.error(`ColorBar property change failed for ${new_key}:`, err)
501
+ // Full rollback of all state
502
+ selected_property_key = prev.selected_property_key
503
+ range = prev.range
504
+ title = prev.title
505
+ } finally {
506
+ loading = false
507
+ }
508
+ }
509
+
510
+ function handle_color_scale_change(new_key: string, prev_key?: string) {
511
+ // Find option - rollback binding if not found to keep key and scale in sync
512
+ const opt = color_scale_options?.find((item) => item.key === new_key)
513
+ if (!opt) {
514
+ selected_color_scale_key = prev_key
515
+ return
516
+ }
517
+
518
+ color_scale = opt.scale
519
+ on_color_scale_change?.(new_key)
520
+ }
521
+
522
+ // Align items based on orientation and title position
523
+ let div_style = $derived(`
524
+ --cbar-wrapper-align-items: ${
525
+ orientation === `vertical` &&
526
+ (actual_title_side === `left` || actual_title_side === `right`)
527
+ ? `stretch`
528
+ : `center`
529
+ };
530
+ --cbar-label-display: ${
531
+ orientation === `vertical` &&
532
+ (actual_title_side === `left` || actual_title_side === `right`)
533
+ ? `flex`
534
+ : `inline-block`
535
+ };
536
+ height: ${
537
+ orientation === `vertical`
538
+ ? `var(--cbar-height, 100%)`
539
+ : `var(--cbar-height, auto)`
540
+ };
541
+ min-height: ${
542
+ orientation === `vertical` ? `var(--cbar-min-height, 150px)` : `auto`
543
+ };
544
+ max-height: ${
545
+ orientation === `vertical` ? `var(--cbar-max-height, 1000px)` : `none`
546
+ }; ${wrapper_style ?? ``}`)
547
+ </script>
548
+
549
+ <div
550
+ style:flex-direction={wrapper_flex_dir}
551
+ {...rest}
552
+ style={div_style + (rest.style ?? ``)}
553
+ class="colorbar {rest.class ?? ``}"
554
+ >
555
+ {#if title || has_any_select}
556
+ <div class="title-row {actual_title_side} {orientation}" style={actual_title_style}>
557
+ {#if has_property_select && property_options}
558
+ <PortalSelect
559
+ options={property_options}
560
+ bind:selected_key={selected_property_key}
561
+ on_select={handle_property_change}
562
+ disabled={loading}
563
+ class="property-select"
564
+ />
565
+ {#if loading}
566
+ <Spinner
567
+ style="--spinner-size: 0.8em; --spinner-border-width: 2px; --spinner-margin: 0"
568
+ />
569
+ {/if}
570
+ {:else if title}
571
+ <!-- Only show static title if no property select -->
572
+ <span class="label">{@html sanitize_html(title)}</span>
573
+ {/if}
574
+ {#if has_color_scale_select && color_scale_options}
575
+ <PortalSelect
576
+ options={color_scale_options}
577
+ bind:selected_key={selected_color_scale_key}
578
+ on_select={handle_color_scale_change}
579
+ format_option={(opt) => opt.label}
580
+ class="color-scale-select"
581
+ />
582
+ {/if}
583
+ </div>
584
+ {/if}
585
+ <div style={final_bar_style} class="bar">
586
+ {#each tick_side === `inside` ? ticks_array.slice(1, -1) : ticks_array as
587
+ tick_label
588
+ (tick_label)
589
+ }
590
+ {@const position_percent =
591
+ // Use derived scale's mapping function to get position percent
592
+ scale_for_ticks(tick_label)}
593
+ {@const tick_inline_style = `
594
+ position: absolute;
595
+ ${orientation === `horizontal` ? `left` : `top`}: ${position_percent}%;
596
+ color: ${get_tick_text_color(tick_label) ?? `inherit`};
597
+ `}
598
+ <span style={tick_inline_style} class="tick-label {orientation} tick-{tick_side}">
599
+ {#if tick_format}
600
+ {#if tick_format.startsWith(`%`)}
601
+ {timeFormat(tick_format)(new Date(tick_label))}
602
+ {:else}
603
+ {format(tick_format)(tick_label)}
604
+ {/if}
605
+ {:else}
606
+ {format_num(tick_label)}
607
+ {/if}
608
+ </span>
609
+ {/each}
610
+ </div>
611
+ </div>
612
+
613
+ <style>
614
+ div.colorbar {
615
+ display: flex;
616
+ box-sizing: border-box;
617
+ place-items: center;
618
+ /* Reduced default gap */
619
+ gap: var(--cbar-gap, 0);
620
+ margin: var(--cbar-margin);
621
+ padding: var(--cbar-padding);
622
+ width: var(--cbar-width, auto);
623
+ font-size: var(--cbar-font-size, 9pt);
624
+ /* align-items based on title side for vertical layout */
625
+ align-items: var(--cbar-wrapper-align-items);
626
+ }
627
+ /* color gradient bar */
628
+ div.bar {
629
+ position: relative;
630
+ border-radius: var(--cbar-border-radius, var(--border-radius, 3pt));
631
+ /* Use CSS variables set inline */
632
+ width: var(--cbar-width);
633
+ height: var(--cbar-height);
634
+ }
635
+ /* label text */
636
+ span.label {
637
+ text-align: center;
638
+ padding: var(--cbar-label-padding, 0 5px);
639
+ transform: var(--cbar-label-transform);
640
+ /* Ensure vertical labels are centered within their allocated space */
641
+ display: var(--cbar-label-display);
642
+ align-items: center;
643
+ justify-content: center;
644
+ /* blur-only (no tint): invisible over uniform bg, smears busy bg to keep title readable */
645
+ background: var(--cbar-label-bg, transparent);
646
+ backdrop-filter: var(--cbar-label-backdrop-filter, blur(4px));
647
+ border-radius: var(--cbar-label-border-radius, var(--border-radius, 3pt));
648
+ /* keep title selectable/copyable */
649
+ user-select: text;
650
+ }
651
+ span.tick-label {
652
+ position: absolute;
653
+ font-weight: var(--cbar-tick-label-font-weight, lighter);
654
+ font-size: var(--cbar-tick-label-font-size, var(--cbar-font-size));
655
+ /* text color is set dynamically/inline for inside ticks */
656
+ color: var(--cbar-tick-label-color, initial);
657
+ background: var(--cbar-tick-label-bg);
658
+ padding: var(--cbar-tick-label-padding, 0 2px);
659
+ white-space: nowrap;
660
+ /* --- Horizontal Ticks --- */
661
+ &.horizontal {
662
+ transform: translateX(-50%); /* Center horizontally by default */
663
+ &.tick-primary {
664
+ top: 100%; /* Position below bar */
665
+ margin-top: var(--cbar-tick-offset, 0);
666
+ }
667
+ &.tick-secondary {
668
+ bottom: 100%; /* Position above bar */
669
+ margin-bottom: var(--cbar-tick-offset, 0);
670
+ }
671
+ &.tick-inside {
672
+ top: 50%; /* Center vertically */
673
+ transform: translate(-50%, -50%); /* Center horizontally and vertically */
674
+ margin: 0; /* No extra margin for inside */
675
+ }
676
+ }
677
+ /* --- Vertical Ticks --- */
678
+ &.vertical {
679
+ transform: translateY(-50%); /* Center vertically by default */
680
+ &.tick-primary {
681
+ left: 100%; /* Position right of bar */
682
+ margin-left: var(--cbar-tick-offset, 1pt);
683
+ }
684
+ &.tick-secondary {
685
+ right: 100%; /* Position left of bar */
686
+ margin-right: var(--cbar-tick-offset, 1pt);
687
+ }
688
+ &.tick-inside {
689
+ left: 50%; /* Center horizontally */
690
+ transform: translate(-50%, -50%); /* Center horizontally and vertically */
691
+ padding: 0; /* No extra padding for inside */
692
+ }
693
+ }
694
+ }
695
+ /* Title row with optional selects */
696
+ .title-row {
697
+ display: inline-flex;
698
+ align-items: center;
699
+ gap: var(--cbar-select-gap, 0.3em);
700
+ white-space: nowrap;
701
+ width: auto;
702
+ &:is(.left, .right) {
703
+ flex-direction: column;
704
+ justify-content: center; /* center title vertically along the bar height */
705
+ }
706
+ /* Rotate only the label element, not the entire row (keeps selects usable) */
707
+ /* Only rotate when orientation is vertical AND title is on left/right side */
708
+ &.vertical:is(.left, .right) .label {
709
+ writing-mode: vertical-lr;
710
+ white-space: nowrap;
711
+ }
712
+ &.vertical.left .label {
713
+ transform: rotate(180deg);
714
+ }
715
+ /* Style PortalSelect triggers in colorbar context */
716
+ :global(:is(.property-select, .color-scale-select)) {
717
+ padding: 0 4px;
718
+ }
719
+ &.loading :global(.property-select) {
720
+ opacity: 0.6;
721
+ pointer-events: none;
722
+ }
723
+ }
724
+ </style>