matterviz 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,721 @@
1
+ <script lang="ts">
2
+ import { luminance } from '$lib/colors'
3
+ import Spinner from '$lib/feedback/Spinner.svelte'
4
+ import { format_num } from '$lib/labels'
5
+ import { sanitize_html } from '$lib/sanitize'
6
+ import type { Vec2 } from '$lib/math'
7
+ import * as math from '$lib/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 '$lib/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>