matterviz 0.3.1 → 0.3.3
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.
- package/dist/EmptyState.svelte +10 -2
- package/dist/FilePicker.svelte +154 -96
- package/dist/Icon.svelte +20 -14
- package/dist/MillerIndexInput.svelte +27 -21
- package/dist/api/optimade.js +6 -6
- package/dist/app.css +216 -178
- package/dist/brillouin/BrillouinZone.svelte +299 -198
- package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
- package/dist/brillouin/BrillouinZoneExportPane.svelte +74 -55
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
- package/dist/brillouin/BrillouinZoneScene.svelte +277 -165
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneTooltip.svelte +17 -7
- package/dist/brillouin/compute.js +11 -6
- package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +847 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3194 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte +11 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +77 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +11 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +812 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +36 -0
- package/dist/chempot-diagram/types.d.ts +86 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +3 -1
- package/dist/colors/index.js +9 -3
- package/dist/composition/BarChart.svelte +141 -77
- package/dist/composition/BubbleChart.svelte +107 -52
- package/dist/composition/Composition.svelte +100 -79
- package/dist/composition/Formula.svelte +108 -62
- package/dist/composition/FormulaFilter.svelte +973 -353
- package/dist/composition/FormulaFilter.svelte.d.ts +35 -1
- package/dist/composition/PieChart.svelte +199 -99
- package/dist/composition/PieChart.svelte.d.ts +1 -1
- package/dist/composition/format.d.ts +5 -0
- package/dist/composition/format.js +20 -3
- package/dist/composition/parse.js +14 -9
- package/dist/convex-hull/ConvexHull.svelte +93 -38
- package/dist/convex-hull/ConvexHull2D.svelte +551 -393
- package/dist/convex-hull/ConvexHull3D.svelte +1303 -825
- package/dist/convex-hull/ConvexHull4D.svelte +1012 -686
- package/dist/convex-hull/ConvexHullControls.svelte +115 -28
- package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
- package/dist/convex-hull/ConvexHullStats.svelte +821 -249
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +6 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +41 -16
- package/dist/convex-hull/GasPressureControls.svelte +104 -61
- package/dist/convex-hull/StructurePopup.svelte +25 -4
- package/dist/convex-hull/TemperatureSlider.svelte +45 -25
- package/dist/convex-hull/barycentric-coords.js +13 -7
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +40 -0
- package/dist/convex-hull/gas-thermodynamics.js +17 -12
- package/dist/convex-hull/helpers.d.ts +10 -1
- package/dist/convex-hull/helpers.js +79 -38
- package/dist/convex-hull/index.d.ts +1 -0
- package/dist/convex-hull/index.js +1 -0
- package/dist/convex-hull/thermodynamics.d.ts +8 -21
- package/dist/convex-hull/thermodynamics.js +163 -69
- package/dist/convex-hull/types.d.ts +12 -12
- package/dist/convex-hull/types.js +0 -12
- package/dist/coordination/CoordinationBarPlot.svelte +232 -176
- package/dist/element/BohrAtom.svelte +56 -13
- package/dist/element/ElementHeading.svelte +7 -2
- package/dist/element/ElementPhoto.svelte +15 -9
- package/dist/element/ElementStats.svelte +10 -4
- package/dist/element/ElementTile.svelte +137 -73
- package/dist/element/Nucleus.svelte +39 -11
- package/dist/element/data.js +2 -14
- package/dist/element/data.json.gz +0 -0
- package/dist/element/types.d.ts +1 -0
- package/dist/feedback/ClickFeedback.svelte +16 -5
- package/dist/feedback/DragOverlay.svelte +10 -2
- package/dist/feedback/Spinner.svelte +4 -2
- package/dist/feedback/StatusMessage.svelte +8 -2
- package/dist/fermi-surface/FermiSlice.svelte +118 -88
- package/dist/fermi-surface/FermiSurface.svelte +336 -239
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
- package/dist/fermi-surface/FermiSurfaceScene.svelte +536 -343
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
- package/dist/fermi-surface/compute.js +16 -20
- package/dist/fermi-surface/parse.js +37 -33
- package/dist/fermi-surface/symmetry.js +2 -7
- package/dist/fermi-surface/types.d.ts +3 -5
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1527 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +111 -0
- package/dist/icons.js +158 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/io/decompress.js +1 -1
- package/dist/io/export.d.ts +3 -0
- package/dist/io/export.js +138 -140
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +43 -0
- package/dist/io/index.d.ts +2 -2
- package/dist/io/index.js +2 -112
- package/dist/io/is-binary.js +2 -3
- package/dist/io/types.d.ts +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +117 -0
- package/dist/isosurface/Isosurface.svelte +220 -110
- package/dist/isosurface/IsosurfaceControls.svelte +65 -28
- package/dist/isosurface/parse.js +104 -56
- package/dist/isosurface/slice.d.ts +2 -1
- package/dist/isosurface/slice.js +8 -13
- package/dist/isosurface/types.d.ts +14 -1
- package/dist/isosurface/types.js +152 -5
- package/dist/labels.d.ts +2 -1
- package/dist/labels.js +12 -8
- package/dist/layout/FullscreenToggle.svelte +11 -2
- package/dist/layout/InfoCard.svelte +38 -6
- package/dist/layout/InfoTag.svelte +125 -94
- package/dist/layout/PropertyFilter.svelte +82 -37
- package/dist/layout/SettingsSection.svelte +85 -55
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +266 -223
- package/dist/layout/json-tree/JsonTree.svelte +516 -429
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +1 -1
- package/dist/layout/json-tree/JsonValue.svelte +281 -173
- package/dist/layout/json-tree/types.d.ts +10 -2
- package/dist/layout/json-tree/utils.d.ts +2 -0
- package/dist/layout/json-tree/utils.js +37 -2
- package/dist/marching-cubes.js +25 -2
- package/dist/math.d.ts +20 -17
- package/dist/math.js +474 -57
- package/dist/overlays/ContextMenu.svelte +66 -40
- package/dist/overlays/DraggablePane.svelte +331 -154
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -0
- package/dist/periodic-table/PeriodicTable.svelte +278 -145
- package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
- package/dist/periodic-table/PropertySelect.svelte +25 -7
- package/dist/periodic-table/TableInset.svelte +8 -3
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +559 -267
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -2
- package/dist/phase-diagram/PhaseDiagramControls.svelte +131 -51
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +3 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +160 -110
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +8 -1
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +217 -86
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +6 -3
- package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
- package/dist/phase-diagram/build-diagram.js +9 -9
- package/dist/phase-diagram/colors.js +1 -3
- package/dist/phase-diagram/index.d.ts +2 -0
- package/dist/phase-diagram/index.js +2 -0
- package/dist/phase-diagram/parse.js +10 -9
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +869 -0
- package/dist/phase-diagram/types.d.ts +10 -0
- package/dist/phase-diagram/utils.d.ts +8 -4
- package/dist/phase-diagram/utils.js +219 -74
- package/dist/plot/AxisLabel.svelte +51 -0
- package/dist/plot/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/BarPlot.svelte +1461 -768
- package/dist/plot/BarPlot.svelte.d.ts +3 -3
- package/dist/plot/BarPlotControls.svelte +33 -6
- package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ColorBar.svelte +533 -383
- package/dist/plot/ColorBar.svelte.d.ts +1 -1
- package/dist/plot/ColorScaleSelect.svelte +28 -7
- package/dist/plot/ElementScatter.svelte +38 -16
- package/dist/plot/FillArea.svelte +152 -92
- package/dist/plot/Histogram.svelte +1162 -709
- package/dist/plot/Histogram.svelte.d.ts +1 -1
- package/dist/plot/HistogramControls.svelte +81 -18
- package/dist/plot/HistogramControls.svelte.d.ts +6 -2
- package/dist/plot/InteractiveAxisLabel.svelte +34 -11
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/Line.svelte +63 -28
- package/dist/plot/PlotControls.svelte +221 -96
- package/dist/plot/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/PlotLegend.svelte +174 -91
- package/dist/plot/PlotTooltip.svelte +45 -6
- package/dist/plot/PortalSelect.svelte +175 -146
- package/dist/plot/ReferenceLine.svelte +77 -22
- package/dist/plot/ReferenceLine.svelte.d.ts +1 -0
- package/dist/plot/ReferenceLine3D.svelte +132 -107
- package/dist/plot/ReferencePlane.svelte +146 -123
- package/dist/plot/ScatterPlot.svelte +1880 -1156
- package/dist/plot/ScatterPlot.svelte.d.ts +3 -3
- package/dist/plot/ScatterPlot3D.svelte +256 -131
- package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlot3DControls.svelte +300 -297
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
- package/dist/plot/ScatterPlot3DScene.svelte +608 -406
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlotControls.svelte +150 -70
- package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ScatterPoint.svelte +98 -26
- package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
- package/dist/plot/SpacegroupBarPlot.svelte +142 -85
- package/dist/plot/Surface3D.svelte +159 -108
- package/dist/plot/ZeroLines.svelte +96 -0
- package/dist/plot/ZeroLines.svelte.d.ts +32 -0
- package/dist/plot/ZoomRect.svelte +23 -0
- package/dist/plot/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/axis-utils.d.ts +1 -1
- package/dist/plot/axis-utils.js +1 -3
- package/dist/plot/data-cleaning.js +12 -28
- package/dist/plot/data-transform.js +2 -1
- package/dist/plot/fill-utils.js +2 -0
- package/dist/plot/index.d.ts +6 -2
- package/dist/plot/index.js +6 -2
- package/dist/plot/interactions.d.ts +8 -10
- package/dist/plot/interactions.js +2 -3
- package/dist/plot/layout.d.ts +11 -2
- package/dist/plot/layout.js +44 -17
- package/dist/plot/reference-line.d.ts +5 -22
- package/dist/plot/reference-line.js +12 -84
- package/dist/plot/scales.js +24 -36
- package/dist/plot/types.d.ts +53 -40
- package/dist/plot/types.js +12 -7
- package/dist/plot/utils/label-placement.d.ts +32 -15
- package/dist/plot/utils/label-placement.js +227 -63
- package/dist/plot/utils/series-visibility.js +2 -3
- package/dist/plot/utils.d.ts +1 -0
- package/dist/plot/utils.js +14 -0
- package/dist/rdf/RdfPlot.svelte +173 -132
- package/dist/rdf/calc-rdf.js +4 -5
- package/dist/sanitize.d.ts +4 -0
- package/dist/sanitize.js +107 -0
- package/dist/settings.d.ts +21 -6
- package/dist/settings.js +63 -19
- package/dist/spectral/Bands.svelte +963 -412
- package/dist/spectral/Bands.svelte.d.ts +22 -2
- package/dist/spectral/BandsAndDos.svelte +90 -49
- package/dist/spectral/BrillouinBandsDos.svelte +151 -93
- package/dist/spectral/Dos.svelte +389 -258
- package/dist/spectral/helpers.d.ts +23 -1
- package/dist/spectral/helpers.js +119 -51
- package/dist/spectral/types.d.ts +2 -0
- package/dist/state.svelte.d.ts +1 -1
- package/dist/state.svelte.js +3 -2
- package/dist/structure/Arrow.svelte +59 -20
- package/dist/structure/AtomLegend.svelte +231 -129
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +73 -47
- package/dist/structure/CanvasTooltip.svelte +10 -2
- package/dist/structure/CellSelect.svelte +148 -51
- package/dist/structure/Cylinder.svelte +33 -17
- package/dist/structure/Lattice.svelte +88 -33
- package/dist/structure/Structure.svelte +1077 -821
- package/dist/structure/Structure.svelte.d.ts +1 -1
- package/dist/structure/StructureControls.svelte +373 -139
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +124 -89
- package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
- package/dist/structure/StructureInfoPane.svelte +304 -231
- package/dist/structure/StructureScene.svelte +919 -445
- package/dist/structure/StructureScene.svelte.d.ts +16 -7
- package/dist/structure/atom-properties.d.ts +6 -2
- package/dist/structure/atom-properties.js +42 -29
- package/dist/structure/bonding.js +6 -7
- package/dist/structure/export.js +22 -34
- package/dist/structure/ferrox-wasm-types.d.ts +3 -2
- package/dist/structure/ferrox-wasm-types.js +0 -3
- package/dist/structure/ferrox-wasm.d.ts +3 -2
- package/dist/structure/ferrox-wasm.js +2 -3
- package/dist/structure/index.d.ts +16 -0
- package/dist/structure/index.js +88 -6
- package/dist/structure/measure.d.ts +2 -2
- package/dist/structure/measure.js +4 -44
- package/dist/structure/parse.js +130 -155
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +1 -0
- package/dist/structure/pbc.js +16 -6
- package/dist/structure/supercell.d.ts +2 -2
- package/dist/structure/supercell.js +12 -22
- package/dist/structure/validation.js +5 -3
- package/dist/symmetry/SymmetryStats.svelte +94 -37
- package/dist/symmetry/WyckoffTable.svelte +42 -14
- package/dist/symmetry/cell-transform.js +5 -3
- package/dist/symmetry/index.d.ts +7 -4
- package/dist/symmetry/index.js +87 -21
- package/dist/symmetry/spacegroups.js +148 -148
- package/dist/table/HeatmapTable.svelte +1112 -516
- package/dist/table/HeatmapTable.svelte.d.ts +12 -1
- package/dist/table/ToggleMenu.svelte +125 -90
- package/dist/table/index.d.ts +2 -0
- package/dist/table/index.js +2 -4
- package/dist/theme/ThemeControl.svelte +21 -12
- package/dist/time.js +4 -1
- package/dist/tooltip/TooltipContent.svelte +33 -8
- package/dist/trajectory/Trajectory.svelte +889 -687
- package/dist/trajectory/TrajectoryError.svelte +14 -3
- package/dist/trajectory/TrajectoryExportPane.svelte +148 -90
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.js +13 -31
- package/dist/trajectory/format-detect.d.ts +9 -0
- package/dist/trajectory/format-detect.js +76 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +332 -0
- package/dist/trajectory/helpers.d.ts +14 -0
- package/dist/trajectory/helpers.js +172 -0
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +23 -14
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +77 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +129 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +299 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +68 -0
- package/dist/trajectory/parse/xyz.d.ts +2 -0
- package/dist/trajectory/parse/xyz.js +110 -0
- package/dist/trajectory/plotting.js +13 -8
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +17 -0
- package/dist/xrd/XrdPlot.svelte +337 -245
- package/dist/xrd/broadening.js +14 -9
- package/dist/xrd/calc-xrd.js +12 -19
- package/dist/xrd/parse.d.ts +1 -1
- package/dist/xrd/parse.js +17 -17
- package/package.json +103 -101
- package/readme.md +4 -4
- package/dist/trajectory/parse.d.ts +0 -42
- package/dist/trajectory/parse.js +0 -1267
- /package/dist/element/{data.json.d.ts → data.json.gz.d.ts} +0 -0
- /package/dist/theme/{themes.js → themes.mjs} +0 -0
package/dist/plot/scales.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as math from '../math';
|
|
2
|
-
import { get_arcsinh_threshold, get_scale_type_name, is_time_scale
|
|
2
|
+
import { get_arcsinh_threshold, get_scale_type_name, is_time_scale } from './types';
|
|
3
3
|
import { extent, range } from 'd3-array';
|
|
4
4
|
import { scaleLinear, scaleLog, scaleSequential, scaleSequentialLog, scaleTime, } from 'd3-scale';
|
|
5
5
|
import * as d3_sc from 'd3-scale-chromatic';
|
|
@@ -98,8 +98,8 @@ export function generate_arcsinh_ticks(min, max, threshold = 1, count = 10) {
|
|
|
98
98
|
if (hi <= 0) {
|
|
99
99
|
// Negative range: mirror the positive logic
|
|
100
100
|
return generate_positive_arcsinh_ticks(-hi, -lo, safe_threshold, count)
|
|
101
|
-
.map((
|
|
102
|
-
.
|
|
101
|
+
.map((tick) => -tick)
|
|
102
|
+
.toReversed();
|
|
103
103
|
}
|
|
104
104
|
// Mixed range: symmetric ticks around zero (includes_zero is always true here)
|
|
105
105
|
// For very small counts, we prioritize zero as the most meaningful tick
|
|
@@ -110,7 +110,7 @@ export function generate_arcsinh_ticks(min, max, threshold = 1, count = 10) {
|
|
|
110
110
|
ticks.push(...pos_ticks.filter((t) => t > 0));
|
|
111
111
|
// Add negative ticks (mirror of positive)
|
|
112
112
|
const neg_ticks = generate_positive_arcsinh_ticks(0, -lo, safe_threshold, half_count);
|
|
113
|
-
ticks.push(...neg_ticks.filter((
|
|
113
|
+
ticks.push(...neg_ticks.filter((tick) => tick > 0).map((tick) => -tick));
|
|
114
114
|
// For small counts where half_count is 0 or 1, ensure at least some boundary coverage
|
|
115
115
|
if (half_count <= 1 && count >= 2) {
|
|
116
116
|
// Add boundaries if not already present and we have room
|
|
@@ -185,7 +185,9 @@ export function create_scale(scale_type, domain, range) {
|
|
|
185
185
|
const [min_val, max_val] = domain;
|
|
186
186
|
const type_name = get_scale_type_name(scale_type);
|
|
187
187
|
if (type_name === `log`) {
|
|
188
|
-
return scaleLog()
|
|
188
|
+
return scaleLog()
|
|
189
|
+
.domain([Math.max(min_val, math.LOG_EPS), max_val])
|
|
190
|
+
.range(range);
|
|
189
191
|
}
|
|
190
192
|
if (type_name === `arcsinh`) {
|
|
191
193
|
const threshold = get_arcsinh_threshold(scale_type);
|
|
@@ -221,9 +223,10 @@ options = {}) {
|
|
|
221
223
|
const time_scale = scaleTime().domain([new Date(min_val), new Date(max_val)]);
|
|
222
224
|
let count = 10; // default
|
|
223
225
|
if (typeof ticks_option === `number`) {
|
|
224
|
-
count =
|
|
225
|
-
|
|
226
|
-
|
|
226
|
+
count =
|
|
227
|
+
ticks_option < 0
|
|
228
|
+
? Math.ceil((max_val - min_val) / Math.abs(ticks_option) / 86_400_000) // milliseconds per day
|
|
229
|
+
: ticks_option;
|
|
227
230
|
}
|
|
228
231
|
else if (typeof ticks_option === `string`) {
|
|
229
232
|
count = ticks_option === `day` ? 30 : ticks_option === `month` ? 12 : 10;
|
|
@@ -248,9 +251,7 @@ options = {}) {
|
|
|
248
251
|
// Arcsinh scale ticks
|
|
249
252
|
if (type_name === `arcsinh`) {
|
|
250
253
|
const threshold = get_arcsinh_threshold(scale_type);
|
|
251
|
-
const tick_count = typeof ticks_option === `number` && ticks_option > 0
|
|
252
|
-
? ticks_option
|
|
253
|
-
: default_count;
|
|
254
|
+
const tick_count = typeof ticks_option === `number` && ticks_option > 0 ? ticks_option : default_count;
|
|
254
255
|
return generate_arcsinh_ticks(min_val, max_val, threshold, tick_count);
|
|
255
256
|
}
|
|
256
257
|
// Linear scale with interval (negative number indicates interval)
|
|
@@ -260,9 +261,7 @@ options = {}) {
|
|
|
260
261
|
return range(start, max_val + interval * interval_padding, interval);
|
|
261
262
|
}
|
|
262
263
|
// Default ticks using scale function
|
|
263
|
-
const tick_count = typeof ticks_option === `number` && ticks_option > 0
|
|
264
|
-
? ticks_option
|
|
265
|
-
: default_count;
|
|
264
|
+
const tick_count = typeof ticks_option === `number` && ticks_option > 0 ? ticks_option : default_count;
|
|
266
265
|
const ticks = scale_fn.ticks(tick_count);
|
|
267
266
|
return ticks.map(Number);
|
|
268
267
|
}
|
|
@@ -274,9 +273,7 @@ export function calculate_domain(values, scale_type = `linear`) {
|
|
|
274
273
|
const type_name = get_scale_type_name(scale_type);
|
|
275
274
|
// Only log scale needs domain clamping to positive values
|
|
276
275
|
// Arcsinh and linear can handle any values
|
|
277
|
-
return type_name === `log`
|
|
278
|
-
? [Math.max(min_val, math.LOG_EPS), max_val]
|
|
279
|
-
: [min_val, max_val];
|
|
276
|
+
return type_name === `log` ? [Math.max(min_val, math.LOG_EPS), max_val] : [min_val, max_val];
|
|
280
277
|
}
|
|
281
278
|
// Advanced domain calculation with padding and nice boundaries (from ScatterPlot)
|
|
282
279
|
export function get_nice_data_range(points, get_value, range, scale_type, padding_factor, is_time = false) {
|
|
@@ -376,15 +373,11 @@ export function generate_log_ticks(min, max, ticks_option) {
|
|
|
376
373
|
const max_power = Math.ceil(Math.log10(max));
|
|
377
374
|
// For very wide ranges, extend the range to include more ticks
|
|
378
375
|
const range_size = max_power - min_power;
|
|
379
|
-
const extended_min_power = range_size <= 2
|
|
380
|
-
? min_power - 1
|
|
381
|
-
: min_power - Math.max(1, Math.floor(range_size / 4));
|
|
376
|
+
const extended_min_power = range_size <= 2 ? min_power - 1 : min_power - Math.max(1, Math.floor(range_size / 4));
|
|
382
377
|
const extended_max_power = range_size <= 2 ? max_power + 1 : max_power;
|
|
383
|
-
const powers = range(extended_min_power, extended_max_power + 1).map((
|
|
378
|
+
const powers = range(extended_min_power, extended_max_power + 1).map((power) => Math.pow(10, power));
|
|
384
379
|
// For narrow ranges, include intermediate values
|
|
385
|
-
if (max_power - min_power < 3 &&
|
|
386
|
-
typeof ticks_option === `number` &&
|
|
387
|
-
ticks_option > 5) {
|
|
380
|
+
if (max_power - min_power < 3 && typeof ticks_option === `number` && ticks_option > 5) {
|
|
388
381
|
const detailed_ticks = [];
|
|
389
382
|
powers.forEach((power) => {
|
|
390
383
|
detailed_ticks.push(power);
|
|
@@ -393,9 +386,9 @@ export function generate_log_ticks(min, max, ticks_option) {
|
|
|
393
386
|
if (power * 5 <= Math.pow(10, extended_max_power))
|
|
394
387
|
detailed_ticks.push(power * 5);
|
|
395
388
|
});
|
|
396
|
-
return detailed_ticks.filter((
|
|
389
|
+
return detailed_ticks.filter((tick) => tick >= min && tick <= max);
|
|
397
390
|
}
|
|
398
|
-
return powers.filter((
|
|
391
|
+
return powers.filter((power) => power >= min && power <= max);
|
|
399
392
|
}
|
|
400
393
|
// Get custom label for a tick value if provided, otherwise return null
|
|
401
394
|
export function get_tick_label(tick_value, ticks_option) {
|
|
@@ -406,18 +399,13 @@ export function get_tick_label(tick_value, ticks_option) {
|
|
|
406
399
|
}
|
|
407
400
|
// Create a color scale function from configuration
|
|
408
401
|
export function create_color_scale(color_scale_config, auto_color_range) {
|
|
409
|
-
const scheme = typeof color_scale_config === `string`
|
|
410
|
-
? color_scale_config
|
|
411
|
-
: color_scale_config.scheme;
|
|
402
|
+
const scheme = typeof color_scale_config === `string` ? color_scale_config : color_scale_config.scheme;
|
|
412
403
|
const interpolator = (typeof d3_sc[scheme] === `function`
|
|
413
404
|
? d3_sc[scheme]
|
|
414
405
|
: d3_sc.interpolateViridis);
|
|
415
|
-
const [min_val, max_val] = (typeof color_scale_config === `string`
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
const scale_type = typeof color_scale_config === `string`
|
|
419
|
-
? undefined
|
|
420
|
-
: color_scale_config.type;
|
|
406
|
+
const [min_val, max_val] = (typeof color_scale_config === `string` ? undefined : color_scale_config.value_range) ??
|
|
407
|
+
auto_color_range;
|
|
408
|
+
const scale_type = typeof color_scale_config === `string` ? undefined : color_scale_config.type;
|
|
421
409
|
const type_name = get_scale_type_name(scale_type);
|
|
422
410
|
if (type_name === `log`) {
|
|
423
411
|
return scaleSequentialLog(interpolator).domain([
|
|
@@ -465,7 +453,7 @@ function create_arcsinh_color_scale(interpolator, initial_domain, threshold) {
|
|
|
465
453
|
export function create_size_scale(config, all_size_values) {
|
|
466
454
|
const [min_radius, max_radius] = config.radius_range ?? [2, 10];
|
|
467
455
|
const auto_range = all_size_values.length > 0
|
|
468
|
-
? extent(all_size_values.filter((
|
|
456
|
+
? extent(all_size_values.filter((val) => val !== null))
|
|
469
457
|
: [0, 1];
|
|
470
458
|
const [min_val, max_val] = config.value_range ?? auto_range;
|
|
471
459
|
const safe_min = min_val ?? 0;
|
package/dist/plot/types.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { D3SymbolName } from '../labels';
|
|
2
|
-
import type { Vec3 } from '../math';
|
|
2
|
+
import type { Vec2, Vec3 } from '../math';
|
|
3
3
|
import type DraggablePane from '../overlays/DraggablePane.svelte';
|
|
4
|
-
import type { SimulationNodeDatum } from 'd3-force';
|
|
5
4
|
import type { ComponentProps, Snippet } from 'svelte';
|
|
6
5
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
7
|
-
import type ColorBar from './ColorBar.svelte';
|
|
8
6
|
import type PlotLegend from './PlotLegend.svelte';
|
|
9
7
|
import type { TicksOption } from './scales';
|
|
10
8
|
export interface TweenedOptions<T> {
|
|
@@ -27,6 +25,12 @@ export type Sides = {
|
|
|
27
25
|
l?: number;
|
|
28
26
|
r?: number;
|
|
29
27
|
};
|
|
28
|
+
export type InitialRanges = {
|
|
29
|
+
initial_x_range: Vec2;
|
|
30
|
+
initial_x2_range: Vec2;
|
|
31
|
+
initial_y_range: Vec2;
|
|
32
|
+
initial_y2_range: Vec2;
|
|
33
|
+
};
|
|
30
34
|
export type Point<Metadata = Record<string, unknown>> = {
|
|
31
35
|
x: number;
|
|
32
36
|
y: number;
|
|
@@ -93,6 +97,7 @@ export interface DataSeries<Metadata = Record<string, unknown>> {
|
|
|
93
97
|
x: readonly number[];
|
|
94
98
|
y: readonly number[];
|
|
95
99
|
markers?: Markers;
|
|
100
|
+
x_axis?: `x1` | `x2`;
|
|
96
101
|
y_axis?: `y1` | `y2`;
|
|
97
102
|
color_values?: (number | null)[] | null;
|
|
98
103
|
size_values?: readonly (number | null)[] | null;
|
|
@@ -138,6 +143,7 @@ export interface HandlerProps<Metadata = Record<string, unknown>> {
|
|
|
138
143
|
label?: string | null;
|
|
139
144
|
series_idx: number;
|
|
140
145
|
x_axis: AxisConfig;
|
|
146
|
+
x2_axis?: AxisConfig;
|
|
141
147
|
y_axis: AxisConfig;
|
|
142
148
|
y2_axis?: AxisConfig;
|
|
143
149
|
fullscreen?: boolean;
|
|
@@ -164,13 +170,16 @@ export interface BarHandlerProps<Metadata = Record<string, unknown>> extends Han
|
|
|
164
170
|
orient_x: number;
|
|
165
171
|
orient_y: number;
|
|
166
172
|
active_y_axis: `y1` | `y2`;
|
|
173
|
+
active_x_axis: `x1` | `x2`;
|
|
167
174
|
color: string;
|
|
175
|
+
category_label?: string;
|
|
168
176
|
}
|
|
169
177
|
export interface HistogramHandlerProps<Metadata = Record<string, unknown>> extends HandlerProps<Metadata> {
|
|
170
178
|
value: number;
|
|
171
179
|
count: number;
|
|
172
180
|
property: string;
|
|
173
181
|
active_y_axis: `y1` | `y2`;
|
|
182
|
+
active_x_axis: `x1` | `x2`;
|
|
174
183
|
}
|
|
175
184
|
export type TimeInterval = `day` | `month` | `year`;
|
|
176
185
|
export type ScaleTypeName = `linear` | `log` | `arcsinh` | `time`;
|
|
@@ -179,6 +188,7 @@ export interface ArcsinhScaleConfig {
|
|
|
179
188
|
threshold?: number;
|
|
180
189
|
}
|
|
181
190
|
export type ScaleType = `linear` | `log` | `arcsinh` | `time` | ArcsinhScaleConfig;
|
|
191
|
+
export declare function is_scale_type_name(val: string): val is ScaleTypeName;
|
|
182
192
|
export declare function get_scale_type_name(scale_type: ScaleType | undefined): ScaleTypeName;
|
|
183
193
|
export declare function get_arcsinh_threshold(scale_type: ScaleType | undefined): number;
|
|
184
194
|
export declare function is_time_scale(scale_type: ScaleType | undefined, format: string | undefined): boolean;
|
|
@@ -188,33 +198,23 @@ export type QuadrantCounts = {
|
|
|
188
198
|
bottom_left: number;
|
|
189
199
|
bottom_right: number;
|
|
190
200
|
};
|
|
191
|
-
export interface
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
201
|
+
export interface LabelPlacementWeights {
|
|
202
|
+
overlap?: number;
|
|
203
|
+
marker?: number;
|
|
204
|
+
leader_cross?: number;
|
|
205
|
+
leader_text?: number;
|
|
206
|
+
distance?: number;
|
|
207
|
+
bounds?: number;
|
|
198
208
|
}
|
|
199
209
|
export interface LabelPlacementConfig {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
link_distance_range?: [number | null, number | null];
|
|
210
|
+
sa_iterations?: number;
|
|
211
|
+
weights?: LabelPlacementWeights;
|
|
212
|
+
leader_line_threshold?: number;
|
|
213
|
+
max_labels?: number;
|
|
205
214
|
}
|
|
206
215
|
export type HoverConfig = {
|
|
207
216
|
threshold_px: number;
|
|
208
217
|
};
|
|
209
|
-
export interface AnchorNode extends SimulationNodeDatum {
|
|
210
|
-
id: string;
|
|
211
|
-
fx: number;
|
|
212
|
-
fy: number;
|
|
213
|
-
point_radius: number;
|
|
214
|
-
show_color_bar?: boolean;
|
|
215
|
-
color_bar?: ComponentProps<typeof ColorBar> | null;
|
|
216
|
-
label_placement_config?: Partial<LabelPlacementConfig>;
|
|
217
|
-
}
|
|
218
218
|
export type LegendConfig = Omit<ComponentProps<typeof PlotLegend>, `series_data` | `on_drag_start` | `on_drag` | `on_drag_end`> & {
|
|
219
219
|
margin?: number | Sides;
|
|
220
220
|
tween?: TweenedOptions<XyObj>;
|
|
@@ -246,19 +246,21 @@ export type UserContentProps = {
|
|
|
246
246
|
height: number;
|
|
247
247
|
width: number;
|
|
248
248
|
x_scale_fn: (x: number) => number;
|
|
249
|
+
x2_scale_fn?: (x: number) => number;
|
|
249
250
|
y_scale_fn: (y: number) => number;
|
|
250
251
|
y2_scale_fn?: (y: number) => number;
|
|
251
252
|
pad: Required<Sides>;
|
|
252
|
-
x_range:
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
x_range: Vec2;
|
|
254
|
+
x2_range?: Vec2;
|
|
255
|
+
y_range: Vec2;
|
|
256
|
+
y2_range?: Vec2;
|
|
255
257
|
fullscreen: boolean;
|
|
256
258
|
};
|
|
257
259
|
export type Orientation = `vertical` | `horizontal`;
|
|
258
260
|
export type BarMode = `overlay` | `stacked` | `grouped`;
|
|
259
261
|
export interface BarSeries<Metadata = Record<string, unknown>> {
|
|
260
262
|
id?: string | number;
|
|
261
|
-
x: readonly number[];
|
|
263
|
+
x: readonly (number | string)[];
|
|
262
264
|
y: readonly number[];
|
|
263
265
|
label?: string;
|
|
264
266
|
legend_group?: string;
|
|
@@ -268,6 +270,7 @@ export interface BarSeries<Metadata = Record<string, unknown>> {
|
|
|
268
270
|
metadata?: Metadata[] | Metadata;
|
|
269
271
|
labels?: readonly (string | null | undefined)[];
|
|
270
272
|
render_mode?: `bar` | `line`;
|
|
273
|
+
x_axis?: `x1` | `x2`;
|
|
271
274
|
y_axis?: `y1` | `y2`;
|
|
272
275
|
line_style?: {
|
|
273
276
|
stroke_width?: number;
|
|
@@ -295,6 +298,7 @@ export interface AxisOption {
|
|
|
295
298
|
unit?: string;
|
|
296
299
|
}
|
|
297
300
|
export type Y2SyncMode = `none` | `synced` | `align`;
|
|
301
|
+
export declare function is_y2_sync_mode(val: string): val is Y2SyncMode;
|
|
298
302
|
export interface Y2SyncConfig {
|
|
299
303
|
mode: Y2SyncMode;
|
|
300
304
|
align_value?: number;
|
|
@@ -313,6 +317,7 @@ export interface AxisConfig {
|
|
|
313
317
|
options?: AxisOption[];
|
|
314
318
|
selected_key?: string;
|
|
315
319
|
sync?: Y2SyncConfig | Y2SyncMode;
|
|
320
|
+
categories?: readonly string[];
|
|
316
321
|
}
|
|
317
322
|
export interface DataLoaderResult<Metadata = Record<string, unknown>, SeriesType = DataSeries<Metadata>> {
|
|
318
323
|
series: SeriesType[];
|
|
@@ -331,15 +336,18 @@ export interface ColorScaleOption {
|
|
|
331
336
|
scale: string | ((t: number) => string);
|
|
332
337
|
}
|
|
333
338
|
export type ColorBarDataLoaderFn = (property_key: string) => Promise<{
|
|
334
|
-
range:
|
|
339
|
+
range: Vec2;
|
|
335
340
|
title?: string;
|
|
336
341
|
}>;
|
|
337
342
|
export interface DisplayConfig {
|
|
338
343
|
x_grid?: boolean;
|
|
344
|
+
x2_grid?: boolean;
|
|
339
345
|
y_grid?: boolean;
|
|
340
346
|
y2_grid?: boolean;
|
|
341
347
|
x_zero_line?: boolean;
|
|
348
|
+
x2_zero_line?: boolean;
|
|
342
349
|
y_zero_line?: boolean;
|
|
350
|
+
y2_zero_line?: boolean;
|
|
343
351
|
}
|
|
344
352
|
export interface StyleOverrides {
|
|
345
353
|
point?: {
|
|
@@ -359,9 +367,10 @@ export interface StyleOverrides {
|
|
|
359
367
|
show_points?: boolean;
|
|
360
368
|
show_lines?: boolean;
|
|
361
369
|
}
|
|
362
|
-
export type AxisKey = `x` | `y` | `y2`;
|
|
370
|
+
export type AxisKey = `x` | `x2` | `y` | `y2`;
|
|
363
371
|
export interface PlotConfig {
|
|
364
372
|
x_axis?: AxisConfig;
|
|
373
|
+
x2_axis?: AxisConfig;
|
|
365
374
|
y_axis?: AxisConfig;
|
|
366
375
|
y2_axis?: AxisConfig;
|
|
367
376
|
display?: DisplayConfig;
|
|
@@ -388,9 +397,11 @@ export interface PlotControlsProps extends PlotConfig {
|
|
|
388
397
|
controls_open?: boolean;
|
|
389
398
|
children?: Snippet<[ControlsState]>;
|
|
390
399
|
post_children?: Snippet<[ControlsState]>;
|
|
391
|
-
auto_x_range?:
|
|
392
|
-
|
|
393
|
-
|
|
400
|
+
auto_x_range?: Vec2;
|
|
401
|
+
auto_x2_range?: Vec2;
|
|
402
|
+
auto_y_range?: Vec2;
|
|
403
|
+
auto_y2_range?: Vec2;
|
|
404
|
+
has_x2_points?: boolean;
|
|
394
405
|
has_y2_points?: boolean;
|
|
395
406
|
show_ticks?: boolean;
|
|
396
407
|
controls_title?: string;
|
|
@@ -400,6 +411,7 @@ export interface PlotControlsProps extends PlotConfig {
|
|
|
400
411
|
}
|
|
401
412
|
export interface BasePlotProps {
|
|
402
413
|
x_range?: [number | null, number | null];
|
|
414
|
+
x2_range?: [number | null, number | null];
|
|
403
415
|
y_range?: [number | null, number | null];
|
|
404
416
|
y2_range?: [number | null, number | null];
|
|
405
417
|
range_padding?: number;
|
|
@@ -457,12 +469,12 @@ export type SurfaceType = `grid` | `parametric` | `triangulated`;
|
|
|
457
469
|
export interface Surface3DConfig {
|
|
458
470
|
id?: string | number;
|
|
459
471
|
type: SurfaceType;
|
|
460
|
-
x_range?:
|
|
461
|
-
y_range?:
|
|
462
|
-
resolution?: number |
|
|
472
|
+
x_range?: Vec2;
|
|
473
|
+
y_range?: Vec2;
|
|
474
|
+
resolution?: number | Vec2;
|
|
463
475
|
z_fn?: (x: number, y: number) => number;
|
|
464
|
-
u_range?:
|
|
465
|
-
v_range?:
|
|
476
|
+
u_range?: Vec2;
|
|
477
|
+
v_range?: Vec2;
|
|
466
478
|
parametric_fn?: (u: number, v: number) => XyzObj;
|
|
467
479
|
points?: XyzObj[];
|
|
468
480
|
triangles?: Vec3[];
|
|
@@ -541,7 +553,7 @@ export type FillBoundary = {
|
|
|
541
553
|
value: number;
|
|
542
554
|
} | {
|
|
543
555
|
type: `axis`;
|
|
544
|
-
axis: `x` | `y` | `y2`;
|
|
556
|
+
axis: `x` | `x2` | `y` | `y2`;
|
|
545
557
|
value?: number;
|
|
546
558
|
} | {
|
|
547
559
|
type: `function`;
|
|
@@ -664,6 +676,7 @@ export interface RefLineBase {
|
|
|
664
676
|
x_span?: [number | null, number | null];
|
|
665
677
|
y_span?: [number | null, number | null];
|
|
666
678
|
coord_mode?: `data` | `relative`;
|
|
679
|
+
x_axis?: `x1` | `x2`;
|
|
667
680
|
y_axis?: `y1` | `y2`;
|
|
668
681
|
style?: RefLineStyle;
|
|
669
682
|
annotation?: RefLineAnnotation;
|
|
@@ -830,7 +843,7 @@ export interface CleaningQuality {
|
|
|
830
843
|
oscillation_score?: number;
|
|
831
844
|
bounds_violations: number;
|
|
832
845
|
outliers_removed?: number;
|
|
833
|
-
stable_range?:
|
|
846
|
+
stable_range?: Vec2;
|
|
834
847
|
truncated_at_x?: number;
|
|
835
848
|
}
|
|
836
849
|
export interface CleaningResult<T = DataSeries> {
|
package/dist/plot/types.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// Type guard for select value narrowing (avoids unsafe casts)
|
|
2
|
+
const SCALE_TYPE_NAMES = new Set([`linear`, `log`, `arcsinh`, `time`]);
|
|
3
|
+
export function is_scale_type_name(val) {
|
|
4
|
+
return SCALE_TYPE_NAMES.has(val);
|
|
5
|
+
}
|
|
1
6
|
// Helper to normalize ScaleType to base type name
|
|
2
7
|
export function get_scale_type_name(scale_type) {
|
|
3
8
|
if (!scale_type)
|
|
@@ -27,6 +32,11 @@ export function is_time_scale(scale_type, format) {
|
|
|
27
32
|
// Fallback: d3 time format strings start with '%'
|
|
28
33
|
return format?.startsWith(`%`) ?? false;
|
|
29
34
|
}
|
|
35
|
+
// Type guard for select value narrowing (avoids unsafe casts)
|
|
36
|
+
const Y2_SYNC_MODES = new Set([`none`, `synced`, `align`]);
|
|
37
|
+
export function is_y2_sync_mode(val) {
|
|
38
|
+
return Y2_SYNC_MODES.has(val);
|
|
39
|
+
}
|
|
30
40
|
export const LINE_TYPES = [`solid`, `dashed`, `dotted`];
|
|
31
41
|
// Define grid cell identifiers
|
|
32
42
|
export const CELLS_3X3 = [
|
|
@@ -40,15 +50,10 @@ export const CELLS_3X3 = [
|
|
|
40
50
|
`bottom-center`,
|
|
41
51
|
`bottom-right`,
|
|
42
52
|
];
|
|
43
|
-
export const CORNER_CELLS = [
|
|
44
|
-
`top-left`,
|
|
45
|
-
`top-right`,
|
|
46
|
-
`bottom-left`,
|
|
47
|
-
`bottom-right`,
|
|
48
|
-
];
|
|
53
|
+
export const CORNER_CELLS = [`top-left`, `top-right`, `bottom-left`, `bottom-right`];
|
|
49
54
|
// Default grid line style (SSOT for all plot components)
|
|
50
55
|
export const DEFAULT_GRID_STYLE = {
|
|
51
|
-
|
|
56
|
+
stroke: `var(--border-color, gray)`,
|
|
52
57
|
'stroke-dasharray': `4`,
|
|
53
58
|
'stroke-width': `1`,
|
|
54
59
|
};
|
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import type { AxisConfig, DataSeries, XyObj } from '..';
|
|
2
2
|
import type { PlotScaleFn } from '../scales';
|
|
3
|
-
import type { LabelPlacementConfig } from '../types';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
point_radius: number;
|
|
3
|
+
import type { LabelPlacementConfig, LabelPlacementWeights } from '../types';
|
|
4
|
+
export interface Rect {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
w: number;
|
|
8
|
+
h: number;
|
|
10
9
|
}
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
export interface PlotBounds {
|
|
11
|
+
min_x: number;
|
|
12
|
+
min_y: number;
|
|
13
|
+
max_x: number;
|
|
14
|
+
max_y: number;
|
|
15
|
+
}
|
|
16
|
+
interface AnchorInfo {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
radius: number;
|
|
20
|
+
}
|
|
21
|
+
interface LabelState extends Rect {
|
|
22
|
+
anchor_idx: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function parse_font_size(size_str?: string): number;
|
|
25
|
+
export declare function rect_overlap_area(a: Rect, b: Rect): number;
|
|
26
|
+
export declare function rect_circle_overlap(rect: Rect, cx: number, cy: number, radius: number): number;
|
|
27
|
+
export declare function segments_intersect(ax1: number, ay1: number, ax2: number, ay2: number, bx1: number, by1: number, bx2: number, by2: number): boolean;
|
|
28
|
+
export declare function segment_rect_intersects(sx1: number, sy1: number, sx2: number, sy2: number, rect: Rect): boolean;
|
|
29
|
+
export declare function rect_out_of_bounds_area(rect: Rect, bounds: PlotBounds): number;
|
|
30
|
+
export declare function generate_candidates(ax: number, ay: number, point_radius: number, label_w: number, label_h: number, gap: number): XyObj[];
|
|
31
|
+
export declare function compute_delta_energy(labels: LabelState[], anchors: AnchorInfo[], changed_idx: number, old_state: LabelState, new_state: LabelState, weights: Required<LabelPlacementWeights>, bounds: PlotBounds): number;
|
|
32
|
+
export declare function compute_label_positions(filtered_series: DataSeries[], config: LabelPlacementConfig, scales: {
|
|
33
|
+
x_scale_fn: PlotScaleFn;
|
|
34
|
+
y_scale_fn: PlotScaleFn;
|
|
35
|
+
y2_scale_fn: PlotScaleFn;
|
|
19
36
|
x_axis: AxisConfig;
|
|
20
37
|
}, bounds: {
|
|
21
38
|
width: number;
|