matterviz 0.3.5 → 0.3.6

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