fundus 0.0.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.
- package/dist/build-CZYFLLvl.js +191 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +1420 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +2 -0
- package/dist/core/image-Dqmz8FXS.js +54 -0
- package/dist/core/index.d.ts +499 -0
- package/dist/core/index.js +962 -0
- package/dist/core/reference-graph-CjuHbLDw.d.ts +280 -0
- package/dist/core/testing.d.ts +27 -0
- package/dist/core/testing.js +80 -0
- package/dist/editor/200.html +37 -0
- package/dist/editor/_app/immutable/assets/0.DLhIsYA_.css +1 -0
- package/dist/editor/_app/immutable/assets/2.DIbbW7U1.css +1 -0
- package/dist/editor/_app/immutable/assets/3.C-9vFQ9A.css +1 -0
- package/dist/editor/_app/immutable/assets/4.BS8ElpOV.css +1 -0
- package/dist/editor/_app/immutable/assets/ConfirmDialog.CHEISE-L.css +1 -0
- package/dist/editor/_app/immutable/assets/LibraryContextMenu.CDjCmdV-.css +1 -0
- package/dist/editor/_app/immutable/chunks/BfPE5wdt.js +1 -0
- package/dist/editor/_app/immutable/chunks/Bjy-W4x2.js +81 -0
- package/dist/editor/_app/immutable/chunks/CNRz3sSw.js +3 -0
- package/dist/editor/_app/immutable/chunks/CO4RBJfa.js +1 -0
- package/dist/editor/_app/immutable/chunks/Cx6qtxJg.js +1 -0
- package/dist/editor/_app/immutable/chunks/DjdrdRzT.js +1 -0
- package/dist/editor/_app/immutable/chunks/DjvOiDmq.js +1 -0
- package/dist/editor/_app/immutable/chunks/n7mvYc42.js +5 -0
- package/dist/editor/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/dist/editor/_app/immutable/entry/app.BkqbfI8n.js +2 -0
- package/dist/editor/_app/immutable/entry/start.C8HHOLly.js +1 -0
- package/dist/editor/_app/immutable/nodes/0.xdMI5GEU.js +2 -0
- package/dist/editor/_app/immutable/nodes/1.D9p2tfoJ.js +1 -0
- package/dist/editor/_app/immutable/nodes/2.BrA0Hyzu.js +3 -0
- package/dist/editor/_app/immutable/nodes/3.WO7tZH_d.js +104 -0
- package/dist/editor/_app/immutable/nodes/4.DQtx17aW.js +2 -0
- package/dist/editor/_app/version.json +1 -0
- package/dist/index.d.ts +370 -0
- package/dist/index.js +4 -0
- package/dist/operations-DYM-5KVl.js +1797 -0
- package/dist/runtime/chroma-key-gl.d.ts +23 -0
- package/dist/runtime/chroma-key-gl.js +290 -0
- package/dist/runtime/components/ChromaKeyVideo.svelte +225 -0
- package/dist/runtime/components/Image.svelte +18 -0
- package/dist/runtime/components/Slice.svelte +35 -0
- package/dist/runtime/components/SliceCanvas.svelte +162 -0
- package/dist/runtime/components/SliceDom.svelte +104 -0
- package/dist/runtime/components/Video.svelte +60 -0
- package/dist/runtime/geometry.d.ts +75 -0
- package/dist/runtime/geometry.js +209 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.js +9 -0
- package/dist/runtime/kind-handlers.d.ts +46 -0
- package/dist/runtime/kind-handlers.js +86 -0
- package/dist/runtime/manifest.d.ts +60 -0
- package/dist/runtime/manifest.js +117 -0
- package/dist/runtime/observe-border-box-size.d.ts +5 -0
- package/dist/runtime/observe-border-box-size.js +12 -0
- package/dist/runtime/preload-registry.d.ts +26 -0
- package/dist/runtime/preload-registry.js +68 -0
- package/dist/start-Bhnqt9Dc.js +279 -0
- package/dist/start-D2IXOrni.js +2 -0
- package/package.json +65 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
//#region src/library.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The library file model — the single source of truth for all asset metadata
|
|
4
|
+
* and manifest membership. One JSON file in the host repo, committed,
|
|
5
|
+
* serialized deterministically (recursively sorted keys) to minimize merge
|
|
6
|
+
* conflicts.
|
|
7
|
+
*/
|
|
8
|
+
type AssetId = string;
|
|
9
|
+
type ManifestName = string;
|
|
10
|
+
interface AssetRecord {
|
|
11
|
+
/** Asset type — which plugin owns this asset ('image' | 'slice' | …). */
|
|
12
|
+
type: string;
|
|
13
|
+
/** Raw file path, relative to the configured raw directory. */
|
|
14
|
+
raw: string;
|
|
15
|
+
/** Content hash (sha256 hex) of the raw file the parameters were authored against. */
|
|
16
|
+
rawHash: string;
|
|
17
|
+
/** Plugin-owned parameter blob, validated against the owning plugin's schema. */
|
|
18
|
+
parameters: unknown;
|
|
19
|
+
/** Empty + unreferenced = inert; referenced assets still deliver as passive members. */
|
|
20
|
+
manifests: ManifestName[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Per-manifest data. A delivery unit needs no metadata to function, but may
|
|
24
|
+
* carry an optional editor appearance — a color and/or an emoji — so
|
|
25
|
+
* the editor can tag the manifest's label everywhere. Both are chosen from the
|
|
26
|
+
* fixed sets in `manifest-appearance.ts` and validated at every mutation entry
|
|
27
|
+
* point; parsing only enforces that they are strings when present.
|
|
28
|
+
*/
|
|
29
|
+
interface ManifestRecord {
|
|
30
|
+
/** Optional color tag — a `#rrggbb` value from the fixed palette. */
|
|
31
|
+
color?: string;
|
|
32
|
+
/** Optional emoji tag — one of the fixed emoji set. */
|
|
33
|
+
emoji?: string;
|
|
34
|
+
}
|
|
35
|
+
interface Library {
|
|
36
|
+
version: 1;
|
|
37
|
+
/** Persisted nested folder paths. The raw/proxy root is implicit. */
|
|
38
|
+
folders: string[];
|
|
39
|
+
assets: Record<AssetId, AssetRecord>;
|
|
40
|
+
manifests: Record<ManifestName, ManifestRecord>;
|
|
41
|
+
}
|
|
42
|
+
/** A fresh, empty library. */
|
|
43
|
+
declare function createEmptyLibrary(): Library;
|
|
44
|
+
/**
|
|
45
|
+
* Parse and structurally validate a library file's JSON text. Throws with a
|
|
46
|
+
* clear message on any malformed part; plugin parameter validation is a
|
|
47
|
+
* separate, plugin-owned step.
|
|
48
|
+
*/
|
|
49
|
+
declare function parseLibrary(json: string): Library;
|
|
50
|
+
/**
|
|
51
|
+
* Serialize a library deterministically: recursively sorted keys, tab-indented,
|
|
52
|
+
* trailing newline. Same library → byte-identical file, whatever the in-memory
|
|
53
|
+
* insertion order was.
|
|
54
|
+
*/
|
|
55
|
+
declare function serializeLibrary(library: Library): string;
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/asset-reference.d.ts
|
|
58
|
+
/**
|
|
59
|
+
* The asset-reference schema primitive: a plugin parameter field may
|
|
60
|
+
* point at another asset, written as `{ "$asset": "<id>" }` in the library
|
|
61
|
+
* JSON. References keep type-specific composition out of the core — a plugin
|
|
62
|
+
* declares *which* of its fields are references (`collectReferences` on the
|
|
63
|
+
* plugin contract); the core only knows "this asset points at that asset".
|
|
64
|
+
*/
|
|
65
|
+
/** The in-library shape of a reference: `{ "$asset": "characterIdleMask" }`. */
|
|
66
|
+
interface AssetReference {
|
|
67
|
+
$asset: string;
|
|
68
|
+
}
|
|
69
|
+
/** Whether a value is a well-formed asset-reference marker. */
|
|
70
|
+
declare function isAssetReference(value: unknown): value is AssetReference;
|
|
71
|
+
/**
|
|
72
|
+
* One reference a plugin found in an asset's parameters. `field` is the
|
|
73
|
+
* dot-path of the parameter field holding the reference (for messages);
|
|
74
|
+
* `expectedTypes` constrains the target's asset type (empty = any type).
|
|
75
|
+
*/
|
|
76
|
+
interface CollectedReference {
|
|
77
|
+
field: string;
|
|
78
|
+
assetId: string;
|
|
79
|
+
expectedTypes: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/plugins/contract.d.ts
|
|
83
|
+
interface AssetTypePluginDescriptor<TParameters, TPluginConfig = unknown> {
|
|
84
|
+
/** Asset type key, e.g. 'image' | 'slice'. */
|
|
85
|
+
type: string;
|
|
86
|
+
/** Ingestion: lowercase file extensions (without dot) claimed by this type. */
|
|
87
|
+
accepts: string[];
|
|
88
|
+
/** Parameters a freshly ingested asset starts with. */
|
|
89
|
+
defaultParameters(pluginConfig: TPluginConfig): TParameters;
|
|
90
|
+
/** Validate an unknown parameter blob; returns the typed value or throws. */
|
|
91
|
+
validateParameters(value: unknown): TParameters;
|
|
92
|
+
/**
|
|
93
|
+
* Enumerate the asset references in a validated parameter value.
|
|
94
|
+
* A plugin that declares reference fields must list every one of them here —
|
|
95
|
+
* core and server never introspect parameter blobs to find references.
|
|
96
|
+
* Omitted = the type declares no references (image, slice).
|
|
97
|
+
*/
|
|
98
|
+
collectReferences?(parameters: TParameters): CollectedReference[];
|
|
99
|
+
/**
|
|
100
|
+
* The subset of a validated parameter value the plugin's server-side
|
|
101
|
+
* `process()` actually consumes — the canonicalized form of this value feeds
|
|
102
|
+
* the job hash, so only these fields can force a reprocess.
|
|
103
|
+
* Entry-only parameters (chroma-key tuning, asset references) must be left
|
|
104
|
+
* out: they change the generated manifest entry, not the proxy bytes.
|
|
105
|
+
* Omitted = every parameter is processing-relevant (image, slice, video,
|
|
106
|
+
* audio).
|
|
107
|
+
*/
|
|
108
|
+
processingParameters?(parameters: TParameters): unknown;
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
//#region src/api-types.d.ts
|
|
112
|
+
/** One end of a reference edge: the parameter field and the asset across it. */
|
|
113
|
+
interface AssetReferenceLinkDto {
|
|
114
|
+
/** Dot-path of the referrer's parameter field holding the reference. */
|
|
115
|
+
field: string;
|
|
116
|
+
/** The asset on the other side: the target (outgoing) or the referrer (incoming). */
|
|
117
|
+
assetId: string;
|
|
118
|
+
}
|
|
119
|
+
/** An asset's reference edges in both directions. */
|
|
120
|
+
interface AssetReferencesDto {
|
|
121
|
+
outgoing: AssetReferenceLinkDto[];
|
|
122
|
+
incoming: AssetReferenceLinkDto[];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* One derived passive membership of an asset: the manifest it
|
|
126
|
+
* is pulled into and the explicit-member roots whose reference closure pulls
|
|
127
|
+
* it in ("via characterGreenscreen" — the editor's attribution).
|
|
128
|
+
*/
|
|
129
|
+
interface PassiveManifestMembershipDto {
|
|
130
|
+
manifest: string;
|
|
131
|
+
via: string[];
|
|
132
|
+
}
|
|
133
|
+
/** One passive member of a manifest, with explicit-root attribution. */
|
|
134
|
+
interface PassiveMemberDto {
|
|
135
|
+
assetId: string;
|
|
136
|
+
via: string[];
|
|
137
|
+
}
|
|
138
|
+
/** One manifest's membership picture for the manifests view. */
|
|
139
|
+
interface ManifestMembershipDto {
|
|
140
|
+
/** Members stored in the library — the manifest's typed API surface. */
|
|
141
|
+
explicitMemberIds: string[];
|
|
142
|
+
/** Members derived from the reference graph, with via-attribution. */
|
|
143
|
+
passiveMembers: PassiveMemberDto[];
|
|
144
|
+
}
|
|
145
|
+
/** One asset's derived, display-ready status alongside the raw library record. */
|
|
146
|
+
interface AssetStateDto {
|
|
147
|
+
id: string;
|
|
148
|
+
type: string;
|
|
149
|
+
/** Raw file name (relative to the raw dir). */
|
|
150
|
+
raw: string;
|
|
151
|
+
/** Explicit folder path, or the empty string for the implicit root. */
|
|
152
|
+
folder: string;
|
|
153
|
+
/** URL the Fundus server serves the raw file under (`/files/raw/<fileName>`). */
|
|
154
|
+
rawUrl: string;
|
|
155
|
+
rawHash: string;
|
|
156
|
+
parameters: unknown;
|
|
157
|
+
manifests: string[];
|
|
158
|
+
/** Derived passive memberships with attribution, sorted by manifest name. */
|
|
159
|
+
passiveManifests: PassiveManifestMembershipDto[];
|
|
160
|
+
/** Delivered proxy status; `null` while the asset is not delivered or unprocessed. */
|
|
161
|
+
proxy: ProxyStateDto | null;
|
|
162
|
+
/** Human-readable warnings: unreachable asset, stale proxy, validation problems. */
|
|
163
|
+
warnings: string[];
|
|
164
|
+
/** Reference edges in both directions (empty lists for reference-free types). */
|
|
165
|
+
references: AssetReferencesDto;
|
|
166
|
+
}
|
|
167
|
+
interface ProxyStateDto {
|
|
168
|
+
/** Basename of the proxy file. */
|
|
169
|
+
fileName: string;
|
|
170
|
+
/** Path relative to proxyDir, including the mirrored asset folder. */
|
|
171
|
+
relativePath: string;
|
|
172
|
+
/** URL the Fundus server serves the proxy under (`/files/proxy/<fileName>`). */
|
|
173
|
+
url: string;
|
|
174
|
+
/** Whether the file named by the current job hash exists. */
|
|
175
|
+
upToDate: boolean;
|
|
176
|
+
/** Intrinsic pixel dimensions; absent for audio proxies. */
|
|
177
|
+
width?: number;
|
|
178
|
+
height?: number;
|
|
179
|
+
/** Media duration; present for video and audio proxies. */
|
|
180
|
+
durationMs?: number;
|
|
181
|
+
fileSize: number;
|
|
182
|
+
}
|
|
183
|
+
/** The full editor state payload returned by `GET /api/state` and every mutation. */
|
|
184
|
+
interface FundusStateDto {
|
|
185
|
+
library: Library;
|
|
186
|
+
assets: AssetStateDto[];
|
|
187
|
+
/** Library-level validation issues (per asset where attributable). */
|
|
188
|
+
issues: ValidationIssueDto[];
|
|
189
|
+
/** Available preset names per asset type (from the merged plugin config). */
|
|
190
|
+
presetNames: Record<string, string[]>;
|
|
191
|
+
/** Per manifest: explicit + passive member lists (the manifests view data). */
|
|
192
|
+
manifestMemberships: Record<string, ManifestMembershipDto>;
|
|
193
|
+
/**
|
|
194
|
+
* Delivered bytes per manifest over its full delivery set (explicit ∪
|
|
195
|
+
* passive members), deduplicated — the preload-budget number.
|
|
196
|
+
*/
|
|
197
|
+
manifestDeliveredBytes: Record<string, number>;
|
|
198
|
+
}
|
|
199
|
+
interface ValidationIssueDto {
|
|
200
|
+
assetId?: string;
|
|
201
|
+
message: string;
|
|
202
|
+
}
|
|
203
|
+
/** Body of `PATCH /api/assets/:id` — all fields optional, applied together. */
|
|
204
|
+
interface PatchAssetRequestDto {
|
|
205
|
+
parameters?: unknown;
|
|
206
|
+
manifests?: string[];
|
|
207
|
+
renameTo?: string;
|
|
208
|
+
/** Move the asset to this registered folder; empty string means root. */
|
|
209
|
+
folder?: string;
|
|
210
|
+
}
|
|
211
|
+
interface CreateFolderRequestDto {
|
|
212
|
+
path: string;
|
|
213
|
+
}
|
|
214
|
+
interface PatchFolderRequestDto {
|
|
215
|
+
/** Replacement name for the final path segment. */
|
|
216
|
+
name?: string;
|
|
217
|
+
/** Move the folder below this registered parent; empty string means root. */
|
|
218
|
+
parent?: string;
|
|
219
|
+
}
|
|
220
|
+
interface MoveAssetsRequestDto {
|
|
221
|
+
assetIds: string[];
|
|
222
|
+
/** Registered destination folder; empty string means root. */
|
|
223
|
+
folder: string;
|
|
224
|
+
}
|
|
225
|
+
interface DeleteAssetsRequestDto {
|
|
226
|
+
assetIds: string[];
|
|
227
|
+
}
|
|
228
|
+
/** Body of `POST /api/manifests`. */
|
|
229
|
+
interface CreateManifestRequestDto {
|
|
230
|
+
name: string;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Body of `PATCH /api/manifests/:name` — the manifest's editor appearance
|
|
234
|
+
* and/or a rename. A `null` clears that field; an omitted field is left
|
|
235
|
+
* unchanged.
|
|
236
|
+
*/
|
|
237
|
+
interface PatchManifestRequestDto {
|
|
238
|
+
color?: string | null;
|
|
239
|
+
emoji?: string | null;
|
|
240
|
+
renameTo?: string;
|
|
241
|
+
}
|
|
242
|
+
/** Error payload for non-2xx API responses. */
|
|
243
|
+
interface ApiErrorDto {
|
|
244
|
+
error: {
|
|
245
|
+
message: string;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region src/reference-graph.d.ts
|
|
250
|
+
/** The plugin registry shape shared by server and tests: type → descriptor. */
|
|
251
|
+
type PluginDescriptorRegistry = Record<string, AssetTypePluginDescriptor<unknown, unknown>>;
|
|
252
|
+
/** Per-asset outgoing references, keyed by asset id (every asset gets a key). */
|
|
253
|
+
type ReferencesByAsset = Record<AssetId, CollectedReference[]>;
|
|
254
|
+
/**
|
|
255
|
+
* Ask each asset's owning plugin for the references in its parameters. Assets
|
|
256
|
+
* whose type is unknown or whose parameters do not validate contribute no
|
|
257
|
+
* references — those problems are reported by the regular validation pass.
|
|
258
|
+
*/
|
|
259
|
+
declare function collectAllReferences(library: Library, plugins: PluginDescriptorRegistry): ReferencesByAsset;
|
|
260
|
+
/**
|
|
261
|
+
* Reference *errors* (they block build/codegen): a reference to an unknown
|
|
262
|
+
* asset, a target whose type is not among the field's expected types, and
|
|
263
|
+
* cycles (composition is acyclic by nature).
|
|
264
|
+
*/
|
|
265
|
+
declare function referenceErrors(library: Library, referencesByAsset: ReferencesByAsset): ValidationIssueDto[];
|
|
266
|
+
/**
|
|
267
|
+
* The transitive reference closure of a set of assets, including the starting
|
|
268
|
+
* set — the assets that must be delivered so the starting set renders as
|
|
269
|
+
* authored. Tolerates cycles and ignores dangling targets (both are reported
|
|
270
|
+
* as errors by `referenceErrors`).
|
|
271
|
+
*/
|
|
272
|
+
declare function referenceClosure(assetIds: Iterable<AssetId>, referencesByAsset: ReferencesByAsset): Set<AssetId>;
|
|
273
|
+
/**
|
|
274
|
+
* A dependencies-first order over `assetIds` and everything they transitively
|
|
275
|
+
* reference — the build order that lets each entry inline its references from
|
|
276
|
+
* already-built entries. Throws on a cycle (with the cycle path).
|
|
277
|
+
*/
|
|
278
|
+
declare function topologicalReferenceOrder(assetIds: Iterable<AssetId>, referencesByAsset: ReferencesByAsset): AssetId[];
|
|
279
|
+
//#endregion
|
|
280
|
+
export { Library as A, ValidationIssueDto as C, isAssetReference as D, CollectedReference as E, serializeLibrary as F, ManifestRecord as M, createEmptyLibrary as N, AssetId as O, parseLibrary as P, ProxyStateDto as S, AssetReference as T, PassiveManifestMembershipDto as _, referenceErrors as a, PatchFolderRequestDto as b, AssetReferenceLinkDto as c, CreateFolderRequestDto as d, CreateManifestRequestDto as f, MoveAssetsRequestDto as g, ManifestMembershipDto as h, referenceClosure as i, ManifestName as j, AssetRecord as k, AssetReferencesDto as l, FundusStateDto as m, ReferencesByAsset as n, topologicalReferenceOrder as o, DeleteAssetsRequestDto as p, collectAllReferences as r, ApiErrorDto as s, PluginDescriptorRegistry as t, AssetStateDto as u, PassiveMemberDto as v, AssetTypePluginDescriptor as w, PatchManifestRequestDto as x, PatchAssetRequestDto as y };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { A as Library, T as AssetReference, k as AssetRecord, t as PluginDescriptorRegistry, w as AssetTypePluginDescriptor } from "./reference-graph-CjuHbLDw.js";
|
|
2
|
+
|
|
3
|
+
//#region src/testing.d.ts
|
|
4
|
+
interface ReferenceFixtureParameters {
|
|
5
|
+
/** An image reference — mirrors chroma-key-video's `mask`/`fallback` fields. */
|
|
6
|
+
mask?: AssetReference;
|
|
7
|
+
/** A same-type reference so chains and cycles are constructible. */
|
|
8
|
+
next?: AssetReference;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The fixture plugin: type `reference-fixture`, two optional reference fields.
|
|
12
|
+
* `mask` expects an `image` target, `next` expects another `reference-fixture`.
|
|
13
|
+
*/
|
|
14
|
+
declare const referenceFixturePlugin: AssetTypePluginDescriptor<ReferenceFixtureParameters, unknown>;
|
|
15
|
+
/** A minimal fixture-type asset record for graph tests. */
|
|
16
|
+
declare function referenceFixtureRecord(options: {
|
|
17
|
+
parameters?: ReferenceFixtureParameters;
|
|
18
|
+
manifests?: string[];
|
|
19
|
+
}): AssetRecord;
|
|
20
|
+
/** A minimal image asset record for graph tests. */
|
|
21
|
+
declare function imageFixtureRecord(options?: {
|
|
22
|
+
manifests?: string[];
|
|
23
|
+
}): AssetRecord;
|
|
24
|
+
declare function libraryWith(assets: Library['assets'], manifests?: string[]): Library;
|
|
25
|
+
declare const fixturePluginRegistry: PluginDescriptorRegistry;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ReferenceFixtureParameters, fixturePluginRegistry, imageFixtureRecord, libraryWith, referenceFixturePlugin, referenceFixtureRecord };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { a as isAssetReference, r as imagePlugin } from "./image-Dqmz8FXS.js";
|
|
2
|
+
//#region src/testing.ts
|
|
3
|
+
/**
|
|
4
|
+
* Test fixtures shared across the Fundus packages (imported as
|
|
5
|
+
* `@fundus/core/testing`, never from the main entry point). The reference
|
|
6
|
+
* fixture plugin stays environment-free while exercising reference graphs,
|
|
7
|
+
* codegen inlining, warnings, and editor state shapes.
|
|
8
|
+
*/
|
|
9
|
+
function validateOptionalReference(label, value) {
|
|
10
|
+
if (value === void 0) return void 0;
|
|
11
|
+
if (!isAssetReference(value)) throw new Error(`Fixture "${label}" must be an asset reference ({ "$asset": "<id>" }).`);
|
|
12
|
+
return { $asset: value.$asset };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The fixture plugin: type `reference-fixture`, two optional reference fields.
|
|
16
|
+
* `mask` expects an `image` target, `next` expects another `reference-fixture`.
|
|
17
|
+
*/
|
|
18
|
+
const referenceFixturePlugin = {
|
|
19
|
+
type: "reference-fixture",
|
|
20
|
+
accepts: ["png"],
|
|
21
|
+
defaultParameters: () => ({}),
|
|
22
|
+
validateParameters(value) {
|
|
23
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("Fixture parameters must be an object.");
|
|
24
|
+
const record = value;
|
|
25
|
+
const mask = validateOptionalReference("mask", record.mask);
|
|
26
|
+
const next = validateOptionalReference("next", record.next);
|
|
27
|
+
return {
|
|
28
|
+
...mask !== void 0 ? { mask } : {},
|
|
29
|
+
...next !== void 0 ? { next } : {}
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
collectReferences(parameters) {
|
|
33
|
+
const references = [];
|
|
34
|
+
if (parameters.mask) references.push({
|
|
35
|
+
field: "mask",
|
|
36
|
+
assetId: parameters.mask.$asset,
|
|
37
|
+
expectedTypes: ["image"]
|
|
38
|
+
});
|
|
39
|
+
if (parameters.next) references.push({
|
|
40
|
+
field: "next",
|
|
41
|
+
assetId: parameters.next.$asset,
|
|
42
|
+
expectedTypes: ["reference-fixture"]
|
|
43
|
+
});
|
|
44
|
+
return references;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/** A minimal fixture-type asset record for graph tests. */
|
|
48
|
+
function referenceFixtureRecord(options) {
|
|
49
|
+
return {
|
|
50
|
+
type: referenceFixturePlugin.type,
|
|
51
|
+
raw: "fixture.png",
|
|
52
|
+
rawHash: "fixturehash",
|
|
53
|
+
parameters: options.parameters ?? {},
|
|
54
|
+
manifests: options.manifests ?? []
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** A minimal image asset record for graph tests. */
|
|
58
|
+
function imageFixtureRecord(options = {}) {
|
|
59
|
+
return {
|
|
60
|
+
type: "image",
|
|
61
|
+
raw: "image.png",
|
|
62
|
+
rawHash: "imagehash",
|
|
63
|
+
parameters: { preset: "default" },
|
|
64
|
+
manifests: options.manifests ?? []
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function libraryWith(assets, manifests = ["main"]) {
|
|
68
|
+
return {
|
|
69
|
+
version: 1,
|
|
70
|
+
folders: [],
|
|
71
|
+
assets,
|
|
72
|
+
manifests: Object.fromEntries(manifests.map((name) => [name, {}]))
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const fixturePluginRegistry = {
|
|
76
|
+
[imagePlugin.type]: imagePlugin,
|
|
77
|
+
[referenceFixturePlugin.type]: referenceFixturePlugin
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { fixturePluginRegistry, imageFixtureRecord, libraryWith, referenceFixturePlugin, referenceFixtureRecord };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<link href="/_app/immutable/entry/start.C8HHOLly.js" rel="modulepreload">
|
|
7
|
+
<link href="/_app/immutable/chunks/DjvOiDmq.js" rel="modulepreload">
|
|
8
|
+
<link href="/_app/immutable/chunks/CNRz3sSw.js" rel="modulepreload">
|
|
9
|
+
<link href="/_app/immutable/entry/app.BkqbfI8n.js" rel="modulepreload">
|
|
10
|
+
<link href="/_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
|
|
11
|
+
<link href="/_app/immutable/nodes/0.xdMI5GEU.js" rel="modulepreload">
|
|
12
|
+
<link href="/_app/immutable/chunks/BfPE5wdt.js" rel="modulepreload">
|
|
13
|
+
<link href="/_app/immutable/chunks/CO4RBJfa.js" rel="modulepreload">
|
|
14
|
+
|
|
15
|
+
<link href="/_app/immutable/assets/0.DLhIsYA_.css" rel="stylesheet">
|
|
16
|
+
</head>
|
|
17
|
+
<body data-sveltekit-preload-data="hover">
|
|
18
|
+
<div style="display: contents">
|
|
19
|
+
<script>
|
|
20
|
+
{
|
|
21
|
+
__sveltekit_csqgqe = {
|
|
22
|
+
base: ""
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const element = document.currentScript.parentElement;
|
|
26
|
+
|
|
27
|
+
Promise.all([
|
|
28
|
+
import("/_app/immutable/entry/start.C8HHOLly.js"),
|
|
29
|
+
import("/_app/immutable/entry/app.BkqbfI8n.js")
|
|
30
|
+
]).then(([kit, app]) => {
|
|
31
|
+
kit.start(app, element);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
</div>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--panel:#2c2c2c;--panel-raised:#383838;--canvas:#1e1e1e;--border:#444;--border-soft:#383838;--text:#fff;--text-dim:#a0a0a0;--text-faint:#7a7a7a;--accent:#0d99ff;--accent-soft:#0d99ff29;--warning:#ffcd29;--warning-soft:#ffcd2924;--danger:#f24822;--ok:#14ae5c;--radius:6px;--radius-small:4px;--radius-large:8px;--font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--canvas);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:12px;line-height:1.45}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.control{background:var(--panel-raised);border-radius:var(--radius);border:1px solid #0000;height:28px;padding:4px 8px}.control:hover{border-color:var(--border)}.control:focus,.control:focus-visible{border-color:var(--accent);outline:none}.control.primary{background:var(--accent);color:var(--text)}.control.primary:disabled{opacity:.4;cursor:not-allowed}.control.danger{color:var(--danger)}.control.danger:hover{border-color:var(--danger)}.checkerboard{background-color:var(--canvas);background-image:linear-gradient(45deg, var(--panel) 25%, transparent 25%), linear-gradient(-45deg, var(--panel) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--panel) 75%), linear-gradient(-45deg, transparent 75%, var(--panel) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.shell.svelte-12qhfyh{flex-direction:column;height:100vh;display:flex}.topbar.svelte-12qhfyh{background:var(--panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:24px;height:40px;padding:0 16px;display:flex}.brand.svelte-12qhfyh{align-items:center;gap:8px;font-size:12px;font-weight:600;display:inline-flex}.logo.svelte-12qhfyh{color:var(--accent)}nav.svelte-12qhfyh{gap:4px;display:flex}nav.svelte-12qhfyh a:where(.svelte-12qhfyh){border-radius:var(--radius);color:var(--text-dim);padding:4px 10px}nav.svelte-12qhfyh a:where(.svelte-12qhfyh):hover{color:var(--text)}nav.svelte-12qhfyh a.active:where(.svelte-12qhfyh){background:var(--accent-soft);color:var(--accent)}.status.svelte-12qhfyh{color:var(--text-dim);align-items:center;gap:6px;margin-left:auto;display:inline-flex}.status-text.error.svelte-12qhfyh{color:var(--danger)}.dot.svelte-12qhfyh{background:var(--text-faint);border-radius:50%;width:7px;height:7px}.dot.ok.svelte-12qhfyh{background:var(--ok)}.dot.bad.svelte-12qhfyh{background:var(--danger)}.dot.saving.svelte-12qhfyh{background:var(--accent);animation:.8s ease-in-out infinite svelte-12qhfyh-pulse}@keyframes svelte-12qhfyh-pulse{0%,to{opacity:.35}50%{opacity:1}}.notice.svelte-12qhfyh{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);margin:24px;padding:12px 16px}.issue-banner.svelte-12qhfyh{background:color-mix(in srgb, var(--danger) 14%, var(--panel));border-bottom:1px solid var(--danger);color:var(--text);flex-direction:column;gap:4px;padding:8px 16px;display:flex}code.svelte-12qhfyh{background:var(--panel-raised);border-radius:4px;padding:1px 5px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.context-menu.svelte-3625lw{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-3625lw{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-3625lw:hover,button.svelte-3625lw:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-3625lw{color:var(--danger)}.manifest-label.svelte-19j400l{align-items:center;gap:4px;min-width:0;display:inline-flex}.emoji.svelte-19j400l{flex:none;line-height:1}.name.svelte-19j400l{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip.svelte-19j400l{background:color-mix(in srgb, var(--manifest-color) 20%, transparent);color:var(--manifest-color);border-radius:4px;padding:0 5px;font-size:10px}.chip.passive.svelte-19j400l{border:1px dashed var(--manifest-color);background:0 0}.library-view.svelte-1uha8ag{flex:1;min-height:0;display:flex}.page.svelte-1uha8ag{flex:1;min-height:0;padding:16px;position:relative;overflow-y:auto}.selection-bar.svelte-1uha8ag,.filter-bar.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.selection-bar.svelte-1uha8ag{margin-bottom:8px}.filter-bar.svelte-1uha8ag{margin-bottom:16px}.selection-summary.svelte-1uha8ag{color:var(--accent);white-space:nowrap;font-weight:600}.toggle.svelte-1uha8ag{color:var(--text-dim);align-items:center;gap:6px;display:inline-flex}.search.svelte-1uha8ag{align-items:center;gap:5px;width:220px;padding:0 6px;display:flex}.search.svelte-1uha8ag:focus-within{border-color:var(--accent)}.search-icon.svelte-1uha8ag{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-width:1.5px;stroke-linecap:round;flex:none}.search-input.svelte-1uha8ag{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-faint);border-radius:3px;flex:none;padding:1px 4px;font:9px/14px system-ui,sans-serif}.import.svelte-1uha8ag{background:var(--accent);color:var(--text);margin-left:auto}.section.svelte-1uha8ag{margin-bottom:24px}.section.svelte-1uha8ag:last-child{margin-bottom:0}.section-emoji.svelte-1uha8ag{margin-right:6px}.grid.svelte-1uha8ag,.folder-grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.folder-card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);min-width:0;height:60px;color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.folder-card.svelte-1uha8ag:hover,.folder-card.svelte-1uha8ag:focus-visible{border-color:var(--accent);outline:none}.folder-card.drop-target.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.folder-card.dragging-folder.svelte-1uha8ag{opacity:.55}.folder-card-icon.svelte-1uha8ag{color:var(--text-dim);flex:none;align-items:center;display:flex}.folder-card-details.svelte-1uha8ag{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.folder-card-details.svelte-1uha8ag strong:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.folder-card-details.svelte-1uha8ag span:where(.svelte-1uha8ag),.folder-card-arrow.svelte-1uha8ag{color:var(--text-faint)}.folder-card-arrow.svelte-1uha8ag{flex:none;font-size:18px}.card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);border-radius:8px;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative}.card.selected.svelte-1uha8ag{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.asset-select.svelte-1uha8ag{z-index:1;width:16px;height:16px;accent-color:var(--accent);position:absolute;top:12px;left:12px}.card.svelte-1uha8ag:hover{border-color:var(--accent)}.thumbnail.svelte-1uha8ag{border-radius:var(--radius);justify-content:center;align-items:center;height:96px;display:flex;overflow:hidden}.thumbnail.svelte-1uha8ag img:where(.svelte-1uha8ag),.thumbnail.svelte-1uha8ag video:where(.svelte-1uha8ag){object-fit:contain;max-width:100%;max-height:100%}.meta.svelte-1uha8ag{align-items:center;gap:6px;min-width:0;display:flex}.id.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.type-badge.svelte-1uha8ag{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:10px}.badges.svelte-1uha8ag{flex-wrap:wrap;gap:4px;min-height:16px;display:flex}.badge.svelte-1uha8ag{border-radius:4px;padding:0 5px;font-size:10px}.badge.warning.svelte-1uha8ag{background:var(--warning-soft);color:var(--warning)}.empty.svelte-1uha8ag{color:var(--text-dim);text-align:center;padding:48px}.dialog-row.svelte-1uha8ag{align-items:center;gap:8px;display:flex}.dialog-row.svelte-1uha8ag span:where(.svelte-1uha8ag){width:44px;color:var(--text-dim)}.dialog-row.svelte-1uha8ag input:where(.svelte-1uha8ag){flex:1}.dialog-text.svelte-1uha8ag,.dialog-warning.svelte-1uha8ag{margin:8px 0 0}.dialog-warning.svelte-1uha8ag{color:var(--warning)}.drop-hint.svelte-1uha8ag{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;background:#0d99ff14;border-radius:12px;justify-content:center;align-items:center;font-size:14px;display:flex;position:fixed;inset:48px 8px 8px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.fundus-slice.svelte-13uxsex{width:100%;height:100%;position:relative;overflow:hidden}.fundus-slice--overdraw.svelte-13uxsex{overflow:visible}.fundus-slice__cell.svelte-13uxsex{position:absolute;overflow:hidden}.fundus-slice__cell.svelte-13uxsex img:where(.svelte-13uxsex){pointer-events:none;-webkit-user-select:none;user-select:none;max-width:none;max-height:none;position:absolute}.fundus-slice-canvas.svelte-184b9sd{width:100%;height:100%;position:relative}canvas.svelte-184b9sd{pointer-events:none;display:block;position:absolute}.fundus-chroma-key-video.svelte-13mzqtn{width:100%;height:100%;position:relative}canvas.svelte-13mzqtn,img.svelte-13mzqtn{width:100%;height:100%;display:block}video.svelte-13mzqtn{visibility:hidden;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.icon.svelte-1eqehiz{display:block}.scrub-number.svelte-5sfgfa{flex:1;min-width:0;display:flex;position:relative}.input.svelte-5sfgfa{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}.scrub-number.right.svelte-5sfgfa .input:where(.svelte-5sfgfa){text-align:right}.input.svelte-5sfgfa::-webkit-outer-spin-button{appearance:none;margin:0}.input.svelte-5sfgfa::-webkit-inner-spin-button{appearance:none;margin:0}.scrub-surface.svelte-5sfgfa{cursor:ew-resize;touch-action:none;position:absolute;inset:0}.number-field.svelte-dv122j{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-dv122j{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.number-input.svelte-dv122j{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex;position:relative;overflow:hidden}.number-input.svelte-dv122j:focus-within{border-color:var(--accent)}.fill.svelte-dv122j{pointer-events:none;z-index:0;background:#4a4a4a;height:100%;position:absolute;top:0;left:0}.icon-slot.svelte-dv122j{z-index:1;width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex;position:relative}.number-input.svelte-dv122j .scrub-number{z-index:1}.select-field.svelte-14j49wg{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-14j49wg{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.select-input.svelte-14j49wg{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.select-input.svelte-14j49wg:focus-within{border-color:var(--accent)}.icon-slot.svelte-14j49wg{width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex}select.svelte-14j49wg{width:100%;min-width:0;height:100%;color:var(--text);background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-19alfi{border-bottom:1px solid var(--border-soft);padding:12px}.hint.svelte-19alfi{color:var(--text-faint);margin:4px 0 0;font-size:11px}.info.svelte-19alfi{font-variant-numeric:tabular-nums;margin:0}.file.svelte-19alfi{color:var(--text-dim);word-break:break-all}section.svelte-1ukljmf{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-1ukljmf{margin-bottom:8px}section.svelte-1j6qy4a{border-bottom:1px solid var(--border-soft);padding:12px}.modes.svelte-1j6qy4a{flex-direction:column;gap:4px;display:flex}.modes.svelte-1j6qy4a button:where(.svelte-1j6qy4a){text-align:left;background:var(--panel-raised);color:var(--text);border-radius:var(--radius);border:1px solid #0000;padding:6px 10px}.modes.svelte-1j6qy4a button:where(.svelte-1j6qy4a):hover{border-color:var(--border)}.modes.svelte-1j6qy4a button.on:where(.svelte-1j6qy4a){background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.insets.svelte-1j6qy4a{grid-template-columns:1fr 1fr;gap:8px;min-width:0;display:grid}section.svelte-dkn80h{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-dkn80h{margin-bottom:8px}.picker.svelte-18jiq7l{flex-direction:column;gap:4px;min-width:0;margin-bottom:8px;display:flex}.caption.svelte-18jiq7l{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.reference-input.svelte-18jiq7l{border-radius:4px;align-items:center;min-width:0;height:24px;padding:0;display:flex;position:relative}.reference-input.svelte-18jiq7l:focus-within{border-color:var(--accent)}.current.svelte-18jiq7l{min-width:0;height:100%;color:var(--text);text-align:left;background:0 0;border:none;outline:none;flex:1;align-items:center;gap:4px;padding:0 6px 0 0;display:flex}.current.empty.svelte-18jiq7l{color:var(--text-faint)}.preview-slot.svelte-18jiq7l{box-sizing:border-box;background:#4a4a4a;border-radius:3px 0 0 3px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;margin-left:-1px;padding:2px;display:flex;overflow:hidden}.preview.svelte-18jiq7l{object-fit:contain;width:100%;height:100%}.missing-preview.svelte-18jiq7l{color:var(--warning);font-weight:700}.clear.svelte-18jiq7l{border:none;border-left:1px solid var(--border-soft);width:24px;height:24px;color:var(--text-dim);background:0 0;border-radius:0 3px 3px 0;outline:none;flex:none;padding:0}.clear.svelte-18jiq7l:hover{color:var(--danger)}.id.svelte-18jiq7l,.placeholder.svelte-18jiq7l{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dangling.svelte-18jiq7l{color:var(--warning)}.dropdown.svelte-18jiq7l{z-index:10;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);max-height:240px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000080}.option.svelte-18jiq7l{border-radius:var(--radius);width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.option.svelte-18jiq7l .thumbnail:where(.svelte-18jiq7l){object-fit:contain;background:var(--canvas);border-radius:3px;flex:none;width:24px;height:24px}.option.svelte-18jiq7l:hover{background:var(--panel-raised)}.option.selected.svelte-18jiq7l{background:var(--accent-soft);color:var(--accent)}.hint.svelte-18jiq7l{color:var(--text-faint);margin:4px;font-size:11px}.color-field.svelte-4dtedr{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-4dtedr{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.color-input.svelte-4dtedr{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.color-input.svelte-4dtedr:focus-within{border-color:var(--accent)}.swatch-slot.svelte-4dtedr{flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.swatch.svelte-4dtedr{cursor:pointer;background:0 0;border:1px solid #ffffff3d;border-radius:3px;width:16px;height:16px;margin:0;padding:0;overflow:hidden}.swatch.svelte-4dtedr::-webkit-color-swatch-wrapper{padding:0}.swatch.svelte-4dtedr::-webkit-color-swatch{border:none}.hex-input.svelte-4dtedr{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;text-transform:uppercase;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-45ey1g{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-45ey1g{margin-bottom:8px}section.svelte-czsds6{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-czsds6{margin-bottom:8px}.canvas.svelte-j0tjy7{flex-direction:column;height:100%;min-height:0;display:flex}.toolbar.svelte-j0tjy7{flex:none;align-items:center;gap:8px;padding:8px 0;display:flex}.toolbar.svelte-j0tjy7 button:where(.svelte-j0tjy7){background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.toolbar.svelte-j0tjy7 button:where(.svelte-j0tjy7):hover{border-color:var(--accent)}.toolbar.svelte-j0tjy7 button.active:where(.svelte-j0tjy7){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.zoom.svelte-j0tjy7{text-align:center;min-width:44px;color:var(--text-dim);font-variant-numeric:tabular-nums}.dims.svelte-j0tjy7{color:var(--text-dim);font-variant-numeric:tabular-nums;margin-left:auto}.viewport.svelte-j0tjy7{touch-action:none;cursor:grab;border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;position:relative;overflow:hidden}.viewport.panning.svelte-j0tjy7{cursor:grabbing}.image-wrap.svelte-j0tjy7{transform-origin:0 0;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #ffffff14}.image-wrap.svelte-j0tjy7 img:where(.svelte-j0tjy7){width:100%;height:100%;image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;display:block}.center-rect.svelte-j0tjy7{pointer-events:none;position:absolute}.center-rect.side-edges.svelte-j0tjy7{border-left:1px dashed #0d99ff99;border-right:1px dashed #0d99ff99}.center-rect.cap-edges.svelte-j0tjy7{border-top:1px dashed #0d99ff99;border-bottom:1px dashed #0d99ff99}.overdraw-band.svelte-j0tjy7{pointer-events:none;background:#38bdf829;position:absolute}.line.svelte-j0tjy7{background:var(--accent);touch-action:none;position:absolute}.line.overdraw-line.svelte-j0tjy7{background:#38bdf8 padding-box content-box}.line.overdraw-line.svelte-j0tjy7 .tag:where(.svelte-j0tjy7){background:#38bdf8}.line.v.svelte-j0tjy7{cursor:ew-resize;box-sizing:content-box;background-clip:content-box;width:1px;height:100%;margin-left:-.5px;padding:0 7px;top:0;transform:translate(-7px)}.line.h.svelte-j0tjy7{cursor:ns-resize;box-sizing:content-box;background-clip:content-box;width:100%;height:1px;margin-top:-.5px;padding:7px 0;left:0;transform:translateY(-7px)}.line.active.svelte-j0tjy7{background-color:var(--text);background-clip:content-box}.tag.svelte-j0tjy7{background:var(--accent);color:var(--text);font-variant-numeric:tabular-nums;pointer-events:none;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;position:absolute}.line.v.svelte-j0tjy7 .tag:where(.svelte-j0tjy7){top:4px;left:50%;transform:translate(-50%)}.line.h.svelte-j0tjy7 .tag:where(.svelte-j0tjy7){top:50%;left:4px;transform:translateY(-50%)}.line.v.overdraw-line.svelte-j0tjy7 .tag:where(.svelte-j0tjy7){top:auto;bottom:4px}.line.h.overdraw-line.svelte-j0tjy7 .tag:where(.svelte-j0tjy7){left:auto;right:4px}.preview-panel.svelte-1w9ogms{flex-direction:column;height:100%;min-height:0;display:flex}.bar.svelte-1w9ogms{flex:none;align-items:center;gap:10px;padding:8px 0;display:flex}.size.svelte-1w9ogms{color:var(--text-dim);font-variant-numeric:tabular-nums}.backends.svelte-1w9ogms{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);gap:2px;margin-left:auto;padding:2px;display:inline-flex}.backends.svelte-1w9ogms button:where(.svelte-1w9ogms){color:var(--text-dim);background:0 0;border:none;border-radius:4px;padding:2px 8px}.backends.svelte-1w9ogms button.on:where(.svelte-1w9ogms){background:var(--accent-soft);color:var(--accent);font-weight:600}.reset.svelte-1w9ogms{background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.reset.svelte-1w9ogms:hover{border-color:var(--accent)}.stage.svelte-1w9ogms{border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;padding:24px;overflow:auto}.box.svelte-1w9ogms{position:relative;box-shadow:0 0 0 1px #ffffff1f}.box.svelte-1w9ogms .fill{position:absolute;inset:0}.handle.svelte-1w9ogms{touch-action:none;background:0 0;position:absolute}.handle.edge-right.svelte-1w9ogms{cursor:ew-resize;width:10px;height:100%;top:0;right:-4px}.handle.edge-bottom.svelte-1w9ogms{cursor:ns-resize;width:100%;height:10px;bottom:-4px;left:0}.handle.corner.svelte-1w9ogms{cursor:nwse-resize;background:var(--accent);width:16px;height:16px;box-shadow:0 0 0 2px var(--canvas);border-radius:3px;bottom:-6px;right:-6px}.manifest-selector.svelte-17f73b4{flex-direction:column;gap:4px;width:100%;display:flex}.manifest-option.svelte-17f73b4{border-color:var(--border-soft);width:100%;height:28px;color:var(--text-dim);cursor:pointer;border-radius:4px;align-items:center;gap:7px;padding:2px 7px;display:flex}.manifest-option.svelte-17f73b4:hover{border-color:var(--manifest-color);background:color-mix(in srgb, var(--manifest-color) 10%, var(--panel-raised));color:var(--text)}.manifest-option.svelte-17f73b4:focus-within{border-color:var(--manifest-color)}.manifest-option.selected.svelte-17f73b4{border-color:var(--manifest-color);background:color-mix(in srgb, var(--manifest-color) 20%, var(--panel-raised));color:var(--text)}.manifest-option.passive.svelte-17f73b4{border-color:var(--manifest-color);border-style:dashed}input.svelte-17f73b4{width:14px;height:14px;accent-color:var(--manifest-color);flex:none;margin:0}.marker.svelte-17f73b4{border:1px solid color-mix(in srgb, var(--manifest-color) 70%, var(--border));background:color-mix(in srgb, var(--manifest-color) 24%, var(--panel));border-radius:3px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;display:inline-flex}.color-dot.svelte-17f73b4{background:var(--manifest-color);border-radius:50%;width:8px;height:8px}.name.svelte-17f73b4,.via.svelte-17f73b4{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.name.svelte-17f73b4{font-size:11px;font-weight:500}.via.svelte-17f73b4{color:var(--text-faint);margin-left:auto;font-size:9px}.detail.svelte-xy8zsr{flex:1;grid-template-columns:224px 1fr 280px;min-height:0;display:grid}.center.svelte-xy8zsr{flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex}.center.empty.svelte-xy8zsr,.empty.svelte-xy8zsr{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}.tabs.svelte-xy8zsr{flex:none;gap:4px;margin-bottom:4px;display:inline-flex}.tabs.svelte-xy8zsr button:where(.svelte-xy8zsr){border-radius:var(--radius);color:var(--text-dim);background:0 0;border:none;padding:4px 10px}.tabs.svelte-xy8zsr button.on:where(.svelte-xy8zsr){background:var(--accent-soft);color:var(--accent)}.pane.svelte-xy8zsr{flex:1;min-height:0}.image-stage.svelte-xy8zsr{border:1px solid var(--border);border-radius:8px;justify-content:center;align-items:center;display:flex;overflow:auto}.image-stage.svelte-xy8zsr img{object-fit:contain;max-width:90%;max-height:90%}.preview-column.svelte-xy8zsr{flex-direction:column;align-items:center;gap:8px;display:flex}.video-frame.svelte-xy8zsr{width:min(90%,480px)}.video-frame.svelte-xy8zsr video{width:100%;height:100%}.compare-row.svelte-xy8zsr{justify-content:center;align-items:flex-start;gap:16px;width:100%;max-width:760px;display:flex}.compare.svelte-xy8zsr{flex-direction:column;flex:1 1 0;align-items:center;gap:6px;min-width:0;margin:0;display:flex}.compare.svelte-xy8zsr figcaption:where(.svelte-xy8zsr){text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px}.compare.svelte-xy8zsr .video-frame:where(.svelte-xy8zsr){width:100%}.audio-frame.svelte-xy8zsr{width:min(90%,480px);height:128px}.stage-hint.svelte-xy8zsr{color:var(--text-dim)}.inspector.svelte-xy8zsr{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.inspector.svelte-xy8zsr section:where(.svelte-xy8zsr){border-bottom:1px solid var(--border-soft);padding:12px}.inspector.svelte-xy8zsr h2:where(.svelte-xy8zsr){word-break:break-all;margin:0;font-size:13px}.raw.svelte-xy8zsr{color:var(--text-dim);word-break:break-all;margin:4px 0 0}.warning.svelte-xy8zsr{color:var(--warning);margin:8px 0 0;font-size:11px}.hint.svelte-xy8zsr{color:var(--text-faint);margin:0;font-size:11px}.inspector.svelte-xy8zsr h4:where(.svelte-xy8zsr){text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:8px 0 4px;font-size:10px}.reference-row.svelte-xy8zsr{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:6px;min-width:0;padding:3px 4px;display:flex}.reference-row.svelte-xy8zsr:hover{background:var(--panel-raised);color:var(--text)}.reference-field.svelte-xy8zsr{color:var(--text-faint);font-size:11px}.reference-arrow.svelte-xy8zsr{color:var(--text-faint);flex:none}.reference-asset.svelte-xy8zsr{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.rename.svelte-xy8zsr{gap:8px;margin-bottom:8px;display:flex}.rename.svelte-xy8zsr input:where(.svelte-xy8zsr){flex:1;min-width:0}.danger.svelte-xy8zsr{width:100%}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.popover-anchor.svelte-okkiwd{display:inline-flex;position:relative}.popover.svelte-okkiwd{z-index:10;background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #0006}.popover.right.svelte-okkiwd{left:auto;right:0}.controls.svelte-1amuajj{align-items:center;gap:4px;display:inline-flex}.emoji-trigger.svelte-1amuajj,.swatch-trigger.svelte-1amuajj{border:1px solid var(--border);background:var(--panel-raised);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.emoji-trigger.svelte-1amuajj{border-radius:var(--radius-small);width:22px;height:22px;font-size:14px;line-height:1}.emoji-trigger.empty.svelte-1amuajj{color:var(--text-faint)}.swatch-trigger.svelte-1amuajj{background:var(--swatch);border-radius:50%;width:16px;height:16px}.swatch-trigger.empty.svelte-1amuajj{background:0 0;position:relative}.swatch-trigger.empty.svelte-1amuajj:after{content:"";background:var(--text-faint);height:1px;position:absolute;inset:50% 1px auto;transform:rotate(-45deg)}.emoji-trigger.active.svelte-1amuajj,.swatch-trigger.active.svelte-1amuajj{border-color:var(--accent)}.picker.svelte-1amuajj{gap:4px;display:grid}.swatches.svelte-1amuajj{grid-template-columns:repeat(7,18px)}.emojis.svelte-1amuajj{grid-template-columns:repeat(8,24px)}.swatch.svelte-1amuajj{border:1px solid var(--border);cursor:pointer;border-radius:50%;width:18px;height:18px;padding:0}.swatch.none.svelte-1amuajj{background:0 0;position:relative}.swatch.none.svelte-1amuajj:after{content:"";background:var(--text-faint);height:1px;position:absolute;inset:50% 1px auto;transform:rotate(-45deg)}.swatch.selected.svelte-1amuajj{outline:2px solid var(--text);outline-offset:1px}.emoji.svelte-1amuajj{border-radius:var(--radius-small);border:1px solid var(--border);background:var(--panel);cursor:pointer;width:24px;height:24px;padding:0;font-size:14px;line-height:1}.emoji.none.svelte-1amuajj{color:var(--text-faint);font-size:12px}.emoji.selected.svelte-1amuajj{border-color:var(--accent);background:var(--accent-soft)}.page.svelte-1k9wgg5{flex:1;min-height:0;padding:16px;overflow-y:auto}.create.svelte-1k9wgg5{align-items:center;gap:8px;margin-bottom:16px;display:flex}.create.svelte-1k9wgg5 input:where(.svelte-1k9wgg5){width:240px}.hint.svelte-1k9wgg5{color:var(--text-faint);font-size:11px}.empty.svelte-1k9wgg5{color:var(--text-dim);text-align:center;padding:48px}.list.svelte-1k9wgg5{flex-direction:column;gap:12px;max-width:640px;display:flex}.manifest.svelte-1k9wgg5{background:var(--panel);border:1px solid var(--manifest-color,var(--border-soft));border-radius:var(--radius-large);padding:12px}.manifest.svelte-1k9wgg5 header:where(.svelte-1k9wgg5){align-items:center;gap:12px;display:flex}.manifest.svelte-1k9wgg5 h2:where(.svelte-1k9wgg5){margin:0;font-size:13px}.size.svelte-1k9wgg5{color:var(--accent);font-variant-numeric:tabular-nums}.count.svelte-1k9wgg5{color:var(--text-dim);margin-left:auto}ul.svelte-1k9wgg5{margin:8px 0 0;padding:0;list-style:none}li.svelte-1k9wgg5 a:where(.svelte-1k9wgg5){border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:12px;padding:4px 8px;display:flex}li.svelte-1k9wgg5 a:where(.svelte-1k9wgg5):hover{background:var(--panel-raised);color:var(--text)}.asset-id.svelte-1k9wgg5{color:var(--text);font-weight:600}.asset-type.svelte-1k9wgg5{border:1px solid var(--border);border-radius:4px;padding:0 5px;font-size:10px}.asset-size.svelte-1k9wgg5{font-variant-numeric:tabular-nums;margin-left:auto}.passive-member.svelte-1k9wgg5{margin-left:16px}.passive-member.svelte-1k9wgg5 a:where(.svelte-1k9wgg5),.passive-member.svelte-1k9wgg5 .asset-id:where(.svelte-1k9wgg5){color:var(--text-faint)}.passive-id.svelte-1k9wgg5{text-underline-offset:3px;font-weight:600;text-decoration-line:underline;text-decoration-style:dashed}.asset-via.svelte-1k9wgg5{color:var(--text-faint);font-size:11px}.dialog-text.svelte-1k9wgg5{color:var(--text-dim);margin:0 0 8px}.dialog-text.warn.svelte-1k9wgg5{color:var(--warning);font-size:11px}.dialog-row.svelte-1k9wgg5{align-items:center;gap:8px;margin-bottom:8px;display:flex}.dialog-label.svelte-1k9wgg5{color:var(--text-dim);flex:none}.dialog-row.svelte-1k9wgg5 input:where(.svelte-1k9wgg5){flex:1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.backdrop.svelte-7e0w24{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-7e0w24{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:360px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-7e0w24{margin:0 0 12px;font-size:12px}.actions.svelte-7e0w24{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.backdrop.svelte-1iq6zo4{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-1iq6zo4{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:360px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-1iq6zo4{margin:0 0 4px;font-size:12px}.file-name.svelte-1iq6zo4{color:var(--text-dim);font-variant-numeric:tabular-nums;margin:0}.destination.svelte-1iq6zo4{color:var(--text-faint);margin:2px 0 16px}.row.svelte-1iq6zo4{align-items:center;gap:8px;margin-bottom:8px;display:flex}.label.svelte-1iq6zo4{width:48px;color:var(--text-dim);flex:none}.row.svelte-1iq6zo4 input:where(.svelte-1iq6zo4){flex:1}.segmented.svelte-1iq6zo4{border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented.svelte-1iq6zo4 button:where(.svelte-1iq6zo4){background:var(--panel-raised);color:var(--text-dim);border:none;padding:4px 12px}.segmented.svelte-1iq6zo4 button.on:where(.svelte-1iq6zo4){background:var(--accent);color:var(--text)}.hint.svelte-1iq6zo4{color:var(--text-dim);margin:4px 0 0;font-size:11px}.hint.warn.svelte-1iq6zo4,.error.svelte-1iq6zo4{color:var(--warning)}.actions.svelte-1iq6zo4{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.playback.svelte-u1b1yd{align-items:center;gap:6px;width:100%;display:flex}.btn.svelte-u1b1yd{background:var(--panel-raised);border-radius:var(--radius);width:28px;height:28px;color:var(--text);border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn.svelte-u1b1yd:hover:not(:disabled){border-color:var(--border)}.btn.svelte-u1b1yd:focus-visible{border-color:var(--accent);outline:none}.btn.svelte-u1b1yd:disabled{opacity:.4;cursor:not-allowed}.btn.active.svelte-u1b1yd{background:var(--accent-soft);color:var(--accent)}.btn.svelte-u1b1yd svg:where(.svelte-u1b1yd){width:16px;height:16px;display:block}.time.svelte-u1b1yd{color:var(--text-dim);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.volume-group.svelte-u1b1yd{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.range.svelte-u1b1yd{appearance:none;background:var(--panel-raised);cursor:pointer;border-radius:999px;height:4px}.range.scrub.svelte-u1b1yd{flex:1;min-width:0;margin:0 2px}.range.volume.svelte-u1b1yd{flex:none;width:72px}.range.svelte-u1b1yd:disabled{opacity:.4;cursor:not-allowed}.range.svelte-u1b1yd::-webkit-slider-thumb{appearance:none;background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-u1b1yd::-moz-range-thumb{background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-u1b1yd:focus-visible{outline:none}.range.svelte-u1b1yd:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.range.svelte-u1b1yd:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.audio-waveform.svelte-prx3nl{flex-direction:column;gap:8px;width:100%;height:100%;min-height:0;display:flex}.wave.svelte-prx3nl{cursor:pointer;touch-action:none;flex:1;width:100%;min-height:0;display:block}.footer.svelte-prx3nl{flex:none;align-items:center;display:flex}h3.svelte-2penap{letter-spacing:0;text-transform:none;color:#fff;margin:0 0 10px;font-size:11px;font-weight:400}.directory.svelte-13aexy3{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;width:220px;min-width:180px;max-width:320px;min-height:0;display:flex}header.svelte-13aexy3{border-bottom:1px solid var(--border-soft);align-items:center;height:40px;padding:0 8px 0 12px;display:flex}header.svelte-13aexy3 strong:where(.svelte-13aexy3){font-size:11px}.actions.svelte-13aexy3{margin-left:auto;display:flex}.icon-button.svelte-13aexy3{width:24px;height:24px;color:var(--text-dim);border-radius:var(--radius-small);background:0 0;border:0}.icon-button.svelte-13aexy3:hover:not(:disabled){background:var(--panel-raised);color:var(--text)}.icon-button.danger.svelte-13aexy3:hover:not(:disabled){color:var(--danger)}.icon-button.svelte-13aexy3:disabled{opacity:.3;cursor:default}.tree.svelte-13aexy3{padding:6px 4px;overflow:auto}.folder-row.svelte-13aexy3,.asset-row.svelte-13aexy3{padding-left:calc((var(--depth) + 2) * 14px);display:flex}.row.svelte-13aexy3{color:var(--text-dim);border-radius:var(--radius-small);text-align:left;background:0 0;border:0;align-items:center;gap:6px;min-width:0;height:28px;display:flex}.row.special.svelte-13aexy3{width:100%;padding:0 8px}.row.folder.svelte-13aexy3{flex:1;padding:0 8px 0 2px}.row.asset.svelte-13aexy3{cursor:grab;flex:1;padding:0 8px 0 2px}.row.asset.svelte-13aexy3:active{cursor:grabbing}.row.svelte-13aexy3:hover,.row.selected.svelte-13aexy3{background:var(--panel-raised);color:var(--text)}.row.asset.current.svelte-13aexy3,.row.selected.svelte-13aexy3{background:var(--accent-soft);color:var(--accent)}.row.drop-target.svelte-13aexy3{outline:1px solid var(--accent);background:var(--accent-soft)}.glyph.svelte-13aexy3{width:14px;color:var(--text-faint);flex:none;justify-content:center;align-items:center;display:flex}.asset-glyph.svelte-13aexy3{font-size:7px}.asset-warning.svelte-13aexy3{color:var(--warning);flex:none;margin-left:auto}.label.svelte-13aexy3{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.count.svelte-13aexy3{color:var(--text-faint);margin-left:auto;font-size:10px}.dialog-row.svelte-13aexy3{align-items:center;gap:8px;display:flex}.dialog-row.svelte-13aexy3 span:where(.svelte-13aexy3){width:44px;color:var(--text-dim)}.dialog-row.svelte-13aexy3 input:where(.svelte-13aexy3){flex:1}.dialog-path.svelte-13aexy3,.dialog-text.svelte-13aexy3,.dialog-warning.svelte-13aexy3{margin:8px 0 0}.dialog-path.svelte-13aexy3{color:var(--text-faint)}.dialog-warning.svelte-13aexy3{color:var(--warning)}.context-menu.svelte-1gtdcf3{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-1gtdcf3{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-1gtdcf3:hover,button.svelte-1gtdcf3:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-1gtdcf3{color:var(--danger)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./CNRz3sSw.js";import{a as e,r as t}from"./DjvOiDmq.js";var n={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};t.updated.check;var r=n;export{r as t};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var e=({status:e,message:t})=>`<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title>`+t+`</title>
|
|
6
|
+
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
--bg: white;
|
|
10
|
+
--fg: #222;
|
|
11
|
+
--divider: #ccc;
|
|
12
|
+
background: var(--bg);
|
|
13
|
+
color: var(--fg);
|
|
14
|
+
font-family:
|
|
15
|
+
system-ui,
|
|
16
|
+
-apple-system,
|
|
17
|
+
BlinkMacSystemFont,
|
|
18
|
+
'Segoe UI',
|
|
19
|
+
Roboto,
|
|
20
|
+
Oxygen,
|
|
21
|
+
Ubuntu,
|
|
22
|
+
Cantarell,
|
|
23
|
+
'Open Sans',
|
|
24
|
+
'Helvetica Neue',
|
|
25
|
+
sans-serif;
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
height: 100vh;
|
|
30
|
+
margin: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.error {
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
max-width: 32rem;
|
|
37
|
+
margin: 0 1rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.status {
|
|
41
|
+
font-weight: 200;
|
|
42
|
+
font-size: 3rem;
|
|
43
|
+
line-height: 1;
|
|
44
|
+
position: relative;
|
|
45
|
+
top: -0.05rem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.message {
|
|
49
|
+
border-left: 1px solid var(--divider);
|
|
50
|
+
padding: 0 0 0 1rem;
|
|
51
|
+
margin: 0 0 0 1rem;
|
|
52
|
+
min-height: 2.5rem;
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.message h1 {
|
|
58
|
+
font-weight: 400;
|
|
59
|
+
font-size: 1em;
|
|
60
|
+
margin: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@media (prefers-color-scheme: dark) {
|
|
64
|
+
body {
|
|
65
|
+
--bg: #222;
|
|
66
|
+
--fg: #ddd;
|
|
67
|
+
--divider: #666;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
</style>
|
|
71
|
+
</head>
|
|
72
|
+
<body>
|
|
73
|
+
<div class="error">
|
|
74
|
+
<span class="status">`+e+`</span>
|
|
75
|
+
<div class="message">
|
|
76
|
+
<h1>`+t+`</h1>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
81
|
+
`;export{e as default};
|