fundus 0.12.2 → 0.14.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/build/client/_app/immutable/assets/AssetSourceMenu.IjDdjx3o.css +1 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.IjDdjx3o.css.br +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.IjDdjx3o.css.gz +0 -0
- package/build/client/_app/immutable/chunks/77p2oEJ1.js +1 -0
- package/build/client/_app/immutable/chunks/77p2oEJ1.js.br +0 -0
- package/build/client/_app/immutable/chunks/77p2oEJ1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_PWcB6g.js +108 -0
- package/build/client/_app/immutable/chunks/B_PWcB6g.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_PWcB6g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D-dMdMUj.js → RgXSPQ_h.js} +1 -1
- package/build/client/_app/immutable/chunks/RgXSPQ_h.js.br +0 -0
- package/build/client/_app/immutable/chunks/RgXSPQ_h.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CmTIRtCw.js → app.BsvwTApt.js} +2 -2
- package/build/client/_app/immutable/entry/app.BsvwTApt.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BsvwTApt.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BdjLMMsY.js +1 -0
- package/build/client/_app/immutable/entry/start.BdjLMMsY.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BdjLMMsY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.CNULKexJ.js → 0.CjQfQrD6.js} +1 -1
- package/build/client/_app/immutable/nodes/0.CjQfQrD6.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CjQfQrD6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.Cq-r1S-6.js → 1.DyPcUKIh.js} +1 -1
- package/build/client/_app/immutable/nodes/1.DyPcUKIh.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.DyPcUKIh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.B4CjEZCb.js → 2.CworwA2R.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CworwA2R.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CworwA2R.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BKqbML1T.js +1 -0
- package/build/client/_app/immutable/nodes/3.BKqbML1T.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BKqbML1T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BkqPmamr.js → 4.Cmigd8CT.js} +1 -1
- package/build/client/_app/immutable/nodes/4.Cmigd8CT.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Cmigd8CT.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +7 -7
- package/build/index.js +7 -7
- package/build/server/chunks/chunks/{context.js-6YdbScn_.js → context.js-CVuTSPjH.js} +2 -2
- package/build/server/chunks/chunks/{context.js-6YdbScn_.js.map → context.js-CVuTSPjH.js.map} +1 -1
- package/build/server/chunks/chunks/{contract.js-BHQbpsFk.js → contract.js-itFN0Gon.js} +6 -2
- package/build/server/chunks/chunks/contract.js-itFN0Gon.js.map +1 -0
- package/build/server/chunks/chunks/{exports.js-ku1LJuiG.js → exports.js-B13PkE0J.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-ku1LJuiG.js.map → exports.js-B13PkE0J.js.map} +1 -1
- package/build/server/chunks/chunks/{http.js-dbT0ifQ9.js → http.js-ChQRRKfZ.js} +2 -2
- package/build/server/chunks/chunks/{http.js-dbT0ifQ9.js.map → http.js-ChQRRKfZ.js.map} +1 -1
- package/build/server/chunks/chunks/{internal.js-BSRzKMSE.js → internal.js-DlKoWKM-.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-BSRzKMSE.js.map → internal.js-DlKoWKM-.js.map} +1 -1
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/{shared.js-DgL50WRD.js → shared.js-DKt4pwWi.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-DgL50WRD.js.map → shared.js-DKt4pwWi.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-D4p4YSNW.js → utils.js-BYMC-4Wt.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-D4p4YSNW.js.map → utils.js-BYMC-4Wt.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-BaMGnbi8.js → _server.ts.js-z988EDp2.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-BaMGnbi8.js.map → _server.ts.js-z988EDp2.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-B6YhmqYd.js → _server.ts.js-C68ru6gS.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-B6YhmqYd.js.map → _server.ts.js-C68ru6gS.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-qtGGwjZ4.js → _server.ts.js-C0tk6RFk.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-qtGGwjZ4.js.map → _server.ts.js-C0tk6RFk.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-98vjovDS.js → _server.ts.js-I03oZuo8.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-98vjovDS.js.map → _server.ts.js-I03oZuo8.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CCzQEr--.js → _server.ts.js-BsQB8YDq.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CCzQEr--.js.map → _server.ts.js-BsQB8YDq.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-Ca7G_5IJ.js → _server.ts.js-CJuFE6Fb.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-Ca7G_5IJ.js.map → _server.ts.js-CJuFE6Fb.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DRw4ICSn.js → _server.ts.js-DuOZRRiA.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DRw4ICSn.js.map → _server.ts.js-DuOZRRiA.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-Ai46jTgw.js → _server.ts.js-DGzYpQbv.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-Ai46jTgw.js.map → _server.ts.js-DGzYpQbv.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-NQKYbtiU.js → _server.ts.js-B045QoCA.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-NQKYbtiU.js.map → _server.ts.js-B045QoCA.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-_vJ2Npqd.js → _server.ts.js-HUkVdz19.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-_vJ2Npqd.js.map → _server.ts.js-HUkVdz19.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DIn5srjK.js → _server.ts.js-ry509mom.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DIn5srjK.js.map → _server.ts.js-ry509mom.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CqFLRTP-.js → _server.ts.js-DU0J7U25.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CqFLRTP-.js.map → _server.ts.js-DU0J7U25.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BYn_v3VS.js → _server.ts.js-AZIV2PIn.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BYn_v3VS.js.map → _server.ts.js-AZIV2PIn.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-sxVzkX1S.js → _server.ts.js-CDL0hCfM.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-sxVzkX1S.js.map → _server.ts.js-CDL0hCfM.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-E3B6VyAs.js → _server.ts.js-B13c17fq.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-E3B6VyAs.js.map → _server.ts.js-B13c17fq.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-ClgS9ghS.js → _server.ts.js-BCxjyAGC.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-ClgS9ghS.js.map → _server.ts.js-BCxjyAGC.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BPUzWMNL.js → _server.ts.js-BveeMZc2.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BPUzWMNL.js.map → _server.ts.js-BveeMZc2.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-_G6pURnx.js → _server.ts.js-BZjTd9a0.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-_G6pURnx.js.map → _server.ts.js-BZjTd9a0.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-as3GcjaI.js → _server.ts.js-BbTfPvC9.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-as3GcjaI.js.map → _server.ts.js-BbTfPvC9.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-CR58wymO.js → _server.ts.js-8VPJMLBk.js} +3 -3
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-CR58wymO.js.map → _server.ts.js-8VPJMLBk.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-Do2LOf04.js → _server.ts.js-BqR2J2sB.js} +4 -4
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-Do2LOf04.js.map → _server.ts.js-BqR2J2sB.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-Ckp6_SaE.js → _server.ts.js-DbA28dCY.js} +4 -4
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-Ckp6_SaE.js.map → _server.ts.js-DbA28dCY.js.map} +1 -1
- package/build/server/chunks/entries/{hooks.server.js-CL1tg0CT.js → hooks.server.js-9PBc_3Jh.js} +3 -3
- package/build/server/chunks/entries/{hooks.server.js-CL1tg0CT.js.map → hooks.server.js-9PBc_3Jh.js.map} +1 -1
- package/build/server/chunks/{handler-BRtsY9uB.js → handler-XxBNCHhb.js} +5 -5
- package/build/server/chunks/{handler-BRtsY9uB.js.map → handler-XxBNCHhb.js.map} +1 -1
- package/build/server/chunks/{index.js-g3JzUW3v.js → index.js-B_76Gq5Y.js} +5 -5
- package/build/server/chunks/{index.js-g3JzUW3v.js.map → index.js-B_76Gq5Y.js.map} +1 -1
- package/build/server/chunks/{manifest.js-D51Bb0-d.js → manifest.js-C2MZZt3o.js} +29 -29
- package/build/server/chunks/{manifest.js-D51Bb0-d.js.map → manifest.js-C2MZZt3o.js.map} +1 -1
- package/build/server/chunks/nodes/{0.js-B1bRRxWY.js → 0.js-BLURyWmd.js} +2 -2
- package/build/server/chunks/nodes/{0.js-B1bRRxWY.js.map → 0.js-BLURyWmd.js.map} +1 -1
- package/build/server/chunks/nodes/1.js-CITI7d3d.js +7 -0
- package/build/server/chunks/nodes/{1.js-BIjbx0GP.js.map → 1.js-CITI7d3d.js.map} +1 -1
- package/build/server/chunks/nodes/2.js-DAls5TjF.js +7 -0
- package/build/server/chunks/nodes/{2.js-B6X0GbFS.js.map → 2.js-DAls5TjF.js.map} +1 -1
- package/build/server/chunks/nodes/3.js-CesAmg_E.js +7 -0
- package/build/server/chunks/nodes/{3.js-CQVJ114p.js.map → 3.js-CesAmg_E.js.map} +1 -1
- package/build/server/chunks/nodes/{4.js-Bt9pLOHE.js → 4.js-BRlAiVnn.js} +2 -2
- package/build/server/chunks/nodes/{4.js-Bt9pLOHE.js.map → 4.js-BRlAiVnn.js.map} +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/manifest-entry.d.ts +14 -5
- package/dist/runtime/components/ChromaKeyVideo.svelte +3 -0
- package/dist/runtime/components/Image.svelte +3 -0
- package/dist/runtime/components/Slice.svelte +215 -18
- package/dist/runtime/components/Slice.svelte.d.ts +3 -4
- package/dist/runtime/components/Video.svelte +3 -0
- package/dist/runtime/geometry.d.ts +15 -9
- package/dist/runtime/geometry.js +21 -14
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/kind-handlers.d.ts +22 -10
- package/dist/runtime/kind-handlers.js +58 -21
- package/dist/runtime/logging.d.ts +34 -0
- package/dist/runtime/logging.js +27 -0
- package/dist/runtime/manifest.d.ts +16 -5
- package/dist/runtime/manifest.js +19 -8
- package/dist/runtime/observe-border-box-size.d.ts +1 -1
- package/dist/runtime/observe-border-box-size.js +2 -2
- package/dist/runtime/preload-registry.d.ts +20 -1
- package/dist/runtime/preload-registry.js +23 -2
- package/dist/runtime/slice-source-lifecycle.d.ts +11 -2
- package/dist/runtime/slice-source-lifecycle.js +21 -2
- package/dist/server/codegen.js +5 -1
- package/package.json +1 -1
- package/build/client/_app/immutable/assets/AssetSourceMenu.DOu9eU7n.css +0 -1
- package/build/client/_app/immutable/assets/AssetSourceMenu.DOu9eU7n.css.br +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.DOu9eU7n.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BR73V5PG.js +0 -1
- package/build/client/_app/immutable/chunks/BR73V5PG.js.br +0 -2
- package/build/client/_app/immutable/chunks/BR73V5PG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D-dMdMUj.js.br +0 -0
- package/build/client/_app/immutable/chunks/D-dMdMUj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PGG-LyPT.js +0 -108
- package/build/client/_app/immutable/chunks/PGG-LyPT.js.br +0 -0
- package/build/client/_app/immutable/chunks/PGG-LyPT.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CmTIRtCw.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CmTIRtCw.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.M4xqAoBc.js +0 -1
- package/build/client/_app/immutable/entry/start.M4xqAoBc.js.br +0 -1
- package/build/client/_app/immutable/entry/start.M4xqAoBc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CNULKexJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CNULKexJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.Cq-r1S-6.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.Cq-r1S-6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B4CjEZCb.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B4CjEZCb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DzWxKBWe.js +0 -1
- package/build/client/_app/immutable/nodes/3.DzWxKBWe.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DzWxKBWe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BkqPmamr.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BkqPmamr.js.gz +0 -0
- package/build/server/chunks/chunks/contract.js-BHQbpsFk.js.map +0 -1
- package/build/server/chunks/nodes/1.js-BIjbx0GP.js +0 -7
- package/build/server/chunks/nodes/2.js-B6X0GbFS.js +0 -7
- package/build/server/chunks/nodes/3.js-CQVJ114p.js +0 -7
- package/dist/runtime/components/SliceCanvas.svelte +0 -173
- package/dist/runtime/components/SliceCanvas.svelte.d.ts +0 -10
- package/dist/runtime/components/SliceDom.svelte +0 -161
- package/dist/runtime/components/SliceDom.svelte.d.ts +0 -10
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
DOM slice backend using the entry-based API: the slicing arrives inline on the
|
|
3
|
-
`SliceManifestEntry` (no registry, no manifest lookup). One component covers
|
|
4
|
-
all modes (nine / three-horizontal / three-vertical / one) — the mode lives
|
|
5
|
-
in the entry. Private: hosts render `Slice.svelte`, which dispatches between
|
|
6
|
-
this and the canvas backend.
|
|
7
|
-
|
|
8
|
-
Fills its container and measures it (ResizeObserver), then paints the complete
|
|
9
|
-
slice through one CSS border-image. The browser still stretches the same source
|
|
10
|
-
regions computed by `computeRenderCells`, but rasterizes them as one border
|
|
11
|
-
image instead of separate clipped elements. Shared slice edges therefore cannot
|
|
12
|
-
expose the background under fractional transforms.
|
|
13
|
-
With overdraw the paint element extends past the container (negative offsets),
|
|
14
|
-
so the root switches to overflow: visible and the baked shadow/glow draws
|
|
15
|
-
outside the layout box.
|
|
16
|
-
-->
|
|
17
|
-
<script lang="ts">
|
|
18
|
-
import type { SliceInsets, SliceManifestEntry } from '../../core/index.js';
|
|
19
|
-
import { computeRenderCells, effectiveInsets, effectiveOverdraw } from '../geometry.js';
|
|
20
|
-
import { observeBorderBoxSize } from '../observe-border-box-size.js';
|
|
21
|
-
import type { LoadedSliceSnapshot } from '../slice-source-lifecycle.js';
|
|
22
|
-
|
|
23
|
-
interface Props {
|
|
24
|
-
snapshot: LoadedSliceSnapshot | null;
|
|
25
|
-
/** Accessible label for the rendered graphic. */
|
|
26
|
-
alt?: string;
|
|
27
|
-
class?: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
let { snapshot, alt = '', class: className = '' }: Props = $props();
|
|
31
|
-
|
|
32
|
-
let root = $state<HTMLDivElement>();
|
|
33
|
-
let boxWidth = $state(0);
|
|
34
|
-
let boxHeight = $state(0);
|
|
35
|
-
|
|
36
|
-
interface BorderImagePaint {
|
|
37
|
-
left: number;
|
|
38
|
-
top: number;
|
|
39
|
-
width: number;
|
|
40
|
-
height: number;
|
|
41
|
-
slices: SliceInsets;
|
|
42
|
-
widths: SliceInsets;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function clamp(value: number, min: number, max: number): number {
|
|
46
|
-
return Math.max(min, Math.min(max, value));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function computeBorderImagePaint(
|
|
50
|
-
entry: SliceManifestEntry,
|
|
51
|
-
width: number,
|
|
52
|
-
height: number
|
|
53
|
-
): BorderImagePaint | null {
|
|
54
|
-
const cells = computeRenderCells(entry, width, height);
|
|
55
|
-
if (cells.length === 0) return null;
|
|
56
|
-
|
|
57
|
-
const effective = effectiveInsets(entry);
|
|
58
|
-
const leftSlice = clamp(effective.left, 0, entry.sourceWidth);
|
|
59
|
-
const rightSlice = clamp(effective.right, 0, entry.sourceWidth - leftSlice);
|
|
60
|
-
const topSlice = clamp(effective.top, 0, entry.sourceHeight);
|
|
61
|
-
const bottomSlice = clamp(effective.bottom, 0, entry.sourceHeight - topSlice);
|
|
62
|
-
const slices = {
|
|
63
|
-
top: topSlice,
|
|
64
|
-
right: rightSlice,
|
|
65
|
-
bottom: bottomSlice,
|
|
66
|
-
left: leftSlice
|
|
67
|
-
};
|
|
68
|
-
const left = Math.min(...cells.map((cell) => cell.dx));
|
|
69
|
-
const top = Math.min(...cells.map((cell) => cell.dy));
|
|
70
|
-
const right = Math.max(...cells.map((cell) => cell.dx + cell.dw));
|
|
71
|
-
const bottom = Math.max(...cells.map((cell) => cell.dy + cell.dh));
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
left,
|
|
75
|
-
top,
|
|
76
|
-
width: right - left,
|
|
77
|
-
height: bottom - top,
|
|
78
|
-
slices,
|
|
79
|
-
widths: {
|
|
80
|
-
top: cells.find((cell) => topSlice > 0 && cell.sy === 0 && cell.sh === topSlice)?.dh ?? 0,
|
|
81
|
-
right:
|
|
82
|
-
cells.find(
|
|
83
|
-
(cell) =>
|
|
84
|
-
rightSlice > 0 && cell.sx === entry.sourceWidth - rightSlice && cell.sw === rightSlice
|
|
85
|
-
)?.dw ?? 0,
|
|
86
|
-
bottom:
|
|
87
|
-
cells.find(
|
|
88
|
-
(cell) =>
|
|
89
|
-
bottomSlice > 0 &&
|
|
90
|
-
cell.sy === entry.sourceHeight - bottomSlice &&
|
|
91
|
-
cell.sh === bottomSlice
|
|
92
|
-
)?.dh ?? 0,
|
|
93
|
-
left: cells.find((cell) => leftSlice > 0 && cell.sx === 0 && cell.sw === leftSlice)?.dw ?? 0
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
$effect(() => {
|
|
99
|
-
const element = root;
|
|
100
|
-
if (!element) return;
|
|
101
|
-
return observeBorderBoxSize(element, (width, height) => {
|
|
102
|
-
boxWidth = width;
|
|
103
|
-
boxHeight = height;
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
const entry = $derived(snapshot?.entry ?? null);
|
|
108
|
-
const paint = $derived(entry ? computeBorderImagePaint(entry, boxWidth, boxHeight) : null);
|
|
109
|
-
const hasOverdraw = $derived.by(() => {
|
|
110
|
-
if (!entry) return false;
|
|
111
|
-
const overdraw = effectiveOverdraw(entry);
|
|
112
|
-
return overdraw.top > 0 || overdraw.right > 0 || overdraw.bottom > 0 || overdraw.left > 0;
|
|
113
|
-
});
|
|
114
|
-
</script>
|
|
115
|
-
|
|
116
|
-
<div
|
|
117
|
-
bind:this={root}
|
|
118
|
-
class="fundus-slice {className}"
|
|
119
|
-
class:fundus-slice--overdraw={hasOverdraw}
|
|
120
|
-
role={alt ? 'img' : undefined}
|
|
121
|
-
aria-label={alt || undefined}
|
|
122
|
-
>
|
|
123
|
-
{#if entry && paint}
|
|
124
|
-
<div
|
|
125
|
-
class="fundus-slice__paint"
|
|
126
|
-
style:left="{paint.left}px"
|
|
127
|
-
style:top="{paint.top}px"
|
|
128
|
-
style:width="{paint.width}px"
|
|
129
|
-
style:height="{paint.height}px"
|
|
130
|
-
style:border-image-source={`url(${JSON.stringify(entry.src)})`}
|
|
131
|
-
style:border-image-slice={`${paint.slices.top} ${paint.slices.right} ${paint.slices.bottom} ${paint.slices.left} fill`}
|
|
132
|
-
style:border-image-width={`${paint.widths.top}px ${paint.widths.right}px ${paint.widths.bottom}px ${paint.widths.left}px`}
|
|
133
|
-
></div>
|
|
134
|
-
{/if}
|
|
135
|
-
</div>
|
|
136
|
-
|
|
137
|
-
<style>
|
|
138
|
-
.fundus-slice {
|
|
139
|
-
position: relative;
|
|
140
|
-
width: 100%;
|
|
141
|
-
height: 100%;
|
|
142
|
-
overflow: hidden;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/* Overdraw deliberately extends the paint past the box — don't clip it. */
|
|
146
|
-
.fundus-slice--overdraw {
|
|
147
|
-
overflow: visible;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.fundus-slice__paint {
|
|
151
|
-
position: absolute;
|
|
152
|
-
box-sizing: border-box;
|
|
153
|
-
border-width: 0;
|
|
154
|
-
border-style: solid;
|
|
155
|
-
border-image-repeat: stretch;
|
|
156
|
-
pointer-events: none;
|
|
157
|
-
/* Offload to the GPU so border-image edges don't pop as hairlines under
|
|
158
|
-
fractional transforms. */
|
|
159
|
-
will-change: transform;
|
|
160
|
-
}
|
|
161
|
-
</style>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { LoadedSliceSnapshot } from '../slice-source-lifecycle.js';
|
|
2
|
-
interface Props {
|
|
3
|
-
snapshot: LoadedSliceSnapshot | null;
|
|
4
|
-
/** Accessible label for the rendered graphic. */
|
|
5
|
-
alt?: string;
|
|
6
|
-
class?: string;
|
|
7
|
-
}
|
|
8
|
-
declare const SliceDom: import("svelte").Component<Props, {}, "">;
|
|
9
|
-
type SliceDom = ReturnType<typeof SliceDom>;
|
|
10
|
-
export default SliceDom;
|