matterviz 0.3.0 → 0.3.2

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 (286) hide show
  1. package/dist/FilePicker.svelte +37 -20
  2. package/dist/Icon.svelte +2 -2
  3. package/dist/MillerIndexInput.svelte +60 -0
  4. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  5. package/dist/app.css +38 -2
  6. package/dist/brillouin/BrillouinZone.svelte +20 -62
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
  8. package/dist/brillouin/BrillouinZoneExportPane.svelte +12 -20
  9. package/dist/brillouin/BrillouinZoneScene.svelte +2 -2
  10. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  11. package/dist/chempot-diagram/ChemPotDiagram.svelte +192 -0
  12. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  13. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +677 -0
  14. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  15. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +2688 -0
  16. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  17. package/dist/chempot-diagram/ChemPotScene3D.svelte +8 -0
  18. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  19. package/dist/chempot-diagram/color.d.ts +10 -0
  20. package/dist/chempot-diagram/color.js +33 -0
  21. package/dist/chempot-diagram/compute.d.ts +38 -0
  22. package/dist/chempot-diagram/compute.js +650 -0
  23. package/dist/chempot-diagram/index.d.ts +5 -0
  24. package/dist/chempot-diagram/index.js +5 -0
  25. package/dist/chempot-diagram/pointer.d.ts +16 -0
  26. package/dist/chempot-diagram/pointer.js +40 -0
  27. package/dist/chempot-diagram/temperature.d.ts +15 -0
  28. package/dist/chempot-diagram/temperature.js +37 -0
  29. package/dist/chempot-diagram/types.d.ts +83 -0
  30. package/dist/chempot-diagram/types.js +27 -0
  31. package/dist/colors/index.d.ts +3 -1
  32. package/dist/colors/index.js +4 -0
  33. package/dist/composition/BarChart.svelte +13 -22
  34. package/dist/composition/BubbleChart.svelte +5 -3
  35. package/dist/composition/FormulaFilter.svelte +770 -90
  36. package/dist/composition/FormulaFilter.svelte.d.ts +37 -1
  37. package/dist/composition/PieChart.svelte +43 -18
  38. package/dist/composition/PieChart.svelte.d.ts +1 -1
  39. package/dist/constants.d.ts +1 -0
  40. package/dist/constants.js +2 -0
  41. package/dist/convex-hull/ConvexHull.svelte +14 -1
  42. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  43. package/dist/convex-hull/ConvexHull2D.svelte +14 -45
  44. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  45. package/dist/convex-hull/ConvexHull3D.svelte +396 -134
  46. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  47. package/dist/convex-hull/ConvexHull4D.svelte +93 -42
  48. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  49. package/dist/convex-hull/ConvexHullControls.svelte +94 -31
  50. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +4 -2
  51. package/dist/convex-hull/ConvexHullStats.svelte +697 -128
  52. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +6 -1
  53. package/dist/convex-hull/ConvexHullTooltip.svelte +1 -0
  54. package/dist/convex-hull/GasPressureControls.svelte +72 -38
  55. package/dist/convex-hull/GasPressureControls.svelte.d.ts +2 -1
  56. package/dist/convex-hull/TemperatureSlider.svelte +46 -19
  57. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +2 -1
  58. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  59. package/dist/convex-hull/demo-temperature.js +36 -0
  60. package/dist/convex-hull/gas-thermodynamics.js +16 -5
  61. package/dist/convex-hull/helpers.d.ts +7 -1
  62. package/dist/convex-hull/helpers.js +45 -15
  63. package/dist/convex-hull/index.d.ts +15 -1
  64. package/dist/convex-hull/index.js +1 -0
  65. package/dist/convex-hull/thermodynamics.d.ts +8 -21
  66. package/dist/convex-hull/thermodynamics.js +106 -17
  67. package/dist/convex-hull/types.d.ts +7 -0
  68. package/dist/convex-hull/types.js +11 -0
  69. package/dist/coordination/CoordinationBarPlot.svelte +29 -46
  70. package/dist/element/BohrAtom.svelte +1 -1
  71. package/dist/element/data.js +2 -14
  72. package/dist/element/data.json.gz +0 -0
  73. package/dist/element/index.d.ts +1 -1
  74. package/dist/element/index.js +1 -0
  75. package/dist/element/types.d.ts +1 -0
  76. package/dist/fermi-surface/FermiSurface.svelte +21 -65
  77. package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
  78. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  79. package/dist/fermi-surface/FermiSurfaceScene.svelte +1 -1
  80. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  81. package/dist/fermi-surface/compute.js +1 -21
  82. package/dist/fermi-surface/marching-cubes.d.ts +2 -13
  83. package/dist/fermi-surface/marching-cubes.js +2 -519
  84. package/dist/fermi-surface/parse.js +17 -23
  85. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1273 -0
  86. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  87. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +171 -0
  88. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +31 -0
  89. package/dist/heatmap-matrix/index.d.ts +53 -0
  90. package/dist/heatmap-matrix/index.js +100 -0
  91. package/dist/heatmap-matrix/shared.d.ts +2 -0
  92. package/dist/heatmap-matrix/shared.js +4 -0
  93. package/dist/icons.d.ts +119 -0
  94. package/dist/icons.js +119 -0
  95. package/dist/index.d.ts +6 -1
  96. package/dist/index.js +6 -1
  97. package/dist/io/export.js +15 -3
  98. package/dist/io/file-drop.d.ts +7 -0
  99. package/dist/io/file-drop.js +43 -0
  100. package/dist/io/index.d.ts +2 -2
  101. package/dist/io/index.js +2 -112
  102. package/dist/io/types.d.ts +1 -0
  103. package/dist/io/url-drop.d.ts +2 -0
  104. package/dist/io/url-drop.js +118 -0
  105. package/dist/isosurface/Isosurface.svelte +231 -0
  106. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  107. package/dist/isosurface/IsosurfaceControls.svelte +273 -0
  108. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  109. package/dist/isosurface/index.d.ts +5 -0
  110. package/dist/isosurface/index.js +6 -0
  111. package/dist/isosurface/parse.d.ts +6 -0
  112. package/dist/isosurface/parse.js +548 -0
  113. package/dist/isosurface/slice.d.ts +11 -0
  114. package/dist/isosurface/slice.js +145 -0
  115. package/dist/isosurface/types.d.ts +55 -0
  116. package/dist/isosurface/types.js +178 -0
  117. package/dist/labels.d.ts +2 -1
  118. package/dist/labels.js +1 -0
  119. package/dist/layout/InfoTag.svelte +62 -62
  120. package/dist/layout/SubpageGrid.svelte +74 -0
  121. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  122. package/dist/layout/index.d.ts +1 -0
  123. package/dist/layout/index.js +1 -0
  124. package/dist/layout/json-tree/JsonNode.svelte +226 -53
  125. package/dist/layout/json-tree/JsonTree.svelte +425 -51
  126. package/dist/layout/json-tree/JsonTree.svelte.d.ts +1 -1
  127. package/dist/layout/json-tree/JsonValue.svelte +218 -97
  128. package/dist/layout/json-tree/types.d.ts +27 -2
  129. package/dist/layout/json-tree/utils.d.ts +14 -1
  130. package/dist/layout/json-tree/utils.js +254 -0
  131. package/dist/marching-cubes.d.ts +14 -0
  132. package/dist/marching-cubes.js +519 -0
  133. package/dist/math.d.ts +8 -0
  134. package/dist/math.js +374 -7
  135. package/dist/overlays/ContextMenu.svelte +3 -2
  136. package/dist/overlays/DraggablePane.svelte +163 -58
  137. package/dist/overlays/DraggablePane.svelte.d.ts +2 -0
  138. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +232 -77
  139. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -2
  140. package/dist/phase-diagram/PhaseDiagramControls.svelte +32 -11
  141. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +3 -2
  142. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +103 -0
  143. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  144. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +102 -95
  145. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +7 -0
  146. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +100 -26
  147. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +6 -3
  148. package/dist/phase-diagram/index.d.ts +2 -0
  149. package/dist/phase-diagram/index.js +2 -0
  150. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  151. package/dist/phase-diagram/svg-to-diagram.js +865 -0
  152. package/dist/phase-diagram/types.d.ts +10 -0
  153. package/dist/phase-diagram/utils.d.ts +7 -4
  154. package/dist/phase-diagram/utils.js +149 -59
  155. package/dist/plot/AxisLabel.svelte +26 -0
  156. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  157. package/dist/plot/BarPlot.svelte +473 -228
  158. package/dist/plot/BarPlot.svelte.d.ts +3 -3
  159. package/dist/plot/BarPlotControls.svelte +3 -2
  160. package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
  161. package/dist/plot/ColorBar.svelte +54 -54
  162. package/dist/plot/ColorBar.svelte.d.ts +1 -1
  163. package/dist/plot/ElementScatter.svelte +4 -3
  164. package/dist/plot/FillArea.svelte +4 -1
  165. package/dist/plot/Histogram.svelte +320 -230
  166. package/dist/plot/Histogram.svelte.d.ts +2 -2
  167. package/dist/plot/HistogramControls.svelte +29 -10
  168. package/dist/plot/HistogramControls.svelte.d.ts +6 -2
  169. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +2 -2
  170. package/dist/plot/PlotControls.svelte +109 -27
  171. package/dist/plot/PlotControls.svelte.d.ts +1 -1
  172. package/dist/plot/PlotLegend.svelte +1 -1
  173. package/dist/plot/PortalSelect.svelte +2 -1
  174. package/dist/plot/ReferenceLine.svelte +2 -1
  175. package/dist/plot/ReferenceLine.svelte.d.ts +1 -0
  176. package/dist/plot/ReferencePlane.svelte +1 -3
  177. package/dist/plot/ScatterPlot.svelte +343 -209
  178. package/dist/plot/ScatterPlot.svelte.d.ts +3 -3
  179. package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
  180. package/dist/plot/ScatterPlot3DControls.svelte +203 -250
  181. package/dist/plot/ScatterPlot3DScene.svelte +4 -7
  182. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
  183. package/dist/plot/ScatterPlotControls.svelte +95 -55
  184. package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
  185. package/dist/plot/ZeroLines.svelte +44 -0
  186. package/dist/plot/ZeroLines.svelte.d.ts +32 -0
  187. package/dist/plot/ZoomRect.svelte +21 -0
  188. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  189. package/dist/plot/axis-utils.d.ts +1 -1
  190. package/dist/plot/data-cleaning.js +1 -5
  191. package/dist/plot/index.d.ts +6 -2
  192. package/dist/plot/index.js +6 -2
  193. package/dist/plot/interactions.d.ts +8 -10
  194. package/dist/plot/interactions.js +10 -19
  195. package/dist/plot/layout.d.ts +7 -1
  196. package/dist/plot/layout.js +12 -4
  197. package/dist/plot/reference-line.d.ts +4 -21
  198. package/dist/plot/reference-line.js +7 -81
  199. package/dist/plot/types.d.ts +42 -17
  200. package/dist/plot/types.js +10 -0
  201. package/dist/plot/utils/label-placement.js +14 -11
  202. package/dist/plot/utils.d.ts +1 -0
  203. package/dist/plot/utils.js +14 -0
  204. package/dist/rdf/RdfPlot.svelte +55 -66
  205. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  206. package/dist/rdf/index.d.ts +1 -1
  207. package/dist/rdf/index.js +1 -1
  208. package/dist/settings.d.ts +5 -0
  209. package/dist/settings.js +37 -3
  210. package/dist/spectral/Bands.svelte +515 -143
  211. package/dist/spectral/Bands.svelte.d.ts +22 -2
  212. package/dist/spectral/helpers.d.ts +23 -1
  213. package/dist/spectral/helpers.js +65 -9
  214. package/dist/spectral/types.d.ts +2 -0
  215. package/dist/structure/AtomLegend.svelte +31 -10
  216. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  217. package/dist/structure/CellSelect.svelte +92 -22
  218. package/dist/structure/Lattice.svelte +2 -0
  219. package/dist/structure/Structure.svelte +716 -173
  220. package/dist/structure/Structure.svelte.d.ts +7 -2
  221. package/dist/structure/StructureControls.svelte +26 -14
  222. package/dist/structure/StructureControls.svelte.d.ts +5 -1
  223. package/dist/structure/StructureInfoPane.svelte +7 -1
  224. package/dist/structure/StructureScene.svelte +386 -95
  225. package/dist/structure/StructureScene.svelte.d.ts +15 -4
  226. package/dist/structure/atom-properties.d.ts +6 -2
  227. package/dist/structure/atom-properties.js +38 -25
  228. package/dist/structure/export.js +10 -7
  229. package/dist/structure/ferrox-wasm-types.d.ts +3 -2
  230. package/dist/structure/ferrox-wasm-types.js +0 -3
  231. package/dist/structure/ferrox-wasm.d.ts +3 -2
  232. package/dist/structure/ferrox-wasm.js +1 -2
  233. package/dist/structure/index.d.ts +7 -0
  234. package/dist/structure/index.js +22 -0
  235. package/dist/structure/parse.js +19 -16
  236. package/dist/structure/partial-occupancy.d.ts +25 -0
  237. package/dist/structure/partial-occupancy.js +102 -0
  238. package/dist/structure/validation.js +6 -3
  239. package/dist/symmetry/SymmetryStats.svelte +18 -4
  240. package/dist/symmetry/WyckoffTable.svelte +18 -10
  241. package/dist/symmetry/index.d.ts +7 -4
  242. package/dist/symmetry/index.js +83 -18
  243. package/dist/table/HeatmapTable.svelte +468 -69
  244. package/dist/table/HeatmapTable.svelte.d.ts +13 -1
  245. package/dist/table/ToggleMenu.svelte +291 -44
  246. package/dist/table/ToggleMenu.svelte.d.ts +4 -1
  247. package/dist/table/index.d.ts +3 -0
  248. package/dist/tooltip/index.d.ts +1 -1
  249. package/dist/tooltip/index.js +1 -0
  250. package/dist/trajectory/Trajectory.svelte +147 -145
  251. package/dist/trajectory/TrajectoryExportPane.svelte +13 -9
  252. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +1 -1
  253. package/dist/trajectory/constants.d.ts +6 -0
  254. package/dist/trajectory/constants.js +7 -0
  255. package/dist/trajectory/extract.js +3 -5
  256. package/dist/trajectory/format-detect.d.ts +9 -0
  257. package/dist/trajectory/format-detect.js +76 -0
  258. package/dist/trajectory/frame-reader.d.ts +17 -0
  259. package/dist/trajectory/frame-reader.js +339 -0
  260. package/dist/trajectory/helpers.d.ts +15 -0
  261. package/dist/trajectory/helpers.js +187 -0
  262. package/dist/trajectory/index.d.ts +1 -0
  263. package/dist/trajectory/index.js +11 -4
  264. package/dist/trajectory/parse/ase.d.ts +2 -0
  265. package/dist/trajectory/parse/ase.js +76 -0
  266. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  267. package/dist/trajectory/parse/hdf5.js +121 -0
  268. package/dist/trajectory/parse/index.d.ts +12 -0
  269. package/dist/trajectory/parse/index.js +304 -0
  270. package/dist/trajectory/parse/lammps.d.ts +5 -0
  271. package/dist/trajectory/parse/lammps.js +169 -0
  272. package/dist/trajectory/parse/vasp.d.ts +2 -0
  273. package/dist/trajectory/parse/vasp.js +65 -0
  274. package/dist/trajectory/parse/xyz.d.ts +2 -0
  275. package/dist/trajectory/parse/xyz.js +109 -0
  276. package/dist/trajectory/types.d.ts +11 -0
  277. package/dist/trajectory/types.js +1 -0
  278. package/dist/utils.d.ts +2 -0
  279. package/dist/utils.js +4 -0
  280. package/dist/xrd/XrdPlot.svelte +6 -4
  281. package/dist/xrd/calc-xrd.js +0 -1
  282. package/package.json +33 -23
  283. package/readme.md +4 -4
  284. package/dist/trajectory/parse.d.ts +0 -42
  285. package/dist/trajectory/parse.js +0 -1267
  286. /package/dist/element/{data.json.d.ts → data.json.gz.d.ts} +0 -0
