@tellegen/svelte 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/Sparkline.svelte.d.ts +0 -1
- package/dist/TellegenMap.svelte +109 -47
- package/dist/TellegenMap.svelte.d.ts +0 -1
- package/dist/TellegenProvider.svelte.d.ts +0 -1
- package/dist/TellegenShell.svelte +28 -3
- package/dist/TellegenShell.svelte.d.ts +0 -1
- package/dist/TellegenViewer.svelte.d.ts +0 -1
- package/dist/api.d.ts +0 -1
- package/dist/colors.d.ts +0 -1
- package/dist/components/AppFooter.svelte +26 -1
- package/dist/components/AppFooter.svelte.d.ts +5 -18
- package/dist/components/AppHeader.svelte +63 -3
- package/dist/components/AppHeader.svelte.d.ts +0 -1
- package/dist/components/BindingLines.svelte +13 -0
- package/dist/components/BindingLines.svelte.d.ts +0 -1
- package/dist/components/BusPicker.svelte +40 -0
- package/dist/components/BusPicker.svelte.d.ts +4 -2
- package/dist/components/ControlPanel.svelte +359 -72
- package/dist/components/ControlPanel.svelte.d.ts +2 -18
- package/dist/components/DemandSlider.svelte +28 -8
- package/dist/components/DemandSlider.svelte.d.ts +0 -1
- package/dist/components/DisplayControls.svelte.d.ts +0 -1
- package/dist/components/DropZone.svelte.d.ts +0 -1
- package/dist/components/FormulationSelector.svelte +17 -0
- package/dist/components/FormulationSelector.svelte.d.ts +0 -1
- package/dist/components/LocalCaseDetails.svelte +5 -2
- package/dist/components/LocalCaseDetails.svelte.d.ts +0 -1
- package/dist/components/MulticonductorDetails.svelte +3 -3
- package/dist/components/MulticonductorDetails.svelte.d.ts +0 -1
- package/dist/components/NetworkStats.svelte.d.ts +0 -1
- package/dist/components/PlacementCue.svelte.d.ts +0 -1
- package/dist/components/RatingSlider.svelte.d.ts +0 -1
- package/dist/components/RestoreDefaultsButton.svelte.d.ts +0 -1
- package/dist/components/SensitivityReadout.svelte +10 -1
- package/dist/components/SensitivityReadout.svelte.d.ts +0 -1
- package/dist/components/SizeLegend.svelte.d.ts +0 -1
- package/dist/components/SolveCard.svelte +2 -1
- package/dist/components/SolveCard.svelte.d.ts +0 -1
- package/dist/components/TopMovers.svelte.d.ts +0 -1
- package/dist/components.d.ts +0 -1
- package/dist/context.svelte.d.ts +0 -1
- package/dist/controller.svelte.d.ts +24 -12
- package/dist/controller.svelte.js +218 -101
- package/dist/display.d.ts +0 -1
- package/dist/drop-classify.d.ts +5 -42
- package/dist/drop-classify.js +5 -78
- package/dist/drop-limits.d.ts +27 -0
- package/dist/drop-limits.js +83 -0
- package/dist/format.d.ts +0 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.js +2 -2
- package/dist/map-bounds.d.ts +5 -0
- package/dist/map-bounds.js +41 -0
- package/dist/map.d.ts +0 -1
- package/dist/multiconductor.d.ts +0 -1
- package/dist/state.svelte.d.ts +13 -1
- package/dist/state.svelte.js +13 -0
- package/dist/study-package.d.ts +0 -1
- package/dist/styles.css +16 -2
- package/dist/synthetic-layout.d.ts +0 -1
- package/dist/synthetic-layout.js +16 -2
- package/dist/transformer-icon.d.ts +0 -1
- package/dist/types.d.ts +0 -1
- package/package.json +14 -11
- package/dist/Sparkline.svelte.d.ts.map +0 -1
- package/dist/TellegenMap.svelte.d.ts.map +0 -1
- package/dist/TellegenProvider.svelte.d.ts.map +0 -1
- package/dist/TellegenShell.svelte.d.ts.map +0 -1
- package/dist/TellegenViewer.svelte.d.ts.map +0 -1
- package/dist/api.d.ts.map +0 -1
- package/dist/colors.d.ts.map +0 -1
- package/dist/components/AppFooter.svelte.d.ts.map +0 -1
- package/dist/components/AppHeader.svelte.d.ts.map +0 -1
- package/dist/components/BindingLines.svelte.d.ts.map +0 -1
- package/dist/components/BusPicker.svelte.d.ts.map +0 -1
- package/dist/components/ControlPanel.svelte.d.ts.map +0 -1
- package/dist/components/DemandSlider.svelte.d.ts.map +0 -1
- package/dist/components/DisplayControls.svelte.d.ts.map +0 -1
- package/dist/components/DropZone.svelte.d.ts.map +0 -1
- package/dist/components/FormulationSelector.svelte.d.ts.map +0 -1
- package/dist/components/LocalCaseDetails.svelte.d.ts.map +0 -1
- package/dist/components/MulticonductorDetails.svelte.d.ts.map +0 -1
- package/dist/components/NetworkStats.svelte.d.ts.map +0 -1
- package/dist/components/PlacementCue.svelte.d.ts.map +0 -1
- package/dist/components/RatingSlider.svelte.d.ts.map +0 -1
- package/dist/components/RestoreDefaultsButton.svelte.d.ts.map +0 -1
- package/dist/components/SensitivityReadout.svelte.d.ts.map +0 -1
- package/dist/components/SizeLegend.svelte.d.ts.map +0 -1
- package/dist/components/SolveCard.svelte.d.ts.map +0 -1
- package/dist/components/TopMovers.svelte.d.ts.map +0 -1
- package/dist/components.d.ts.map +0 -1
- package/dist/context.svelte.d.ts.map +0 -1
- package/dist/controller.svelte.d.ts.map +0 -1
- package/dist/display.d.ts.map +0 -1
- package/dist/drop-classify.d.ts.map +0 -1
- package/dist/format.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/map.d.ts.map +0 -1
- package/dist/multiconductor.d.ts.map +0 -1
- package/dist/state.svelte.d.ts.map +0 -1
- package/dist/study-package.d.ts.map +0 -1
- package/dist/synthetic-layout.d.ts.map +0 -1
- package/dist/transformer-icon.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/dist/drop-classify.js
CHANGED
|
@@ -1,31 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* the balanced `.m`/`.raw`/`.aux` via `formatOf` in the engine) is name-based;
|
|
4
|
-
* everything under `.json` is content-sniffed here so there is one place that
|
|
5
|
-
* decides package-vs-case and balanced-vs-multiconductor.
|
|
6
|
-
*
|
|
7
|
-
* The rules mirror the readers they feed:
|
|
8
|
-
* - a `.pio.json` package is recognized by its `schema` envelope field, then
|
|
9
|
-
* split by the authoritative `model_kind` (balanced restores a study;
|
|
10
|
-
* multiconductor is viewed);
|
|
11
|
-
* - a non-package document is distribution JSON, PMD when it carries the
|
|
12
|
-
* `data_model` marker and BMOPF otherwise (the same split
|
|
13
|
-
* `powerio_dist` uses for `.json`), except a GeoJSON FeatureCollection,
|
|
14
|
-
* which stays unrouted so the geo sidecar path keeps accepting it.
|
|
15
|
-
*
|
|
16
|
-
* Every function is total: malformed, truncated, or non-JSON input classifies
|
|
17
|
-
* as `not-json` rather than throwing. */
|
|
18
|
-
/** The schema URL prefix every `.pio.json` package envelope carries. */
|
|
19
|
-
export const PIO_PACKAGE_SCHEMA_PREFIX = 'https://powerio.dev/schema/pio-package';
|
|
1
|
+
/** File name helpers for drop routing. JSON content classification lives in
|
|
2
|
+
* powerio's Rust/Wasm `classify_json_bytes` path, not in this TypeScript layer. */
|
|
20
3
|
/** The distribution format for a file recognized by extension, or null. Only
|
|
21
|
-
* `.dss` is name
|
|
22
|
-
*
|
|
4
|
+
* `.dss` is name routed; PMD and BMOPF share the `.json` extension and are
|
|
5
|
+
* classified by the engine. */
|
|
23
6
|
export function distExtensionFormat(name) {
|
|
24
7
|
return name.split('.').pop()?.toLowerCase() === 'dss' ? 'dss' : null;
|
|
25
8
|
}
|
|
26
9
|
/** True for geographic sidecar files by extension (`.csv`, `.json`,
|
|
27
10
|
* `.geojson`). Routable `.json` content (packages, distribution documents) is
|
|
28
|
-
* consumed by
|
|
11
|
+
* consumed by the engine classifier before this applies; what remains parses
|
|
29
12
|
* through the engine's tolerant geo reader. */
|
|
30
13
|
export function isGeoFileName(name) {
|
|
31
14
|
const dot = name.lastIndexOf('.');
|
|
@@ -34,59 +17,3 @@ export function isGeoFileName(name) {
|
|
|
34
17
|
const ext = name.slice(dot + 1).toLowerCase();
|
|
35
18
|
return ext === 'csv' || ext === 'json' || ext === 'geojson';
|
|
36
19
|
}
|
|
37
|
-
/** Parse `text` as JSON, returning the top-level object or null. */
|
|
38
|
-
function topLevelObject(text) {
|
|
39
|
-
let value;
|
|
40
|
-
try {
|
|
41
|
-
value = JSON.parse(text);
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
47
|
-
? value
|
|
48
|
-
: null;
|
|
49
|
-
}
|
|
50
|
-
/** Whether `text` is a `.pio.json` package envelope, by its `schema` field. */
|
|
51
|
-
export function isPackageEnvelope(obj) {
|
|
52
|
-
return typeof obj?.schema === 'string' && obj.schema.startsWith(PIO_PACKAGE_SCHEMA_PREFIX);
|
|
53
|
-
}
|
|
54
|
-
/** The package's model family. `model_kind` is authoritative and stored
|
|
55
|
-
* explicitly; fall back to the payload's own `model.kind` tag for a package
|
|
56
|
-
* written before the field existed. */
|
|
57
|
-
function packageModelKind(obj) {
|
|
58
|
-
const explicit = obj.model_kind;
|
|
59
|
-
if (explicit === 'balanced' || explicit === 'multiconductor')
|
|
60
|
-
return explicit;
|
|
61
|
-
const payloadKind = obj.model?.kind;
|
|
62
|
-
if (payloadKind === 'balanced' || payloadKind === 'multiconductor')
|
|
63
|
-
return payloadKind;
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
/** Classify a dropped JSON document into its ingest path. */
|
|
67
|
-
export function classifyJson(text) {
|
|
68
|
-
const obj = topLevelObject(text);
|
|
69
|
-
if (!obj)
|
|
70
|
-
return 'not-json';
|
|
71
|
-
if (isPackageEnvelope(obj)) {
|
|
72
|
-
const kind = packageModelKind(obj);
|
|
73
|
-
// A package with no readable kind is treated as balanced: that is the
|
|
74
|
-
// historical payload and the study-restore path fails closed on a
|
|
75
|
-
// non-balanced document anyway.
|
|
76
|
-
return kind === 'multiconductor' ? 'multiconductor-package' : 'balanced-package';
|
|
77
|
-
}
|
|
78
|
-
// A GeoJSON FeatureCollection saved as `.json` is coordinate data for the
|
|
79
|
-
// geo sidecar path, which accepted it before this classifier existed; leave
|
|
80
|
-
// it unrouted so it falls through.
|
|
81
|
-
if (Array.isArray(obj.features))
|
|
82
|
-
return 'not-json';
|
|
83
|
-
// Non-package JSON is a distribution document: PMD declares `data_model`,
|
|
84
|
-
// everything else is routed to BMOPF (which gives the precise parse error
|
|
85
|
-
// when it is neither).
|
|
86
|
-
return 'data_model' in obj ? 'pmd' : 'bmopf';
|
|
87
|
-
}
|
|
88
|
-
/** Whether `text` is a saved study package (a balanced `.pio.json`). Kept for
|
|
89
|
-
* the study-restore path; multiconductor packages are viewed, not restored. */
|
|
90
|
-
export function isStudyPackageText(text) {
|
|
91
|
-
return classifyJson(text) === 'balanced-package';
|
|
92
|
-
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Browser drop limits. Each accepted file is copied into JavaScript and worker/wasm
|
|
2
|
+
* memory, so the whole batch is checked before any file contents are read. */
|
|
3
|
+
export declare const MAX_DROP_FILES = 32;
|
|
4
|
+
export declare const MAX_DROP_FILE_BYTES: number;
|
|
5
|
+
export declare const MAX_DROP_TOTAL_BYTES: number;
|
|
6
|
+
type DropFileDescriptor = {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly size: number;
|
|
9
|
+
};
|
|
10
|
+
/** One-at-a-time admission for browser ingestion. A second drop is refused
|
|
11
|
+
* while the first still owns its release callback, so independently valid
|
|
12
|
+
* batches cannot queue enough worker copies to bypass the aggregate limit. */
|
|
13
|
+
export declare class DropBatchGate {
|
|
14
|
+
#private;
|
|
15
|
+
enter(): (() => void) | null;
|
|
16
|
+
}
|
|
17
|
+
/** Return bytes retained by an earlier routing pass, or read the file once when
|
|
18
|
+
* no retained buffer exists. Keeping this decision here makes the no-reread
|
|
19
|
+
* guarantee independently testable. */
|
|
20
|
+
export declare function readDropFileBytes(file: {
|
|
21
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
22
|
+
}, retained?: Uint8Array): Promise<Uint8Array>;
|
|
23
|
+
/** Validate and materialize an array-like browser file batch without calling
|
|
24
|
+
* `Array.from` first. The count and every declared byte size must be safe integers,
|
|
25
|
+
* and aggregate addition is guarded before it is performed. */
|
|
26
|
+
export declare function validateDropBatch<T extends DropFileDescriptor>(input: ArrayLike<T>): T[];
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Browser drop limits. Each accepted file is copied into JavaScript and worker/wasm
|
|
2
|
+
* memory, so the whole batch is checked before any file contents are read. */
|
|
3
|
+
export const MAX_DROP_FILES = 32;
|
|
4
|
+
export const MAX_DROP_FILE_BYTES = 128 * 1024 * 1024;
|
|
5
|
+
export const MAX_DROP_TOTAL_BYTES = 128 * 1024 * 1024;
|
|
6
|
+
/** One-at-a-time admission for browser ingestion. A second drop is refused
|
|
7
|
+
* while the first still owns its release callback, so independently valid
|
|
8
|
+
* batches cannot queue enough worker copies to bypass the aggregate limit. */
|
|
9
|
+
export class DropBatchGate {
|
|
10
|
+
#active = false;
|
|
11
|
+
enter() {
|
|
12
|
+
if (this.#active)
|
|
13
|
+
return null;
|
|
14
|
+
this.#active = true;
|
|
15
|
+
let released = false;
|
|
16
|
+
return () => {
|
|
17
|
+
if (released)
|
|
18
|
+
return;
|
|
19
|
+
released = true;
|
|
20
|
+
this.#active = false;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Return bytes retained by an earlier routing pass, or read the file once when
|
|
25
|
+
* no retained buffer exists. Keeping this decision here makes the no-reread
|
|
26
|
+
* guarantee independently testable. */
|
|
27
|
+
export async function readDropFileBytes(file, retained) {
|
|
28
|
+
return retained ?? new Uint8Array(await file.arrayBuffer());
|
|
29
|
+
}
|
|
30
|
+
/** Validate and materialize an array-like browser file batch without calling
|
|
31
|
+
* `Array.from` first. The count and every declared byte size must be safe integers,
|
|
32
|
+
* and aggregate addition is guarded before it is performed. */
|
|
33
|
+
export function validateDropBatch(input) {
|
|
34
|
+
let length;
|
|
35
|
+
try {
|
|
36
|
+
length = input.length;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
throw new Error('the dropped file count is invalid');
|
|
40
|
+
}
|
|
41
|
+
if (typeof length !== 'number' || !Number.isSafeInteger(length) || length < 0) {
|
|
42
|
+
throw new Error('the dropped file count is invalid');
|
|
43
|
+
}
|
|
44
|
+
if (length > MAX_DROP_FILES) {
|
|
45
|
+
throw new Error(`drop at most ${MAX_DROP_FILES} files at a time`);
|
|
46
|
+
}
|
|
47
|
+
const files = [];
|
|
48
|
+
let totalBytes = 0;
|
|
49
|
+
for (let index = 0; index < length; index++) {
|
|
50
|
+
let file;
|
|
51
|
+
try {
|
|
52
|
+
file = input[index];
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
throw new Error(`dropped file ${index + 1} is invalid`);
|
|
56
|
+
}
|
|
57
|
+
if (!file || typeof file !== 'object') {
|
|
58
|
+
throw new Error(`dropped file ${index + 1} is invalid`);
|
|
59
|
+
}
|
|
60
|
+
let size;
|
|
61
|
+
let name;
|
|
62
|
+
try {
|
|
63
|
+
size = file.size;
|
|
64
|
+
name = file.name;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
throw new Error(`dropped file ${index + 1} is invalid`);
|
|
68
|
+
}
|
|
69
|
+
const label = typeof name === 'string' && name.length > 0 ? name : `dropped file ${index + 1}`;
|
|
70
|
+
if (typeof size !== 'number' || !Number.isSafeInteger(size) || size < 0) {
|
|
71
|
+
throw new Error(`${label} has an invalid file size`);
|
|
72
|
+
}
|
|
73
|
+
if (size > MAX_DROP_FILE_BYTES) {
|
|
74
|
+
throw new Error(`${label} exceeds the ${MAX_DROP_FILE_BYTES}-byte per-file limit`);
|
|
75
|
+
}
|
|
76
|
+
if (size > MAX_DROP_TOTAL_BYTES - totalBytes) {
|
|
77
|
+
throw new Error(`the dropped files exceed the ${MAX_DROP_TOTAL_BYTES}-byte total limit`);
|
|
78
|
+
}
|
|
79
|
+
totalBytes += size;
|
|
80
|
+
files.push(file);
|
|
81
|
+
}
|
|
82
|
+
return files;
|
|
83
|
+
}
|
package/dist/format.d.ts
CHANGED
|
@@ -27,4 +27,3 @@ export declare const fmt: Intl.NumberFormat;
|
|
|
27
27
|
export declare const signed: (v: number) => string;
|
|
28
28
|
export declare const signedExp: (v: number) => string;
|
|
29
29
|
export declare const displayFmt: (mode: DisplayMode, value: number) => string;
|
|
30
|
-
//# sourceMappingURL=format.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -7,15 +7,13 @@ export { ApiError, createApiClient } from './api.js';
|
|
|
7
7
|
export { Controller, createController } from './controller.svelte.js';
|
|
8
8
|
export { AppState, CaseState, LocalCase, MulticonductorCase, createAppState } from './state.svelte.js';
|
|
9
9
|
export { attachmentColor, attachmentGlyph, edgeColor, edgeWidth, phaseColor, placeMultiView, buildGeographicView } from './multiconductor.js';
|
|
10
|
-
export {
|
|
10
|
+
export { distExtensionFormat } from './drop-classify.js';
|
|
11
11
|
export { caseDeltas, caseRatings, displayMetaFor, displaySeriesFor } from './display.js';
|
|
12
|
-
export { DEFAULT_FORMULATION, FORMULATIONS, BrowserStudy, Study, capabilities, createStudy, errorText, formatOf, ingestCase, isDisplayFile, isPermanentEngineFailure, parseDisplay, solveJson } from '@tellegen/engine';
|
|
12
|
+
export { DEFAULT_FORMULATION, FORMULATIONS, BrowserStudy, Study, capabilities, createStudy, errorText, formatOf, classifyJson, ingestJsonDrop, ingestCase, isDisplayFile, isPermanentEngineFailure, parseDisplay, solveJson } from '@tellegen/engine';
|
|
13
13
|
export type { BranchRatingDeltas, CaseSummary, DemandDeltas, Network, NetworkBranch, NetworkBus, SensitivityColumn, Solution, SolveIteration, SolveStreamHandlers, TellegenApiClient, TellegenApiClientOptions } from './api.js';
|
|
14
14
|
export type { TellegenUiConfig, TellegenUiOptions } from './context.svelte.js';
|
|
15
15
|
export type { ControllerOptions } from './controller.svelte.js';
|
|
16
16
|
export type { DisplayOption } from './display.js';
|
|
17
17
|
export type { DemandRangeMode, DisplayMode, FallbackTarget, LocalCaseInit, LocalSubstations, MultiCaseSummary, MultiCoordsKind, SolvableCase, SolveBackend } from './state.svelte.js';
|
|
18
|
-
export type { JsonDropKind } from './drop-classify.js';
|
|
19
18
|
export type { MultiView, PlacedMultiBus, PlacedMultiEdge } from './multiconductor.js';
|
|
20
|
-
export type { CaseFileSummary, DistAttachmentKind, DistEdgeKind, DistGraph, DistGraphAttachment, DistGraphBus, DistGraphEdge, DisplayPreview, Formulation, IngestedCase, IngestedDistCase, SensTarget, Topology, TopologyBranch, TopologyBus } from '@tellegen/engine';
|
|
21
|
-
//# sourceMappingURL=index.d.ts.map
|
|
19
|
+
export type { CaseFileSummary, DistAttachmentKind, DistEdgeKind, DistGraph, DistGraphAttachment, DistGraphBus, DistGraphEdge, DisplayPreview, Formulation, IngestedCase, IngestedDistCase, IngestedJsonDrop, JsonDropClassification, JsonDropKind, SensTarget, Topology, TopologyBranch, TopologyBus } from '@tellegen/engine';
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,6 @@ export { ApiError, createApiClient } from './api.js';
|
|
|
7
7
|
export { Controller, createController } from './controller.svelte.js';
|
|
8
8
|
export { AppState, CaseState, LocalCase, MulticonductorCase, createAppState } from './state.svelte.js';
|
|
9
9
|
export { attachmentColor, attachmentGlyph, edgeColor, edgeWidth, phaseColor, placeMultiView, buildGeographicView } from './multiconductor.js';
|
|
10
|
-
export {
|
|
10
|
+
export { distExtensionFormat } from './drop-classify.js';
|
|
11
11
|
export { caseDeltas, caseRatings, displayMetaFor, displaySeriesFor } from './display.js';
|
|
12
|
-
export { DEFAULT_FORMULATION, FORMULATIONS, BrowserStudy, Study, capabilities, createStudy, errorText, formatOf, ingestCase, isDisplayFile, isPermanentEngineFailure, parseDisplay, solveJson } from '@tellegen/engine';
|
|
12
|
+
export { DEFAULT_FORMULATION, FORMULATIONS, BrowserStudy, Study, capabilities, createStudy, errorText, formatOf, classifyJson, ingestJsonDrop, ingestCase, isDisplayFile, isPermanentEngineFailure, parseDisplay, solveJson } from '@tellegen/engine';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type MapBounds = [[number, number], [number, number]];
|
|
2
|
+
/** Fold finite Web Mercator coordinates into map bounds. Invalid points are
|
|
3
|
+
* ignored so one malformed row cannot hide an otherwise usable network, and a
|
|
4
|
+
* single surviving point still yields a box `fitBounds` can frame. */
|
|
5
|
+
export declare function foldMapBounds(points: Iterable<readonly [number, number]>): MapBounds | null;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Half-width given to an axis whose extent collapsed to a single value. A
|
|
2
|
+
* zero-span box makes `fitBounds` divide by zero, clamp to the map's maximum
|
|
3
|
+
* zoom, and slam the camera onto one point instead of framing it. */
|
|
4
|
+
const DEGENERATE_PAD_DEGREES = 0.005;
|
|
5
|
+
/** Fold finite Web Mercator coordinates into map bounds. Invalid points are
|
|
6
|
+
* ignored so one malformed row cannot hide an otherwise usable network, and a
|
|
7
|
+
* single surviving point still yields a box `fitBounds` can frame. */
|
|
8
|
+
export function foldMapBounds(points) {
|
|
9
|
+
let minLon = Infinity;
|
|
10
|
+
let minLat = Infinity;
|
|
11
|
+
let maxLon = -Infinity;
|
|
12
|
+
let maxLat = -Infinity;
|
|
13
|
+
for (const [lon, lat] of points) {
|
|
14
|
+
if (!Number.isFinite(lon) ||
|
|
15
|
+
!Number.isFinite(lat) ||
|
|
16
|
+
lon < -180 ||
|
|
17
|
+
lon > 180 ||
|
|
18
|
+
lat < -85.05 ||
|
|
19
|
+
lat > 85.05) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
minLon = Math.min(minLon, lon);
|
|
23
|
+
minLat = Math.min(minLat, lat);
|
|
24
|
+
maxLon = Math.max(maxLon, lon);
|
|
25
|
+
maxLat = Math.max(maxLat, lat);
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isFinite(minLon) || !Number.isFinite(minLat))
|
|
28
|
+
return null;
|
|
29
|
+
if (minLon === maxLon) {
|
|
30
|
+
minLon -= DEGENERATE_PAD_DEGREES;
|
|
31
|
+
maxLon += DEGENERATE_PAD_DEGREES;
|
|
32
|
+
}
|
|
33
|
+
if (minLat === maxLat) {
|
|
34
|
+
minLat -= DEGENERATE_PAD_DEGREES;
|
|
35
|
+
maxLat += DEGENERATE_PAD_DEGREES;
|
|
36
|
+
}
|
|
37
|
+
return [
|
|
38
|
+
[minLon, minLat],
|
|
39
|
+
[maxLon, maxLat]
|
|
40
|
+
];
|
|
41
|
+
}
|
package/dist/map.d.ts
CHANGED
|
@@ -6,4 +6,3 @@ export { caseDeltas, displayMetaFor, displaySeriesFor } from './display.js';
|
|
|
6
6
|
export type { RGBA, SensitivityDomain } from './colors.js';
|
|
7
7
|
export type { DisplayOption } from './display.js';
|
|
8
8
|
export type TellegenMapProps = ComponentProps<typeof TellegenMap>;
|
|
9
|
-
//# sourceMappingURL=map.d.ts.map
|
package/dist/multiconductor.d.ts
CHANGED
|
@@ -73,4 +73,3 @@ export declare function transformerMarks(edges: PlacedMultiEdge[]): TransformerM
|
|
|
73
73
|
export declare function attachmentColor(kind: DistAttachmentKind): RGBA;
|
|
74
74
|
/** A short glyph for an attachment kind, for the panel legend and badges. */
|
|
75
75
|
export declare function attachmentGlyph(kind: DistAttachmentKind): string;
|
|
76
|
-
//# sourceMappingURL=multiconductor.d.ts.map
|
package/dist/state.svelte.d.ts
CHANGED
|
@@ -234,6 +234,19 @@ export declare class AppState {
|
|
|
234
234
|
placingMultiId: string | null;
|
|
235
235
|
dragOver: boolean;
|
|
236
236
|
parsingFile: boolean;
|
|
237
|
+
/** True under `(max-width: 760px)`; the panel renders as a bottom sheet. Set by
|
|
238
|
+
* the shell from one media query so panel and map read the same value. */
|
|
239
|
+
compactLayout: boolean;
|
|
240
|
+
/** Height in px the bottom sheet covers; 0 when `compactLayout` is false.
|
|
241
|
+
* Read by the map's camera padding and by chrome anchored above the sheet. */
|
|
242
|
+
sheetInset: number;
|
|
243
|
+
/** Height in px the header covers at the top of the map, measured by
|
|
244
|
+
* `AppHeader`. Wrapping the case tabs onto their own row roughly doubles it,
|
|
245
|
+
* so callers that need to clear the header read this rather than a constant. */
|
|
246
|
+
headerInset: number;
|
|
247
|
+
/** `window.innerHeight`, tracked by the shell. The sheet's snaps and the map's
|
|
248
|
+
* chrome lift are both fractions of it; the fallback is a desktop window. */
|
|
249
|
+
viewportHeight: number;
|
|
237
250
|
/** Map framing request: bump seq so repeat targets still fly. `requestFrame`
|
|
238
251
|
* returns a promise the map resolves when the camera lands (or immediately
|
|
239
252
|
* when it cannot fly), so a caller can defer heavy work until the animation
|
|
@@ -260,4 +273,3 @@ export declare class AppState {
|
|
|
260
273
|
}
|
|
261
274
|
export declare function createAppState(): AppState;
|
|
262
275
|
export {};
|
|
263
|
-
//# sourceMappingURL=state.svelte.d.ts.map
|
package/dist/state.svelte.js
CHANGED
|
@@ -200,6 +200,19 @@ export class AppState {
|
|
|
200
200
|
placingMultiId = $state(null);
|
|
201
201
|
dragOver = $state(false);
|
|
202
202
|
parsingFile = $state(false);
|
|
203
|
+
/** True under `(max-width: 760px)`; the panel renders as a bottom sheet. Set by
|
|
204
|
+
* the shell from one media query so panel and map read the same value. */
|
|
205
|
+
compactLayout = $state(false);
|
|
206
|
+
/** Height in px the bottom sheet covers; 0 when `compactLayout` is false.
|
|
207
|
+
* Read by the map's camera padding and by chrome anchored above the sheet. */
|
|
208
|
+
sheetInset = $state(0);
|
|
209
|
+
/** Height in px the header covers at the top of the map, measured by
|
|
210
|
+
* `AppHeader`. Wrapping the case tabs onto their own row roughly doubles it,
|
|
211
|
+
* so callers that need to clear the header read this rather than a constant. */
|
|
212
|
+
headerInset = $state(64);
|
|
213
|
+
/** `window.innerHeight`, tracked by the shell. The sheet's snaps and the map's
|
|
214
|
+
* chrome lift are both fractions of it; the fallback is a desktop window. */
|
|
215
|
+
viewportHeight = $state(800);
|
|
203
216
|
/** Map framing request: bump seq so repeat targets still fly. `requestFrame`
|
|
204
217
|
* returns a promise the map resolves when the camera lands (or immediately
|
|
205
218
|
* when it cannot fly), so a caller can defer heavy work until the animation
|
package/dist/study-package.d.ts
CHANGED
package/dist/styles.css
CHANGED
|
@@ -372,11 +372,25 @@ a {
|
|
|
372
372
|
/* Coarse pointers: comfortable hit targets for the toggle and reset controls. */
|
|
373
373
|
@media (hover: none), (pointer: coarse) {
|
|
374
374
|
.segment button {
|
|
375
|
-
min-height:
|
|
375
|
+
min-height: 44px;
|
|
376
376
|
}
|
|
377
377
|
|
|
378
378
|
.reset {
|
|
379
|
-
min-height:
|
|
379
|
+
min-height: 44px;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/* Keep the chip visually small next to its short siblings; the ::before pads
|
|
383
|
+
the tap target out to 44px, as .case-remove does in AppHeader. */
|
|
384
|
+
.mode > button {
|
|
385
|
+
position: relative;
|
|
386
|
+
min-height: 28px;
|
|
387
|
+
padding-inline: 10px;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.mode > button::before {
|
|
391
|
+
content: '';
|
|
392
|
+
position: absolute;
|
|
393
|
+
inset: -8px -4px;
|
|
380
394
|
}
|
|
381
395
|
}
|
|
382
396
|
|
package/dist/synthetic-layout.js
CHANGED
|
@@ -27,13 +27,22 @@ export function placeSyntheticTopology(topology, center, opts) {
|
|
|
27
27
|
return {
|
|
28
28
|
buses: buses.map((bus) => {
|
|
29
29
|
const [lon, lat] = coords.get(bus.id);
|
|
30
|
-
return {
|
|
30
|
+
return {
|
|
31
|
+
id: bus.id,
|
|
32
|
+
uid: bus.uid,
|
|
33
|
+
editable: bus.editable,
|
|
34
|
+
lon,
|
|
35
|
+
lat,
|
|
36
|
+
demand_mw: bus.demand_mw,
|
|
37
|
+
gen_mw: bus.gen_mw
|
|
38
|
+
};
|
|
31
39
|
}),
|
|
32
40
|
branches: topology.branches
|
|
33
41
|
.filter((branch) => coords.has(branch.from) && coords.has(branch.to))
|
|
34
42
|
.map((branch) => ({
|
|
35
43
|
id: branch.id,
|
|
36
44
|
uid: branch.uid,
|
|
45
|
+
editable: branch.editable,
|
|
37
46
|
from: branch.from,
|
|
38
47
|
to: branch.to,
|
|
39
48
|
rate_mw: branch.rate_mw,
|
|
@@ -145,7 +154,12 @@ function treeLayout(n, adjacency, components, roots) {
|
|
|
145
154
|
let slotCursor = 0;
|
|
146
155
|
for (const comp of components) {
|
|
147
156
|
const hinted = comp.filter((node) => roots.has(node));
|
|
148
|
-
|
|
157
|
+
// Not `Math.min(...hinted)`: a case with tens of thousands of source buses
|
|
158
|
+
// exceeds the engine's argument limit and throws. Same trap as `extent()`
|
|
159
|
+
// in format.ts.
|
|
160
|
+
const root = hinted.length > 0
|
|
161
|
+
? hinted.reduce((a, b) => (a < b ? a : b))
|
|
162
|
+
: diameterEndpoint(comp[0], adjacency);
|
|
149
163
|
// BFS spanning tree from the root; chords of a near-tree are simply not
|
|
150
164
|
// tree edges and draw between wherever their endpoints land.
|
|
151
165
|
const parent = new Map();
|
|
@@ -13,4 +13,3 @@ export interface TransformerIcon {
|
|
|
13
13
|
* modules load, so document is always available here. The 128 px backing keeps
|
|
14
14
|
* a ~16 px on-screen symbol crisp on 2x/3x displays. */
|
|
15
15
|
export declare function transformerIcon(): TransformerIcon;
|
|
16
|
-
//# sourceMappingURL=transformer-icon.d.ts.map
|
package/dist/types.d.ts
CHANGED
|
@@ -3,4 +3,3 @@ export type { DisplayOption } from './display.js';
|
|
|
3
3
|
export type { PlacedNetwork, PlacementCenter } from './synthetic-layout.js';
|
|
4
4
|
export type { DemandRangeMode, DisplayMode, FallbackTarget, LocalCaseInit, LocalSubstations, SolvableCase, SolveBackend } from './state.svelte.js';
|
|
5
5
|
export type { AppliedGeoCase, CaseFileSummary, DisplayPreview, Formulation, GeoApplyReport, IngestedCase, ParsedGeoLayer, StampedLayoutCase, Topology, TopologyBranch, TopologyBus } from '@tellegen/engine';
|
|
6
|
-
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tellegen/svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Svelte components for tellegen power system maps, local case files, and browser solves.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
21
24
|
"sideEffects": [
|
|
22
25
|
"**/*.css"
|
|
23
26
|
],
|
|
@@ -46,10 +49,10 @@
|
|
|
46
49
|
"pack:dry-run": "npm pack --dry-run --cache ../../node_modules/.cache/npm-pack"
|
|
47
50
|
},
|
|
48
51
|
"dependencies": {
|
|
49
|
-
"@deck.gl/core": "^9.
|
|
50
|
-
"@deck.gl/layers": "^9.
|
|
51
|
-
"@deck.gl/mapbox": "^9.
|
|
52
|
-
"@tellegen/engine": "^0.
|
|
52
|
+
"@deck.gl/core": "^9.3.10",
|
|
53
|
+
"@deck.gl/layers": "^9.3.10",
|
|
54
|
+
"@deck.gl/mapbox": "^9.3.10",
|
|
55
|
+
"@tellegen/engine": "^0.2.0",
|
|
53
56
|
"maplibre-gl": "^5.0.0"
|
|
54
57
|
},
|
|
55
58
|
"peerDependencies": {
|
|
@@ -57,11 +60,11 @@
|
|
|
57
60
|
},
|
|
58
61
|
"devDependencies": {
|
|
59
62
|
"@sveltejs/package": "^2.3.0",
|
|
60
|
-
"@sveltejs/vite-plugin-svelte": "^
|
|
61
|
-
"svelte": "^5.
|
|
62
|
-
"svelte-check": "^4.
|
|
63
|
-
"typescript": "^
|
|
64
|
-
"vite": "^
|
|
65
|
-
"vitest": "^4.1.
|
|
63
|
+
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
64
|
+
"svelte": "^5.56.9",
|
|
65
|
+
"svelte-check": "^4.7.6",
|
|
66
|
+
"typescript": "^6.0.3",
|
|
67
|
+
"vite": "^8.2.1",
|
|
68
|
+
"vitest": "^4.1.11"
|
|
66
69
|
}
|
|
67
70
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Sparkline.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE9C,KAAK,gBAAgB,GAAI;IAAE,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC;AAiD3D,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TellegenMap.svelte.d.ts","sourceRoot":"","sources":["../src/lib/TellegenMap.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,kCAAkC,CAAC;AAoEzC,KAAK,gBAAgB,GAAI;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAsoCH,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TellegenProvider.svelte.d.ts","sourceRoot":"","sources":["../src/lib/TellegenProvider.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAKL,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAK7B,UAAU,KAAM,SAAQ,iBAAiB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAiCF,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TellegenShell.svelte.d.ts","sourceRoot":"","sources":["../src/lib/TellegenShell.svelte.ts"],"names":[],"mappings":"AA4HA,QAAA,MAAM,aAAa,2DAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TellegenViewer.svelte.d.ts","sourceRoot":"","sources":["../src/lib/TellegenViewer.svelte.ts"],"names":[],"mappings":"AAsBA,QAAA,MAAM,cAAc,6FAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
package/dist/api.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACX,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,MAAM,kBAAkB,CAAC;AAE1B,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE1E,MAAM,WAAW,wBAAwB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,cAAc,CACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,oBAAoB,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B;;+BAE2B;IAC3B,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtE,eAAe,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,mBAAmB,GAC3B,MAAM,IAAI,CAAC;CACd;AAwBD;;;6CAG6C;AAC7C,qBAAa,QAAS,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;CAMzE;AA6CD,MAAM,WAAW,mBAAmB;IACnC,UAAU,CAAC,EAAE,CACZ,GAAG,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,cAAc,EAAE,CAAA;KAAE,KAC5E,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,wBAA6B,GAAG,iBAAiB,CAyEzF"}
|
package/dist/colors.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/lib/colors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACd;AAqCD,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,IAA0B,CAAC;AAChE,eAAO,MAAM,WAAW,QAAyB,CAAC;AAElD;;;;;wCAKwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAStE;AAED;;wDAEwD;AACxD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAQ5F;AAcD,mBAAmB;AACnB,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,IAAqC,CAAC;AAC5E,eAAO,MAAM,YAAY,QAA0B,CAAC;AACpD,eAAO,MAAM,WAAW,EAAE,IAAoB,CAAC;AAC/C,eAAO,MAAM,UAAU,EAAE,IAA2B,CAAC;AAIrD,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI,CAG3E;AAED;;;;;kBAKkB;AAClB,wBAAgB,eAAe,CAC9B,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,EACjD,UAAU,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAGf;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAuBrE;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAMrE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;0EAC0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppFooter.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AppFooter.svelte.ts"],"names":[],"mappings":"AAyBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,SAAS;;kBAA+E,CAAC;AAC7E,KAAK,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppHeader.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AppHeader.svelte.ts"],"names":[],"mappings":"AA+EA,QAAA,MAAM,SAAS,2DAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BindingLines.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/BindingLines.svelte.ts"],"names":[],"mappings":"AA0DA,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BusPicker.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/BusPicker.svelte.ts"],"names":[],"mappings":"AA0GA,QAAA,MAAM,SAAS,2DAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ControlPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/ControlPanel.svelte.ts"],"names":[],"mappings":"AAgHA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;;kBAA+E,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DemandSlider.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/DemandSlider.svelte.ts"],"names":[],"mappings":"AA+EA,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayControls.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/DisplayControls.svelte.ts"],"names":[],"mappings":"AAkEA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,eAAe;;kBAA+E,CAAC;AACnF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAe,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DropZone.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/DropZone.svelte.ts"],"names":[],"mappings":"AAwBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,QAAQ;;kBAA+E,CAAC;AAC5E,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormulationSelector.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/FormulationSelector.svelte.ts"],"names":[],"mappings":"AAmCA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,mBAAmB;;kBAA+E,CAAC;AACvF,KAAK,mBAAmB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LocalCaseDetails.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/LocalCaseDetails.svelte.ts"],"names":[],"mappings":"AA6LA,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MulticonductorDetails.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/MulticonductorDetails.svelte.ts"],"names":[],"mappings":"AAoLA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,qBAAqB;;kBAA+E,CAAC;AACzF,KAAK,qBAAqB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStats.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/NetworkStats.svelte.ts"],"names":[],"mappings":"AAsDA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;;kBAA+E,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PlacementCue.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/PlacementCue.svelte.ts"],"names":[],"mappings":"AAmBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;;kBAA+E,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RatingSlider.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/RatingSlider.svelte.ts"],"names":[],"mappings":"AAqFA,QAAA,MAAM,YAAY,2DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RestoreDefaultsButton.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/RestoreDefaultsButton.svelte.ts"],"names":[],"mappings":"AAsBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,qBAAqB;;kBAA+E,CAAC;AACzF,KAAK,qBAAqB,GAAG,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SensitivityReadout.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SensitivityReadout.svelte.ts"],"names":[],"mappings":"AAwGA,QAAA,MAAM,kBAAkB,2DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SizeLegend.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SizeLegend.svelte.ts"],"names":[],"mappings":"AAyBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,UAAU;;kBAA+E,CAAC;AAC9E,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolveCard.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/SolveCard.svelte.ts"],"names":[],"mappings":"AA4CA,QAAA,MAAM,SAAS,2DAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TopMovers.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/TopMovers.svelte.ts"],"names":[],"mappings":"AAuCA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,SAAS;;kBAA+E,CAAC;AAC7E,KAAK,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAe,SAAS,CAAC"}
|