fundus 0.22.1 → 0.23.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 +48 -2
- package/build/client/_app/immutable/chunks/{D68C0q2O.js → CVeOwywf.js} +7 -7
- package/build/client/_app/immutable/chunks/CVeOwywf.js.br +0 -0
- package/build/client/_app/immutable/chunks/CVeOwywf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CK_6irtk.js → Co7xGpqv.js} +1 -1
- package/build/client/_app/immutable/chunks/Co7xGpqv.js.br +0 -0
- package/build/client/_app/immutable/chunks/Co7xGpqv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BrWiKjrr.js → DWHqxOBm.js} +1 -1
- package/build/client/_app/immutable/chunks/DWHqxOBm.js.br +0 -0
- package/build/client/_app/immutable/chunks/DWHqxOBm.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.C6utCKyq.js → app.BvNykvNA.js} +2 -2
- package/build/client/_app/immutable/entry/app.BvNykvNA.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BvNykvNA.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DfWWrqAi.js +1 -0
- package/build/client/_app/immutable/entry/start.DfWWrqAi.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DfWWrqAi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.D3X2aDLe.js → 0.C-TKgrGP.js} +1 -1
- package/build/client/_app/immutable/nodes/0.C-TKgrGP.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C-TKgrGP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.CoCDztxo.js → 1.q-uG--Ye.js} +1 -1
- package/build/client/_app/immutable/nodes/1.q-uG--Ye.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.q-uG--Ye.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.D6Bsk2OP.js → 2.EtCNRoA2.js} +1 -1
- package/build/client/_app/immutable/nodes/2.EtCNRoA2.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.EtCNRoA2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.ZFuSk2Qg.js → 3.D7nMxWez.js} +1 -1
- package/build/client/_app/immutable/nodes/3.D7nMxWez.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D7nMxWez.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.CGsGyx14.js → 4.B3M1zSBU.js} +1 -1
- package/build/client/_app/immutable/nodes/4.B3M1zSBU.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B3M1zSBU.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/{exports.js-BO7CNNsS.js → exports.js-BmD4UbfP.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-BO7CNNsS.js.map → exports.js-BmD4UbfP.js.map} +1 -1
- package/build/server/chunks/chunks/{internal.js-CFdkiEzR.js → internal.js-CamOhpYX.js} +2 -2
- package/build/server/chunks/chunks/{internal.js-CFdkiEzR.js.map → internal.js-CamOhpYX.js.map} +1 -1
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/{shared.js-CwOc93ku.js → shared.js-z20dV9L6.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-CwOc93ku.js.map → shared.js-z20dV9L6.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-CWPwVcP0.js → utils.js-CCdpL1Io.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-CWPwVcP0.js.map → utils.js-CCdpL1Io.js.map} +1 -1
- package/build/server/chunks/{handler-lAULIciq.js → handler-B2BaQ6Ml.js} +5 -5
- package/build/server/chunks/{handler-lAULIciq.js.map → handler-B2BaQ6Ml.js.map} +1 -1
- package/build/server/chunks/{index.js-BZzPujOC.js → index.js-B77LinCI.js} +5 -5
- package/build/server/chunks/{index.js-BZzPujOC.js.map → index.js-B77LinCI.js.map} +1 -1
- package/build/server/chunks/{manifest.js-B45gle3C.js → manifest.js-DBhPPiGl.js} +7 -7
- package/build/server/chunks/{manifest.js-B45gle3C.js.map → manifest.js-DBhPPiGl.js.map} +1 -1
- package/build/server/chunks/nodes/{0.js-CeflwKeh.js → 0.js-bzZzX1Nn.js} +2 -2
- package/build/server/chunks/nodes/{0.js-CeflwKeh.js.map → 0.js-bzZzX1Nn.js.map} +1 -1
- package/build/server/chunks/nodes/1.js-CQ-mFntC.js +7 -0
- package/build/server/chunks/nodes/{1.js-BokZtd9m.js.map → 1.js-CQ-mFntC.js.map} +1 -1
- package/build/server/chunks/nodes/{2.js-DDXiE5Ra.js → 2.js-BSGPEoRK.js} +2 -2
- package/build/server/chunks/nodes/{2.js-DDXiE5Ra.js.map → 2.js-BSGPEoRK.js.map} +1 -1
- package/build/server/chunks/nodes/3.js-BzUyw6Q9.js +7 -0
- package/build/server/chunks/nodes/{3.js-BZ_k58Ty.js.map → 3.js-BzUyw6Q9.js.map} +1 -1
- package/build/server/chunks/nodes/{4.js-C4Z183Ra.js → 4.js-vMj7JX0_.js} +2 -2
- package/build/server/chunks/nodes/{4.js-C4Z183Ra.js.map → 4.js-vMj7JX0_.js.map} +1 -1
- package/dist/runtime/canvas.d.ts +36 -0
- package/dist/runtime/canvas.js +72 -0
- package/dist/runtime/components/Slice.svelte +8 -19
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/kind-handlers.d.ts +6 -6
- package/dist/runtime/kind-handlers.js +3 -2
- package/dist/runtime/manifest.d.ts +3 -3
- package/dist/runtime/manifest.js +3 -3
- package/dist/runtime/preload-registry.d.ts +4 -4
- package/dist/runtime/preload-registry.js +4 -4
- package/dist/runtime/slice-source-lifecycle.js +2 -2
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/BrWiKjrr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BrWiKjrr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CK_6irtk.js.br +0 -0
- package/build/client/_app/immutable/chunks/CK_6irtk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D68C0q2O.js.br +0 -0
- package/build/client/_app/immutable/chunks/D68C0q2O.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.C6utCKyq.js.br +0 -0
- package/build/client/_app/immutable/entry/app.C6utCKyq.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BaAqfP-b.js +0 -1
- package/build/client/_app/immutable/entry/start.BaAqfP-b.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BaAqfP-b.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D3X2aDLe.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D3X2aDLe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CoCDztxo.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.CoCDztxo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.D6Bsk2OP.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.D6Bsk2OP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.ZFuSk2Qg.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.ZFuSk2Qg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CGsGyx14.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CGsGyx14.js.gz +0 -0
- package/build/server/chunks/nodes/1.js-BokZtd9m.js +0 -7
- package/build/server/chunks/nodes/3.js-BZ_k58Ty.js +0 -7
package/README.md
CHANGED
|
@@ -85,6 +85,52 @@ pixel ratio) plus a ready-made CSS `aspect-ratio` value. For the 3-slice modes
|
|
|
85
85
|
the sliced-off cross axis must be laid out at exactly that size so the end caps
|
|
86
86
|
keep their authored aspect ratio.
|
|
87
87
|
|
|
88
|
+
For an existing canvas, preload the manifest and use the synchronous drawing
|
|
89
|
+
helpers. Both accept a canvas element or its 2D context:
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
import { drawImage, drawSlice } from 'fundus';
|
|
93
|
+
import { main } from '$lib/fundus/main.generated';
|
|
94
|
+
|
|
95
|
+
await main.preload();
|
|
96
|
+
|
|
97
|
+
// Set up the backing store once; resizing a canvas clears its contents.
|
|
98
|
+
const width = 640;
|
|
99
|
+
const height = 360;
|
|
100
|
+
const dpr = window.devicePixelRatio || 1;
|
|
101
|
+
canvas.width = Math.round(width * dpr);
|
|
102
|
+
canvas.height = Math.round(height * dpr);
|
|
103
|
+
canvas.style.width = `${width}px`;
|
|
104
|
+
canvas.style.height = `${height}px`;
|
|
105
|
+
const ctx = canvas.getContext('2d')!;
|
|
106
|
+
ctx.setTransform(canvas.width / width, 0, 0, canvas.height / height, 0, 0);
|
|
107
|
+
|
|
108
|
+
drawSlice(ctx, main.dialogFrame, 20, 30, 300, 180);
|
|
109
|
+
drawImage(ctx, main.logo, 40, 50, 120, 60);
|
|
110
|
+
|
|
111
|
+
// Release when finished with the assets, after the last draw or animation frame.
|
|
112
|
+
main.release();
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`x`, `y`, `width`, and `height` use the context's current coordinate system;
|
|
116
|
+
with the setup above they are CSS pixels, and `(x, y)` is the top-left corner.
|
|
117
|
+
Fundus never applies an extra canvas DPR multiplier. A slice's asset
|
|
118
|
+
`pixelRatio` determines its fixed logical borders (a 20-source-pixel border
|
|
119
|
+
at @2x becomes 10 logical pixels), without changing the requested box size.
|
|
120
|
+
Images have no asset pixel-ratio metadata and stretch to the explicit target size.
|
|
121
|
+
Slice coordinates describe the element core; baked-in overdraw paints outside it.
|
|
122
|
+
|
|
123
|
+
The helpers preserve existing canvas contents and context state, including
|
|
124
|
+
transforms, clipping, alpha, compositing, and image smoothing. Slice painting
|
|
125
|
+
shares the component's geometry and drawing routine; the caller controls the
|
|
126
|
+
backing store and transforms, so fractional pixel placement can antialias cell
|
|
127
|
+
edges. Use integer backing-pixel boundaries when crisp slice edges matter.
|
|
128
|
+
Non-positive sizes are no-ops; non-finite coordinates throw. For non-empty draws,
|
|
129
|
+
missing decoded sources throw with a preload hint, including during preload,
|
|
130
|
+
after the last manifest releases them, or when decoding was disabled. Keep a
|
|
131
|
+
preloaded manifest held for render loops. Image preloading retains its
|
|
132
|
+
decoded element until release. The `<Slice>` component still loads automatically.
|
|
133
|
+
|
|
88
134
|
For changes made outside the editor:
|
|
89
135
|
|
|
90
136
|
```bash
|
|
@@ -100,8 +146,8 @@ modules. With the default config, those live in `fundus.config.ts`, `assets/`,
|
|
|
100
146
|
|
|
101
147
|
| Type | Processing | Runtime |
|
|
102
148
|
| ---------------- | ------------------------------------------------ | --------------------------------------- |
|
|
103
|
-
| Image | WebP, PNG, AVIF, or JPEG; optional width | `<Image
|
|
104
|
-
| Slice | 1-, 3-, or 9-slice; optional stretch compression | `<Slice
|
|
149
|
+
| Image | WebP, PNG, AVIF, or JPEG; optional width | `<Image>`, `drawImage()` |
|
|
150
|
+
| Slice | 1-, 3-, or 9-slice; optional stretch compression | `<Slice>`, `drawSlice()` |
|
|
105
151
|
| Video | H.264 MP4; optional width cap | `<Video>` |
|
|
106
152
|
| Chroma-key video | H.264 MP4 with WebGL2 keying, mask, and fallback | `<ChromaKeyVideo>` |
|
|
107
153
|
| Audio | Opus/WebM or AAC/M4A | Your audio engine via `audioSourceOf()` |
|