Binary file
@@ -1,4 +1,4 @@
1
- export type { ChemicalElement, ElementCategory, ElementSymbol } from './types';
1
+ export * from './types';
2
2
  export { default as BohrAtom } from './BohrAtom.svelte';
3
3
  export { default as element_data } from './data';
4
4
  export { default as ElementHeading } from './ElementHeading.svelte';
@@ -1,3 +1,4 @@
1
+ export * from './types';
1
2
  export { default as BohrAtom } from './BohrAtom.svelte';
2
3
  export { default as element_data } from './data';
3
4
  export { default as ElementHeading } from './ElementHeading.svelte';
@@ -48,6 +48,7 @@ export type ChemicalElement = {
48
48
  summary: string;
49
49
  symbol: ElementSymbol;
50
50
  year: number | string;
51
+ mendeleev_number?: number;
51
52
  oxidation_states?: number[];
52
53
  common_oxidation_states?: number[];
53
54
  icsd_oxidation_states?: number[];
@@ -1,12 +1,13 @@
1
1
  <script lang="ts">import { compute_brillouin_zone, reciprocal_lattice } from '../brillouin';
2
2
  import { normalize_show_controls } from '../controls';
3
3
  import EmptyState from '../EmptyState.svelte';
4
+ import { StatusMessage } from '../feedback';
4
5
  import Spinner from '../feedback/Spinner.svelte';
5
6
  import Icon from '../Icon.svelte';
6
- import { decompress_file, handle_url_drop, load_from_url } from '../io';
7
+ import { create_file_drop_handler, load_from_url } from '../io';
7
8
  import { set_fullscreen_bg, toggle_fullscreen } from '../layout';
8
- import { DEFAULTS } from '../settings';
9
9
  import { PlotTooltip } from '../plot';
10
+ import { DEFAULTS } from '../settings';
10
11
  import { Canvas } from '@threlte/core';
11
12
  import { untrack } from 'svelte';
12
13
  import { tooltip } from 'svelte-multiselect/attachments';
@@ -176,39 +177,22 @@ $effect(() => {
176
177
  });
177
178
  }
178
179
  });
179
- async function handle_file_drop(event) {
180
- event.preventDefault();
181
- dragover = false;
182
- if (!allow_file_drop)
183
- return;
184
- loading = true;
185
- error_msg = undefined;
186
- try {
187
- // Check for URL drop first
188
- const url = event.dataTransfer?.getData(`text/uri-list`);
189
- const url_filename = url?.split(`/`).pop()?.split(`?`)[0];
190
- if (url_filename)
191
- on_file_drop?.(url_filename);
192
- const handled = await handle_url_drop(event, safe_parse).catch(() => false);
193
- if (handled)
194
- return;
195
- const file = event.dataTransfer?.files[0];
196
- if (file) {
197
- if (!url_filename)
198
- on_file_drop?.(file.name); // notify if not already
199
- const { content, filename } = await decompress_file(file);
200
- if (content)
201
- await safe_parse(content, filename);
202
- }
203
- }
204
- catch (err) {
205
- error_msg = `File drop failed: ${err}`;
206
- on_error?.({ error_msg });
207
- }
208
- finally {
209
- loading = false;
210
- }
211
- }
180
+ const handle_file_drop = create_file_drop_handler({
181
+ allow: () => allow_file_drop,
182
+ on_drop: async (content, filename) => {
183
+ on_file_drop?.(filename);
184
+ await safe_parse(content, filename);
185
+ },
186
+ on_error: (msg) => {
187
+ error_msg = msg;
188
+ on_error?.({ error_msg: msg });
189
+ },
190
+ set_loading: (val) => {
191
+ loading = val;
192
+ if (val)
193
+ [error_msg, dragover] = [undefined, false];
194
+ },
195
+ });
212
196
  function handle_keydown(event) {
213
197
  const target = event.target;
214
198
  if ([`INPUT`, `TEXTAREA`].includes(target.tagName))
@@ -277,10 +261,7 @@ $effect(() => {
277
261
  {...spinner_props}
278
262
  />
279
263
  {:else if error_msg}
280
- <div class="error-state">
281
- <p class="error">{error_msg}</p>
282
- <button onclick={() => (error_msg = undefined)}>Dismiss</button>
283
- </div>
264
+ <StatusMessage bind:message={error_msg} type="error" dismissible />
284
265
  {:else if fermi_data || band_data}
285
266
  <section
286
267
  class="control-buttons {controls_config.class}"
@@ -456,7 +437,7 @@ $effect(() => {
456
437
  display: flex;
457
438
  padding: 4px;
458
439
  border-radius: var(--border-radius, 3pt);
459
- font-size: clamp(0.85em, 2cqmin, 2.5em);
440
+ font-size: clamp(0.85em, 2cqmin, 1.3em);
460
441
  }
461
442
  section.control-buttons :global(button:hover) {
462
443
  background-color: color-mix(in srgb, currentColor 8%, transparent);
@@ -472,29 +453,4 @@ $effect(() => {
472
453
  text-overflow: ellipsis;
473
454
  white-space: nowrap;
474
455
  }
475
- .error-state {
476
- display: flex;
477
- flex-direction: column;
478
- align-items: center;
479
- justify-content: center;
480
- height: 100%;
481
- padding: 2rem;
482
- text-align: center;
483
- box-sizing: border-box;
484
- }
485
- .error-state p {
486
- color: var(--error-color, #ff6b6b);
487
- margin: 0 0 1rem;
488
- }
489
- .error-state button {
490
- padding: 0.5rem 1rem;
491
- background: var(--error-color, #ff6b6b);
492
- color: white;
493
- border: none;
494
- border-radius: 4px;
495
- cursor: pointer;
496
- }
497
- .error-state button:hover {
498
- background: var(--error-color-hover, #ff5252);
499
- }
500
456
  </style>
@@ -78,6 +78,6 @@ type $$ComponentProps = {
78
78
  }]> | FermiTooltipConfig;
79
79
  on_hover?: (data: FermiHoverData | null) => void;
80
80
  } & HTMLAttributes<HTMLDivElement>;
81
- declare const FermiSurface: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "dragover" | "fullscreen" | "hovered" | "controls_open" | "camera_projection" | "color_scale" | "loading" | "error_msg" | "wrapper" | "surface_opacity" | "show_vectors" | "bz_data" | "mu" | "selected_bands" | "interpolation_factor" | "fermi_data" | "band_data" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
81
+ declare const FermiSurface: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "dragover" | "color_scale" | "controls_open" | "loading" | "fullscreen" | "hovered" | "camera_projection" | "wrapper" | "error_msg" | "surface_opacity" | "show_vectors" | "bz_data" | "mu" | "selected_bands" | "interpolation_factor" | "fermi_data" | "band_data" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
82
82
  type FermiSurface = ReturnType<typeof FermiSurface>;
83
83
  export default FermiSurface;
@@ -30,6 +30,6 @@ type $$ComponentProps = {
30
30
  band_data?: BandGridData;
31
31
  }]>;
32
32
  };
33
- declare const FermiSurfaceControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "camera_projection" | "color_scale" | "surface_opacity" | "show_vectors" | "mu" | "selected_bands" | "interpolation_factor" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
33
+ declare const FermiSurfaceControls: import("svelte").Component<$$ComponentProps, {}, "color_scale" | "controls_open" | "camera_projection" | "surface_opacity" | "show_vectors" | "mu" | "selected_bands" | "interpolation_factor" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
34
34
  type FermiSurfaceControls = ReturnType<typeof FermiSurfaceControls>;
35
35
  export default FermiSurfaceControls;
@@ -454,7 +454,7 @@ function handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)
454
454
  </T.Mesh>
455
455
 
456
456
  <!-- BZ edges -->
457
- {#each bz_data.edges as edge_segment (JSON.stringify(edge_segment))}
457
+ {#each bz_data.edges as edge_segment, edge_idx (`bz-edge-${edge_idx}`)}
458
458
  {@const [from, to] = edge_segment}
459
459
  <Cylinder {from} {to} thickness={bz_edge_width} color={bz_edge_color} />
460
460
  {/each}
@@ -45,6 +45,6 @@ type $$ComponentProps = {
45
45
  camera?: Camera;
46
46
  hover_data?: FermiHoverData | null;
47
47
  };
48
- declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "camera_position" | "camera_projection" | "camera_is_moving" | "scene" | "camera" | "surface_opacity" | "bz_data" | "hover_data" | "fermi_data">;
48
+ declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "camera_position" | "camera_projection" | "scene" | "camera" | "camera_is_moving" | "surface_opacity" | "bz_data" | "hover_data" | "fermi_data">;
49
49
  type FermiSurfaceScene = ReturnType<typeof FermiSurfaceScene>;
50
50
  export default FermiSurfaceScene;
@@ -322,7 +322,7 @@ export function compute_fermi_slice(fermi_data, options = {}) {
322
322
  }
323
323
  const unit_normal = math.normalize_vec3(plane_normal);
324
324
  // Compute in-plane basis vectors
325
- const [in_plane_u, in_plane_v] = compute_in_plane_basis(unit_normal);
325
+ const [in_plane_u, in_plane_v] = math.compute_in_plane_basis(unit_normal);
326
326
  // Slice each isosurface
327
327
  const isolines = [];
328
328
  for (const surface of fermi_data.isosurfaces) {
@@ -340,26 +340,6 @@ export function compute_fermi_slice(fermi_data, options = {}) {
340
340
  },
341
341
  };
342
342
  }
343
- // Compute orthonormal basis vectors in a plane
344
- function compute_in_plane_basis(normal) {
345
- // Find a vector not parallel to normal
346
- let ref = [1, 0, 0];
347
- if (Math.abs(normal[0]) > 0.9) {
348
- ref = [0, 1, 0];
349
- }
350
- // Gram-Schmidt to get first in-plane vector
351
- const dot_nr = math.dot(normal, ref);
352
- const u_unnorm = [
353
- ref[0] - dot_nr * normal[0],
354
- ref[1] - dot_nr * normal[1],
355
- ref[2] - dot_nr * normal[2],
356
- ];
357
- // Guard against near-zero length from failed Gram-Schmidt (numerical issues)
358
- const u = math.normalize_vec3(u_unnorm, [0, 1, 0]);
359
- // Cross product for second in-plane vector
360
- const v = math.cross_3d(normal, u);
361
- return [u, v];
362
- }
363
343
  // Helper to create edge key (sorted vertex indices)
364
344
  const make_edge_key = (v0_idx, v1_idx) => `${Math.min(v0_idx, v1_idx)},${Math.max(v0_idx, v1_idx)}`;
365
345
  // Compute intersection point on an edge
@@ -1,13 +1,2 @@
1
- import type { Matrix3x3, Vec3 } from '../math';
2
- export interface MarchingCubesResult {
3
- vertices: Vec3[];
4
- faces: number[][];
5
- normals: Vec3[];
6
- }
7
- export interface MarchingCubesOptions {
8
- periodic?: boolean;
9
- interpolate?: boolean;
10
- centered?: boolean;
11
- }
12
- export declare function marching_cubes(grid: number[][][], iso_value: number, k_lattice: Matrix3x3, options?: MarchingCubesOptions): MarchingCubesResult;
13
- export declare function compute_vertex_normals(vertices: Vec3[], faces: number[][]): Vec3[];
1
+ export { compute_vertex_normals, marching_cubes } from '../marching-cubes';
2
+ export type { MarchingCubesOptions, MarchingCubesResult } from '../marching-cubes';