fundus 0.25.0 → 0.27.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 +27 -0
- package/build/client/_app/immutable/chunks/B8-iUbxt.js +121 -0
- package/build/client/_app/immutable/chunks/B8-iUbxt.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8-iUbxt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Cml0-AYv.js → DItbpj5-.js} +2 -2
- package/build/client/_app/immutable/chunks/DItbpj5-.js.br +0 -0
- package/build/client/_app/immutable/chunks/DItbpj5-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C4w39LtR.js → DTsuHg02.js} +1 -1
- package/build/client/_app/immutable/chunks/DTsuHg02.js.br +0 -0
- package/build/client/_app/immutable/chunks/DTsuHg02.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DUBuA2Dm.js +1 -0
- package/build/client/_app/immutable/chunks/DUBuA2Dm.js.br +0 -0
- package/build/client/_app/immutable/chunks/DUBuA2Dm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DGYcFVZ3.js → Pe5EQzUq.js} +1 -1
- package/build/client/_app/immutable/chunks/Pe5EQzUq.js.br +0 -0
- package/build/client/_app/immutable/chunks/Pe5EQzUq.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.GgnXYpzJ.js → app.CIuRQnTG.js} +2 -2
- package/build/client/_app/immutable/entry/app.CIuRQnTG.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CIuRQnTG.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CaIV0LUo.js +1 -0
- package/build/client/_app/immutable/entry/start.CaIV0LUo.js.br +1 -0
- package/build/client/_app/immutable/entry/start.CaIV0LUo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D0OQowHt.js +1 -0
- package/build/client/_app/immutable/nodes/0.D0OQowHt.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D0OQowHt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.DzAnL2O6.js → 1.CJmLUeSL.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CJmLUeSL.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CJmLUeSL.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BMN1YTJ4.js → 2.CxPn7qxz.js} +2 -2
- package/build/client/_app/immutable/nodes/2.CxPn7qxz.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CxPn7qxz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CK4enFv6.js +1 -0
- package/build/client/_app/immutable/nodes/3.CK4enFv6.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CK4enFv6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DxAj27VZ.js +2 -0
- package/build/client/_app/immutable/nodes/4.DxAj27VZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DxAj27VZ.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-4TO_atTF.js → context.js-Bd8bqgno.js} +49 -16
- package/build/server/chunks/chunks/context.js-Bd8bqgno.js.map +1 -0
- package/build/server/chunks/chunks/{contract.js-B6KBK8D9.js → contract.js-CvgjfKhk.js} +7 -7
- package/build/server/chunks/chunks/{contract.js-B6KBK8D9.js.map → contract.js-CvgjfKhk.js.map} +1 -1
- package/build/server/chunks/chunks/{core.js-Bp-ReC60.js → core.js-z3Oyfjut.js} +10 -4
- package/build/server/chunks/chunks/core.js-z3Oyfjut.js.map +1 -0
- package/build/server/chunks/chunks/{exports.js-BAfR8rsb.js → exports.js-DAZwf-PG.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-BAfR8rsb.js.map → exports.js-DAZwf-PG.js.map} +1 -1
- package/build/server/chunks/chunks/{http.js-BTq44nR5.js → http.js-BDlmMiVn.js} +2 -2
- package/build/server/chunks/chunks/{http.js-BTq44nR5.js.map → http.js-BDlmMiVn.js.map} +1 -1
- package/build/server/chunks/chunks/{internal.js-B3hOADoz.js → internal.js-Ct2VLuOf.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-B3hOADoz.js.map → internal.js-Ct2VLuOf.js.map} +1 -1
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/{manifest-membership.js-Dj3WwZgz.js → manifest-membership.js-dUxJtQsv.js} +2 -2
- package/build/server/chunks/chunks/{manifest-membership.js-Dj3WwZgz.js.map → manifest-membership.js-dUxJtQsv.js.map} +1 -1
- package/build/server/chunks/chunks/{raw-reconciliation.js-mWOAOdgL.js → raw-reconciliation.js-CVpSamHq.js} +3 -3
- package/build/server/chunks/chunks/raw-reconciliation.js-CVpSamHq.js.map +1 -0
- package/build/server/chunks/chunks/{raw-reconciliation2.js-Bo1jJgvd.js → raw-reconciliation2.js-d0VZiZIt.js} +2 -2
- package/build/server/chunks/chunks/{raw-reconciliation2.js-Bo1jJgvd.js.map → raw-reconciliation2.js-d0VZiZIt.js.map} +1 -1
- package/build/server/chunks/chunks/{shared.js-DN477dAr.js → shared.js-7W9eRLAO.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-DN477dAr.js.map → shared.js-7W9eRLAO.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-zf3Q16Eh.js → utils.js-DOyEfB14.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-zf3Q16Eh.js.map → utils.js-DOyEfB14.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-B_aa_zh7.js → _server.ts.js-D1lzCgKx.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-B_aa_zh7.js.map → _server.ts.js-D1lzCgKx.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-Aa7zYzUB.js → _server.ts.js-B_exlIvG.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-Aa7zYzUB.js.map → _server.ts.js-B_exlIvG.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-CM73kt1H.js → _server.ts.js-BVRoG0ks.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-CM73kt1H.js.map → _server.ts.js-BVRoG0ks.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-CyiEsjc3.js → _server.ts.js-CGl_1qOp.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-CyiEsjc3.js.map → _server.ts.js-CGl_1qOp.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/{_server.ts.js-Cpt_vVY0.js → _server.ts.js-Dc5XtD59.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/{_server.ts.js-Cpt_vVY0.js.map → _server.ts.js-Dc5XtD59.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-BVdeCRy0.js → _server.ts.js-D18kmCae.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-BVdeCRy0.js.map → _server.ts.js-D18kmCae.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-QEa0nYZE.js → _server.ts.js-Dma9az04.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-QEa0nYZE.js.map → _server.ts.js-Dma9az04.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-Dk0sFdoM.js → _server.ts.js-Du28ZFF6.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-Dk0sFdoM.js.map → _server.ts.js-Du28ZFF6.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/events/{_server.ts.js-CO8RZm3e.js → _server.ts.js-CaQbcAKe.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/events/{_server.ts.js-CO8RZm3e.js.map → _server.ts.js-CaQbcAKe.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-8RzyUK6g.js → _server.ts.js-BIdR0hXk.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-8RzyUK6g.js.map → _server.ts.js-BIdR0hXk.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-YWliM590.js → _server.ts.js-DoYqBtnH.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-YWliM590.js.map → _server.ts.js-DoYqBtnH.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CeXmOrwN.js → _server.ts.js-ydm9S1XX.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CeXmOrwN.js.map → _server.ts.js-ydm9S1XX.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DQaLSdGl.js → _server.ts.js-BEAasQO4.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DQaLSdGl.js.map → _server.ts.js-BEAasQO4.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-BE_nYFP_.js → _server.ts.js-CXINoU3b.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-BE_nYFP_.js.map → _server.ts.js-CXINoU3b.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BGxvZ4EV.js → _server.ts.js-CvuzMBDw.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BGxvZ4EV.js.map → _server.ts.js-CvuzMBDw.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-Cvwr9a0l.js → _server.ts.js-kgHGsyn-.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-Cvwr9a0l.js.map → _server.ts.js-kgHGsyn-.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DEMDXHsR.js → _server.ts.js-CzS37BdF.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DEMDXHsR.js.map → _server.ts.js-CzS37BdF.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DoeEIUoG.js → _server.ts.js-BXE_mCX3.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DoeEIUoG.js.map → _server.ts.js-BXE_mCX3.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-0hMtYoB1.js → _server.ts.js-DM8Nj2U6.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-0hMtYoB1.js.map → _server.ts.js-DM8Nj2U6.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-B4YWmlkC.js → _server.ts.js-C0a_L0JL.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-B4YWmlkC.js.map → _server.ts.js-C0a_L0JL.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-dNLtLO2U.js → _server.ts.js-CavHY0Ie.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-dNLtLO2U.js.map → _server.ts.js-CavHY0Ie.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DkYQlG9U.js → _server.ts.js-c03akA1c.js} +6 -6
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DkYQlG9U.js.map → _server.ts.js-c03akA1c.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-BtCkf-hk.js → _server.ts.js-CKKJ-v3P.js} +7 -7
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-BtCkf-hk.js.map → _server.ts.js-CKKJ-v3P.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-CozrPtRv.js → _server.ts.js-DiZ3D46Z.js} +7 -7
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-CozrPtRv.js.map → _server.ts.js-DiZ3D46Z.js.map} +1 -1
- package/build/server/chunks/entries/{hooks.server.js-Cnsi5KsE.js → hooks.server.js-DwnveOre.js} +6 -6
- package/build/server/chunks/entries/{hooks.server.js-Cnsi5KsE.js.map → hooks.server.js-DwnveOre.js.map} +1 -1
- package/build/server/chunks/{handler-BN27c-Da.js → handler-ZL0S9fLH.js} +5 -5
- package/build/server/chunks/{handler-BN27c-Da.js.map → handler-ZL0S9fLH.js.map} +1 -1
- package/build/server/chunks/{index.js-C1f-Qrf0.js → index.js-Ddbaaikg.js} +5 -5
- package/build/server/chunks/{index.js-C1f-Qrf0.js.map → index.js-Ddbaaikg.js.map} +1 -1
- package/build/server/chunks/{manifest.js-CFkuYTzu.js → manifest.js-D3J7G7mh.js} +31 -31
- package/build/server/chunks/{manifest.js-CFkuYTzu.js.map → manifest.js-D3J7G7mh.js.map} +1 -1
- package/build/server/chunks/nodes/{0.js-B1i6yC_e.js → 0.js-DjvM5GIw.js} +2 -2
- package/build/server/chunks/nodes/{0.js-B1i6yC_e.js.map → 0.js-DjvM5GIw.js.map} +1 -1
- package/build/server/chunks/nodes/1.js-D_KuDyBR.js +7 -0
- package/build/server/chunks/nodes/{1.js-Bv64OO0t.js.map → 1.js-D_KuDyBR.js.map} +1 -1
- package/build/server/chunks/nodes/{2.js-DivaYfS1.js → 2.js-CEThjyv1.js} +2 -2
- package/build/server/chunks/nodes/{2.js-DivaYfS1.js.map → 2.js-CEThjyv1.js.map} +1 -1
- package/build/server/chunks/nodes/3.js-7gq-At5G.js +7 -0
- package/build/server/chunks/nodes/{3.js-CUAbHOxb.js.map → 3.js-7gq-At5G.js.map} +1 -1
- package/build/server/chunks/nodes/4.js-DsoSGC53.js +7 -0
- package/build/server/chunks/nodes/{4.js-Ceg0ylPI.js.map → 4.js-DsoSGC53.js.map} +1 -1
- package/dist/cli.js +9 -0
- package/dist/core/chroma-key.d.ts +11 -5
- package/dist/core/chroma-key.js +11 -3
- package/dist/core/figma-tag-script.d.ts +141 -0
- package/dist/core/figma-tag-script.js +236 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +1 -0
- package/dist/runtime/chroma-key-gl.d.ts +12 -4
- package/dist/runtime/chroma-key-gl.js +63 -6
- package/dist/runtime/components/ChromaKeyVideo.svelte +2 -1
- package/dist/server/cli-commands.d.ts +6 -0
- package/dist/server/cli-commands.js +1 -1
- package/dist/server/cli-figma-tags.d.ts +2 -0
- package/dist/server/cli-figma-tags.js +222 -0
- package/dist/server/figma-tags.d.ts +61 -0
- package/dist/server/figma-tags.js +153 -0
- package/dist/server/importers/figma.d.ts +17 -0
- package/dist/server/importers/figma.js +43 -18
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/C4w39LtR.js.br +0 -1
- package/build/client/_app/immutable/chunks/C4w39LtR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cml0-AYv.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cml0-AYv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DGYcFVZ3.js.br +0 -0
- package/build/client/_app/immutable/chunks/DGYcFVZ3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DGy-bMvO.js +0 -1
- package/build/client/_app/immutable/chunks/DGy-bMvO.js.br +0 -0
- package/build/client/_app/immutable/chunks/DGy-bMvO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/WV4B0d_0.js +0 -108
- package/build/client/_app/immutable/chunks/WV4B0d_0.js.br +0 -0
- package/build/client/_app/immutable/chunks/WV4B0d_0.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.GgnXYpzJ.js.br +0 -0
- package/build/client/_app/immutable/entry/app.GgnXYpzJ.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.O9RwuDjf.js +0 -1
- package/build/client/_app/immutable/entry/start.O9RwuDjf.js.br +0 -0
- package/build/client/_app/immutable/entry/start.O9RwuDjf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D1g1plhI.js +0 -1
- package/build/client/_app/immutable/nodes/0.D1g1plhI.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D1g1plhI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DzAnL2O6.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.DzAnL2O6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BMN1YTJ4.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BMN1YTJ4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DL_TiE5x.js +0 -1
- package/build/client/_app/immutable/nodes/3.DL_TiE5x.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DL_TiE5x.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D7FHmbgq.js +0 -2
- package/build/client/_app/immutable/nodes/4.D7FHmbgq.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D7FHmbgq.js.gz +0 -0
- package/build/server/chunks/chunks/context.js-4TO_atTF.js.map +0 -1
- package/build/server/chunks/chunks/core.js-Bp-ReC60.js.map +0 -1
- package/build/server/chunks/chunks/raw-reconciliation.js-mWOAOdgL.js.map +0 -1
- package/build/server/chunks/nodes/1.js-Bv64OO0t.js +0 -7
- package/build/server/chunks/nodes/3.js-CUAbHOxb.js +0 -7
- package/build/server/chunks/nodes/4.js-Ceg0ylPI.js +0 -7
package/README.md
CHANGED
|
@@ -219,6 +219,12 @@ hosted on another origin cannot be uploaded to WebGL from images or one-slices.
|
|
|
219
219
|
| Chroma-key video | H.264 MP4 with WebGL2 keying, mask, and fallback | `<ChromaKeyVideo>` |
|
|
220
220
|
| Audio | Opus/WebM or AAC/M4A | Your audio engine via `retainEntry()` |
|
|
221
221
|
|
|
222
|
+
Chroma-key video keys any backdrop color, not just green: the despill that
|
|
223
|
+
removes the backdrop's color fringe follows `chromaKey.keyColor` and leaves
|
|
224
|
+
neutral colors untouched. Set the optional `chromaKey.despillCoverage` below 1
|
|
225
|
+
to limit the despill to the keyed edge when the subject itself contains colors
|
|
226
|
+
close to the key.
|
|
227
|
+
|
|
222
228
|
Named presets in `fundus.config.ts` keep encoding choices consistent. Each asset
|
|
223
229
|
currently produces one processed proxy, which is often exactly what an app wants
|
|
224
230
|
and refreshingly unlike configuring a small television network.
|
|
@@ -469,6 +475,27 @@ npx fundus asset reimport navigationPanel --figma-tag mainNavigationPanel
|
|
|
469
475
|
npx fundus asset replace navigationPanel --from figma --figma-tag navigationPanel
|
|
470
476
|
```
|
|
471
477
|
|
|
478
|
+
### Tagging nodes from an agent
|
|
479
|
+
|
|
480
|
+
Tags are normally set with the Fundus Figma plugin. Agents
|
|
481
|
+
can set them through Figma's MCP `use_figma` tool instead. The Figma REST API
|
|
482
|
+
cannot write plugin data, so Fundus prepares the write and the agent runs it:
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
# Checks the tag (asset-id rules, unused in the file, no colliding Fundus asset)
|
|
486
|
+
# and prints {"ok": true, "code": "…"}; a taken tag prints the file's existing tags.
|
|
487
|
+
npx fundus figma prepare-set-tag --file 'https://www.figma.com/design/abc/UI' \
|
|
488
|
+
--node-id 12-34 --tag navigationPanel --json
|
|
489
|
+
# Removing a tag works the same way.
|
|
490
|
+
npx fundus figma prepare-delete-tag --tag navigationPanel --json
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
The agent passes `code` unchanged to `use_figma`. The set script re-checks every
|
|
494
|
+
page of the live document (loading them all, which takes a few seconds on large
|
|
495
|
+
files), writes the tag and its Dev Mode annotation exactly like the plugin, and
|
|
496
|
+
returns the result, or throws without writing when the document changed. A node
|
|
497
|
+
that already carries a tag needs `--force`.
|
|
498
|
+
|
|
472
499
|
The editor import dialog offers the same choice through a **Link / Tag** switch
|
|
473
500
|
and remembers the last one used. On a tag asset's page, the Source section edits
|
|
474
501
|
the tag, file key, and scale in place — changing the tag renames the asset.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import{$ as e,A as t,B as n,D as r,F as i,I as a,K as o,L as s,M as c,N as l,O as u,P as d,Q as f,R as p,T as m,U as h,V as g,W as _,X as v,Z as y,_ as b,a as x,b as S,d as C,dt as w,et as T,f as E,g as D,h as O,j as k,k as A,l as j,n as M,nt as N,o as P,ot as F,p as I,q as L,r as R,rt as z,s as B,st as V,tt as H,ut as U,v as W,x as G,y as K,z as q}from"./DLEDBLL1.js";import"./DUBuA2Dm.js";import"./xihTtKlq.js";import{C as J,D as Y,E as ee,F as te,G as ne,I as re,L as ie,M as ae,O as oe,P as X,R as Z,S as se,T as ce,V as le,Y as ue,Z as de,_ as fe,b as pe,ct as me,g as he,i as ge,it as _e,j as ve,k as ye,nt as be,p as xe,s as Se,t as Q,u as Ce,v as we,w as Te,x as Ee,y as De}from"./DItbpj5-.js";import{a as Oe,n as ke,t as Ae}from"./Pe5EQzUq.js";import{a as je,i as Me,n as Ne,o as Pe,r as Fe}from"./CzxolZCO.js";function Ie(e){let t=e.replace(/\.[^.]+$/,``).replace(/(?:@|[-_])\dx$/i,``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[^a-zA-Z0-9]+/).filter(Boolean);if(t.length===0)return`asset`;let n=t.map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``).replace(/^[0-9]+/,``);return n?n.charAt(0).toLowerCase()+n.slice(1):`asset`}var $=class{#e=0;#t=!1;#n;#r;constructor(e){this.#r=e}async run(e,t={}){let n=++this.#e,r=t.retainResult&&this.#t?this.#n:void 0;this.#r(t.retainResult&&this.#t?{status:`refreshing`,value:this.#n}:{status:`loading`});try{let t=await e();n===this.#e&&(this.#t=!0,this.#n=t,this.#r({status:`resolved`,value:t}))}catch(e){n===this.#e&&this.#r({status:`failed`,error:e instanceof Error?e.message:String(e),...t.retainResult&&this.#t?{value:r}:{}})}}cancel(){this.#e++,this.#t=!1,this.#r({status:`idle`})}},Le={folder:null,sort:`alphabetical`,type:[],manifest:[],changes:[],usage:`all`,query:``,warningsOnly:!1,view:`all`},Re=[`folder`,`sort`,`type`,`manifest`,`changes`,`usage`,`q`,`warnings`,`view`],ze=new Set([`alphabetical`,`type`,`manifest`]),Be=new Set([`changed`,`new`]),Ve=new Set([`all`,`unused`]),He=new Set([`all`,`duplicates`]);function Ue(e){let t=e.searchParams.get(`sort`),n=e.searchParams.get(`usage`);return{folder:e.searchParams.has(`folder`)?e.searchParams.get(`folder`)??``:null,sort:ze.has(t)?t:`alphabetical`,type:We(e,`type`),manifest:We(e,`manifest`),changes:Ge(e),usage:Ve.has(n)?n:`all`,query:e.searchParams.get(`q`)??``,warningsOnly:e.searchParams.get(`warnings`)===`1`,view:He.has(e.searchParams.get(`view`))?e.searchParams.get(`view`):`all`}}function We(e,t){return[...new Set(e.searchParams.getAll(t).filter(e=>e!==``&&e!==`all`))]}function Ge(e){let t=e.searchParams.getAll(`changes`),n=new Set;for(let e of t)e===`changed-and-new`?(n.add(`changed`),n.add(`new`)):Be.has(e)&&n.add(e);return[`changed`,`new`].filter(e=>n.has(e))}function Ke(e,t){let n=new URL(e);for(let e of Re)n.searchParams.delete(e);t.folder!==null&&n.searchParams.set(`folder`,t.folder),t.sort!==`alphabetical`&&n.searchParams.set(`sort`,t.sort);for(let e of t.type)n.searchParams.append(`type`,e);for(let e of t.manifest)n.searchParams.append(`manifest`,e);for(let e of t.changes)n.searchParams.append(`changes`,e);return t.usage!==`all`&&n.searchParams.set(`usage`,t.usage),t.query.trim()!==``&&n.searchParams.set(`q`,t.query),t.warningsOnly&&n.searchParams.set(`warnings`,`1`),t.view!==`all`&&n.searchParams.set(`view`,t.view),n}function qe(e,t,n){return e===t?n:{selectedAssetIds:[],lastSelectedAssetId:null}}function Je(e){return e.importSource?.importer===`figma`}function Ye(e){return e.length>0&&e.every(e=>e!==null&&Je(e))}function Xe(e){return Je(e)?Ze(e)?`figma-tag`:`figma-link`:`file`}function Ze(e){let t=e.importSource;if(!Je(e)||!t)return!1;let n=t.parameters;return typeof n!=`object`||!n||Array.isArray(n)?!1:n.mode===`tag`}var Qe=new class{#e=0;begin(){return++this.#e}isCurrent(e){return e===this.#e}};function $e(e){let t=Number.isFinite(e)&&e>0?Math.floor(e):0;return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}var et=i(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><rect x="4.5" y="3.5" width="2.5" height="9" fill="currentColor"></rect><rect x="9" y="3.5" width="2.5" height="9" fill="currentColor"></rect></svg>`),tt=i(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M5 3.3v9.4l7-4.7z" fill="currentColor"></path></svg>`),nt=d(`<span class="time svelte-nchstv"> </span> <input class="range scrub svelte-nchstv" type="range" min="0" step="0.01" aria-label="Seek"/> <span class="time svelte-nchstv"> </span>`,1),rt=d(`<span class="time svelte-nchstv"> </span>`),it=i(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M2.5 6h2l3-2.5v9l-3-2.5h-2z" fill="currentColor"></path><path d="M10 6l3.5 4M13.5 6 10 10" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path></svg>`),at=i(`<svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><path d="M2.5 6h2l3-2.5v9l-3-2.5h-2z" fill="currentColor"></path><path d="M10 5.6a3.4 3.4 0 0 1 0 4.8" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path><path d="M11.8 3.9a6 6 0 0 1 0 8.2" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path></svg>`),ot=d(`<div class="volume-group svelte-nchstv"><button class="btn svelte-nchstv" type="button"><!></button> <input class="range volume svelte-nchstv" type="range" min="0" max="1" step="0.01" aria-label="Volume"/></div>`),st=d(`<div><button class="btn svelte-nchstv" type="button"><!></button> <button class="btn svelte-nchstv" type="button" aria-label="Stop"><svg viewBox="0 0 16 16" aria-hidden="true" class="svelte-nchstv"><rect x="4" y="4" width="8" height="8" rx="1" fill="currentColor"></rect></svg></button> <button type="button" aria-label="Loop"><svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" class="svelte-nchstv"><path d="M4.4 4.5H9A3.5 3.5 0 0 1 12.5 8"></path><path d="M2.4 6.4 4.3 4.4 6.3 6.1"></path><path d="M11.6 11.5H7A3.5 3.5 0 0 1 3.5 8"></path><path d="M13.6 9.6 11.7 11.6 9.7 9.9"></path></svg></button> <!> <!></div>`);function ct(n,r){V(r,!0);let i=x(r,`media`,7),a=x(r,`showScrub`,3,!1),s=x(r,`showVolume`,3,!0),l=N(!1),u=N(0),d=N(0),m=N(!1),h=N(1),_=N(!1),v=N(!1),b=!1,C=null,T=z(()=>$e(g(u))),D=z(()=>$e(g(d))),A=z(()=>g(d)>0),j=z(()=>g(_)?0:g(h));L(()=>{if(!i()){H(l,!1);return}let e=i();H(l,!e.paused),H(u,e.currentTime,!0),H(d,Number.isFinite(e.duration)?e.duration:0,!0),H(m,e.loop,!0),H(h,e.volume,!0),H(_,e.muted,!0);function t(){H(l,!0)}function n(){H(l,!1)}function r(){g(v)||H(u,e.currentTime,!0)}function a(){H(d,Number.isFinite(e.duration)?e.duration:0,!0)}function o(){H(h,e.volume,!0),H(_,e.muted,!0)}return e.addEventListener(`play`,t),e.addEventListener(`playing`,t),e.addEventListener(`pause`,n),e.addEventListener(`ended`,n),e.addEventListener(`timeupdate`,r),e.addEventListener(`seeked`,r),e.addEventListener(`loadedmetadata`,a),e.addEventListener(`durationchange`,a),e.addEventListener(`volumechange`,o),()=>{C===e&&(H(v,!1),b=!1,C=null),e.removeEventListener(`play`,t),e.removeEventListener(`playing`,t),e.removeEventListener(`pause`,n),e.removeEventListener(`ended`,n),e.removeEventListener(`timeupdate`,r),e.removeEventListener(`seeked`,r),e.removeEventListener(`loadedmetadata`,a),e.removeEventListener(`durationchange`,a),e.removeEventListener(`volumechange`,o)}});function M(){i()&&(i().paused?i().play():i().pause())}function P(){i()&&(i().pause(),i().currentTime=0)}function R(){i()&&(i().loop=!i().loop,H(m,i().loop,!0))}function B(){i()&&(i().muted=!i().muted)}function U(e){if(!i())return;let t=e.currentTarget.valueAsNumber;i().volume=t,i().muted=t===0}function W(){!i()||g(v)||(H(v,!0),b=!i().paused,C=i(),i().pause())}function G(e){let t=C??i();if(!t)return;let n=e.currentTarget.valueAsNumber;Number.isFinite(t.duration)&&(t.currentTime=n),H(u,n,!0)}function K(){if(!g(v))return;let e=C;H(v,!1),b&&e&&i()===e&&e.play(),b=!1,C=null}L(()=>{if(g(v))return window.addEventListener(`pointerup`,K),window.addEventListener(`pointercancel`,K),()=>{window.removeEventListener(`pointerup`,K),window.removeEventListener(`pointercancel`,K)}});var q=st(),J=y(q),Y=y(J),ee=e=>{c(e,et())},te=e=>{c(e,tt())};t(Y,e=>{g(l)?e(ee):e(te,-1)}),w(J);var ne=e(J,2),re=e(ne,2);let ie;var ae=e(re,2),oe=t=>{var n=nt(),r=f(n),a=y(r,!0);w(r);var s=e(r,2);E(s);var l=e(s,2),m=y(l,!0);w(l),o(()=>{k(a,g(T)),I(s,`max`,g(A)?g(d):0),O(s,g(u)),s.disabled=!i()||!g(A),k(m,g(D))}),p(`pointerdown`,s,W),p(`input`,s,G),c(t,n)},X=e=>{var t=rt(),n=y(t);w(t),o(()=>k(n,`${g(T)??``} / ${g(D)??``}`)),c(e,t)};t(ae,e=>{a()?e(oe):g(A)&&e(X,1)});var Z=e(ae,2),se=n=>{var r=ot(),a=y(r),s=y(a),l=e=>{c(e,it())},u=e=>{c(e,at())};t(s,e=>{g(_)||g(h)===0?e(l):e(u,-1)}),w(a);var d=e(a,2);E(d),w(r),o(()=>{a.disabled=!i(),I(a,`aria-label`,g(_)?`Unmute`:`Mute`),O(d,g(j)),d.disabled=!i()}),p(`click`,a,B),p(`input`,d,U),c(n,r)};t(Z,e=>{s()&&e(se)}),w(q),o(()=>{S(q,1,`playback ${r.class??``??``}`,`svelte-nchstv`),J.disabled=!i(),I(J,`aria-label`,g(l)?`Pause`:`Play`),ne.disabled=!i(),ie=S(re,1,`btn svelte-nchstv`,null,ie,{active:g(m)}),re.disabled=!i(),I(re,`aria-pressed`,g(m))}),p(`click`,J,M),p(`click`,ne,P),p(`click`,re,R),c(n,q),F()}s([`click`,`pointerdown`,`input`]);var lt=null;function ut(){return lt||=new AudioContext,lt}var dt=null;function ft(e){let t=e.numberOfChannels;if(t===1)return e.getChannelData(0);let n=e.length,r=new Float32Array(n);for(let i=0;i<t;i++){let t=e.getChannelData(i);for(let e=0;e<n;e++)r[e]+=t[e]}for(let e=0;e<n;e++)r[e]/=t;return r}function pt(e,t){let n=new Float32Array(t),r=new Float32Array(t),i=e.length/t;for(let a=0;a<t;a++){let t=Math.floor(a*i),o=Math.min(e.length,Math.floor((a+1)*i)),s=0,c=0;for(let n=t;n<o;n++){let t=e[n];t<s&&(s=t),t>c&&(c=t)}n[a]=s,r[a]=c}return{min:n,max:r}}function mt(e,t,n){return Math.min(n,Math.max(t,e))}var ht=d(`<div class="footer svelte-1liihyn"><!></div>`),gt=d(`<div><canvas class="wave svelte-1liihyn" role="button" tabindex="0" aria-label="Audio waveform — click or press Enter to play; arrow keys scrub"></canvas> <!></div>`);function _t(n,r){V(r,!0);let i=x(r,`loop`,3,!1),a=x(r,`showControls`,3,!1),s=N(void 0),l=N(null),u=N(!1),d=N(0),f=N(0),m=`idle`,h=null,v=null,b=0,C=1,T=`#0d99ff`,E=`#7a7a7a`,D=`#f24822`,O=0;function k(){if(!g(s))return;let e=getComputedStyle(g(s));T=e.getPropertyValue(`--accent`).trim()||T,E=e.getPropertyValue(`--text-faint`).trim()||E,D=e.getPropertyValue(`--danger`).trim()||D}function A(){if(!g(s))return;let e=g(s).getBoundingClientRect();C=window.devicePixelRatio||1;let t=Math.max(1,Math.round(e.width*C)),n=Math.max(1,Math.round(e.height*C));(g(s).width!==t||g(s).height!==n)&&(g(s).width=t,g(s).height=n,v=null),k()}function j(){if(!g(s))return;let e=g(s).getContext(`2d`);if(!e)return;let t=g(s).width,n=g(s).height,r=n/2;if(e.clearRect(0,0,t,n),m!==`ready`||!h){e.strokeStyle=m===`error`?D:E,e.lineWidth=Math.max(1,C),e.beginPath(),e.moveTo(0,r),e.lineTo(t,r),e.stroke();return}let i=Math.max(1,Math.floor(t));(!v||b!==i)&&(v=pt(h,i),b=i);let a=g(f)>0?mt(g(d)/g(f),0,1):0,o=a*t,c=r*.9,l=t/i;e.lineWidth=1;for(let t=0;t<i;t++){let n=t*l,i=r-v.max[t]*c,a=r-v.min[t]*c;e.strokeStyle=n<=o?T:E,e.beginPath(),e.moveTo(n+.5,Math.min(i,r-.5)),e.lineTo(n+.5,Math.max(a,r+.5)),e.stroke()}a>0&&(e.strokeStyle=T,e.lineWidth=Math.max(1,C),e.beginPath(),e.moveTo(o,0),e.lineTo(o,n),e.stroke())}function M(){O&&=(cancelAnimationFrame(O),0)}function P(){g(l)&&H(d,g(l).currentTime,!0),j(),g(u)&&(O=requestAnimationFrame(P))}async function I(e){m=`loading`,j();try{let t=await(await fetch(e)).arrayBuffer(),n=await ut().decodeAudioData(t);if(e!==r.src)return;h=ft(n),g(f)||H(f,n.duration,!0),m=`ready`,v=null,j()}catch{if(e!==r.src)return;m=`error`,j()}}function R(e){if(e.preventDefault(),e.stopPropagation(),!g(s)||!g(l))return;let t=g(s).getBoundingClientRect(),n=mt((e.clientX-t.left)/t.width,0,1),r=g(l).duration;Number.isFinite(r)&&r>0&&(g(l).currentTime=n*r),g(l).play()}function z(){g(l)&&(g(l).paused?g(l).play():g(l).pause())}function U(e){if(g(l)){if(e.key===`Enter`||e.key===` `){e.preventDefault(),z();return}if(e.key===`ArrowRight`||e.key===`ArrowLeft`){let t=g(l).duration;if(!Number.isFinite(t)||t<=0)return;e.preventDefault();let n=e.key===`ArrowRight`?5:-5;g(l).currentTime=mt(g(l).currentTime+n,0,t)}}}L(()=>{let e=g(l);e&&(e.loop=i())}),L(()=>{let e=r.src,t=g(s);if(!t)return;m=`idle`,h=null,v=null,b=0,H(d,0),H(f,0),H(u,!1);let n=new Audio(e);n.preload=`metadata`,n.loop=_(()=>i());function a(){dt&&dt!==n&&dt.pause(),dt=n,H(u,!0),M(),O=requestAnimationFrame(P)}function o(){dt===n&&(dt=null),H(u,!1),M(),j()}function c(){dt===n&&(dt=null),H(u,!1),M(),j()}function p(){H(d,n.currentTime,!0),g(u)||j()}function y(){Number.isFinite(n.duration)&&H(f,n.duration,!0),j()}n.addEventListener(`play`,a),n.addEventListener(`pause`,o),n.addEventListener(`ended`,c),n.addEventListener(`timeupdate`,p),n.addEventListener(`loadedmetadata`,y),n.addEventListener(`durationchange`,y),n.addEventListener(`seeked`,p),H(l,n,!0);let x=new ResizeObserver(()=>{A(),j()});x.observe(t);let S=new IntersectionObserver(t=>{t.some(e=>e.isIntersecting)&&(S.disconnect(),I(e))});return S.observe(t),A(),j(),()=>{M(),x.disconnect(),S.disconnect(),n.removeEventListener(`play`,a),n.removeEventListener(`pause`,o),n.removeEventListener(`ended`,c),n.removeEventListener(`timeupdate`,p),n.removeEventListener(`loadedmetadata`,y),n.removeEventListener(`durationchange`,y),n.removeEventListener(`seeked`,p),n.pause(),dt===n&&(dt=null),n.removeAttribute(`src`),n.load(),H(l,null)}});var W=gt(),G=y(W);B(G,e=>H(s,e),()=>g(s));var K=e(G,2),q=e=>{var t=ht();ct(y(t),{get media(){return g(l)}}),w(t),c(e,t)};t(K,e=>{a()&&e(q)}),w(W),o(()=>S(W,1,`audio-waveform ${r.class??``??``}`,`svelte-1liihyn`)),p(`click`,G,R),p(`keydown`,G,U),c(n,W),F()}s([`click`,`keydown`]);var vt=d(`<div class="audio-frame svelte-1ww4cvx"><!></div>`),yt=d(`<p class="svelte-1ww4cvx">No proxy yet — add the asset to a manifest to process it.</p>`),bt=d(`<div class="stage checkerboard svelte-1ww4cvx"><!></div>`);function xt(e,n){V(n,!0);var r=bt(),i=y(r),a=e=>{var t=vt();A(y(t),()=>n.asset.proxy.url,e=>{_t(e,{get src(){return n.asset.proxy.url},showControls:!0})}),w(t),c(e,t)},o=e=>{c(e,yt())};t(i,e=>{n.asset.proxy?e(a):e(o,-1)}),w(r),c(e,r),F()}function St(e){if(e.scrubbedValue===null)return{};let t=e.startValue??e.min??0;return e.scrubbedValue===t?{rollbackTo:e.startValue}:{commit:e.scrubbedValue}}function Ct(e,t){return t.coarse?e*10:t.fine?e*.1:e}function wt(e){if(!Number.isFinite(e))return 0;let t=0,n=Math.abs(e);for(;t<10&&Math.abs(Math.round(n)-n)>1e-9;)n*=10,t+=1;return t}function Tt(e,t){let n=10**t;return Math.round(e*n)/n}function Et(e){let t=Ct(e.step,e.modifiers),n=Tt(e.startValue+e.deltaX*t,wt(t));return e.min!==void 0&&(n=Math.max(e.min,n)),e.max!==void 0&&(n=Math.min(e.max,n)),n}function Dt(e,t){t.buttons!==0&&!e.hasPointerCapture(t.pointerId)&&e.setPointerCapture(t.pointerId)}function Ot(e,t){e.hasPointerCapture(t)&&e.releasePointerCapture(t)}var kt=d(`<span class="suffix svelte-nhap92" aria-hidden="true"> </span>`),At=d(`<span class="scrub-surface svelte-nhap92" title="Drag to change — Shift: ×10, Alt: ×0.1" role="presentation" aria-hidden="true"></span>`),jt=d(`<span><input class="input svelte-nhap92" type="number"/> <!> <!></span>`);function Mt(n,r){V(r,!0);let i=x(r,`step`,3,1),a=x(r,`placeholder`,3,``),s=x(r,`allowNull`,3,!1),l=x(r,`align`,3,`left`),u=N(null),d=N(!1),f=N(null),m=N(null),h=z(()=>g(u)?.activated?g(u).currentValue:r.value),_=z(()=>Math.max(1,g(m)??String(g(h)??a()).length));function b(e){return{coarse:e.shiftKey,fine:e.altKey}}function C(e){e.preventDefault(),Dt(e.currentTarget,e),H(u,{pointerId:e.pointerId,startX:e.clientX,startValue:r.value,currentValue:null,activated:!1},!0)}function T(e){if(!g(u)||e.pointerId!==g(u).pointerId)return;let t=e.clientX-g(u).startX;if(!g(u).activated){if(Math.abs(t)<3)return;g(u).activated=!0,document.body.style.cursor=`ew-resize`}let n=Et({startValue:g(u).startValue??r.min??0,deltaX:t,step:i(),modifiers:b(e),min:r.min,max:r.max});n!==g(u).currentValue&&(g(u).currentValue=n,r.onChange?.(n))}function D(e){if(!g(u)||e.pointerId!==g(u).pointerId)return;Ot(e.currentTarget,e.pointerId);let t=g(u).activated,n=g(u).startValue,i=g(u).currentValue;if(H(u,null),document.body.style.cursor=``,!t){M();return}let a=St({startValue:n,scrubbedValue:i,min:r.min});a.commit===void 0?`rollbackTo`in a&&r.onChange?.(a.rollbackTo??null):r.onCommit(a.commit)}function A(){if(!g(u))return;let e=g(u).startValue,t=g(u).activated;H(u,null),document.body.style.cursor=``,t&&r.onChange?.(e)}function j(e){g(u)&&e.key===`Escape`&&(e.preventDefault(),A())}L(()=>()=>{g(u)&&(document.body.style.cursor=``)});function M(){H(d,!0),queueMicrotask(()=>{g(f)?.focus(),g(f)?.select()})}function P(e){let t=e.currentTarget.valueAsNumber;Number.isFinite(t)?r.onCommit(t):r.onCommit(s()?null:r.min??0)}function R(e){H(m,e.currentTarget.value.length,!0)}function U(e){e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&(e.currentTarget.value=g(h)===null?``:String(g(h)),e.currentTarget.blur())}var W=jt();q(`keydown`,v,j);let G;var J=y(W);E(J);let Y;B(J,e=>H(f,e),()=>g(f));var ee=e(J,2),te=e=>{var t=kt(),n=y(t,!0);w(t),o(()=>k(n,r.suffix)),c(e,t)};t(ee,e=>{r.suffix!==void 0&&e(te)});var ne=e(ee,2),re=e=>{var t=At();p(`pointerdown`,t,C),p(`pointermove`,t,T),p(`pointerup`,t,D),q(`pointercancel`,t,A),c(e,t)};t(ne,e=>{g(d)||e(re)}),w(W),o(()=>{G=S(W,1,`scrub-number svelte-nhap92`,null,G,{right:l()===`right`,"with-suffix":r.suffix!==void 0}),I(J,`aria-label`,r.ariaLabel),I(J,`min`,r.min),I(J,`max`,r.max),I(J,`step`,i()),I(J,`placeholder`,a()),O(J,g(h)??``),Y=K(J,``,Y,{width:r.suffix===void 0?void 0:`${g(_)}ch`})}),q(`focus`,J,e=>{H(d,!0),H(m,e.currentTarget.value.length,!0)}),q(`blur`,J,()=>{H(d,!1),H(m,null)}),p(`input`,J,R),p(`change`,J,P),p(`keydown`,J,U),c(n,W),F()}s([`input`,`change`,`keydown`,`pointerdown`,`pointermove`,`pointerup`]);var Nt=d(`<span class="caption svelte-368zap"> </span>`),Pt=d(`<span class="fill svelte-368zap"></span>`),Ft=d(`<div class="number-field svelte-368zap"><!> <div class="number-input control svelte-368zap"><!> <span class="icon-slot svelte-368zap"><!></span> <!></div></div>`);function It(n,r){let i=x(r,`step`,3,1),s=x(r,`placeholder`,3,``),u=x(r,`rangeFill`,3,!0),d=z(()=>!u()||r.min===void 0||r.max===void 0||r.value===null||r.max<=r.min?null:Math.max(0,Math.min(100,(r.value-r.min)/(r.max-r.min)*100)));var p=Ft(),h=y(p),_=e=>{var t=Nt(),n=y(t,!0);w(t),o(()=>k(n,r.caption)),c(e,t)};t(h,e=>{r.caption&&e(_)});var v=e(h,2),b=y(v),S=e=>{var t=Pt();o(()=>K(t,`width: ${g(d)??``}%`)),c(e,t)};t(b,e=>{g(d)!==null&&e(S)});var C=e(b,2),T=y(C),E=e=>{var t=l();m(f(t),()=>r.icon),c(e,t)},D=e=>{var t=a();o(()=>k(t,r.label)),c(e,t)};t(T,e=>{r.icon?e(E):e(D,-1)}),w(C),Mt(e(C,2),{get value(){return r.value},get min(){return r.min},get max(){return r.max},get step(){return i()},get placeholder(){return s()},get suffix(){return r.suffix},allowNull:!0,get ariaLabel(){return r.label},get onChange(){return r.onChange},get onCommit(){return r.onCommit}}),w(v),w(p),o(()=>I(C,`title`,r.label)),c(n,p)}var Lt=d(`<h3 class="svelte-1ol624f"><!></h3>`);function Rt(e,t){var n=Lt();m(y(n),()=>t.children),w(n),c(e,n)}var zt=d(`<span class="caption svelte-bczi6w"> </span>`),Bt=d(`<option> </option>`),Vt=d(`<div class="select-field svelte-bczi6w"><!> <div class="select-input control svelte-bczi6w"><span class="icon-slot svelte-bczi6w"><!></span> <select class="svelte-bczi6w"></select></div></div>`);function Ht(n,i){V(i,!0);var s=Vt(),u=y(s),d=e=>{var t=zt(),n=y(t,!0);w(t),o(()=>k(n,i.caption)),c(e,t)};t(u,e=>{i.caption&&e(d)});var h=e(u,2),g=y(h),_=y(g),v=e=>{var t=l();m(f(t),()=>i.icon),c(e,t)},x=e=>{var t=a();o(e=>k(t,e),[()=>i.label.slice(0,1)]),c(e,t)};t(_,e=>{i.icon?e(v):e(x,-1)}),w(g);var S=e(g,2);r(S,20,()=>i.options,e=>e,(e,t)=>{var n=Bt(),r=y(n,!0);w(n);var i={};o(()=>{k(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),c(e,n)}),w(S);var C;b(S),w(h),w(s),o(()=>{I(g,`title`,i.label),I(S,`aria-label`,i.label),C!==(C=i.value)&&(S.value=(S.__value=i.value)??``,W(S,i.value))}),p(`change`,S,e=>i.onChange(e.currentTarget.value)),c(n,s),F()}s([`change`]);var Ut=d(`<p class="info svelte-m9vwwu"><!> <!> <br/> <span class="file svelte-m9vwwu"> </span></p>`),Wt=d(`<p class="hint svelte-m9vwwu">No proxy yet — add the asset to a manifest to process it.</p>`),Gt=d(`<section class="svelte-m9vwwu"><!> <!></section>`);function Kt(n,r){V(r,!0);let i=x(r,`showDimensions`,3,!1),s=x(r,`showDuration`,3,!1);var l=Gt(),u=y(l);Rt(u,{children:(e,t)=>{U(),c(e,a(`Output`))},$$slots:{default:!0}});var d=e(u,2),f=n=>{var l=Ut(),u=y(l),d=e=>{var t=a();o(()=>k(t,`${r.proxy.width??``} × ${r.proxy.height??``} px ·`)),c(e,t)};t(u,e=>{i()&&r.proxy.width!==void 0&&r.proxy.height!==void 0&&e(d)});var f=e(u,2),p=e=>{var t=a();o(e=>k(t,`${e??``} ·`),[()=>je(r.proxy.durationMs)]),c(e,t)};t(f,e=>{s()&&r.proxy.durationMs!==void 0&&e(p)});var m=e(f),h=e(m,3),g=y(h,!0);w(h),w(l),o(e=>{k(m,` ${e??``} `),k(g,r.proxy.fileName)},[()=>Me(r.proxy.fileSize)]),c(n,l)},p=e=>{c(e,Wt())};t(d,e=>{r.proxy?e(f):e(p,-1)}),w(l),c(n,l),F()}var qt=d(`<section class="svelte-1by8n8t"><!> <div class="field svelte-1by8n8t"><!></div> <div class="field svelte-1by8n8t"><!></div></section> <!>`,1);function Jt(t,n){V(n,!0);let r=z(()=>Te.validateParameters(n.parameters));function i(e){n.onParametersCommit(e)}function o(e){i({...g(r),preset:e})}function s(e){let{targetWidth:t,...n}=g(r);return e===null||!Number.isFinite(e)||e<=0?n:{...n,targetWidth:Math.round(e)}}function l(e,t){let r=s(e);t?i(r):n.onParametersChange(r)}var u=qt(),d=f(u),p=y(d);Rt(p,{children:(e,t)=>{U(),c(e,a(`Image`))},$$slots:{default:!0}});var m=e(p,2);Ht(y(m),{label:`Preset`,caption:`Preset`,get value(){return g(r).preset},get options(){return n.presetNames},onChange:o,icon:e=>{Oe(e,{name:`preset`})},$$slots:{icon:!0}}),w(m);var h=e(m,2),_=y(h);{let e=e=>{Oe(e,{name:`width`})},t=z(()=>g(r).targetWidth??null);It(_,{label:`Target width`,caption:`Target width`,min:1,placeholder:`source`,get value(){return g(t)},onChange:e=>l(e,!1),onCommit:e=>l(e,!0),icon:e,$$slots:{icon:!0}})}w(h),w(d),Kt(e(d,2),{get proxy(){return n.asset.proxy},showDimensions:!0}),c(t,u),F()}new Set([...new Set([`video`,`chroma-key-video`,`audio`])].filter(e=>fe.has(e)));function Yt(e){if(e.ok)return!0;if(e.status!==0||e.type!==`basic`)return!1;try{let t=new URL(e.url).protocol;return t!==`http:`&&t!==`https:`}catch{return!1}}async function Xt(e){let t=await fetch(e);if(!Yt(t))throw Error(`Preloading "${e}" failed: ${t.status} ${t.statusText}.`);return t}function Zt(e,t,n){if(n!==t)throw Error(`Preloading "${e}" failed: expected ${t} bytes, received ${n}.`)}var Qt={async preload(e,t){if(Zt(e,t,(await(await Xt(e)).arrayBuffer()).byteLength),typeof globalThis.Image==`function`){let t=new globalThis.Image;return t.src=e,await t.decode(),{image:t}}return{}}},$t={async preload(e,t,n){let r=await(await Xt(e)).blob();if(Zt(e,t,r.size),n?.slicing?.mode!==`one`&&typeof globalThis.createImageBitmap==`function`)return{imageBitmap:await globalThis.createImageBitmap(r,{premultiplyAlpha:`premultiply`})};if(typeof globalThis.Image==`function`){let t=new globalThis.Image;return t.src=e,await t.decode(),{image:t}}return{}},release(e){e.imageBitmap?.close()}},en={async preload(e,t){let n=await(await Xt(e)).blob();return Zt(e,t,n.size),typeof URL.createObjectURL==`function`?{objectUrl:URL.createObjectURL(n)}:{}},release(e){e.objectUrl!==void 0&&typeof URL.revokeObjectURL==`function`&&URL.revokeObjectURL(e.objectUrl)}},tn={image:Qt,slice:$t,video:en,"chroma-key-video":en,audio:en};new Map(Object.entries(fe.project(tn,`runtime handler`)));var nn=new Map;function rn(e){return nn.get(e)?.resources?.objectUrl??e}function an(e){let t=nn.get(e)?.resources;return t?.imageBitmap??t?.image??null}function on(e,t,n){return Math.max(t,Math.min(n,e))}function sn(e){let{mode:t,insets:n}=e.slicing,r=J(t);return{top:r.vertical?n.top:0,bottom:r.vertical?n.bottom:0,left:r.horizontal?n.left:0,right:r.horizontal?n.right:0}}function cn(e){let t=e.slicing.overdraw;if(!t)return pe();let n=e.sourceWidth,r=e.sourceHeight,i=on(t.left,0,Math.max(0,n-1)),a=on(t.right,0,Math.max(0,n-i-1)),o=on(t.top,0,Math.max(0,r-1));return{top:o,right:a,bottom:on(t.bottom,0,Math.max(0,r-o-1)),left:i}}function ln(e){let t=cn(e);return{width:Math.max(1,e.sourceWidth-t.left-t.right),height:Math.max(1,e.sourceHeight-t.top-t.bottom)}}function un(e,t,n){let r=cn(e);if(r.top===0&&r.right===0&&r.bottom===0&&r.left===0)return r;let i=e.slicing.pixelRatio>0?e.slicing.pixelRatio:1,a=ln(e),o,s;return e.slicing.mode===`three-horizontal`?o=s=n/a.height:e.slicing.mode===`three-vertical`?o=s=t/a.width:e.slicing.mode===`one`?(o=t/a.width,s=n/a.height):o=s=1/i,{top:Math.round(r.top*s),right:Math.round(r.right*o),bottom:Math.round(r.bottom*s),left:Math.round(r.left*o)}}function dn(e,t,n,r){let i=t>0?Math.max(1,Math.round(t)):0,a=n>0?Math.max(1,Math.round(n)):0,o=un(e,i,a),s=i+o.left+o.right,c=a+o.top+o.bottom,l=i>0?t/i:1,u=a>0?n/a:1;return{renderWidth:i,renderHeight:a,cssLeft:-o.left*l+0,cssTop:-o.top*u+0,cssWidth:s*l,cssHeight:c*u,backingWidth:s*r,backingHeight:c*r,originX:o.left*r,originY:o.top*r}}function fn(e,t){return[t(e[0]),t(e[1]),t(e[2]),t(e[3])]}function pn(e){let t=0,n=[0];for(let r of e)t+=r,n.push(Math.round(t));return n}function mn(e,t,n){let r=un(e,t,n),i=t+r.left+r.right,a=n+r.top+r.bottom,o=e.sourceWidth,s=e.sourceHeight,c=e.slicing.pixelRatio>0?e.slicing.pixelRatio:1,l=e.slicing.mode,u=sn(e),d=on(u.left,0,o),f=on(u.right,0,Math.max(0,o-d)),p=on(u.top,0,s),m=on(u.bottom,0,Math.max(0,s-p)),h=Math.max(0,o-d-f),g=Math.max(0,s-p-m),_,v;if(l===`three-horizontal`){let e=a/s;_=d*e,v=f*e}else _=d/c,v=f/c;let y=Math.max(0,i-_-v),b,x;if(l===`three-vertical`){let e=i/o;b=p*e,x=m*e}else b=p/c,x=m/c;let S=Math.max(0,a-b-x),C=pn([_,y,v]),w=pn([b,S,x]);return{sourceX:[0,d,d+h,d+h+f],sourceY:[0,p,p+g,p+g+m],destX:fn(C,e=>e-r.left),destY:fn(w,e=>e-r.top)}}function hn(e,t,n,r,i){if(![t,n,r,i].every(Number.isFinite))throw RangeError(`Slice grid coordinates and dimensions must be finite.`);let a=r>0?Math.max(1,Math.round(r)):0,o=i>0?Math.max(1,Math.round(i)):0,s=mn(e,a,o),c=(e,t,n,r)=>{if(r===0)return[t,t,t,t];let i=n/r;return fn(e,e=>t+e*i)};return{sourceX:s.sourceX,sourceY:s.sourceY,destX:c(s.destX,t,r,a),destY:c(s.destY,n,i,o)}}function gn(e,t,n,r,i,a,o){let{sourceX:s,sourceY:c,destX:l,destY:u}=hn(t,r,i,a,o);for(let t=0;t<3;t++){let r=c[t+1]-c[t],i=u[t+1]-u[t];if(!(r<=0||i<=0))for(let a=0;a<3;a++){let o=s[a+1]-s[a],d=l[a+1]-l[a];o<=0||d<=0||e.drawImage(n,s[a],c[t],o,r,l[a],u[t],d,i)}}}var _n=new Set([`$$slots`,`$$events`,`$$legacy`,`src`]),vn=d(`<img/>`);function yn(e,t){V(t,!0);let r=P(t,_n);L(()=>(t.src,void 0));var i=vn();C(i,()=>({src:t.src.src,width:t.src.width,height:t.src.height,...r})),n(i),c(e,i),F()}function bn(e,t){let n=new ResizeObserver(n=>{let r=n[0]?.borderBoxSize?.[0];t(r?.inlineSize??e.offsetWidth,r?.blockSize??e.offsetHeight)});return n.observe(e),()=>n.disconnect()}function xn(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap&&e.width===0}function Sn(e){let t=new Image;return t.decoding=`async`,t.src=e,t.decode().then(()=>t)}var Cn=class{#e;#t;#n;#r=null;#i=null;#a=new Map;#o=!1;constructor(e,t=Sn,n=an){this.#n=e,this.#e=t,this.#t=n}request(e){if(this.#o)return;this.#r=e;let t=this.#i;if(t?.entry.src===e.src&&!xn(t.image)){this.#l({entry:e,image:t.image});return}let n=this.#t(e.src);if(n){this.#l({entry:e,image:n});return}if(this.#a.has(e.src))return;let r;try{r=Promise.resolve(this.#e(e.src))}catch(e){r=Promise.reject(e)}let i={promise:r};this.#a.set(e.src,i),r.then(t=>this.#s(e.src,i,t),()=>this.#c(e.src,i))}dispose(){this.#o||(this.#o=!0,this.#r=null,this.#i=null,this.#a.clear())}#s(e,t,n){if(this.#a.get(e)!==t||(this.#a.delete(e),this.#o))return;let r=this.#r;!r||r.src!==e||this.#l({entry:r,image:n})}#c(e,t){this.#a.get(e)===t&&this.#a.delete(e)}#l(e){this.#o||(this.#i=e,this.#n(e))}},wn=d(`<img class="svelte-3n5l3f"/>`),Tn=d(`<canvas class="svelte-3n5l3f"></canvas>`),En=d(`<div><!></div>`);function Dn(e,n){V(n,!0);let r=x(n,`maxDpr`,3,2),i=x(n,`alt`,3,``),a=x(n,`class`,3,``),s=N(null),l=new Cn(e=>{H(s,e)});L(()=>{l.request(n.src)}),L(()=>(n.src,void 0)),M(()=>l.dispose());let u=N(void 0),d=N(void 0),f=N(0),p=N(0),m=N(1),h=N(0);L(()=>{let e=g(m),t=window.matchMedia(`(resolution: ${e}dppx)`),n=()=>{H(m,window.devicePixelRatio||1,!0)};return n(),t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}),L(()=>{let e=g(u);if(e)return bn(e,(e,t)=>{H(f,e,!0),H(p,t,!0)})});let _={renderWidth:0,renderHeight:0,cssLeft:0,cssTop:0,cssWidth:0,cssHeight:0,backingWidth:0,backingHeight:0,originX:0,originY:0},b=z(()=>{let e=Math.max(1,Math.floor(r()));return Math.min(e,Math.max(1,Math.floor(g(m))))}),C=z(()=>{let e=g(s);return e?dn(e.entry,g(f),g(p),g(b)):_});L(()=>{let e=g(s),t=g(C);g(h),T(e,t)});function T(e,t){let r=g(d);if(!r||e?.entry.slicing.mode===`one`)return;if(!e||g(f)===0||g(p)===0){r.width=0,r.height=0;return}if(xn(e.image)){l.request(n.src);return}r.width=t.backingWidth,r.height=t.backingHeight;let i=r.getContext(`2d`);i&&(i.setTransform(g(b),0,0,g(b),t.originX,t.originY),i.clearRect(t.cssLeft,t.cssTop,t.cssWidth,t.cssHeight),gn(i,e.entry,e.image,0,0,t.renderWidth,t.renderHeight))}var E=En();q(`resize`,v,()=>H(h,g(h)+1));var D=y(E),O=e=>{var t=wn();let n;o(()=>{I(t,`src`,g(s).entry.src),I(t,`alt`,i()),n=K(t,``,n,{left:`${g(C).cssLeft??``}px`,top:`${g(C).cssTop??``}px`,width:`${g(C).cssWidth??``}px`,height:`${g(C).cssHeight??``}px`})}),c(e,t)},k=e=>{var t=Tn();let n;B(t,e=>H(d,e),()=>g(d)),o(()=>n=K(t,``,n,{left:`${g(C).cssLeft??``}px`,top:`${g(C).cssTop??``}px`,width:`${g(C).cssWidth??``}px`,height:`${g(C).cssHeight??``}px`})),c(e,t)};t(D,e=>{g(s)?.entry.slicing.mode===`one`?e(O):g(s)&&e(k,1)}),w(E),B(E,e=>H(u,e),()=>g(u)),o(()=>{S(E,1,`fundus-slice ${a()??``}`,`svelte-3n5l3f`),K(E,n.style),I(E,`role`,g(s)?.entry.slicing.mode===`one`?void 0:i()?`img`:void 0),I(E,`aria-label`,g(s)?.entry.slicing.mode===`one`?void 0:i()||void 0)}),c(e,E),F()}var On=d(`<video playsinline="" preload="auto"></video>`,2);function kn(e,t){V(t,!0);let n=x(t,`loop`,3,!1),r=x(t,`playing`,3,!0),i=x(t,`muted`,3,!0),a=x(t,`controls`,3,!1),s=x(t,`videoElement`,15),l=x(t,`class`,3,``),u=z(()=>rn(t.src.src));L(()=>(t.src,void 0)),L(()=>{let e=s();e&&(r()?e.play().catch(()=>{}):e.pause())});var d=On();B(d,e=>s(e),()=>s()),o(()=>{I(d,`src`,g(u)),I(d,`width`,t.src.width),I(d,`height`,t.src.height),d.loop=n(),d.muted=i(),d.controls=a(),S(d,1,G(l())),K(d,t.style)}),c(e,d),F()}var An=`#version 300 es
|
|
2
|
+
in vec2 a_pos;
|
|
3
|
+
out vec2 v_uv;
|
|
4
|
+
void main() {
|
|
5
|
+
// Fullscreen clip-space triangle pair; v flipped so the video isn't mirrored on Y
|
|
6
|
+
// (GL texture rows are bottom-up, and flipping here beats a per-frame UNPACK flip).
|
|
7
|
+
v_uv = vec2(a_pos.x * 0.5 + 0.5, 0.5 - a_pos.y * 0.5);
|
|
8
|
+
gl_Position = vec4(a_pos, 0.0, 1.0);
|
|
9
|
+
}`,jn=`#version 300 es
|
|
10
|
+
precision highp float;
|
|
11
|
+
|
|
12
|
+
in vec2 v_uv;
|
|
13
|
+
out vec4 fragColor;
|
|
14
|
+
|
|
15
|
+
uniform sampler2D u_texture;
|
|
16
|
+
uniform sampler2D u_mask;
|
|
17
|
+
uniform vec2 u_texelSize;
|
|
18
|
+
uniform vec3 u_keyColor;
|
|
19
|
+
uniform vec4 u_tintColor;
|
|
20
|
+
uniform float u_colorCutoff;
|
|
21
|
+
uniform float u_colorFeathering;
|
|
22
|
+
uniform float u_maskFeathering;
|
|
23
|
+
uniform float u_sharpening;
|
|
24
|
+
uniform float u_despill;
|
|
25
|
+
uniform float u_despillLuminanceAdd;
|
|
26
|
+
uniform vec3 u_spillChannels;
|
|
27
|
+
uniform float u_despillCoverage;
|
|
28
|
+
|
|
29
|
+
float rgb2y(vec3 c) {
|
|
30
|
+
return 0.299 * c.r + 0.587 * c.g + 0.114 * c.b;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
float rgb2cb(vec3 c) {
|
|
34
|
+
return 0.5 - 0.168736 * c.r - 0.331264 * c.g + 0.5 * c.b;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
float rgb2cr(vec3 c) {
|
|
38
|
+
return 0.5 + 0.5 * c.r - 0.418688 * c.g - 0.081312 * c.b;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
float colorclose(float Cb_p, float Cr_p, float Cb_key, float Cr_key, float tola, float tolb) {
|
|
42
|
+
float temp = (Cb_key - Cb_p) * (Cb_key - Cb_p) + (Cr_key - Cr_p) * (Cr_key - Cr_p);
|
|
43
|
+
float tola2 = tola * tola;
|
|
44
|
+
float tolb2 = tolb * tolb;
|
|
45
|
+
if (temp < tola2) return 0.0;
|
|
46
|
+
if (temp < tolb2) return (temp - tola2) / (tolb2 - tola2);
|
|
47
|
+
return 1.0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
float maskedTex2D(sampler2D tex, vec2 uv) {
|
|
51
|
+
vec4 color = texture(tex, uv);
|
|
52
|
+
|
|
53
|
+
float key_cb = rgb2cb(u_keyColor);
|
|
54
|
+
float key_cr = rgb2cr(u_keyColor);
|
|
55
|
+
float pix_cb = rgb2cb(color.rgb);
|
|
56
|
+
float pix_cr = rgb2cr(color.rgb);
|
|
57
|
+
|
|
58
|
+
return colorclose(pix_cb, pix_cr, key_cb, key_cr, u_colorCutoff, u_colorFeathering);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void main() {
|
|
62
|
+
vec2 pixelWidth = vec2(u_texelSize.x, 0.0);
|
|
63
|
+
vec2 pixelHeight = vec2(0.0, u_texelSize.y);
|
|
64
|
+
|
|
65
|
+
// Unmodified MainTex
|
|
66
|
+
vec4 color = texture(u_texture, v_uv);
|
|
67
|
+
|
|
68
|
+
// Unfeathered mask
|
|
69
|
+
float mask = maskedTex2D(u_texture, v_uv);
|
|
70
|
+
|
|
71
|
+
// Feathering & smoothing
|
|
72
|
+
float c = mask;
|
|
73
|
+
float r = maskedTex2D(u_texture, v_uv + pixelWidth);
|
|
74
|
+
float l = maskedTex2D(u_texture, v_uv - pixelWidth);
|
|
75
|
+
float d = maskedTex2D(u_texture, v_uv + pixelHeight);
|
|
76
|
+
float u = maskedTex2D(u_texture, v_uv - pixelHeight);
|
|
77
|
+
float rd = maskedTex2D(u_texture, v_uv + pixelWidth + pixelHeight) * 0.707;
|
|
78
|
+
float dl = maskedTex2D(u_texture, v_uv - pixelWidth + pixelHeight) * 0.707;
|
|
79
|
+
float lu = maskedTex2D(u_texture, v_uv - pixelHeight - pixelWidth) * 0.707;
|
|
80
|
+
float ur = maskedTex2D(u_texture, v_uv + pixelWidth - pixelHeight) * 0.707;
|
|
81
|
+
float blurContribution = (r + l + d + u + rd + dl + lu + ur + c) * 0.12774655;
|
|
82
|
+
float smoothedMask = smoothstep(u_sharpening, 1.0, mix(c, blurContribution, u_maskFeathering));
|
|
83
|
+
vec4 result = color * smoothedMask;
|
|
84
|
+
|
|
85
|
+
// Despill (Fundus, see the header): clamp the spill channels to the strongest other
|
|
86
|
+
// channel. Non-spill channels read as 1.0 in the min and 0.0 in the max (result is
|
|
87
|
+
// in 0–1); a key without spill channels has an all-zero mask and subtracts nothing.
|
|
88
|
+
vec3 spillValues = mix(vec3(1.0), result.rgb, u_spillChannels);
|
|
89
|
+
vec3 otherValues = result.rgb * (1.0 - u_spillChannels);
|
|
90
|
+
float spillExcess = max(
|
|
91
|
+
min(spillValues.r, min(spillValues.g, spillValues.b)) -
|
|
92
|
+
max(otherValues.r, max(otherValues.g, otherValues.b)),
|
|
93
|
+
0.0
|
|
94
|
+
);
|
|
95
|
+
// Full despill where the mask is at most 0.8 (the keyed edge), coverage-scaled
|
|
96
|
+
// above it.
|
|
97
|
+
float coverage = mix(1.0 - smoothstep(0.8, 1.0, smoothedMask), 1.0, u_despillCoverage);
|
|
98
|
+
result.rgb -= u_spillChannels * spillExcess * u_despill * coverage;
|
|
99
|
+
vec4 dif = color - result;
|
|
100
|
+
float desaturatedDif = rgb2y(dif.xyz);
|
|
101
|
+
result += mix(0.0, desaturatedDif, u_despillLuminanceAdd);
|
|
102
|
+
|
|
103
|
+
// Fundus mask pass: a grayscale shape mask multiplies
|
|
104
|
+
// the keyed alpha.
|
|
105
|
+
float shapeMask = texture(u_mask, v_uv).r;
|
|
106
|
+
vec4 keyed = vec4(result.xyz, smoothedMask * shapeMask) * u_tintColor;
|
|
107
|
+
|
|
108
|
+
// Premultiplied output: keyed matches the upstream SrcAlpha/OneMinusSrcAlpha
|
|
109
|
+
// blending; multiplying rgb by alpha is that blend's exact premultiplied
|
|
110
|
+
// equivalent. Straight-alpha output (premultipliedAlpha: false) is NOT an option:
|
|
111
|
+
// iOS WKWebView composites the WebGL canvas as premultiplied regardless of the
|
|
112
|
+
// flag, and the despill luminance-add above leaves fully-transparent background
|
|
113
|
+
// pixels with nonzero rgb (the upstream blend ignores rgb
|
|
114
|
+
// at alpha 0) which then composite additively — a visible bright veil over the
|
|
115
|
+
// whole canvas rect on iOS.
|
|
116
|
+
fragColor = vec4(keyed.rgb * keyed.a, keyed.a);
|
|
117
|
+
}`;function Mn(e){let[t,n,r]=e;return[+(2*t>n+r),+(2*n>t+r),+(2*r>t+n)]}function Nn(e){let t=(t,n)=>{let r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`Chroma-key shader compilation failed: ${t}.`)}return r},n=e.createProgram();if(e.attachShader(n,t(e.VERTEX_SHADER,An)),e.attachShader(n,t(e.FRAGMENT_SHADER,jn)),e.linkProgram(n),!e.getProgramParameter(n,e.LINK_STATUS)){let t=e.getProgramInfoLog(n);throw e.deleteProgram(n),Error(`Chroma-key program linking failed: ${t}.`)}return n}var Pn=class e{#e;#t;#n;#r;#i;#a;#o;#s=null;#c=!1;static create(t){let n=t.getContext(`webgl2`,{premultipliedAlpha:!0,alpha:!0,depth:!1,stencil:!1,antialias:!1});if(!n)return null;try{return new e(n,t)}catch{return null}}constructor(e,t){this.#e=e,this.#t=t,t.addEventListener(`webglcontextlost`,this.#l),t.addEventListener(`webglcontextrestored`,this.#u),this.#d()}#l=e=>{e.preventDefault(),this.#c=!0};#u=()=>{try{this.#d(),this.#c=!1}catch{this.#c=!0}};#d(){let e=this.#e;this.#n=Nn(e),e.useProgram(this.#n);let t=t=>e.getUniformLocation(this.#n,t);this.#a={texelSize:t(`u_texelSize`),keyColor:t(`u_keyColor`),tintColor:t(`u_tintColor`),colorCutoff:t(`u_colorCutoff`),colorFeathering:t(`u_colorFeathering`),maskFeathering:t(`u_maskFeathering`),sharpening:t(`u_sharpening`),despill:t(`u_despill`),despillLuminanceAdd:t(`u_despillLuminanceAdd`),spillChannels:t(`u_spillChannels`),despillCoverage:t(`u_despillCoverage`)},e.uniform1i(e.getUniformLocation(this.#n,`u_texture`),0),e.uniform1i(e.getUniformLocation(this.#n,`u_mask`),1),e.uniform4f(this.#a.tintColor,1,1,1,1),this.#r=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.#r),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),e.STATIC_DRAW);let n=e.getAttribLocation(this.#n,`a_pos`);e.enableVertexAttribArray(n),e.vertexAttribPointer(n,2,e.FLOAT,!1,0,0),this.#i=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.#i),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),this.#o=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.#o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),this.#f(),e.disable(e.DEPTH_TEST),e.disable(e.BLEND),e.clearColor(0,0,0,0)}setMask(e){this.#s=e,this.#c||this.#f()}#f(){let e=this.#e;e.bindTexture(e.TEXTURE_2D,this.#o),this.#s?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.#s):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array([255,255,255,255]))}draw(e,t){if(this.#c||e.videoWidth===0)return;let n=this.#e;(this.#t.width!==e.videoWidth||this.#t.height!==e.videoHeight)&&(this.#t.width=e.videoWidth,this.#t.height=e.videoHeight,n.viewport(0,0,e.videoWidth,e.videoHeight)),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this.#o),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,this.#i),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,e),n.useProgram(this.#n),n.uniform2f(this.#a.texelSize,1/e.videoWidth,1/e.videoHeight),n.uniform3fv(this.#a.keyColor,t.keyColor),n.uniform1f(this.#a.colorCutoff,t.colorCutoff),n.uniform1f(this.#a.colorFeathering,t.colorFeathering),n.uniform1f(this.#a.maskFeathering,t.maskFeathering),n.uniform1f(this.#a.sharpening,t.sharpening),n.uniform1f(this.#a.despill,t.despill),n.uniform1f(this.#a.despillLuminanceAdd,t.despillLuminanceAdd),n.uniform3fv(this.#a.spillChannels,Mn(t.keyColor)),n.uniform1f(this.#a.despillCoverage,t.despillCoverage??Y.despillCoverage),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.TRIANGLE_STRIP,0,4)}clear(){this.#c||this.#e.clear(this.#e.COLOR_BUFFER_BIT)}dispose(){this.#t.removeEventListener(`webglcontextlost`,this.#l),this.#t.removeEventListener(`webglcontextrestored`,this.#u);let e=this.#e;e.deleteBuffer(this.#r),e.deleteTexture(this.#i),e.deleteTexture(this.#o),e.deleteProgram(this.#n),e.getExtension(`WEBGL_lose_context`)?.loseContext()}},Fn=2;function In(e){return{...e,keyColor:[...e.keyColor]}}function Ln(e,t){t.loop=e.loop,t.playbackRate=e.playbackRate}var Rn=class{#e;#t;#n;#r=null;#i=null;#a=0;#o=!1;#s=!1;#c=!1;#l=0;#u=!1;#d=null;constructor(e,t,n=e,r){this.#e=[e,n],this.#t=t,this.#n=r;for(let e of new Set(this.#e))this.#f(e)}switchSource(e){if(this.#s)return;let t=this.#i;if(t&&this.#m(t,e)&&t.status===`loading`)return;let n=this.#r;if(n&&this.#m(n,e)&&n.status===`settled`){this.#g(),n.chromaKey=In(e.chromaKey);return}this.#g();let r=this.#h(n),i=n?this.#o&&(n.video.ended||!n.video.paused||n.playRequestPending):this.#o;n&&r===n.video&&(this.#j(n),this.#P(),n.status=`disposed`,this.#r=null,n.video.pause());let a={generation:++this.#a,status:`loading`,video:r,rawVideoUrl:e.rawVideoUrl,normalizedVideoUrl:e.resolvedVideoUrl,maskUrl:e.maskUrl,maskImage:null,chromaKey:In(e.chromaKey),mediaSettled:!1,maskSettled:!e.maskUrl,playAfterHandoff:i,playRequestToken:0,playRequestPending:!1,playRejectedForCurrentIntent:!1};this.#i=a,this.#c||this.#t.setMask(null),r.pause(),r.src=e.resolvedVideoUrl,a.normalizedVideoUrl=r.src,r.load(),this.#v(a),e.maskUrl&&this.#_(a,e.maskUrl)}setPlaying(e){if(this.#s)return;let t=this.#o!==e;this.#o=e;let n=this.#r,r=this.#i;if(r?.status===`loading`&&(r.playAfterHandoff=e),!e){this.#j(n),this.#P(),n?.video.pause();return}t&&n&&(n.playRejectedForCurrentIntent=!1),n&&(n.playAfterHandoff=!0,this.#k(n))}setChromaKey(e){if(this.#s)return;let t=this.#i??this.#r;!t||t.status===`failed`||t.status===`disposed`||(t.chromaKey=In(e),t===this.#r&&t.status===`settled`&&t.video.paused&&this.#D(t)&&this.#T(t))}dispose(){if(!this.#s){this.#s=!0,this.#a++,this.#j(this.#r),this.#j(this.#i),this.#P(),this.#r&&(this.#r.status=`disposed`),this.#i&&(this.#i.status=`disposed`),this.#r=null,this.#i=null;for(let e of new Set(this.#e))this.#p(e),e.pause()}}#f(e){e.addEventListener(`play`,this.#x),e.addEventListener(`pause`,this.#S),e.addEventListener(`ended`,this.#S),e.addEventListener(`seeked`,this.#C),e.addEventListener(`loadeddata`,this.#y),e.addEventListener(`error`,this.#b)}#p(e){e.removeEventListener(`play`,this.#x),e.removeEventListener(`pause`,this.#S),e.removeEventListener(`ended`,this.#S),e.removeEventListener(`seeked`,this.#C),e.removeEventListener(`loadeddata`,this.#y),e.removeEventListener(`error`,this.#b)}#m(e,t){return e.rawVideoUrl===t.rawVideoUrl&&e.maskUrl===t.maskUrl}#h(e){return e&&this.#e[0]===e.video?this.#e[1]:this.#e[0]}#g(){let e=this.#i;e&&(this.#j(e),e.status=`disposed`,e.video.pause(),this.#i=null)}#_(e,t){let n=new Image;n.src=t,n.decode().then(()=>{this.#O(e)&&(e.maskImage=n,e.maskSettled=!0,this.#w(e))}).catch(()=>{this.#O(e)&&(console.warn(`Failed to load chroma-key mask "${t}".`),e.maskSettled=!0,this.#w(e))})}#v(e){let t;try{t=e.video.play()}catch{return}Promise.resolve(t).catch(()=>{})}#y=e=>{let t=this.#i;!t||t.video!==e.currentTarget||!this.#O(t)||this.#D(t)&&(t.mediaSettled=!0,t.video.pause(),this.#w(t))};#b=e=>{let t=e.currentTarget,n=this.#i;if(n?.video===t&&n.status===`loading`){n.status=`failed`,this.#j(n),n.video.pause(),!this.#r&&!this.#c&&this.#E();return}let r=this.#r;!r||r.video!==t||r.status!==`settled`||(r.status=`failed`,this.#j(r),this.#P(),r.video.pause(),this.#i||this.#E())};#x=e=>{let t=e.currentTarget;if(this.#i?.video===t)return;let n=this.#r;if(!n||n.video!==t||n.status!==`settled`){t&&`pause`in t&&t.pause();return}n.playRejectedForCurrentIntent=!1,n.playAfterHandoff=!0,this.#i?.status===`loading`&&(this.#i.playAfterHandoff=!0),n.video.paused||this.#M(n)};#S=e=>{let t=this.#r;!t||t.video!==e.currentTarget||t.status!==`settled`||(this.#j(t),this.#P(),this.#T(t),t.playAfterHandoff=!1,this.#i?.status===`loading`&&(this.#i.playAfterHandoff=!1))};#C=e=>{let t=this.#r;!t||t.video!==e.currentTarget||t.status!==`settled`||!t.video.paused||this.#T(t)};#w(e){if(!this.#O(e)||!e.mediaSettled||!e.maskSettled||!this.#D(e))return;let t=this.#r;this.#P(),this.#j(t),t&&t.video!==e.video&&Ln(t.video,e.video),e.video.pause(),e.status=`settled`,this.#i=null,this.#r=e,this.#t.setMask(e.maskImage),this.#T(e),this.#n?.(e.video),t&&t!==e&&(t.status=`disposed`,t.video.pause()),this.#o&&e.playAfterHandoff&&this.#k(e)}#T(e){this.#s||this.#r!==e||e.status!==`settled`||!this.#D(e)||(this.#t.draw(e.video,e.chromaKey),this.#c=!0)}#E(){this.#t.clear(),this.#c=!1}#D(e){return e.video.readyState>=Fn&&e.video.currentSrc===e.normalizedVideoUrl}#O(e){return!this.#s&&this.#i===e&&e.status===`loading`&&e.generation===this.#a}#k(e){if(this.#s||this.#r!==e||e.status!==`settled`||!this.#o||!e.playAfterHandoff||!e.video.paused||e.playRequestPending||e.playRejectedForCurrentIntent)return;let t=++e.playRequestToken;e.playRequestPending=!0;let n;try{n=e.video.play()}catch{this.#A(e,t,!1);return}Promise.resolve(n).then(()=>this.#A(e,t,!0),()=>this.#A(e,t,!1))}#A(e,t,n){this.#s||this.#r!==e||e.playRequestToken!==t||(e.playRequestPending=!1,e.playRejectedForCurrentIntent=!n)}#j(e){e&&(e.playRequestToken++,e.playRequestPending=!1)}#M(e){this.#u||this.#s||this.#r!==e||e.status!==`settled`||e.video.paused||(this.#u=!0,this.#l++,this.#N(e,this.#l))}#N(e,t){let n=e.generation,r=e.video,i=0,a=()=>{let a=this.#d;!a||a.generation!==t||a.handle!==i||this.#l!==t||!this.#u||this.#r!==e||e.generation!==n||e.status!==`settled`||r.paused||(this.#d=null,this.#T(e),this.#u&&this.#l===t&&this.#r===e&&!r.paused&&this.#N(e,t))};r.requestVideoFrameCallback?(i=r.requestVideoFrameCallback(a),this.#d={generation:t,kind:`rvfc`,handle:i,video:r}):(i=requestAnimationFrame(a),this.#d={generation:t,kind:`raf`,handle:i,video:r})}#P(){this.#l++,this.#u=!1;let e=this.#d;this.#d=null,e&&(e.kind===`rvfc`?e.video.cancelVideoFrameCallback?.(e.handle):cancelAnimationFrame(e.handle))}},zn=d(`<img alt="" class="svelte-r30mxh"/>`),Bn=d(`<canvas class="svelte-r30mxh"></canvas> <video playsinline="" preload="auto" class="svelte-r30mxh"></video> <video playsinline="" preload="auto" class="svelte-r30mxh"></video>`,3),Vn=d(`<div><!></div>`);function Hn(n,r){V(r,!0);let i=x(r,`loop`,3,!0),a=x(r,`playing`,3,!0),s=x(r,`videoElement`,15),u=x(r,`class`,3,``);L(()=>(r.src,void 0));let d=N(void 0),p=N(void 0),h=N(void 0),v=N(!1),b=null,C=N(null);function T(e){return{...e,keyColor:[...e.keyColor]}}R(()=>{if(b=Pn.create(g(d)),!b){H(v,!0);return}let e=b;s(g(p));let t=new Rn(g(p),e,g(h),e=>{s(e)});return H(C,t),()=>{t.dispose(),g(C)===t&&H(C,null),e.dispose(),b===e&&(b=null)}}),L(()=>{let e=g(C),t=r.src,n=t.src,i=t.mask?.src;e&&e.switchSource({rawVideoUrl:n,resolvedVideoUrl:rn(n),maskUrl:i,chromaKey:_(()=>T(t.chromaKey))})}),L(()=>{g(C)?.setPlaying(a())}),L(()=>{let e=r.src.chromaKey,t={keyColor:[e.keyColor[0],e.keyColor[1],e.keyColor[2]],colorCutoff:e.colorCutoff,colorFeathering:e.colorFeathering,maskFeathering:e.maskFeathering,sharpening:e.sharpening,despill:e.despill,despillLuminanceAdd:e.despillLuminanceAdd,despillCoverage:e.despillCoverage};g(C)?.setChromaKey(t)});var E=Vn(),D=y(E),O=e=>{var n=l(),i=f(n),a=e=>{var t=l();m(f(t),()=>r.fallback),c(e,t)},s=e=>{var t=zn();o(()=>I(t,`src`,r.src.fallback.src)),c(e,t)};t(i,e=>{r.fallback?e(a):r.src.fallback&&e(s,1)}),c(e,n)},k=t=>{var n=Bn(),r=f(n);B(r,e=>H(d,e),()=>g(d));var a=e(r,2);a.muted=!0,B(a,e=>H(p,e),()=>g(p));var s=e(a,2);s.muted=!0,B(s,e=>H(h,e),()=>g(h)),o(()=>{a.loop=i(),s.loop=i()}),c(t,n)};t(D,e=>{g(v)?e(O):e(k,-1)}),w(E),o(()=>{S(E,1,`fundus-chroma-key-video ${u()??``}`,`svelte-r30mxh`),K(E,r.style)}),c(n,E),F()}var Un=d(`<img/>`),Wn=d(`<div class="stage checkerboard svelte-10eps7e"><!></div>`);function Gn(e,n){V(n,!0);let r=z(()=>!n.asset.proxy||n.asset.proxy.width===void 0||n.asset.proxy.height===void 0?null:{id:n.asset.id,kind:`image`,src:n.asset.proxy.url,byteSize:n.asset.proxy.fileSize,width:n.asset.proxy.width,height:n.asset.proxy.height});var i=Wn(),a=y(i),s=e=>{yn(e,{get src(){return g(r)},get alt(){return n.asset.id}})},l=e=>{var t=Un();o(()=>{I(t,`src`,n.asset.rawUrl),I(t,`alt`,n.asset.id)}),c(e,t)};t(a,e=>{g(r)?e(s):e(l,-1)}),w(i),c(e,i),F()}var Kn=d(`<img loading="lazy" class="svelte-gdduef"/>`);function qn(e,t){V(t,!0);var n=Kn();o(()=>{I(n,`src`,t.asset.proxy?.url??t.asset.rawUrl),I(n,`alt`,t.asset.id)}),c(e,n),F()}var Jn=new Map;function Yn(e,t=()=>new window.Image){let n=Jn.get(e);if(n)return n;let r=new Promise((n,r)=>{let i=t();i.onload=()=>n({width:i.naturalWidth,height:i.naturalHeight}),i.onerror=()=>r(Error(`Could not load image dimensions.`)),i.src=e});return Jn.set(e,r),r.catch(()=>{Jn.get(e)===r&&Jn.delete(e)}),r}var Xn=d(`<button> </button>`),Zn=d(`<section class="svelte-1yd7n22"><!> <div class="insets svelte-1yd7n22"></div></section>`),Qn=d(`<section class="svelte-1yd7n22"><!> <div><!> <!></div></section>`),$n=d(`<section class="svelte-1yd7n22"><!> <!></section>`),er=d(`<section class="svelte-1yd7n22"><!> <div class="modes svelte-1yd7n22"></div></section> <!> <!> <section class="svelte-1yd7n22"><!> <div class="insets svelte-1yd7n22"></div></section> <!> <section class="svelte-1yd7n22"><!> <div class="field"><!></div></section> <!>`,1);function tr(n,i){V(i,!0);let s=z(()=>De.validateParameters(i.parameters)),u=z(()=>g(s).overdraw??pe()),d=z(()=>g(s).compression??{x:0,y:0}),m=N(null),h=null;L(()=>{let e=i.asset.rawUrl;h!==e&&(h=e,H(m,null));let t=!1;return Yn(e).then(n=>{!t&&h===e&&H(m,n,!0)},()=>{}),()=>{t=!0}});let _=[{value:`nine`,label:`9-slice`},{value:`three-horizontal`,label:`3-slice horizontal`},{value:`three-vertical`,label:`3-slice vertical`},{value:`one`,label:`No slicing`}],v=[{key:`top`,label:`Top`,icon:`arrow-up`,axis:`y`},{key:`right`,label:`Right`,icon:`arrow-right`,axis:`x`},{key:`bottom`,label:`Bottom`,icon:`arrow-down`,axis:`y`},{key:`left`,label:`Left`,icon:`arrow-left`,axis:`x`}];function b(e,t){let n=J(t);return e===`x`?n.horizontal:n.vertical}let x=z(()=>g(m)?.width??2**53-1),C=z(()=>g(m)?.height??2**53-1);function T(e){i.onParametersCommit(e)}function E(e){T({...g(s),mode:e})}function D(e){return Ee(g(s).insets,e,g(x),g(C))}function O(e,t,n){let r=Math.max(0,Math.min(D(e),Math.round(t??0))),a={...g(s),insets:{...g(s).insets,[e]:r}};n?T(a):i.onParametersChange(a)}function A(e){return se(g(u),e,g(x),g(C))}function j(e,t,n){let r=Math.max(0,Math.min(A(e),Math.round(t??0))),a={...g(s),overdraw:{...g(u),[e]:r}};n?T(a):i.onParametersChange(a)}function M(e,t,n){let r=Math.max(0,Math.min(100,Math.round(t??0))),a={...g(d),[e]:r},{compression:o,...c}=g(s),l=a.x===0&&a.y===0?c:{...c,compression:a};n?T(l):i.onParametersChange(l)}function P(e,t){let n={...g(s),pixelRatio:Math.max(1,Math.round(e??1))};t?T(n):i.onParametersChange(n)}function I(e){T({...g(s),preset:e})}var R=er(),B=f(R),W=y(B);Rt(W,{children:(e,t)=>{U(),c(e,a(`Mode`))},$$slots:{default:!0}});var G=e(W,2);r(G,21,()=>_,e=>e.value,(e,t)=>{var n=Xn();let r;var i=y(n,!0);w(n),o(()=>{r=S(n,1,`svelte-1yd7n22`,null,r,{on:g(s).mode===g(t).value}),k(i,g(t).label)}),p(`click`,n,()=>E(g(t).value)),c(e,n)}),w(G),w(B);var K=e(B,2),q=n=>{var i=Zn(),o=y(i);Rt(o,{children:(e,t)=>{U(),c(e,a(`Insets (px)`))},$$slots:{default:!0}});var u=e(o,2);r(u,21,()=>v,e=>e.key,(e,n)=>{var r=l(),i=f(r),a=e=>{{let t=e=>{Oe(e,{get name(){return g(n).icon}})},r=z(()=>D(g(n).key));It(e,{get label(){return g(n).label},min:0,get max(){return g(r)},rangeFill:!1,get value(){return g(s).insets[g(n).key]},onChange:e=>O(g(n).key,e,!1),onCommit:e=>O(g(n).key,e,!0),icon:t,$$slots:{icon:!0}})}},o=z(()=>b(g(n).axis,g(s).mode));t(i,e=>{g(o)&&e(a)}),c(e,r)}),w(u),w(i),c(n,i)};t(K,e=>{g(s).mode!==`one`&&e(q)});var Y=e(K,2),ee=n=>{var r=Qn(),i=y(r);Rt(i,{children:(e,t)=>{U(),c(e,a(`Stretch compression`))},$$slots:{default:!0}});var l=e(i,2);let u;var f=y(l),p=e=>{It(e,{label:`X`,min:0,max:100,suffix:`%`,get value(){return g(d).x},onChange:e=>M(`x`,e,!1),onCommit:e=>M(`x`,e,!0)})},m=z(()=>b(`x`,g(s).mode));t(f,e=>{g(m)&&e(p)});var h=e(f,2),_=e=>{It(e,{label:`Y`,min:0,max:100,suffix:`%`,get value(){return g(d).y},onChange:e=>M(`y`,e,!1),onCommit:e=>M(`y`,e,!0)})},v=z(()=>b(`y`,g(s).mode));t(h,e=>{g(v)&&e(_)}),w(l),w(r),o(()=>u=S(l,1,`insets svelte-1yd7n22`,null,u,{single:g(s).mode!==`nine`})),c(n,r)};t(Y,e=>{g(s).mode!==`one`&&e(ee)});var te=e(Y,2),ne=y(te);Rt(ne,{children:(e,t)=>{U(),c(e,a(`Overdraw (px)`))},$$slots:{default:!0}});var re=e(ne,2);r(re,21,()=>v,e=>e.key,(e,t)=>{{let n=e=>{Oe(e,{get name(){return g(t).icon}})},r=z(()=>A(g(t).key));It(e,{get label(){return g(t).label},min:0,get max(){return g(r)},rangeFill:!1,get value(){return g(u)[g(t).key]},onChange:e=>j(g(t).key,e,!1),onCommit:e=>j(g(t).key,e,!0),icon:n,$$slots:{icon:!0}})}}),w(re),w(te);var ie=e(te,2),ae=t=>{var n=$n(),r=y(n);Rt(r,{children:(e,t)=>{U(),c(e,a(`Pixel ratio`))},$$slots:{default:!0}}),It(e(r,2),{label:`Factor`,min:1,get value(){return g(s).pixelRatio},onChange:e=>P(e,!1),onCommit:e=>P(e,!0),icon:e=>{Oe(e,{name:`ratio`})},$$slots:{icon:!0}}),w(n),c(t,n)};t(ie,e=>{g(s).mode===`nine`&&e(ae)});var oe=e(ie,2),X=y(oe);Rt(X,{children:(e,t)=>{U(),c(e,a(`Output`))},$$slots:{default:!0}});var Z=e(X,2);Ht(y(Z),{label:`Preset`,caption:`Preset`,get value(){return g(s).preset},get options(){return i.presetNames},onChange:I,icon:e=>{Oe(e,{name:`preset`})},$$slots:{icon:!0}}),w(Z),w(oe),Kt(e(oe,2),{get proxy(){return i.asset.proxy},showDimensions:!0}),c(n,R),F()}s([`click`]);var nr=d(`<div class="preview-panel svelte-1mjaycs"><div class="bar svelte-1mjaycs"><span class="size svelte-1mjaycs"> </span> <button class="reset svelte-1mjaycs">Reset</button></div> <div class="stage checkerboard svelte-1mjaycs"><div class="box svelte-1mjaycs"><!> <div class="handle edge-right svelte-1mjaycs" role="separator" aria-label="Drag width" aria-orientation="vertical"></div> <div class="handle edge-bottom svelte-1mjaycs" role="separator" aria-label="Drag height" aria-orientation="horizontal"></div> <div class="handle corner svelte-1mjaycs" role="separator" aria-label="Drag size"></div></div></div></div>`);function rr(t,n){V(n,!0);function r(){return Math.round(Math.min(360,Math.max(80,n.entry.sourceWidth*2)))}function i(){return Math.round(r()*n.entry.sourceHeight/Math.max(1,n.entry.sourceWidth))}let a=N(T(_(()=>r()))),s=N(T(_(()=>i()))),l=N(null),u={pointerX:0,pointerY:0,width:0,height:0};function d(e,t){t.preventDefault(),H(l,e,!0),u={pointerX:t.clientX,pointerY:t.clientY,width:g(a),height:g(s)},Dt(t.currentTarget,t)}function f(e){g(l)&&(g(l)!==`y`&&H(a,Math.max(16,Math.round(u.width+(e.clientX-u.pointerX))),!0),g(l)!==`x`&&H(s,Math.max(16,Math.round(u.height+(e.clientY-u.pointerY))),!0))}function m(e){g(l)&&Ot(e.currentTarget,e.pointerId),H(l,null)}function h(){H(a,r(),!0),H(s,i(),!0)}var v=nr(),b=y(v),x=y(b),S=y(x);w(x);var C=e(x,2);w(b);var E=e(b,2),D=y(E);let O;var A=y(D);Dn(A,{get src(){return n.entry},class:`fill`});var j=e(A,2),M=e(j,2),P=e(M,2);w(D),w(E),w(v),o(()=>{k(S,`${g(a)??``} × ${g(s)??``} px`),O=K(D,``,O,{width:`${g(a)??``}px`,height:`${g(s)??``}px`})}),p(`click`,C,h),p(`pointerdown`,j,e=>d(`x`,e)),p(`pointermove`,j,f),p(`pointerup`,j,m),q(`pointercancel`,j,m),p(`pointerdown`,M,e=>d(`y`,e)),p(`pointermove`,M,f),p(`pointerup`,M,m),q(`pointercancel`,M,m),p(`pointerdown`,P,e=>d(`both`,e)),p(`pointermove`,P,f),p(`pointerup`,P,m),q(`pointercancel`,P,m),c(t,v),F()}s([`click`,`pointerdown`,`pointermove`,`pointerup`]);var ir=d(`<div></div>`),ar=d(`<div class="overdraw-band svelte-1jfrg6d"></div>`),or=d(`<div role="slider" aria-label="Left slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Right slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div>`,1),sr=d(`<div role="slider" aria-label="Top slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Bottom slice line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div>`,1),cr=d(`<div class="canvas svelte-1jfrg6d"><div class="toolbar svelte-1jfrg6d"><button title="Zoom out" class="svelte-1jfrg6d">−</button> <span class="zoom svelte-1jfrg6d"> </span> <button title="Zoom in" class="svelte-1jfrg6d">+</button> <button title="100%">1:1</button> <button>Fit</button> <span class="dims svelte-1jfrg6d"> </span></div> <div role="application" aria-label="Slice canvas — drag to pan, pinch/⌘+scroll to zoom"><div class="image-wrap svelte-1jfrg6d"><img alt="" draggable="false" class="svelte-1jfrg6d"/> <!> <!> <!> <!> <!> <div role="slider" aria-label="Left overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Right overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Top overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <div role="slider" aria-label="Bottom overdraw line" tabindex="0"><span class="tag svelte-1jfrg6d"> </span></div> <!> <!></div></div></div>`);function lr(n,r){V(r,!0);let i=N(void 0),a=N(void 0),s=N(null),l=null,u=z(()=>J(r.mode)),d=z(()=>g(u).horizontal),m=z(()=>g(u).vertical);function h(e,t){return g(s)?.target===e&&g(s).side===t}let _=N(`fit`),v=N(1),b=N(0),x=N(0),C=N(0),T=N(0),E=N(!1),D=new Map,O=null;function A(e){return Math.max(.05,Math.min(8,e))}L(()=>{let e=g(i);if(!e)return;let t=new ResizeObserver(()=>{H(C,e.clientWidth,!0),H(T,e.clientHeight,!0)});return t.observe(e),()=>t.disconnect()}),L(()=>{if(g(_)===`free`||r.width===0||r.height===0||g(C)===0||g(T)===0)return;let e=A(Math.min((g(C)-32)/r.width,(g(T)-32)/r.height));j(g(_)===`one`?1:e)});function j(e){H(v,e,!0),H(b,(g(C)-r.width*e)/2),H(x,(g(T)-r.height*e)/2)}function M(e,t){if(!g(i))return{x:e,y:t};let n=g(i).getBoundingClientRect();return{x:e-n.left-g(i).clientLeft,y:t-n.top-g(i).clientTop}}function P(e,t,n){let r=A(e);H(b,t-(t-g(b))*(r/g(v))),H(x,n-(n-g(x))*(r/g(v))),H(v,r,!0),H(_,`free`)}function R(e,t,n){return Math.max(t,Math.min(n,Math.round(e)))}function U(){H(_,`fit`)}function W(){H(_,`one`)}function G(e){P(g(v)*e,g(C)/2,g(T)/2)}function Y(){let[e,t]=[...D.values()];return{distance:Math.hypot(e.x-t.x,e.y-t.y),midX:(e.x+t.x)/2,midY:(e.y+t.y)/2}}function ee(e){try{g(i)&&Dt(g(i),e)}catch{}D.set(e.pointerId,{x:e.clientX,y:e.clientY}),D.size===2?O=Y():D.size===1&&H(E,!0)}function te(e){let t=D.get(e.pointerId);if(t)if(D.set(e.pointerId,{x:e.clientX,y:e.clientY}),D.size>=2&&O){let e=Y(),t=M(O.midX,O.midY);P(g(v)*(e.distance/O.distance),t.x,t.y),H(b,g(b)+(e.midX-O.midX)),H(x,g(x)+(e.midY-O.midY)),O=e}else D.size===1&&(H(b,g(b)+(e.clientX-t.x)),H(x,g(x)+(e.clientY-t.y)),H(_,`free`))}function ne(e){D.delete(e.pointerId),D.size<2&&(O=null),D.size===0&&H(E,!1)}function re(e){if(e.preventDefault(),e.ctrlKey||e.metaKey){let t=M(e.clientX,e.clientY);P(g(v)*Math.exp(-e.deltaY*.01),t.x,t.y)}else H(b,g(b)-e.deltaX),H(x,g(x)-e.deltaY),H(_,`free`)}function ie(e,t,n){n.preventDefault(),n.stopPropagation(),H(s,{target:e,side:t},!0),l=null,Dt(n.currentTarget,n)}function ae(e){if(!g(s)||!g(a))return;let t=g(a).getBoundingClientRect(),n=(e.clientX-t.left)/g(v),i=(e.clientY-t.top)/g(v),{target:o,side:c}=g(s),l={...o===`inset`?r.insets:r.overdraw};c===`left`?l.left=R(n,0,Z(o,`left`)):c===`right`?l.right=R(r.width-n,0,Z(o,`right`)):c===`top`?l.top=R(i,0,Z(o,`top`)):c===`bottom`&&(l.bottom=R(r.height-i,0,Z(o,`bottom`))),oe(o,l)}function oe(e,t){l={target:e,value:t},e===`inset`?r.onChange(t):r.onOverdrawChange(t)}function X(e){let t=g(s)!==null;g(s)&&Ot(e.currentTarget,e.pointerId),H(s,null),t&&l&&r.onCommit(l.target,l.value),l=null}function Z(e,t){let n=e===`inset`?r.insets:r.overdraw;return e===`inset`?Ee(n,t,r.width,r.height):se(n,t,r.width,r.height)}function ce(e,t,n){let i=e===`inset`?r.insets:r.overdraw,a={...i};a[t]=R(i[t]+n,0,Z(e,t)),a[t]!==i[t]&&(oe(e,a),r.onCommit(e,a),l=null)}function le(e,t,n,r){let i=r.shiftKey?10:1,a=n===`x`?`ArrowRight`:`ArrowUp`,o=n===`x`?`ArrowLeft`:`ArrowDown`;if(r.key===a)ce(e,t,i);else if(r.key===o)ce(e,t,-i);else return;r.preventDefault()}var ue=cr(),de=y(ue),fe=y(de),pe=e(fe,2),me=y(pe);w(pe);var he=e(pe,2),ge=e(he,2);let _e;var ve=e(ge,2);let ye;var be=e(ve,2),xe=y(be);w(be),w(de);var Se=e(de,2);let Q;var Ce=y(Se);let we;var Te=y(Ce),De=e(Te,2),Oe=e=>{var t=ir();let n,i;o(()=>{n=S(t,1,`center-rect svelte-1jfrg6d`,null,n,{"side-edges":!g(d),"cap-edges":!g(m)}),i=K(t,``,i,{left:`${(g(d)?r.insets.left:0)*g(v)}px`,top:`${(g(m)?r.insets.top:0)*g(v)}px`,right:`${(g(d)?r.insets.right:0)*g(v)}px`,bottom:`${(g(m)?r.insets.bottom:0)*g(v)}px`})}),c(e,t)};t(De,e=>{(g(d)||g(m))&&e(Oe)});var ke=e(De,2),Ae=e=>{var t=ar();let n;o(()=>n=K(t,``,n,{left:`0`,top:`0`,bottom:`0`,width:`${r.overdraw.left*g(v)}px`})),c(e,t)};t(ke,e=>{r.overdraw.left>0&&e(Ae)});var je=e(ke,2),Me=e=>{var t=ar();let n;o(()=>n=K(t,``,n,{right:`0`,top:`0`,bottom:`0`,width:`${r.overdraw.right*g(v)}px`})),c(e,t)};t(je,e=>{r.overdraw.right>0&&e(Me)});var Ne=e(je,2),Pe=e=>{var t=ar();let n;o(()=>n=K(t,``,n,{top:`0`,left:`${r.overdraw.left*g(v)}px`,right:`${r.overdraw.right*g(v)}px`,height:`${r.overdraw.top*g(v)}px`})),c(e,t)};t(Ne,e=>{r.overdraw.top>0&&e(Pe)});var Fe=e(Ne,2),Ie=e=>{var t=ar();let n;o(()=>n=K(t,``,n,{bottom:`0`,left:`${r.overdraw.left*g(v)}px`,right:`${r.overdraw.right*g(v)}px`,height:`${r.overdraw.bottom*g(v)}px`})),c(e,t)};t(Fe,e=>{r.overdraw.bottom>0&&e(Ie)});var $=e(Fe,2);let Le;I($,`aria-valuemin`,0);let Re;var ze=y($),Be=y(ze,!0);w(ze),w($);var Ve=e($,2);let He;I(Ve,`aria-valuemin`,0);let Ue;var We=y(Ve),Ge=y(We,!0);w(We),w(Ve);var Ke=e(Ve,2);let qe;I(Ke,`aria-valuemin`,0);let Je;var Ye=y(Ke),Xe=y(Ye,!0);w(Ye),w(Ke);var Ze=e(Ke,2);let Qe;I(Ze,`aria-valuemin`,0);let $e;var et=y(Ze),tt=y(et,!0);w(et),w(Ze);var nt=e(Ze,2),rt=t=>{var n=or(),i=f(n);let a;I(i,`aria-valuemin`,0);let s;var l=y(i),u=y(l,!0);w(l),w(i);var d=e(i,2);let m;I(d,`aria-valuemin`,0);let _;var b=y(d),x=y(b,!0);w(b),w(d),o((e,t,n,o)=>{a=S(i,1,`line v svelte-1jfrg6d`,null,a,e),I(i,`aria-valuenow`,r.insets.left),I(i,`aria-valuemax`,t),s=K(i,``,s,{left:`${r.insets.left*g(v)}px`}),k(u,r.insets.left),m=S(d,1,`line v svelte-1jfrg6d`,null,m,n),I(d,`aria-valuenow`,r.insets.right),I(d,`aria-valuemax`,o),_=K(d,``,_,{left:`${(r.width-r.insets.right)*g(v)}px`}),k(x,r.insets.right)},[()=>({active:h(`inset`,`left`)}),()=>Z(`inset`,`left`),()=>({active:h(`inset`,`right`)}),()=>Z(`inset`,`right`)]),p(`pointerdown`,i,e=>ie(`inset`,`left`,e)),p(`pointermove`,i,ae),p(`pointerup`,i,X),q(`pointercancel`,i,X),p(`keydown`,i,e=>le(`inset`,`left`,`x`,e)),p(`pointerdown`,d,e=>ie(`inset`,`right`,e)),p(`pointermove`,d,ae),p(`pointerup`,d,X),q(`pointercancel`,d,X),p(`keydown`,d,e=>le(`inset`,`right`,`x`,e)),c(t,n)};t(nt,e=>{g(d)&&e(rt)});var it=e(nt,2),at=t=>{var n=sr(),i=f(n);let a;I(i,`aria-valuemin`,0);let s;var l=y(i),u=y(l,!0);w(l),w(i);var d=e(i,2);let m;I(d,`aria-valuemin`,0);let _;var b=y(d),x=y(b,!0);w(b),w(d),o((e,t,n,o)=>{a=S(i,1,`line h svelte-1jfrg6d`,null,a,e),I(i,`aria-valuenow`,r.insets.top),I(i,`aria-valuemax`,t),s=K(i,``,s,{top:`${r.insets.top*g(v)}px`}),k(u,r.insets.top),m=S(d,1,`line h svelte-1jfrg6d`,null,m,n),I(d,`aria-valuenow`,r.insets.bottom),I(d,`aria-valuemax`,o),_=K(d,``,_,{top:`${(r.height-r.insets.bottom)*g(v)}px`}),k(x,r.insets.bottom)},[()=>({active:h(`inset`,`top`)}),()=>Z(`inset`,`top`),()=>({active:h(`inset`,`bottom`)}),()=>Z(`inset`,`bottom`)]),p(`pointerdown`,i,e=>ie(`inset`,`top`,e)),p(`pointermove`,i,ae),p(`pointerup`,i,X),q(`pointercancel`,i,X),p(`keydown`,i,e=>le(`inset`,`top`,`y`,e)),p(`pointerdown`,d,e=>ie(`inset`,`bottom`,e)),p(`pointermove`,d,ae),p(`pointerup`,d,X),q(`pointercancel`,d,X),p(`keydown`,d,e=>le(`inset`,`bottom`,`y`,e)),c(t,n)};t(it,e=>{g(m)&&e(at)}),w(Ce),B(Ce,e=>H(a,e),()=>g(a)),w(Se),B(Se,e=>H(i,e),()=>g(i)),w(ue),o((e,t,n,i,a,o,s,c,l)=>{k(me,`${e??``}%`),_e=S(ge,1,`svelte-1jfrg6d`,null,_e,{active:g(_)===`one`}),ye=S(ve,1,`svelte-1jfrg6d`,null,ye,{active:g(_)===`fit`}),k(xe,`${r.width??``} × ${r.height??``} px`),Q=S(Se,1,`viewport checkerboard svelte-1jfrg6d`,null,Q,{panning:g(E)}),we=K(Ce,``,we,{width:`${r.width*g(v)}px`,height:`${r.height*g(v)}px`,transform:`translate(${g(b)??``}px, ${g(x)??``}px)`}),I(Te,`src`,r.src),Le=S($,1,`line v overdraw-line svelte-1jfrg6d`,null,Le,t),I($,`aria-valuenow`,r.overdraw.left),I($,`aria-valuemax`,n),Re=K($,``,Re,{left:`${r.overdraw.left*g(v)}px`}),k(Be,r.overdraw.left),He=S(Ve,1,`line v overdraw-line svelte-1jfrg6d`,null,He,i),I(Ve,`aria-valuenow`,r.overdraw.right),I(Ve,`aria-valuemax`,a),Ue=K(Ve,``,Ue,{left:`${(r.width-r.overdraw.right)*g(v)}px`}),k(Ge,r.overdraw.right),qe=S(Ke,1,`line h overdraw-line svelte-1jfrg6d`,null,qe,o),I(Ke,`aria-valuenow`,r.overdraw.top),I(Ke,`aria-valuemax`,s),Je=K(Ke,``,Je,{top:`${r.overdraw.top*g(v)}px`}),k(Xe,r.overdraw.top),Qe=S(Ze,1,`line h overdraw-line svelte-1jfrg6d`,null,Qe,c),I(Ze,`aria-valuenow`,r.overdraw.bottom),I(Ze,`aria-valuemax`,l),$e=K(Ze,``,$e,{top:`${(r.height-r.overdraw.bottom)*g(v)}px`}),k(tt,r.overdraw.bottom)},[()=>Math.round(g(v)*100),()=>({active:h(`overdraw`,`left`)}),()=>Z(`overdraw`,`left`),()=>({active:h(`overdraw`,`right`)}),()=>Z(`overdraw`,`right`),()=>({active:h(`overdraw`,`top`)}),()=>Z(`overdraw`,`top`),()=>({active:h(`overdraw`,`bottom`)}),()=>Z(`overdraw`,`bottom`)]),p(`click`,fe,()=>G(1/1.25)),p(`click`,he,()=>G(1.25)),p(`click`,ge,W),p(`click`,ve,U),p(`pointerdown`,Se,ee),p(`pointermove`,Se,te),p(`pointerup`,Se,ne),q(`pointercancel`,Se,ne),q(`wheel`,Se,re),p(`pointerdown`,$,e=>ie(`overdraw`,`left`,e)),p(`pointermove`,$,ae),p(`pointerup`,$,X),q(`pointercancel`,$,X),p(`keydown`,$,e=>le(`overdraw`,`left`,`x`,e)),p(`pointerdown`,Ve,e=>ie(`overdraw`,`right`,e)),p(`pointermove`,Ve,ae),p(`pointerup`,Ve,X),q(`pointercancel`,Ve,X),p(`keydown`,Ve,e=>le(`overdraw`,`right`,`x`,e)),p(`pointerdown`,Ke,e=>ie(`overdraw`,`top`,e)),p(`pointermove`,Ke,ae),p(`pointerup`,Ke,X),q(`pointercancel`,Ke,X),p(`keydown`,Ke,e=>le(`overdraw`,`top`,`y`,e)),p(`pointerdown`,Ze,e=>ie(`overdraw`,`bottom`,e)),p(`pointermove`,Ze,ae),p(`pointerup`,Ze,X),q(`pointercancel`,Ze,X),p(`keydown`,Ze,e=>le(`overdraw`,`bottom`,`y`,e)),c(n,ue),F()}s([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);function ur(e){return Number.isFinite(e)?Math.round(Math.min(80,Math.max(20,e))*10)/10:50}function dr(e,t,n){return ur((e-t)/Math.max(1,n)*100)}var fr=d(`<div class="empty error svelte-1ea2lvt"> </div>`),pr=d(`<div class="empty svelte-1ea2lvt">Loading image…</div>`),mr=d(`<div><div class="pane slicing-pane svelte-1ea2lvt"><!></div> <div role="separator" aria-label="Resize slicing and preview panes" aria-orientation="vertical" tabindex="0" title="Drag to resize slicing and preview panes"></div> <div class="pane preview-pane svelte-1ea2lvt"><!></div></div>`),hr=d(`<div class="editor svelte-1ea2lvt"><!></div>`);function gr(n,r){V(r,!0);let i=N(null),a=N(null),s=null,l=N(void 0),u=N(!1),d=`fundus:slice-editor-split`;function f(){try{return ur(Number.parseFloat(localStorage.getItem(d)??``))}catch{return 50}}let m=N(T(f()));L(()=>{try{localStorage.setItem(d,String(g(m)))}catch{}});function h(e){if(!g(l))return;let t=g(l).getBoundingClientRect();H(m,dr(e,t.left,t.width),!0)}function _(e){e.preventDefault(),H(u,!0),h(e.clientX),Dt(e.currentTarget,e)}function v(e){g(u)&&h(e.clientX)}function b(e){g(u)&&Ot(e.currentTarget,e.pointerId),H(u,!1)}function x(e){let t=e.shiftKey?10:2;if(e.key===`ArrowLeft`)H(m,ur(g(m)-t),!0);else if(e.key===`ArrowRight`)H(m,ur(g(m)+t),!0);else if(e.key===`Home`)H(m,20,!0);else if(e.key===`End`)H(m,80,!0);else return;e.preventDefault()}L(()=>{let e=r.asset.rawUrl;s!==e&&(s=e,H(i,null),H(a,null));let t=!1;return Yn(e).then(n=>{!t&&s===e&&H(i,n,!0)},n=>{!t&&s===e&&H(a,n instanceof Error?n.message:String(n),!0)}),()=>{t=!0}});let C=z(()=>{try{return De.validateParameters(r.parameters)}catch{return null}}),E=z(()=>{if(!g(C)||!g(i))return null;let e=r.asset.proxy?.width??g(i).width,t=r.asset.proxy?.height??g(i).height;return{id:r.asset.id,kind:`slice`,src:r.asset.proxy?.url??r.asset.rawUrl,byteSize:r.asset.proxy?.fileSize??0,slicing:{mode:g(C).mode,insets:we({...g(C),width:e,height:t}),pixelRatio:g(C).pixelRatio,...g(C).overdraw?{overdraw:g(C).overdraw}:{}},sourceWidth:e,sourceHeight:t}});var D=hr(),O=y(D),j=e=>{var t=fr(),n=y(t,!0);w(t),o(()=>k(n,g(a))),c(e,t)},M=e=>{c(e,pr())},P=t=>{var n=mr();let a,s;var d=y(n),f=y(d);{let e=z(()=>g(C).overdraw??pe());lr(f,{get src(){return r.asset.rawUrl},get width(){return g(i).width},get height(){return g(i).height},get mode(){return g(C).mode},get insets(){return g(C).insets},get overdraw(){return g(e)},onChange:e=>r.onParametersChange({...g(C),insets:e}),onOverdrawChange:e=>r.onParametersChange({...g(C),overdraw:e}),onCommit:(e,t)=>r.onParametersCommit(e===`inset`?{...g(C),insets:t}:{...g(C),overdraw:t})})}w(d);var h=e(d,2);let T;var D=e(h,2);A(y(D),()=>r.asset.id,e=>{rr(e,{get entry(){return g(E)}})}),w(D),w(n),B(n,e=>H(l,e),()=>g(l)),o(e=>{a=S(n,1,`split-layout svelte-1ea2lvt`,null,a,{resizing:g(u)}),s=K(n,``,s,{"--slice-position":`${g(m)}%`}),T=S(h,1,`splitter svelte-1ea2lvt`,null,T,{active:g(u)}),I(h,`aria-valuemin`,20),I(h,`aria-valuemax`,80),I(h,`aria-valuenow`,e)},[()=>Math.round(g(m))]),p(`pointerdown`,h,_),p(`pointermove`,h,v),p(`pointerup`,h,b),q(`pointercancel`,h,b),q(`lostpointercapture`,h,()=>H(u,!1)),p(`keydown`,h,x),c(t,n)};t(O,e=>{g(a)?e(j):!g(C)||!g(i)?e(M,1):g(E)&&e(P,2)}),w(D),c(n,D),F()}s([`pointerdown`,`pointermove`,`pointerup`,`keydown`]);var _r=d(`<div class="field svelte-ij1927"><!></div>`),vr=d(`<section class="svelte-ij1927"><!> <div class="field svelte-ij1927"><!></div> <!></section> <!>`,1);function yr(n,r){V(r,!0);let i=z(()=>ee.validateParameters(r.parameters)),o=z(()=>r.presetCapabilities[g(i).preset]?.maxWidth!==!1);function s(e){r.onParametersCommit(e)}function l(e){if(r.presetCapabilities[e]?.maxWidth===!1){let{maxWidth:t,...n}=g(i);s({...n,preset:e});return}s({...g(i),preset:e})}function u(e,t){let n=Pe(g(i),e);t?s(n):r.onParametersChange(n)}var d=vr(),p=f(d),m=y(p);Rt(m,{children:(e,t)=>{U(),c(e,a(`Video`))},$$slots:{default:!0}});var h=e(m,2);Ht(y(h),{label:`Preset`,caption:`Preset`,get value(){return g(i).preset},get options(){return r.presetNames},onChange:l,icon:e=>{Oe(e,{name:`preset`})},$$slots:{icon:!0}}),w(h);var _=e(h,2),v=e=>{var t=_r(),n=y(t);{let e=e=>{Oe(e,{name:`width`})},t=z(()=>g(i).maxWidth??null);It(n,{label:`Max width`,caption:`Max width`,min:1,placeholder:`source`,get value(){return g(t)},onChange:e=>u(e,!1),onCommit:e=>u(e,!0),icon:e,$$slots:{icon:!0}})}w(t),c(e,t)};t(_,e=>{g(o)&&e(v)}),w(p),Kt(e(p,2),{get proxy(){return r.asset.proxy},showDimensions:!0,showDuration:!0}),c(n,d),F()}var br=d(`<div class="preview-column svelte-qls820"><div class="video-frame svelte-qls820"><!></div> <!></div>`),xr=d(`<p class="svelte-qls820">No proxy yet — add the asset to a manifest to process it.</p>`),Sr=d(`<div class="stage checkerboard svelte-qls820"><!></div>`);function Cr(n,r){V(r,!0);let i=N(void 0),a=z(()=>!r.asset.proxy||r.asset.proxy.width===void 0||r.asset.proxy.height===void 0||r.asset.proxy.durationMs===void 0?null:{id:r.asset.id,kind:`video`,src:r.asset.proxy.url,byteSize:r.asset.proxy.fileSize,width:r.asset.proxy.width,height:r.asset.proxy.height,durationMs:r.asset.proxy.durationMs});var s=Sr(),l=y(s),u=t=>{var n=br(),r=y(n);let s;A(y(r),()=>g(a).src,e=>{kn(e,{get src(){return g(a)},loop:!0,get videoElement(){return g(i)},set videoElement(e){H(i,e,!0)}})}),w(r),ct(e(r,2),{get media(){return g(i)},showScrub:!0,showVolume:!0}),w(n),o(()=>s=K(r,``,s,{"aspect-ratio":`${g(a).width??``} / ${g(a).height??``}`})),c(t,n)},d=e=>{c(e,xr())};t(l,e=>{g(a)?e(u):e(d,-1)}),w(s),c(n,s),F()}var wr=d(`<video playsinline="" preload="metadata" class="svelte-ejgo9x"></video>`,2);function Tr(e,t){V(t,!0);function n(e){e.currentTime=0,e.play().catch(()=>{})}function r(e){e.pause(),e.currentTime=0}var i=wr();i.muted=!0,o(()=>I(i,`src`,t.asset.proxy?.url??t.asset.rawUrl)),q(`pointerenter`,i,e=>n(e.currentTarget)),q(`pointerleave`,i,e=>r(e.currentTarget)),c(e,i),F()}var Er=d(`<span class="caption svelte-56kutb"> </span>`),Dr=d(`<img class="preview svelte-56kutb" alt=""/>`),Or=d(`<span class="missing-preview svelte-56kutb" title="References an unknown asset">!</span>`),kr=d(`<span class="id svelte-56kutb"> </span>`),Ar=d(`<span class="id dangling svelte-56kutb" title="References an unknown asset"> </span>`),jr=d(`<span class="placeholder svelte-56kutb"> </span>`),Mr=d(`<button class="clear svelte-56kutb">×</button>`),Nr=d(`<p class="hint svelte-56kutb"> </p>`),Pr=d(`<button><img class="thumbnail svelte-56kutb" alt=""/> <span class="id svelte-56kutb"> </span></button>`),Fr=d(`<div class="dropdown svelte-56kutb"><!></div>`),Ir=d(`<div class="picker svelte-56kutb"><!> <div class="reference-input control svelte-56kutb"><button><span class="preview-slot svelte-56kutb"><!></span> <!></button> <!> <!></div></div>`);function Lr(n,i){V(i,!0);let a=N(!1),s=z(()=>(Q.state?.assets??[]).filter(e=>i.expectedTypes.includes(e.type)&&e.id!==i.excludeAssetId)),u=z(()=>i.value?Q.assetById(i.value.$asset):null);function d(e){H(a,!1),i.onChange({$asset:e})}function m(){H(a,!1),i.onChange(void 0)}var h=Ir(),_=y(h),v=e=>{var t=Er(),n=y(t,!0);w(t),o(()=>k(n,i.caption)),c(e,t)};t(_,e=>{i.caption&&e(v)});var b=e(_,2),x=y(b);let C;var T=y(x),E=y(T),D=e=>{var t=Dr();o(()=>I(t,`src`,g(u).rawUrl)),c(e,t)},O=e=>{c(e,Or())};t(E,e=>{i.value&&g(u)?e(D):i.value&&e(O,1)}),w(T);var A=e(T,2),j=e=>{var n=l(),r=f(n),a=e=>{var t=kr(),n=y(t,!0);w(t),o(()=>k(n,g(u).id)),c(e,t)},s=e=>{var t=Ar(),n=y(t,!0);w(t),o(()=>k(n,i.value.$asset)),c(e,t)};t(r,e=>{g(u)?e(a):e(s,-1)}),c(e,n)},M=e=>{var t=jr(),n=y(t);w(t),o(e=>k(n,`Select ${e??``}...`),[()=>i.expectedTypes.join(`/`)]),c(e,t)};t(A,e=>{i.value?e(j):e(M,-1)}),w(x);var P=e(x,2),L=e=>{var t=Mr();o(()=>I(t,`title`,`Clear ${i.label??``}`)),p(`click`,t,m),c(e,t)};t(P,e=>{i.value&&e(L)});var R=e(P,2),B=n=>{var a=Fr(),u=y(a),m=e=>{var t=Nr(),n=y(t);w(t),o(e=>k(n,`No ${e??``} assets in the library.`),[()=>i.expectedTypes.join(`/`)]),c(e,t)},h=t=>{var n=l();r(f(n),17,()=>g(s),e=>e.id,(t,n)=>{var r=Pr();let a;var s=y(r),l=e(s,2),u=y(l,!0);w(l),w(r),o(()=>{a=S(r,1,`option svelte-56kutb`,null,a,{selected:i.value?.$asset===g(n).id}),I(s,`src`,g(n).rawUrl),k(u,g(n).id)}),p(`click`,r,()=>d(g(n).id)),c(t,r)}),c(t,n)};t(u,e=>{g(s).length===0?e(m):e(h,-1)}),w(a),c(n,a)};t(R,e=>{g(a)&&e(B)}),w(b),w(h),o(()=>{C=S(x,1,`current svelte-56kutb`,null,C,{empty:!i.value}),I(x,`title`,i.value?`Change ${i.label}`:`Select ${i.label}`)}),p(`click`,x,()=>H(a,!g(a))),c(n,h),F()}s([`click`]);var Rr=d(`<span class="caption svelte-gjs979"> </span>`),zr=d(`<div class="color-field svelte-gjs979"><!> <div class="color-input control svelte-gjs979"><span class="swatch-slot svelte-gjs979"><input class="swatch svelte-gjs979" type="color" title="Open color picker"/></span> <input class="hex-input svelte-gjs979" type="text" maxlength="7" spellcheck="false"/></div></div>`);function Br(n,r){V(r,!0);let i=N(null),a=/^#[0-9a-f]{6}$/i;function s(e){let t=e.startsWith(`#`)?e:`#${e}`;return a.test(t)?t.toUpperCase():null}function l(e){let t=e.currentTarget.value.toUpperCase();H(i,t,!0),r.onChange?.(t)}function u(e){let t=e.currentTarget.value.toUpperCase();H(i,t,!0),r.onCommit(t)}function d(e){H(i,e.currentTarget.value,!0);let t=s(g(i));t&&r.onChange?.(t)}function f(){let e=s(g(i)??r.value);e&&r.onCommit(e),H(i,null)}function m(e){e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&(H(i,null),e.currentTarget.value=r.value,e.currentTarget.blur())}var h=zr(),_=y(h),v=e=>{var t=Rr(),n=y(t,!0);w(t),o(()=>k(n,r.caption)),c(e,t)};t(_,e=>{r.caption&&e(v)});var b=e(_,2),x=y(b),S=y(x);E(S),w(x);var C=e(x,2);E(C),w(b),w(h),o(()=>{O(S,r.value),I(S,`aria-label`,`${r.label} color picker`),O(C,g(i)??r.value),I(C,`aria-label`,`${r.label} hex value`)}),p(`input`,S,l),p(`change`,S,u),q(`focus`,C,()=>H(i,r.value,!0)),p(`input`,C,d),q(`blur`,C,f),p(`keydown`,C,m),c(n,h),F()}s([`input`,`change`,`keydown`]);var Vr=d(`<div class="field svelte-rsjkek"><!></div>`),Hr=d(`<section class="svelte-rsjkek"><!> <div class="field svelte-rsjkek"><!></div> <!></section> <section class="svelte-rsjkek"><!> <div class="field svelte-rsjkek"><!></div> <!></section> <section class="svelte-rsjkek"><!> <!> <!></section> <!>`,1);function Ur(n,i){V(i,!0);let o=z(()=>ce.validateParameters(i.parameters)),s=z(()=>i.presetCapabilities[g(o).preset]?.maxWidth!==!1);function l(e){i.onParametersCommit(e)}function u(e){if(i.presetCapabilities[e]?.maxWidth===!1){let{maxWidth:t,...n}=g(o);l({...n,preset:e});return}l({...g(o),preset:e})}function d(e,t){let n=Pe(g(o),e);t?l(n):i.onParametersChange(n)}function p(e){return{...g(o),chromaKey:e}}let m=[{key:`colorCutoff`,label:`Color cutoff`,icon:`cutoff`,min:0,max:.6,step:.005},{key:`colorFeathering`,label:`Color feathering`,icon:`color-feather`,min:0,max:.8,step:.005},{key:`maskFeathering`,label:`Mask feathering`,icon:`mask-feather`,min:0,max:1,step:.01},{key:`sharpening`,label:`Sharpening`,icon:`sharpen`,min:0,max:1,step:.01},{key:`despill`,label:`Despill`,icon:`despill`,min:0,max:1,step:.01},{key:`despillLuminanceAdd`,label:`Despill lum. add`,icon:`despill-lum`,min:0,max:1,step:.01},{key:`despillCoverage`,label:`Despill coverage`,icon:`despill-coverage`,min:0,max:1,step:.01}];function h(e,t,n){let r=p({...g(o).chromaKey,[e]:t});n?l(r):i.onParametersChange(r)}function _(e){return Math.round(Math.min(1,Math.max(0,e))*255).toString(16).padStart(2,`0`)}function v(e){return`#${_(e[0])}${_(e[1])}${_(e[2])}`}function b(e){let t=parseInt(e.slice(1),16);return[(t>>16&255)/255,(t>>8&255)/255,(t&255)/255]}function x(e,t){let n=p({...g(o).chromaKey,keyColor:b(e)});t?l(n):i.onParametersChange(n)}function S(e,t){let{[e]:n,...r}=g(o);l(t?{...r,[e]:t}:r)}var C=Hr(),T=f(C),E=y(T);Rt(E,{children:(e,t)=>{U(),c(e,a(`Video`))},$$slots:{default:!0}});var D=e(E,2);Ht(y(D),{label:`Preset`,caption:`Preset`,get value(){return g(o).preset},get options(){return i.presetNames},onChange:u,icon:e=>{Oe(e,{name:`preset`})},$$slots:{icon:!0}}),w(D);var O=e(D,2),k=e=>{var t=Vr(),n=y(t);{let e=e=>{Oe(e,{name:`width`})},t=z(()=>g(o).maxWidth??null);It(n,{label:`Max width`,caption:`Max width`,min:1,placeholder:`source`,get value(){return g(t)},onChange:e=>d(e,!1),onCommit:e=>d(e,!0),icon:e,$$slots:{icon:!0}})}w(t),c(e,t)};t(O,e=>{g(s)&&e(k)}),w(T);var A=e(T,2),j=y(A);Rt(j,{children:(e,t)=>{U(),c(e,a(`Chroma key`))},$$slots:{default:!0}});var M=e(j,2),N=y(M);{let e=z(()=>v(g(o).chromaKey.keyColor));Br(N,{label:`Key color`,caption:`Key color`,get value(){return g(e)},onChange:e=>x(e,!1),onCommit:e=>x(e,!0)})}w(M),r(e(M,2),17,()=>m,e=>e.key,(e,t)=>{var n=Vr(),r=y(n);{let e=e=>{Oe(e,{get name(){return g(t).icon}})},n=z(()=>g(o).chromaKey[g(t).key]??Y[g(t).key]);It(r,{get label(){return g(t).label},get caption(){return g(t).label},get min(){return g(t).min},get max(){return g(t).max},get step(){return g(t).step},get value(){return g(n)},onChange:e=>h(g(t).key,e??g(t).min,!1),onCommit:e=>h(g(t).key,e??g(t).min,!0),icon:e,$$slots:{icon:!0}})}w(n),c(e,n)}),w(A);var P=e(A,2),I=y(P);Rt(I,{children:(e,t)=>{U(),c(e,a(`References`))},$$slots:{default:!0}});var L=e(I,2);Lr(L,{label:`Mask`,caption:`Mask`,get value(){return g(o).mask},expectedTypes:[`image`],get excludeAssetId(){return i.asset.id},onChange:e=>S(`mask`,e)}),Lr(e(L,2),{label:`Fallback`,caption:`Fallback`,get value(){return g(o).fallback},expectedTypes:[`image`],get excludeAssetId(){return i.asset.id},onChange:e=>S(`fallback`,e)}),w(P),Kt(e(P,2),{get proxy(){return i.asset.proxy},showDimensions:!0,showDuration:!0}),c(n,C),F()}var Wr=d(`<div class="preview-column svelte-1y3xro5"><div class="compare-row svelte-1y3xro5"><figure class="svelte-1y3xro5"><figcaption class="svelte-1y3xro5">Input</figcaption> <div class="video-frame svelte-1y3xro5"><!></div></figure> <figure class="svelte-1y3xro5"><figcaption class="svelte-1y3xro5">Keyed</figcaption> <div class="video-frame checkerboard svelte-1y3xro5"><!></div></figure></div> <!></div>`),Gr=d(`<p class="svelte-1y3xro5">No proxy yet — add the asset to a manifest to process it.</p>`),Kr=d(`<div class="stage svelte-1y3xro5"><!></div>`);function qr(n,r){V(r,!0);let i=N(void 0),a=N(void 0);function s(e){if(!e)return;let t=Q.assetById(e);if(!(!t?.proxy||t.proxy.width===void 0||t.proxy.height===void 0))return{id:e,kind:`image`,src:t.proxy.url,byteSize:t.proxy.fileSize,width:t.proxy.width,height:t.proxy.height}}let l=z(()=>{if(!r.asset.proxy||r.asset.proxy.width===void 0||r.asset.proxy.height===void 0||r.asset.proxy.durationMs===void 0)return null;try{let e=ce.validateParameters(r.parameters),t=s(e.mask?.$asset),n=s(e.fallback?.$asset);return{id:r.asset.id,kind:`chroma-key-video`,src:r.asset.proxy.url,byteSize:r.asset.proxy.fileSize,width:r.asset.proxy.width,height:r.asset.proxy.height,durationMs:r.asset.proxy.durationMs,chromaKey:e.chromaKey,...t?{mask:t}:{},...n?{fallback:n}:{}}}catch{return null}}),u=z(()=>g(l)?{id:g(l).id,kind:`video`,src:g(l).src,byteSize:g(l).byteSize,width:g(l).width,height:g(l).height,durationMs:g(l).durationMs}:null);L(()=>{let e=g(i),t=g(a);if(!e||!t)return;function n(){Math.abs(t.currentTime-e.currentTime)>.25&&(t.currentTime=e.currentTime)}function r(){n(),t.play().catch(()=>{})}function o(){t.pause(),t.currentTime=e.currentTime}function s(){t.currentTime=e.currentTime}return e.addEventListener(`play`,r),e.addEventListener(`playing`,r),e.addEventListener(`pause`,o),e.addEventListener(`ended`,o),e.addEventListener(`seeked`,s),e.addEventListener(`timeupdate`,n),s(),e.paused||t.play().catch(()=>{}),()=>{e.removeEventListener(`play`,r),e.removeEventListener(`playing`,r),e.removeEventListener(`pause`,o),e.removeEventListener(`ended`,o),e.removeEventListener(`seeked`,s),e.removeEventListener(`timeupdate`,n)}});var d=Kr(),f=y(d),p=t=>{var n=Wr(),r=y(n),s=y(r),d=e(y(s),2);let f;A(y(d),()=>g(u).src,e=>{kn(e,{get src(){return g(u)},loop:!0,get videoElement(){return g(a)},set videoElement(e){H(a,e,!0)}})}),w(d),w(s);var p=e(s,2),m=e(y(p),2);let h;A(y(m),()=>`${g(l).src}|${g(l).mask?.src??``}`,e=>{Hn(e,{get src(){return g(l)},get videoElement(){return g(i)},set videoElement(e){H(i,e,!0)}})}),w(m),w(p),w(r),ct(e(r,2),{get media(){return g(i)},showScrub:!0,showVolume:!1}),w(n),o(()=>{f=K(d,``,f,{"aspect-ratio":`${g(u).width??``} / ${g(u).height??``}`}),h=K(m,``,h,{"aspect-ratio":`${g(l).width??``} / ${g(l).height??``}`})}),c(t,n)},m=e=>{c(e,Gr())};t(f,e=>{g(l)&&g(u)?e(p):e(m,-1)}),w(d),c(n,d),F()}var Jr=d(`<section class="svelte-3jblpy"><!> <div class="field svelte-3jblpy"><!></div></section> <!>`,1);function Yr(t,n){V(n,!0);let r=z(()=>oe.validateParameters(n.parameters));function i(e){let t={...g(r),preset:e};n.onParametersCommit(t)}var o=Jr(),s=f(o),l=y(s);Rt(l,{children:(e,t)=>{U(),c(e,a(`Audio`))},$$slots:{default:!0}});var u=e(l,2);Ht(y(u),{label:`Preset`,caption:`Preset`,get value(){return g(r).preset},get options(){return n.presetNames},onChange:i,icon:e=>{Oe(e,{name:`preset`})},$$slots:{icon:!0}}),w(u),w(s),Kt(e(s,2),{get proxy(){return n.asset.proxy},showDuration:!0}),c(t,o),F()}function Xr(e,t){V(t,!0);{let n=z(()=>t.asset.proxy?.url??t.asset.rawUrl);_t(e,{get src(){return g(n)}})}F()}var Zr={[Te.type]:{panel:Jt,editor:Gn,thumbnail:qn},[De.type]:{panel:tr,editor:gr,thumbnail:qn},[ee.type]:{panel:yr,editor:Cr,thumbnail:Tr},[ce.type]:{panel:Ur,editor:qr,thumbnail:Tr},[oe.type]:{panel:Yr,editor:xt,thumbnail:Xr}},Qr=fe.project(Zr,`editor implementation`),$r=d(`<p class="error svelte-1f5yh58">This file type is not supported (raster images, video, or audio).</p>`),ei=d(`<button> </button>`),ti=d(`<p class="empty-manifests svelte-1f5yh58">No manifests available — this asset will be unassigned.</p>`),ni=d(`<div class="manifest-list svelte-1f5yh58"><!></div>`),ri=d(`<p class="hint warn svelte-1f5yh58"> </p>`),ii=d(`<p class="hint warn svelte-1f5yh58">An asset with this id already exists.</p>`),ai=d(`<div class="row svelte-1f5yh58"><span class="label svelte-1f5yh58">Type</span> <div class="segmented svelte-1f5yh58"></div></div> <label class="row svelte-1f5yh58"><span class="label svelte-1f5yh58">Id</span> <input class="control svelte-1f5yh58" type="text" spellcheck="false"/></label> <div class="row manifests svelte-1f5yh58"><span class="label svelte-1f5yh58">Manifests</span> <!></div> <!> <!>`,1),oi=d(`<div class="backdrop svelte-1f5yh58" role="presentation"><div class="dialog svelte-1f5yh58" role="dialog" aria-label="Import asset" tabindex="-1"><h2 class="svelte-1f5yh58">Import asset</h2> <p class="file-name svelte-1f5yh58"> </p> <p class="destination svelte-1f5yh58"> </p> <!> <div class="actions svelte-1f5yh58"><button class="control">Cancel</button> <button class="control primary"> </button></div></div></div>`);function si(n,i){V(i,!0);let a=z(()=>he(i.file.name)),s=N(`image`),l=N(`asset`),u=N(T([])),d=N(!1),m=N(null),h=z(()=>Q.manifestNames);L(()=>{H(s,he(i.file.name)[0]??`image`,!0),H(l,Ie(i.file.name),!0),H(u,g(h).length===0?[]:[g(h).includes(`main`)?`main`:g(h)[0]],!0)});let _=z(()=>Q.state?.assets.some(e=>e.id===g(l))??!1),b=z(()=>ye(g(l))),x=z(()=>g(b)===null),C=z(()=>g(x)&&!g(_)&&g(a).length>0&&!g(d));function D(e){H(u,g(u).includes(e)?g(u).filter(t=>t!==e):[...g(u),e],!0)}async function O(){if(!g(C))return;let e=g(l),t=g(s),n=[...g(u)],r=i.file,a=i.folder;H(d,!0),H(m,null);try{await Q.mutateFromServer(()=>me(r,t,e,a,n),{dependencies:[`asset:${e}`,`folder:${a}`,...n.map(e=>`manifest:${e}`)]}),i.onDone(e)}catch(e){H(m,e instanceof Error?e.message:String(e),!0)}finally{H(d,!1)}}var A=oi();q(`keydown`,v,e=>Fe(e,{busy:g(d),confirmDisabled:!g(C),onConfirm:()=>void O(),onCancel:i.onCancel}));var M=y(A),P=e(y(M),2),I=y(P,!0);w(P);var R=e(P,2),B=y(R);w(R);var U=e(R,2),W=e=>{c(e,$r())},G=n=>{var i=ai(),v=f(i),C=e(y(v),2);r(C,20,()=>g(a),e=>e,(e,t)=>{var n=ei();let r;var i=y(n,!0);w(n),o(()=>{n.disabled=g(d),r=S(n,1,`svelte-1f5yh58`,null,r,{on:g(s)===t}),k(i,t)}),p(`click`,n,()=>H(s,t,!0)),c(e,n)}),w(C),w(v);var T=e(v,2),O=e(y(T),2);E(O),w(T);var A=e(T,2),M=e(y(A),2),N=e=>{c(e,ti())},P=e=>{var t=ni();Ae(y(t),{get manifests(){return g(h)},get selected(){return g(u)},passive:[],onToggle:D,get disabled(){return g(d)}}),w(t),c(e,t)};t(M,e=>{g(h).length===0?e(N):e(P,-1)}),w(A);var F=e(A,2),I=e=>{var t=ri(),n=y(t,!0);w(t),o(()=>k(n,g(b))),c(e,t)},L=e=>{c(e,ii())};t(F,e=>{g(x)?g(_)&&e(L,1):e(I)});var R=e(F,2),z=e=>{var t=ri(),n=y(t,!0);w(t),o(()=>k(n,g(m))),c(e,t)};t(R,e=>{g(m)&&e(z)}),o(()=>O.disabled=g(d)),j(O,()=>g(l),e=>H(l,e)),c(n,i)};t(U,e=>{g(a).length===0?e(W):e(G,-1)});var K=e(U,2),J=y(K),Y=e(J,2),ee=y(Y,!0);w(Y),w(K),w(M),w(A),o(()=>{k(I,i.file.name),k(B,`Destination: ${(i.folder||`Root`)??``}`),J.disabled=g(d),Y.disabled=!g(C),k(ee,g(d)?`Importing…`:`Import`)}),p(`click`,A,e=>{e.target===e.currentTarget&&!g(d)&&i.onCancel()}),p(`click`,J,function(...e){i.onCancel?.apply(this,e)}),p(`click`,Y,()=>void O()),c(n,A),F()}s([`click`]);function ci(e){let t=e.trim();if(t===``)return{key:``};if(!(/^https?:\/\//i.test(t)||/figma\.com/i.test(t)))return{key:t};let n=/^https?:\/\//i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return{error:`Enter a valid Figma file link or a bare file key.`}}if(r.hostname!==`figma.com`&&r.hostname!==`www.figma.com`)return{error:`Figma links must point to figma.com.`};let i=r.pathname.split(`/`).filter(Boolean);return![`design`,`file`,`proto`].includes(i[0]??``)||!i[1]?{error:`The Figma link must point to a design, file, or prototype.`}:{key:i[1]}}var li=d(`<p class="destination svelte-n5o24b"> </p>`),ui=d(`<label class="field wide svelte-n5o24b"><span>Selection link</span> <input class="control" type="url" placeholder="https://www.figma.com/design/…?node-id=…"/></label>`),di=d(`<label class="field wide svelte-n5o24b"><span>Tag</span> <input class="control" spellcheck="false" placeholder="asset"/></label>`),fi=d(`<!> <label class="field wide svelte-n5o24b"><span>File key</span> <input class="control" spellcheck="false"/></label>`,1),pi=d(`<label class="field svelte-n5o24b"><span>Type</span> <select class="control"><option>Image</option><option>Slice</option></select></label>`),mi=d(`<label class="field wide svelte-n5o24b"><span>Asset ID</span> <input class="control" spellcheck="false" placeholder="asset"/></label>`),hi=d(`<div class="field wide svelte-n5o24b"><span>Manifests</span> <!></div>`),gi=d(`<p class="warning svelte-n5o24b"> </p>`),_i=d(`<p class="warning svelte-n5o24b">An asset with this ID already exists.</p>`),vi=d(`<!> <!>`,1),yi=d(`<!> <!> <!>`,1),bi=d(`<div class="backdrop svelte-n5o24b" role="presentation"><div class="dialog svelte-n5o24b" role="dialog" tabindex="-1"><h2 class="svelte-n5o24b"> </h2> <!> <div class="mode-toggle svelte-n5o24b" role="group" aria-label="Import mode"><button type="button">Link</button> <button type="button">Tag</button></div> <!> <div class="row svelte-n5o24b"><!> <label class="field svelte-n5o24b"><span>Export scale</span> <select class="control"><option>1x</option><option>2x</option><option>3x</option><option>4x</option></select></label></div> <!> <!> <!> <div class="actions svelte-n5o24b"><button class="control">Cancel</button> <button class="control primary"> </button></div></div></div>`);function xi(n,r){V(r,!0);let i=x(r,`folder`,3,``),a=`fundus:figma-import-mode`;function s(){try{return localStorage.getItem(a)===`tag`?`tag`:`link`}catch{return`link`}}let l=N(T(s())),u=N(``),d=N(``),m=N(``),h=N(T(Q.state?.importDefaults.figma.scale??2)),_=N(`image`),b=N(``),C=N(T(ke(Q.manifestNames))),O=N(!1),A=N(null),M=z(()=>Q.manifestNames),P=z(()=>ye(g(b))),R=z(()=>Q.state?.assets.some(e=>e.id===g(b))??!1),B=z(()=>ye(g(d))),U=z(()=>Q.state?.assets.some(e=>e.id===g(d))??!1),W=z(()=>ci(g(m))),G=z(()=>`error`in g(W)?g(W).error:null),K=z(()=>Q.state?.importDefaults.figma.defaultFileKey??``);L(()=>{try{localStorage.setItem(a,g(l))}catch{}});let J=z(()=>g(O)?!1:g(l)===`tag`?g(G)===null?r.replacement!==void 0||g(B)===null&&!g(U):!1:g(u).trim().length===0?!1:r.replacement!==void 0||g(P)===null&&!g(R));function Y(e){H(C,g(C).includes(e)?g(C).filter(t=>t!==e):[...g(C),e],!0)}async function ee(){if(!g(J))return;let e=g(b),t=[...g(C)],n=g(u),a=g(d),o=`key`in g(W)&&g(W).key.length>0?g(W).key:void 0,s=g(h),c=g(_),f=i(),p=g(l),m=r.replacement;H(O,!0),H(A,null);try{m?(await Q.mutateFromServer(()=>p===`tag`?_e(m.id,{mode:`tag`,tag:m.id,fileKey:o,scale:s}):_e(m.id,{url:n,scale:s}),{dependencies:[`asset:${m.id}`]}),r.onDone(m.id)):p===`tag`?(await Q.mutateFromServer(()=>ue({mode:`tag`,tag:a,fileKey:o,scale:s,type:c,folder:f,manifests:t}),{dependencies:[`asset:${a}`,`folder:${f}`,...t.map(e=>`manifest:${e}`)]}),r.onDone(a)):(await Q.mutateFromServer(()=>ue({url:n,scale:s,type:c,id:e,folder:f,manifests:t}),{dependencies:[`asset:${e}`,`folder:${f}`,...t.map(e=>`manifest:${e}`)]}),r.onDone(e))}catch(e){H(A,e instanceof Error?e.message:String(e),!0)}finally{H(O,!1)}}var te=bi();q(`keydown`,v,e=>Fe(e,{busy:g(O),confirmDisabled:!g(J),onConfirm:()=>void ee(),onCancel:r.onCancel}));var ne=y(te),re=y(ne),ie=y(re,!0);w(re);var ae=e(re,2),oe=e=>{var t=li(),n=y(t);w(t),o(()=>k(n,`Asset: ${r.replacement.id??``}`)),c(e,t)},X=e=>{var t=li(),n=y(t);w(t),o(()=>k(n,`Destination: ${(i()||`Root`)??``}`)),c(e,t)};t(ae,e=>{r.replacement?e(oe):e(X,-1)});var Z=e(ae,2),se=y(Z);let ce;var le=e(se,2);let de;w(Z);var fe=e(Z,2),pe=t=>{var n=ui(),r=e(y(n),2);E(r),w(n),o(()=>r.disabled=g(O)),j(r,()=>g(u),e=>H(u,e)),c(t,n)},me=n=>{var i=fi(),a=f(i),s=t=>{var n=di(),r=e(y(n),2);E(r),w(n),o(()=>r.disabled=g(O)),j(r,()=>g(d),e=>H(d,e)),c(t,n)};t(a,e=>{r.replacement||e(s)});var l=e(a,2),u=e(y(l),2);E(u),w(l),o(()=>{u.disabled=g(O),I(u,`placeholder`,g(K)||`file key or figma link`)}),j(u,()=>g(m),e=>H(m,e)),c(n,i)};t(fe,e=>{g(l)===`link`?e(pe):e(me,-1)});var he=e(fe,2),ge=y(he),ve=t=>{var n=pi(),r=e(y(n),2),i=y(r);i.value=i.__value=`image`;var a=e(i);a.value=a.__value=`slice`,w(r),w(n),o(()=>r.disabled=g(O)),D(r,()=>g(_),e=>H(_,e)),c(t,n)};t(ge,e=>{r.replacement||e(ve)});var be=e(ge,2),xe=e(y(be),2),Se=y(xe);Se.value=Se.__value=1;var Ce=e(Se);Ce.value=Ce.__value=2;var we=e(Ce);we.value=we.__value=3;var Te=e(we);Te.value=Te.__value=4,w(xe),w(be),w(he);var Ee=e(he,2),De=n=>{var r=yi(),i=f(r),a=t=>{var n=mi(),r=e(y(n),2);E(r),w(n),o(()=>r.disabled=g(O)),j(r,()=>g(b),e=>H(b,e)),c(t,n)};t(i,e=>{g(l)===`link`&&e(a)});var s=e(i,2),u=t=>{var n=hi();Ae(e(y(n),2),{get manifests(){return g(M)},get selected(){return g(C)},passive:[],onToggle:Y,get disabled(){return g(O)}}),w(n),c(t,n)};t(s,e=>{g(M).length>0&&e(u)});var p=e(s,2),m=n=>{var r=vi(),i=f(r),a=e=>{var t=gi(),n=y(t,!0);w(t),o(()=>k(n,g(P))),c(e,t)};t(i,e=>{g(b)&&g(P)&&e(a)});var s=e(i,2),l=e=>{c(e,_i())};t(s,e=>{g(R)&&e(l)}),c(n,r)},h=n=>{var r=vi(),i=f(r),a=e=>{var t=gi(),n=y(t,!0);w(t),o(()=>k(n,g(B))),c(e,t)};t(i,e=>{g(d)&&g(B)&&e(a)});var s=e(i,2),l=e=>{c(e,_i())};t(s,e=>{g(U)&&e(l)}),c(n,r)};t(p,e=>{g(l)===`link`?e(m):e(h,-1)}),c(n,r)};t(Ee,e=>{r.replacement||e(De)});var Oe=e(Ee,2),je=e=>{var t=gi(),n=y(t,!0);w(t),o(()=>k(n,g(G))),c(e,t)};t(Oe,e=>{g(G)&&e(je)});var Me=e(Oe,2),Ne=e=>{var t=gi(),n=y(t,!0);w(t),o(()=>k(n,g(A))),c(e,t)};t(Me,e=>{g(A)&&e(Ne)});var Pe=e(Me,2),Ie=y(Pe),$=e(Ie,2),Le=y($,!0);w($),w(Pe),w(ne),w(te),o(()=>{I(ne,`aria-label`,r.replacement?`Replace from Figma`:`Import from Figma`),k(ie,r.replacement?`Replace from Figma`:`Import from Figma`),ce=S(se,1,`control svelte-n5o24b`,null,ce,{active:g(l)===`link`}),I(se,`aria-pressed`,g(l)===`link`),se.disabled=g(O),de=S(le,1,`control svelte-n5o24b`,null,de,{active:g(l)===`tag`}),I(le,`aria-pressed`,g(l)===`tag`),le.disabled=g(O),xe.disabled=g(O),Ie.disabled=g(O),$.disabled=!g(J),k(Le,g(O)?r.replacement?`Replacing…`:`Importing…`:r.replacement?`Replace`:`Import`)}),p(`click`,te,e=>{e.target===e.currentTarget&&!g(O)&&r.onCancel()}),p(`click`,se,()=>H(l,`link`)),p(`click`,le,()=>H(l,`tag`)),D(xe,()=>g(h),e=>H(h,e)),p(`click`,Ie,function(...e){r.onCancel?.apply(this,e)}),p(`click`,$,()=>void ee()),c(n,te),F()}s([`click`]);var Si=d(`<span class="arrow svelte-13hq4tl" aria-hidden="true">›</span>`),Ci=d(`<hr class="svelte-13hq4tl"/>`),wi=d(`<button role="menuitem" tabindex="-1" class="svelte-13hq4tl"> </button>`),Ti=d(`<!> <!>`,1),Ei=d(`<div role="menu" tabindex="-1"></div>`),Di=d(`<div class="submenu-anchor svelte-13hq4tl" role="presentation"><button class="submenu-trigger svelte-13hq4tl" role="menuitem"><span> </span> <!></button> <!></div>`);function Oi(n,i){V(i,!0);let a=x(i,`alwaysSubmenu`,3,!1),s=N(void 0),l=N(void 0),d=N(!1),m=N(!1),_=N(240),v=z(()=>i.sections.filter(e=>e.length>0)),b=z(()=>g(v).flat()),C=z(()=>a()||g(b).length>1);async function T(e=!1){if(!g(C)||(H(d,!0),await h(),!g(s)||!g(l)))return;let t=g(s).getBoundingClientRect();H(m,t.right+g(l).offsetWidth+8>window.innerWidth),H(_,Math.max(32,window.innerHeight-t.top-8),!0),e&&g(l).querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()}function E(e){if(!g(C)){let e=g(b)[0];e&&i.onSelect(e.value);return}e.stopPropagation(),T()}function D(e){!g(C)||e.key!==`ArrowRight`&&e.key!==`ArrowDown`||(e.preventDefault(),e.stopPropagation(),T(!0))}function O(e){if(e.key===`ArrowLeft`||e.key===`Escape`){e.preventDefault(),e.stopPropagation(),H(d,!1),g(s)?.focus();return}if(!g(l))return;let t=[...g(l).querySelectorAll(`[role="menuitem"]:not(:disabled)`)];if(t.length===0)return;let n=t.indexOf(document.activeElement),r;if(e.key===`ArrowDown`)r=(n+1)%t.length;else if(e.key===`ArrowUp`)r=(n-1+t.length)%t.length;else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t.length-1;else return;e.preventDefault(),e.stopPropagation(),t[r]?.focus()}var A=Di(),j=y(A),M=y(j),P=y(M,!0);w(M);var L=e(M,2),R=e=>{c(e,Si())};t(L,e=>{g(C)&&e(R)}),w(j),B(j,e=>H(s,e),()=>g(s));var U=e(j,2),W=n=>{var a=Ei();let s,d;r(a,21,()=>g(v),u,(n,a,s)=>{var l=Ti(),u=f(l),d=e=>{c(e,Ci())};t(u,e=>{s>0&&e(d)}),r(e(u,2),17,()=>g(a),e=>e.value,(e,t)=>{var n=wi(),r=y(n,!0);w(n),o(()=>{n.disabled=g(t).disabled,I(n,`title`,g(t).title),k(r,g(t).label)}),p(`click`,n,()=>i.onSelect(g(t).value)),c(e,n)}),c(n,l)}),w(a),B(a,e=>H(l,e),()=>g(l)),o(()=>{s=S(a,1,`submenu svelte-13hq4tl`,null,s,{"opens-left":g(m)}),I(a,`aria-label`,i.label),d=K(a,``,d,{"max-height":`${g(_)}px`})}),p(`keydown`,a,O),c(n,a)};t(U,e=>{g(C)&&g(d)&&e(W)}),w(A),o(()=>{I(j,`aria-haspopup`,g(C)?`menu`:void 0),I(j,`aria-expanded`,g(C)?g(d):void 0),k(P,i.label)}),q(`mouseenter`,A,()=>void T()),q(`mouseleave`,A,()=>H(d,!1)),p(`focusout`,A,e=>{e.currentTarget.contains(e.relatedTarget)||H(d,!1)}),p(`click`,j,E),p(`keydown`,j,D),c(n,A),F()}s([`focusout`,`click`,`keydown`]);function ki(e,t,n=[]){let r=e!==t&&!X(t,e)&&re(e)!==t;if(!r||n.length===0)return r;let i=te(t,ae(e)),a=new Set(n.filter(t=>!X(t,e)).map(ie));return n.filter(t=>X(t,e)).every(t=>!a.has(ie(Z(t,e,i))))}function Ai(e,t,n,r=[]){return e&&t!==null&&ki(t,n,r)}var ji=i(`<svg viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path d="M1.25 4.25A1.75 1.75 0 0 1 3 2.5h2.45c.55 0 1.06.26 1.39.7l.6.8H13a1.75 1.75 0 0 1 1.75 1.75v5.5A1.75 1.75 0 0 1 13 13H3a1.75 1.75 0 0 1-1.75-1.75v-7Z" fill="currentColor"></path><path d="M1.75 6h12.5" stroke="currentColor" stroke-opacity="0.35"></path></svg>`);function Mi(e,t){let n=x(t,`size`,3,14);var r=ji();o(()=>{I(r,`width`,n()),I(r,`height`,n())}),c(e,r)}var Ni=d(`<span class="asset-warning svelte-ftwms1">⚠</span>`),Pi=d(`<div class="asset-row svelte-ftwms1"><button class="row asset current svelte-ftwms1" draggable="true" aria-current="page"><span class="glyph asset-glyph svelte-ftwms1">◆</span> <span class="label svelte-ftwms1"> </span> <!></button></div>`),Fi=d(`<div class="folder-row svelte-ftwms1"><button draggable="true"><span class="glyph svelte-ftwms1"><!></span><span class="label svelte-ftwms1"> </span><span class="count svelte-ftwms1"> </span></button></div> <!>`,1),Ii=d(`<p class="dialog-warning svelte-ftwms1"> </p>`),Li=d(`<p class="dialog-warning svelte-ftwms1">A sibling folder with this name already exists.</p>`),Ri=d(`<label class="dialog-row svelte-ftwms1"><span class="svelte-ftwms1">Name</span> <input class="control svelte-ftwms1" spellcheck="false"/></label> <p class="dialog-path svelte-ftwms1"> </p> <!> <!> <!>`,1),zi=d(`<p class="dialog-text svelte-ftwms1">Delete <strong> </strong> </p> <!> <!>`,1),Bi=d(`<aside class="directory svelte-ftwms1" aria-label="Asset folders"><header class="svelte-ftwms1"><strong class="svelte-ftwms1">Folders</strong> <div class="actions svelte-ftwms1"><button class="icon-button svelte-ftwms1">+</button> <button class="icon-button svelte-ftwms1">✎</button> <button class="icon-button danger svelte-ftwms1">×</button></div></header> <div class="tree svelte-ftwms1"><button><span class="glyph svelte-ftwms1">▦</span><span class="label svelte-ftwms1">All Assets</span><span class="count svelte-ftwms1"> </span></button> <button><span class="glyph svelte-ftwms1">⌂</span><span class="label svelte-ftwms1">Root</span><span class="count svelte-ftwms1"> </span></button> <!> <!></div></aside> <!> <!>`,1);function Vi(n,i){V(i,!0);let a=x(i,`activeAsset`,3,null),s=x(i,`sharedDraggedFolder`,3,null),l=N(null),u=N(null),d=z(()=>s()??g(u)),m=z(()=>Q.state?.library.folders??[]),_=z(()=>Q.state?.assets??[]),v=z(()=>[...g(m)].sort((e,t)=>e.localeCompare(t)));function b(e){return g(_).filter(t=>t.folder===e).length}function C(e,t){let n=e.dataTransfer?.types.includes(`application/x-fundus-assets`)??!1,r=Ai(e.dataTransfer?.types.includes(`application/x-fundus-folder`)??!1,g(d),t,g(m));!n&&!r||(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),H(l,t,!0))}function T(e,t){e.preventDefault(),H(l,null);let n=e.dataTransfer?.getData(`application/x-fundus-assets`);if(n){try{let e=JSON.parse(n);Array.isArray(e)&&e.every(e=>typeof e==`string`)&&i.onMoveAssets(e,t)}catch{}return}let r=e.dataTransfer?.getData(`application/x-fundus-folder`)||g(d);r&&ki(r,t,g(m))&&O(r,t)}function D(e,t){a()||i.selectedFolder!==null&&X(i.selectedFolder,e)&&i.onSelect(`${t}${i.selectedFolder.slice(e.length)}`,!0)}async function O(e,t){let n=te(t,ae(e)),r=Q.mutate(()=>de(e,t),Ce(e,t),{dependencies:[`folder:${e}`,`folder:${t}`,`folder:${n}`],invalidatesOnFailure:[`folder:${e}`,`folder:${n}`]});D(e,n);try{await r}catch{g(m).some(t=>X(t,e))&&D(n,e)}finally{H(u,null),i.onFolderDragEnd?.()}}let A=N(null),M=N(``),P=N(null),R=N(null),U=N(``),W=N(void 0),G=N(!1),J=N(null),Y=0,ee=z(()=>i.selectedFolder!==null&&i.selectedFolder!==``?i.selectedFolder:null),oe=z(()=>g(U)===``?null:ve(g(U))),Z=z(()=>te(g(A)===`rename`?re(g(P)??``):g(M),g(U).normalize(`NFC`))),se=z(()=>g(U)!==``&&g(m).some(e=>e!==(g(A)===`rename`?g(P):null)&&ie(e)===ie(g(Z)))),ce=z(()=>g(U)!==``&&!g(oe)&&!g(se)&&!g(G));function ue(e=i.selectedFolder??``){Y+=1,H(M,e,!0),H(U,``),H(J,null),H(A,`create`),h().then(()=>g(W)?.focus())}let fe=0;L(()=>{i.createRequest!==null&&i.createRequest.id!==fe&&(fe=i.createRequest.id,ue(i.createRequest.parent))});function pe(e,t,n=null){e.preventDefault(),e.stopPropagation(),i.onContextMenu(e.clientX,e.clientY,t,n)}function me(e){e!==null&&(Y+=1,H(P,e,!0),H(U,ae(e),!0),H(J,null),H(A,`rename`),h().then(()=>g(W)?.focus()))}let he=0;L(()=>{i.renameRequest!==null&&i.renameRequest.id!==he&&(he=i.renameRequest.id,me(i.renameRequest.path))});function _e(e){e!==null&&(Y+=1,H(R,e,!0),H(J,null),H(A,`delete`))}let ye=0;L(()=>{i.deleteRequest!==null&&i.deleteRequest.id!==ye&&(ye=i.deleteRequest.id,_e(i.deleteRequest.path))});function we(){g(G)||(Y+=1,H(A,null),H(J,null))}async function Te(){if(!g(ce))return;let e=g(A),t=g(U),n=t.normalize(`NFC`),r=i.selectedFolder,o=null,s=null,c=null;H(G,!0),H(J,null);try{if(e===`create`){let e=g(Z),t=Q.mutate(()=>le(e),ge(e),{dependencies:[`folder:${g(M)}`,`folder:${e}`],invalidatesOnFailure:[`folder:${e}`]});a()||i.onSelect(e,!0),o=()=>{!a()&&i.selectedFolder===e&&!g(m).includes(e)&&i.onSelect(r,!0)},s=()=>!g(m).includes(e),H(A,null),c=++Y,H(G,!1),await t}else if(e===`rename`&&g(P)!==null){let e=g(P),t=g(Z),r=Q.mutate(()=>be(e,n),xe(e,n),{dependencies:[`folder:${e}`,`folder:${t}`],invalidatesOnFailure:[`folder:${e}`,`folder:${t}`]});D(e,t),o=()=>{g(m).some(t=>X(t,e))&&D(t,e)},s=()=>g(m).some(t=>X(t,e)),H(A,null),c=++Y,H(G,!1),await r}}catch(n){s?.()&&o?.(),c!==null&&Y===c&&s?.()&&(H(A,e,!0),H(U,t,!0),H(J,n instanceof Error?n.message:String(n),!0))}finally{H(G,!1)}}let Ee=z(()=>g(R)===null?[]:g(m).filter(e=>X(e,g(R)??``))),De=z(()=>g(R)===null?[]:g(_).filter(e=>X(e.folder,g(R)??``))),Oe=z(()=>new Set(g(De).map(e=>e.id))),ke=z(()=>g(De).flatMap(e=>e.references.incoming.filter(e=>!g(Oe).has(e.assetId)).map(t=>`${t.assetId}.${t.field} → ${e.id}`)));async function Ae(){if(g(R)===null)return;let e=g(R),t=re(e),n=i.selectedFolder,r=a()!==null&&X(a().folder,e),o=r?a()?.id:null;H(G,!0),H(J,null);let s=Q.mutate(()=>ne(e),Se(e),{dependencies:[`folder:${e}`],invalidatesOnFailure:[`folder:${e}`]});r?i.onActiveAssetDeleted?.(t):!a()&&i.selectedFolder!==null&&X(i.selectedFolder,e)&&i.onSelect(t,!0),H(A,null);let c=++Y;H(G,!1);try{await s}catch(r){let a=g(m).some(t=>X(t,e))||g(_).some(t=>X(t.folder,e));a&&o?i.onActiveAssetDeleteFailed?.(o):a&&i.selectedFolder===t&&i.onSelect(n,!0),a&&Y===c&&(H(A,`delete`),H(R,e,!0),H(J,r instanceof Error?r.message:String(r),!0))}finally{H(G,!1)}}function je(e){a()&&(e.dataTransfer?.setData(`application/x-fundus-assets`,JSON.stringify([a().id])),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`))}var Me=Bi(),Pe=f(Me),Fe=y(Pe),Ie=e(y(Fe),2),$=y(Ie),Le=e($,2),Re=e(Le,2);w(Ie),w(Fe);var ze=e(Fe,2),Be=y(ze);let Ve;var He=e(y(Be),2),Ue=y(He,!0);w(He),w(Be);var We=e(Be,2);let Ge;var Ke=e(y(We),2),qe=y(Ke,!0);w(Ke),w(We);var Je=e(We,2),Ye=n=>{var r=Pi();K(r,``,{},{"--depth":0});var i=y(r),s=e(y(i),2),l=y(s,!0);w(s);var u=e(s,2),d=e=>{var t=Ni();o(e=>I(t,`title`,e),[()=>a().warnings.join(`
|
|
118
|
+
`)]),c(e,t)};t(u,e=>{a().warnings.length>0&&e(d)}),w(i),w(r),o(()=>{I(i,`title`,a().id),k(l,a().id)}),q(`dragstart`,i,je),c(n,r)};t(Je,e=>{a()?.folder===``&&e(Ye)}),r(e(Je,2),16,()=>g(v),e=>e,(n,r)=>{let s=z(()=>r.split(`/`).length-1);var d=Fi(),m=f(d);let h;var _=y(m);let v;var x=y(_);Mi(y(x),{}),w(x);var E=e(x),D=y(E,!0);w(E);var O=e(E),A=y(O,!0);w(O),w(_),w(m);var j=e(m,2),M=n=>{var r=Pi();let i;var l=y(r),u=e(y(l),2),d=y(u,!0);w(u);var f=e(u,2),p=e=>{var t=Ni();o(e=>I(t,`title`,e),[()=>a().warnings.join(`
|
|
119
|
+
`)]),c(e,t)};t(f,e=>{a().warnings.length>0&&e(p)}),w(l),w(r),o(()=>{i=K(r,``,i,{"--depth":g(s)+1}),I(l,`title`,a().id),k(d,a().id)}),q(`dragstart`,l,je),c(n,r)};t(j,e=>{a()?.folder===r&&e(M)}),o((e,t)=>{h=K(m,``,h,{"--depth":g(s)}),v=S(_,1,`row folder svelte-ftwms1`,null,v,{selected:!a()&&i.selectedFolder===r,"drop-target":g(l)===r}),I(E,`title`,r),k(D,e),k(A,t)},[()=>ae(r),()=>b(r)]),p(`click`,_,()=>i.onSelect(r)),p(`contextmenu`,_,e=>pe(e,r,r)),q(`dragstart`,_,e=>{H(u,r,!0),i.onFolderDragStart?.(r),e.dataTransfer?.setData(`application/x-fundus-folder`,r),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),q(`dragend`,_,()=>{H(u,null),i.onFolderDragEnd?.(),H(l,null)}),q(`dragover`,_,e=>C(e,r)),q(`dragleave`,_,()=>H(l,null)),q(`drop`,_,e=>T(e,r)),c(n,d)}),w(ze),w(Pe);var Xe=e(Pe,2),Ze=n=>{{let r=z(()=>g(A)===`create`?`Create folder`:`Rename folder`),i=z(()=>g(G)?`Saving…`:g(A)===`create`?`Create`:`Rename`),a=z(()=>!g(ce));Ne(n,{get title(){return g(r)},get confirmLabel(){return g(i)},get confirmDisabled(){return g(a)},get busy(){return g(G)},onConfirm:()=>void Te(),onCancel:we,children:(n,r)=>{var i=Ri(),a=f(i),s=e(y(a),2);E(s),B(s,e=>H(W,e),()=>g(W)),w(a);var l=e(a,2),u=y(l,!0);w(l);var d=e(l,2),p=e=>{var t=Ii(),n=y(t,!0);w(t),o(()=>k(n,g(oe))),c(e,t)};t(d,e=>{g(oe)&&e(p)});var m=e(d,2),h=e=>{c(e,Li())};t(m,e=>{g(se)&&e(h)});var _=e(m,2),v=e=>{var t=Ii(),n=y(t,!0);w(t),o(()=>k(n,g(J))),c(e,t)};t(_,e=>{g(J)&&e(v)}),o(()=>{s.disabled=g(G),k(u,g(Z)||`Root`)}),j(s,()=>g(U),e=>H(U,e)),c(n,i)},$$slots:{default:!0}})}};t(Xe,e=>{(g(A)===`create`||g(A)===`rename`)&&e(Ze)});var Qe=e(Xe,2),$e=n=>{{let r=z(()=>g(G)?`Deleting…`:`Delete recursively`);Ne(n,{title:`Delete folder`,get confirmLabel(){return g(r)},danger:!0,get busy(){return g(G)},onConfirm:()=>void Ae(),onCancel:we,children:(n,r)=>{var i=zi(),a=f(i),s=e(y(a)),l=y(s,!0);w(s);var u=e(s);w(a);var d=e(a,2),p=e=>{var t=Ii(),n=y(t);w(t),o(e=>k(n,`This leaves ${g(ke).length??``} external reference(s) dangling:
|
|
120
|
+
${e??``}`),[()=>g(ke).join(`, `)]),c(e,t)};t(d,e=>{g(ke).length>0&&e(p)});var m=e(d,2),h=e=>{var t=Ii(),n=y(t,!0);w(t),o(()=>k(n,g(J))),c(e,t)};t(m,e=>{g(J)&&e(h)}),o(()=>{k(l,g(R)),k(u,`, ${g(Ee).length-1} descendant folder(s),
|
|
121
|
+
and ${g(De).length??``} asset(s)? Raw and proxy files are removed.`)}),c(n,i)},$$slots:{default:!0}})}};t(Qe,e=>{g(A)===`delete`&&g(R)!==null&&e($e)}),o(e=>{I($,`title`,a()?`Create folder beside the current asset`:`Create child folder`),I(Le,`title`,a()?`Rename the current asset folder`:`Rename selected folder`),Le.disabled=g(ee)===null,I(Re,`title`,a()?`Delete the current asset folder`:`Delete selected folder`),Re.disabled=g(ee)===null,Ve=S(Be,1,`row special svelte-ftwms1`,null,Ve,{selected:!a()&&i.selectedFolder===null}),k(Ue,g(_).length),Ge=S(We,1,`row special svelte-ftwms1`,null,Ge,{selected:!a()&&i.selectedFolder===``,"drop-target":g(l)===``}),k(qe,e)},[()=>b(``)]),p(`contextmenu`,Pe,e=>pe(e,``)),p(`click`,$,()=>ue()),p(`click`,Le,()=>me(g(ee))),p(`click`,Re,()=>_e(g(ee))),p(`click`,Be,()=>i.onSelect(null)),p(`click`,We,()=>i.onSelect(``)),q(`dragover`,We,e=>C(e,``)),q(`dragleave`,We,()=>H(l,null)),q(`drop`,We,e=>T(e,``)),c(n,Me),F()}s([`contextmenu`,`click`]);var Hi=d(`<button role="menuitem" class="svelte-10jgqdh">Rename</button>`),Ui=d(`<button class="danger svelte-10jgqdh" role="menuitem">Delete</button>`),Wi=d(`<hr class="svelte-10jgqdh"/>`),Gi=d(`<div class="context-menu svelte-10jgqdh" role="menu" aria-label="Library actions" tabindex="-1"><!> <!> <!> <button role="menuitem" class="svelte-10jgqdh">New Directory</button> <!> <hr class="svelte-10jgqdh"/> <button role="menuitem" class="svelte-10jgqdh"> </button></div>`);function Ki(n,r){V(r,!0);let i=z(()=>Math.max(8,Math.min(r.x,window.innerWidth-176))),a=z(()=>3+ +!!r.onRenameDirectory+ +!!r.onDeleteDirectory),s=z(()=>!!(r.onRenameDirectory||r.onDeleteDirectory)),l=z(()=>1+ +!!g(s)),u=z(()=>g(a)*32+g(l)*9+8),d=z(()=>Math.max(8,Math.min(r.y,window.innerHeight-g(u)))),f=/Mac|iPhone|iPad/.test(navigator.platform)?`Open in Finder`:/Win/.test(navigator.platform)?`Open in Explorer`:`Open in File Manager`;function m(e){e(),r.onClose()}var h=Gi();q(`click`,v,function(...e){r.onClose?.apply(this,e)}),q(`blur`,v,function(...e){r.onClose?.apply(this,e)}),q(`keydown`,v,e=>e.key===`Escape`&&r.onClose()),q(`resize`,v,function(...e){r.onClose?.apply(this,e)}),q(`scroll`,v,function(...e){r.onClose?.apply(this,e)});let _;var b=y(h),x=e=>{var t=Hi();p(`click`,t,()=>m(r.onRenameDirectory)),c(e,t)};t(b,e=>{r.onRenameDirectory&&e(x)});var S=e(b,2),C=e=>{var t=Ui();p(`click`,t,()=>m(r.onDeleteDirectory)),c(e,t)};t(S,e=>{r.onDeleteDirectory&&e(C)});var T=e(S,2),E=e=>{c(e,Wi())};t(T,e=>{g(s)&&e(E)});var D=e(T,2),O=e(D,2);Oi(O,{label:`Import`,sections:[[{label:`File`,value:`file`},{label:`Figma`,value:`figma`}]],alwaysSubmenu:!0,onSelect:e=>m(e===`file`?r.onImportFile:r.onImportFigma)});var A=e(O,4),j=y(A,!0);w(A),w(h),o(()=>{_=K(h,``,_,{left:`${g(i)}px`,top:`${g(d)}px`}),k(j,f)}),p(`contextmenu`,h,e=>e.preventDefault()),p(`click`,D,()=>m(r.onNewDirectory)),p(`click`,A,()=>m(r.onReveal)),c(n,h),F()}s([`contextmenu`,`click`]);var qi=d(`<div class="source-menu svelte-1c64lfa"><button type="button" class="svelte-1c64lfa"><strong>File</strong> <span class="svelte-1c64lfa"> </span></button> <button type="button" class="svelte-1c64lfa"><strong>Figma</strong> <span class="svelte-1c64lfa"> </span></button></div>`);function Ji(t,n){let r=x(n,`fileDescription`,3,`Choose an asset from your computer`),i=x(n,`figmaDescription`,3,`Import a frame or component by URL`);var a=qi(),s=y(a),l=e(y(s),2),u=y(l,!0);w(l),w(s);var d=e(s,2),f=e(y(d),2),m=y(f,!0);w(f),w(d),w(a),o(()=>{k(u,r()),k(m,i())}),p(`click`,s,function(...e){n.onFile?.apply(this,e)}),p(`click`,d,function(...e){n.onFigma?.apply(this,e)}),c(t,a)}s([`click`]);export{Le as _,Ai as a,Ke as b,xi as c,Qr as d,Rt as f,Ze as g,Ye as h,Mi as i,ci as l,Xe as m,Ki as n,ki as o,Qe as p,Vi as r,Oi as s,Ji as t,si as u,Ue as v,$ as x,qe as y};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{V as e,nt as t,tt as n}from"./DLEDBLL1.js";var r=class extends Error{status;constructor(e,t){super(t),this.name=`ApiResponseError`,this.status=e}};async function i(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}return await e.json()}async function a(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}}async function o(e){if(!e.ok)throw await a(e),new r(e.status,e.statusText);return await e.json()}async function s(){let e=await fetch(`/api/usage`,{method:`HEAD`,cache:`no-store`}),t=e.headers.get(`x-fundus-usage-capability`);if(e.status===204&&t===`available`)return!0;if(e.status===404&&t===`unavailable`)return!1;throw new r(e.status,`Could not discover usage capability (${e.status}, ${t??`missing header`}).`)}async function c(e={}){let t=new URLSearchParams;e.assetId&&t.set(`assetId`,e.assetId),e.forceFresh&&t.set(`fresh`,`1`);let n=t.size>0?`?${t}`:``;return o(await fetch(`/api/usage${n}`,{cache:`no-store`}))}async function l(e){await a(await fetch(`/api/usage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function u(){return i(await fetch(`/api/state`,{cache:`no-store`}))}async function d(){return i(await fetch(`/api/reconcile`,{method:`POST`,cache:`no-store`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}))}async function f(e,t,n,r=[]){return i(await fetch(`/api/raw/adopt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,id:t,type:n,manifests:r})}))}async function ee(e,t){return i(await fetch(`/api/raw/edited/accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,type:t})}))}async function te(e){return i(await fetch(`/api/raw/edited/dismiss`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function ne(e,t,n,r,a=[]){let o=new FormData;o.set(`file`,e),o.set(`type`,t),o.set(`id`,n),o.set(`folder`,r);for(let e of a)o.append(`manifests`,e);return i(await fetch(`/api/assets`,{method:`POST`,body:o}))}async function re(e){let t=e.mode===`tag`?{importer:`figma`,input:{mode:`tag`,tag:e.tag,format:`png`,...e.fileKey?{fileKey:e.fileKey}:{},scale:e.scale},type:e.type,id:e.tag,folder:e.folder,manifests:e.manifests}:{importer:`figma`,input:{url:e.url,format:`png`,scale:e.scale},type:e.type,id:e.id,folder:e.folder,manifests:e.manifests};return i(await fetch(`/api/imports`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function ie(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}/reimport`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t?{input:{...t,format:`png`}}:{}})}))}async function ae(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}/retag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function oe(e,t){let n=new FormData;return n.set(`file`,t),i(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,body:n}))}async function se(e,t){let n=t.mode===`tag`?{mode:`tag`,tag:t.tag,format:`png`,...t.fileKey?{fileKey:t.fileKey}:{},scale:t.scale}:{url:t.url,scale:t.scale,format:`png`};return i(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({importer:`figma`,input:n})}))}async function ce(e){return i(await fetch(`/api/folders`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}))}async function le(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})}))}async function ue(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({parent:t})}))}async function de(e){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function fe(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function pe(e,t){return i(await fetch(`/api/assets/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e,folder:t})}))}async function me(e){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function he(e){return i(await fetch(`/api/assets/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e})}))}async function ge(e,t){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetId:e,kind:t})}))}async function _e(e){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folder:e})}))}async function ve(e){return i(await fetch(`/api/manifests`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e})}))}async function ye(e){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function be(e,t){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}var xe=class{#e=null;#t=null;#n=0;#r=[];get value(){return this.#t}replaceBase(e){this.#e=e,this.#a()}mergeBase(e){this.#e!==null&&(this.#e=e(this.#e),this.#a())}add(e,t=[]){let n=++this.#n;return this.#r.push({id:n,update:e,dependencies:t}),this.#t!==null&&(this.#t=e(this.#t)),n}confirm(e,t,n){let r=this.#r.findIndex(t=>t.id===e);if(r===-1)return;let i=this.#r[r],a=this.#e;if(a===null){this.#e=t,this.#i(e),this.#a();return}this.#e=n(i.update(a)),this.#i(e),r===0&&this.#t!==null?this.#t=n(this.#t):this.#a()}reject(e){this.#i(e),this.#a()}rejectAffectedFrom(e,t){this.#r=this.#r.filter(n=>n.id<e||n.id>e&&!p(n.dependencies,t)),this.#a()}#i(e){this.#r=this.#r.filter(t=>t.id!==e)}#a(){let e=this.#e;if(e===null){this.#t=null;return}let t=e;for(let e of this.#r)t=e.update(t);this.#t=t}};function p(e,t){return e.some(e=>t.some(t=>{if(e===t)return!0;if(!e.startsWith(`folder:`)||!t.startsWith(`folder:`))return!1;let n=e.slice(7),r=t.slice(7);return n.startsWith(`${r}/`)||r.startsWith(`${n}/`)}))}var Se=/[\u0000-\u001f\u007f]/,Ce=/[<>:"|?*]/,we=/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;function Te(e){return e.length===0?`Folder names must not be empty.`:e===e.trim()?e===`.`||e===`..`?`"${e}" is not a valid folder name.`:e.includes(`/`)||e.includes(`\\`)?`Folder names must not contain path separators.`:Se.test(e)?`Folder names must not contain control characters.`:Ce.test(e)?`Folder names must not contain Windows-reserved characters (: * ? " < > |).`:e.endsWith(`.`)?`Folder names must not end with a dot.`:e.toLocaleLowerCase(`en-US`)===`root`?`"${e}" is reserved for the implicit Fundus root folder.`:e.toLocaleLowerCase(`en-US`)===`.gitkeep`?`"${e}" is reserved for Fundus folder management.`:we.test(e)?`"${e}" is a reserved filesystem name.`:null:`Folder names must not start or end with whitespace.`}function Ee(e){return e.split(`/`).map(e=>e.normalize(`NFC`)).join(`/`)}function m(e){return Ee(e).toLocaleLowerCase(`en-US`)}function h(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function g(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function _(e,t){return e===``?t:`${e}/${t}`}function v(e){return h(e)}function y(e){return g(e)}function b(e,t){return e===t||e.startsWith(`${t}/`)}function x(e,t,n){return e===t?n:`${n}${e.slice(t.length)}`}var S=`[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}`;RegExp(`^(?:\\.fundus-replace-${S}\\.tmp|\\.fundus-delete(?:-assets)?-${S})$`,`i`),RegExp(`\\.fundus-(?:replace-)?${S}$`,`i`);var C=[`preload`,`release`,`entries`,`constructor`,`prototype`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`],w=/^[a-z][A-Za-z0-9]*$/;function De(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. "navigationPanel").`}function Oe(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. "mainCatalog").`}var T={type:`audio`,accepts:[`mp3`,`wav`,`m4a`,`ogg`,`flac`],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Audio parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Audio parameters need a non-empty string "preset".`);return{preset:t.preset}}};function ke(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.$asset==`string`&&e.$asset!==``}var E={keyColor:[0,1,0],colorCutoff:.2,colorFeathering:.33,maskFeathering:1,sharpening:.5,despill:1,despillLuminanceAdd:.2},Ae=[`colorCutoff`,`colorFeathering`,`maskFeathering`,`sharpening`,`despill`,`despillLuminanceAdd`];function D(e){return Math.min(1,Math.max(0,e))}function je(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`"chromaKey" must be an object.`);let t=e,n=t.keyColor;if(!Array.isArray(n)||n.length!==3||n.some(e=>typeof e!=`number`||!Number.isFinite(e)))throw Error(`"chromaKey.keyColor" must be an array of three numbers (RGB, 0–1 each).`);let r={keyColor:[D(n[0]),D(n[1]),D(n[2])]};for(let e of Ae){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))throw Error(`"chromaKey.${e}" must be a number (0–1).`);r[e]=D(n)}return r}var O=[`mp4`,`mov`,`webm`,`m4v`];function k(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} parameters must be an object.`);let n=t;if(typeof n.preset!=`string`||n.preset.length===0)throw Error(`${e} parameters need a non-empty string "preset".`);if(n.maxWidth!==void 0&&(typeof n.maxWidth!=`number`||!Number.isInteger(n.maxWidth)||n.maxWidth<=0))throw Error(`${e} "maxWidth" must be a positive integer when set.`);return{preset:n.preset,...n.maxWidth===void 0?{}:{maxWidth:n.maxWidth}}}var A={type:`video`,accepts:[...O],defaultParameters:()=>({preset:`default`}),validateParameters(e){return k(`Video`,e)}};function j(e,t){if(t!==void 0){if(!ke(t))throw Error(`"${e}" must be an asset reference ({ "$asset": "<id>" }).`);return{$asset:t.$asset}}}var M={type:`chroma-key-video`,accepts:[...O],defaultParameters:()=>({preset:`default`,chromaKey:{...E,keyColor:[...E.keyColor]}}),validateParameters(e){let t=k(`Chroma-key-video`,e),n=e,r=je(n.chromaKey),i=j(`mask`,n.mask),a=j(`fallback`,n.fallback);return{...t,chromaKey:r,...i===void 0?{}:{mask:i},...a===void 0?{}:{fallback:a}}},collectReferences(e){let t=[];return e.mask&&t.push({field:`mask`,assetId:e.mask.$asset,expectedTypes:[`image`]}),e.fallback&&t.push({field:`fallback`,assetId:e.fallback.$asset,expectedTypes:[`image`]}),t},processingParameters(e){return{preset:e.preset,...e.maxWidth===void 0?{}:{maxWidth:e.maxWidth}}}},N=[`png`,`jpg`,`jpeg`,`webp`,`avif`],P={type:`image`,accepts:[...N],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Image parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Image parameters need a non-empty string "preset".`);if(t.targetWidth!==void 0&&(typeof t.targetWidth!=`number`||!Number.isInteger(t.targetWidth)||t.targetWidth<=0))throw Error(`Image "targetWidth" must be a positive integer when set.`);return{preset:t.preset,...t.targetWidth===void 0?{}:{targetWidth:t.targetWidth}}}},F=[`nine`,`three-horizontal`,`three-vertical`,`one`];function I(){return{top:0,right:0,bottom:0,left:0}}function L(e){return{horizontal:e===`nine`||e===`three-horizontal`,vertical:e===`nine`||e===`three-vertical`}}function R(e,t,n,r){return t===`left`?n-e.right:t===`right`?n-e.left:t===`top`?r-e.bottom:r-e.top}function Me(e,t,n,r){return R(e,t,n,r)-1}function z(e,t,n){return Math.max(t,Math.min(n,e))}function Ne(e){let t=L(e.mode),n=e.overdraw??{top:0,right:0,bottom:0,left:0},r=t.horizontal&&(e.compression?.x??0)>0,i=t.vertical&&(e.compression?.y??0)>0,a=r?Math.max(e.insets.left,n.left):e.insets.left,o=r?Math.max(e.insets.right,n.right):e.insets.right,s=i?Math.max(e.insets.top,n.top):e.insets.top,c=i?Math.max(e.insets.bottom,n.bottom):e.insets.bottom,l=z(a,0,e.width),u=z(o,0,e.width-l),d=z(s,0,e.height);return{top:d,right:u,bottom:z(c,0,e.height-d),left:l}}function B(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Slice ${e} must be an object with top/right/bottom/left.`);let n=t,r=[`top`,`right`,`bottom`,`left`],i=I();for(let t of r){let r=n[t];if(typeof r!=`number`||!Number.isInteger(r)||r<0)throw Error(`Slice ${e}.${t} must be a non-negative integer.`);i[t]=r}return i}function Pe(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice compression must be an object with x/y percentages.`);let t=e,n={x:0,y:0};for(let e of[`x`,`y`]){let r=t[e];if(typeof r!=`number`||!Number.isInteger(r)||r<0||r>100)throw Error(`Slice compression.${e} must be an integer from 0 to 100.`);n[e]=r}return n}var V={type:`slice`,accepts:[...N],defaultParameters:()=>({mode:`nine`,insets:I(),pixelRatio:1,preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice parameters must be an object.`);let t=e;if(typeof t.mode!=`string`||!F.includes(t.mode))throw Error(`Slice "mode" must be one of ${F.map(e=>`'${e}'`).join(` | `)}.`);let n=B(`insets`,t.insets);if(typeof t.pixelRatio!=`number`||!Number.isInteger(t.pixelRatio)||t.pixelRatio<1)throw Error(`Slice "pixelRatio" must be an integer ≥ 1.`);let r=t.overdraw===void 0?void 0:B(`overdraw`,t.overdraw),i=t.compression===void 0?void 0:Pe(t.compression);if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Slice parameters need a non-empty string "preset".`);return{mode:t.mode,insets:n,pixelRatio:t.pixelRatio,...r===void 0?{}:{overdraw:r},...i===void 0?{}:{compression:i},preset:t.preset}}},H=new class{#e=new Map;register(e){if(this.#e.has(e.type))throw Error(`Plugin type "${e.type}" is already registered.`);this.#e.set(e.type,e)}has(e){return this.#e.has(e)}values(){return[...this.#e.values()]}types(){return[...this.#e.keys()]}project(e,t){let n=Object.create(null);for(let r of this.#e.keys()){if(!Object.hasOwn(e,r))throw Error(`Registered plugin "${r}" has no ${t}.`);n[r]=e[r]}return n}};H.register(P),H.register(V),H.register(A),H.register(M),H.register(T);var U=H.values();function Fe(e=U){return[...new Set(e.flatMap(e=>e.accepts))].sort().map(e=>`.${e}`)}function Ie(e,t=U){return t.find(t=>t.type===e)?.accepts.map(e=>`.${e}`).sort()??[]}function Le(e,t=U){let n=e.slice(e.lastIndexOf(`.`)+1).toLowerCase();return t.filter(e=>e.accepts.includes(n)).map(e=>e.type)}function W(e){return K(e)}function G(e,t){return e<t?-1:+(e>t)}function K(e){if(e===void 0)return`null`;if(e===null||typeof e==`number`||typeof e==`boolean`||typeof e==`string`)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(K).join(`,`)}]`;if(typeof e==`object`){let t=e,n=[];for(let e of Object.keys(t).sort())t[e]!==void 0&&n.push(`${JSON.stringify(e)}:${K(t[e])}`);return`{${n.join(`,`)}}`}throw Error(`Cannot canonicalize a ${typeof e} value.`)}function Re(e,t){let n={};for(let[r,i]of Object.entries(e.assets)){n[r]=[];let e=t[i.type];if(e?.collectReferences)try{n[r]=e.collectReferences(e.validateParameters(i.parameters))}catch{}}return n}function ze(e,t){let n=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(!(n.has(e)||!Object.hasOwn(t,e))){n.add(e);for(let n of t[e])r.push(n.assetId)}}return n}function Be(e,t){let n=new Set(Object.keys(e.manifests));for(let t of Object.values(e.assets))for(let e of t.manifests)n.add(e);let r={};for(let i of[...n].sort(G)){let n=Object.entries(e.assets).filter(([,e])=>e.manifests.includes(i)).map(([e])=>e).sort(G),a=new Set(n),o=new Set(n),s=new Map;for(let e of n)for(let n of ze([e],t)){if(o.add(n),a.has(n))continue;let t=s.get(n)??[];t.push(e),s.set(n,t)}r[i]={explicitMemberIds:n,passiveMembers:[...s.entries()].map(([e,t])=>({assetId:e,via:t})).sort((e,t)=>G(e.assetId,t.assetId)),deliveredAssetIds:o}}return r}function Ve(e,t,n,r){return n&&q(n,r)?`committed`:t&&q(t,r)?`rolled-back`:`unknown`}function q(e,t){return W(e)===W(t)}var J=Object.fromEntries(H.values().map(e=>[e.type,e]));function He(e,t,n){let r=e.library.assets[t]?.type,i=r?J[r]:void 0;if(!i)return[`asset:${t}`];try{let e=i.validateParameters(n),r=i.collectReferences?.(e)??[];return[...new Set([`asset:${t}`,...r.map(e=>`asset:${e.assetId}`)])]}catch{return[`asset:${t}`]}}function Y(e,t){let n=new Map(t.assets.map(e=>[e.id,e])),r={...e,assets:e.assets.map(e=>{let t=n.get(e.id);return t?{...e,rawUrl:t.rawUrl,rawHash:t.rawHash,gitStatus:t.gitStatus,importSource:t.importSource,proxy:t.proxy,warnings:t.warnings,duplicateIds:t.duplicateIds,passiveManifests:t.passiveManifests,references:t.references}:e}),gitBranch:t.gitBranch,importDefaults:t.importDefaults,issues:t.issues,presetNames:t.presetNames,presetCapabilities:t.presetCapabilities,rawIngestionQueue:t.rawIngestionQueue};return X(r,r.library)}function Ue(e,t){let n=structuredClone(e.library);n.folders=[...t.library.folders];for(let[e,r]of Object.entries(n.assets)){let i=t.library.assets[e];i?r.raw=i.raw:delete n.assets[e]}return Y(X(e,n),t)}function X(e,t,n=new Map){let r=new Map(e.assets.map(e=>[e.id,e])),i=new Map([...n.entries()].map(([e,t])=>[t,e])),a=Re(t,J),o=Be(t,a),s=We(o),c=new Map;for(let[e,t]of Object.entries(a))for(let n of t){let t=c.get(n.assetId)??[];t.push({field:n.field,assetId:e}),c.set(n.assetId,t)}let l=Object.entries(t.assets).map(([e,o])=>{let l=r.get(i.get(e)??e);return l?{...l,id:e,raw:o.raw,folder:v(o.raw),parameters:o.parameters,manifests:o.manifests,duplicateIds:l.duplicateIds.map(e=>n.get(e)??e).filter(e=>Object.hasOwn(t.assets,e)).sort(),passiveManifests:s.get(e)??[],references:{outgoing:a[e].map(e=>({field:e.field,assetId:e.assetId})),incoming:c.get(e)??[]}}:null}).filter(e=>e!==null).sort((e,t)=>e.id.localeCompare(t.id)),u=new Map(l.map(e=>[e.id,e.proxy?.fileSize??0])),d=Object.fromEntries(Object.keys(t.manifests).map(e=>{let t=o[e];return[e,{explicitMemberIds:t.explicitMemberIds,passiveMembers:t.passiveMembers}]})),f=Object.fromEntries(Object.keys(t.manifests).map(e=>[e,[...o[e].deliveredAssetIds].reduce((e,t)=>e+(u.get(t)??0),0)]));return{...e,library:t,assets:l,manifestMemberships:d,manifestDeliveredBytes:f,issues:e.issues.map(e=>({...e,...e.assetId&&n.has(e.assetId)?{assetId:n.get(e.assetId)}:{}}))}}function We(e){let t=new Map;for(let[n,r]of Object.entries(e))for(let e of r.passiveMembers){let{assetId:r,via:i}=e,a=t.get(r)??[];a.push({manifest:n,via:i}),t.set(r,a)}for(let e of t.values())e.sort((e,t)=>e.manifest.localeCompare(t.manifest));return t}function Z(e){return t=>{let n=structuredClone(t.library);return X(t,n,e(n)??new Map)}}function Ge(e,t){return Z(n=>{let r=n.assets[e];if(!r)return;t.parameters!==void 0&&(r.parameters=structuredClone(t.parameters)),t.manifests!==void 0&&(r.manifests=[...new Set(t.manifests)].sort());let i=t.renameTo??e;if(!(i!==e&&n.assets[i]))return i!==e&&(delete n.assets[e],n.assets[i]=r),t.folder!==void 0&&(r.raw=_(t.folder,y(r.raw))),i===e?void 0:new Map([[e,i]])})}function Ke(e,t){return Z(n=>{for(let r of new Set(e)){let e=n.assets[r];e&&(e.raw=_(t,y(e.raw)))}})}function qe(e){return Z(t=>{for(let n of new Set(e))delete t.assets[n]})}function Je(e){return Z(t=>{t.folders.includes(e)||t.folders.push(e),t.folders.sort()})}function Q(e,t){return Z(n=>{let r=n.folders.filter(t=>b(t,e)).map(n=>x(n,e,t)),i=new Set(n.folders.filter(t=>!b(t,e)).map(m));if(!r.some(e=>i.has(m(e)))){n.folders=n.folders.map(n=>b(n,e)?x(n,e,t):n).sort();for(let r of Object.values(n.assets)){let n=v(r.raw);b(n,e)&&(r.raw=_(x(n,e,t),y(r.raw)))}}})}function Ye(e,t){return Q(e,_(h(e),t))}function Xe(e,t){return Q(e,_(t,g(e)))}function Ze(e){return Z(t=>{t.folders=t.folders.filter(t=>!b(t,e));for(let[n,r]of Object.entries(t.assets))b(v(r.raw),e)&&delete t.assets[n]})}function Qe(e){return Z(t=>{Object.hasOwn(t.manifests,e)||(t.manifests[e]={})})}function $e(e,t){return Z(n=>{let r=n.manifests[e];if(r&&(t.color!==void 0&&(t.color===null?delete r.color:r.color=t.color),t.emoji!==void 0&&(t.emoji===null?delete r.emoji:r.emoji=t.emoji),!(t.renameTo===void 0||t.renameTo===e)&&!n.manifests[t.renameTo])){delete n.manifests[e],n.manifests[t.renameTo]=r;for(let r of Object.values(n.assets))r.manifests=r.manifests.map(n=>n===e?t.renameTo:n).sort()}})}function et(e){return Z(t=>{delete t.manifests[e];for(let n of Object.values(t.assets))n.manifests=n.manifests.filter(t=>t!==e)})}var tt=class{#e=Promise.resolve();#t=new Map;enqueue(e){let t=this.#e.then(e,e);return this.#e=t.then(()=>{},()=>{}),t}coalesce(e,t){let n=this.#t.get(e);if(n)return n;let r=this.enqueue(t).finally(()=>{this.#t.get(e)===r&&this.#t.delete(e)});return this.#t.set(e,r),r}},nt=class{#e=null;#t;constructor(e){this.#t=e}discover(e){if(this.#e)return this.#e;let t=(async()=>{try{this.#t({available:await e(),error:null})}catch(e){this.#t({available:null,error:e instanceof Error?e.message:String(e)})}})();return this.#e=t.finally(()=>{this.#e=null}),this.#e}};function rt(e,t,n){return e??t??(n.length>0?n.join(`
|
|
2
|
-
`):null)}var it=new class{#e=new tt;#t=new xe;#n=0;#r=0;#i=[];#a=t(null);get state(){return e(this.#a)}set state(e){n(this.#a,e,!0)}#o=t(!1);get saving(){return e(this.#o)}set saving(e){n(this.#o,e,!0)}#s=t(null);get error(){return e(this.#s)}set error(e){n(this.#s,e,!0)}#c=t(null);get usageAvailable(){return e(this.#c)}set usageAvailable(e){n(this.#c,e,!0)}#l=t(null);get usageCapabilityError(){return e(this.#l)}set usageCapabilityError(e){n(this.#l,e,!0)}#u=t(0);get usageRefreshRevision(){return e(this.#u)}set usageRefreshRevision(e){n(this.#u,e,!0)}#d=new nt(e=>{this.usageAvailable=e.available,this.usageCapabilityError=e.error});#f=t(!1);get loaded(){return e(this.#f)}set loaded(e){n(this.#f,e,!0)}async refresh(){return this.#p(u,{rebaseEditableState:!0})}discoverUsageCapability(){return this.#d.discover(s)}reconcile(){return this.#p(d,{coalesce:!0})}async reconcileOnFocus(){let e=this.usageRefreshRevision;await this.reconcile(),this.usageRefreshRevision===e&&this.usageRefreshRevision++}connectLibraryEvents(){if(typeof EventSource>`u`)return()=>{};let e=new EventSource(`/api/events`),t=()=>void this.reconcile();return e.addEventListener(`library-changed`,t),e.addEventListener(`open`,t),()=>{e.removeEventListener(`library-changed`,t),e.removeEventListener(`open`,t),e.close()}}#p(e,t={}){let n=async()=>{try{let n=await e();this.#t.value===null||t.rebaseEditableState?this.#t.replaceBase(n):this.#t.mergeBase(e=>Ue(e,n)),this.#h(),this.error=null}catch(e){this.error=e instanceof Error?e.message:String(e)}finally{this.loaded=!0}};return t.coalesce?this.#e.coalesce(`reconcile`,n):this.#e.enqueue(n)}mutate(e,t,n){return this.#m(e,t,n)}mutateFromServer(e,t){return this.#m(e,void 0,t)}#m(e,t,n={dependencies:[]}){let r=++this.#r,i=this.#t.value?.library,a=t?this.#t.add(t,n.dependencies):null,o=a===null?void 0:this.#t.value?.library;return a!==null&&this.#h(),this.#n+=1,this.saving=!0,this.#e.enqueue(async()=>{this.error=null;try{if(this.#i.some(e=>e.failedMutationId<r&&r<=e.throughMutationId&&p(n.dependencies,e.dependencies)))throw a!==null&&(this.#t.reject(a),this.#h()),new $;let t=await e();a===null?this.#t.replaceBase(t):this.#t.confirm(a,t,e=>Y(e,t)),this.#h()}catch(e){if(e instanceof $)throw this.error=e.message,e;let t=null;try{t=await u();let s=Ve(e,i,o,t.library);if(s===`committed`&&a!==null){let e=t;this.#t.confirm(a,e,t=>Y(t,e)),this.#h(),this.error=null;return}this.#t.replaceBase(t),s===`rolled-back`&&a!==null&&n.invalidatesOnFailure?.length?(this.#i.push({failedMutationId:r,throughMutationId:this.#r,dependencies:n.invalidatesOnFailure}),this.#t.rejectAffectedFrom(a,n.invalidatesOnFailure)):a!==null&&this.#t.reject(a)}catch{a!==null&&this.#t.reject(a)}throw this.#h(),this.error=e instanceof Error?e.message:String(e),e}finally{--this.#n,this.saving=this.#n>0,this.#n===0&&(this.#i=[])}})}#h(){this.state=this.#t.value}get manifestNames(){return Object.keys(this.state?.library.manifests??{}).sort()}manifestAppearance(e){return this.state?.library.manifests[e]??{}}get generalIssues(){return this.state?.issues.filter(e=>e.assetId===void 0).map(e=>e.message)??[]}assetById(e){return this.state?.assets.find(t=>t.id===e)??null}},$=class extends Error{constructor(){super(`Change was cancelled because an earlier structural save failed.`)}};export{
|
|
1
|
+
import{V as e,nt as t,tt as n}from"./DLEDBLL1.js";var r=class extends Error{status;constructor(e,t){super(t),this.name=`ApiResponseError`,this.status=e}};async function i(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}return await e.json()}async function a(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}}async function o(e){if(!e.ok)throw await a(e),new r(e.status,e.statusText);return await e.json()}async function s(){let e=await fetch(`/api/usage`,{method:`HEAD`,cache:`no-store`}),t=e.headers.get(`x-fundus-usage-capability`);if(e.status===204&&t===`available`)return!0;if(e.status===404&&t===`unavailable`)return!1;throw new r(e.status,`Could not discover usage capability (${e.status}, ${t??`missing header`}).`)}async function c(e={}){let t=new URLSearchParams;e.assetId&&t.set(`assetId`,e.assetId),e.forceFresh&&t.set(`fresh`,`1`);let n=t.size>0?`?${t}`:``;return o(await fetch(`/api/usage${n}`,{cache:`no-store`}))}async function l(e){await a(await fetch(`/api/usage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function u(){return i(await fetch(`/api/state`,{cache:`no-store`}))}async function d(){return i(await fetch(`/api/reconcile`,{method:`POST`,cache:`no-store`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}))}async function f(e,t,n,r=[]){return i(await fetch(`/api/raw/adopt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,id:t,type:n,manifests:r})}))}async function ee(e,t){return i(await fetch(`/api/raw/edited/accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,type:t})}))}async function te(e){return i(await fetch(`/api/raw/edited/dismiss`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function ne(e,t,n,r,a=[]){let o=new FormData;o.set(`file`,e),o.set(`type`,t),o.set(`id`,n),o.set(`folder`,r);for(let e of a)o.append(`manifests`,e);return i(await fetch(`/api/assets`,{method:`POST`,body:o}))}async function re(e){let t=e.mode===`tag`?{importer:`figma`,input:{mode:`tag`,tag:e.tag,format:`png`,...e.fileKey?{fileKey:e.fileKey}:{},scale:e.scale},type:e.type,id:e.tag,folder:e.folder,manifests:e.manifests}:{importer:`figma`,input:{url:e.url,format:`png`,scale:e.scale},type:e.type,id:e.id,folder:e.folder,manifests:e.manifests};return i(await fetch(`/api/imports`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function ie(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}/reimport`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t?{input:{...t,format:`png`}}:{}})}))}async function ae(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}/retag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function oe(e,t){let n=new FormData;return n.set(`file`,t),i(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,body:n}))}async function se(e,t){let n=t.mode===`tag`?{mode:`tag`,tag:t.tag,format:`png`,...t.fileKey?{fileKey:t.fileKey}:{},scale:t.scale}:{url:t.url,scale:t.scale,format:`png`};return i(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({importer:`figma`,input:n})}))}async function ce(e){return i(await fetch(`/api/folders`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}))}async function le(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})}))}async function ue(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({parent:t})}))}async function de(e){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function fe(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function pe(e,t){return i(await fetch(`/api/assets/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e,folder:t})}))}async function me(e){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function he(e){return i(await fetch(`/api/assets/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e})}))}async function ge(e,t){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetId:e,kind:t})}))}async function _e(e){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folder:e})}))}async function ve(e){return i(await fetch(`/api/manifests`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e})}))}async function ye(e){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function be(e,t){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}var xe=class{#e=null;#t=null;#n=0;#r=[];get value(){return this.#t}replaceBase(e){this.#e=e,this.#a()}mergeBase(e){this.#e!==null&&(this.#e=e(this.#e),this.#a())}add(e,t=[]){let n=++this.#n;return this.#r.push({id:n,update:e,dependencies:t}),this.#t!==null&&(this.#t=e(this.#t)),n}confirm(e,t,n){let r=this.#r.findIndex(t=>t.id===e);if(r===-1)return;let i=this.#r[r],a=this.#e;if(a===null){this.#e=t,this.#i(e),this.#a();return}this.#e=n(i.update(a)),this.#i(e),r===0&&this.#t!==null?this.#t=n(this.#t):this.#a()}reject(e){this.#i(e),this.#a()}rejectAffectedFrom(e,t){this.#r=this.#r.filter(n=>n.id<e||n.id>e&&!p(n.dependencies,t)),this.#a()}#i(e){this.#r=this.#r.filter(t=>t.id!==e)}#a(){let e=this.#e;if(e===null){this.#t=null;return}let t=e;for(let e of this.#r)t=e.update(t);this.#t=t}};function p(e,t){return e.some(e=>t.some(t=>{if(e===t)return!0;if(!e.startsWith(`folder:`)||!t.startsWith(`folder:`))return!1;let n=e.slice(7),r=t.slice(7);return n.startsWith(`${r}/`)||r.startsWith(`${n}/`)}))}var Se=/[\u0000-\u001f\u007f]/,Ce=/[<>:"|?*]/,we=/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;function Te(e){return e.length===0?`Folder names must not be empty.`:e===e.trim()?e===`.`||e===`..`?`"${e}" is not a valid folder name.`:e.includes(`/`)||e.includes(`\\`)?`Folder names must not contain path separators.`:Se.test(e)?`Folder names must not contain control characters.`:Ce.test(e)?`Folder names must not contain Windows-reserved characters (: * ? " < > |).`:e.endsWith(`.`)?`Folder names must not end with a dot.`:e.toLocaleLowerCase(`en-US`)===`root`?`"${e}" is reserved for the implicit Fundus root folder.`:e.toLocaleLowerCase(`en-US`)===`.gitkeep`?`"${e}" is reserved for Fundus folder management.`:we.test(e)?`"${e}" is a reserved filesystem name.`:null:`Folder names must not start or end with whitespace.`}function Ee(e){return e.split(`/`).map(e=>e.normalize(`NFC`)).join(`/`)}function m(e){return Ee(e).toLocaleLowerCase(`en-US`)}function h(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function g(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function _(e,t){return e===``?t:`${e}/${t}`}function v(e){return h(e)}function y(e){return g(e)}function b(e,t){return e===t||e.startsWith(`${t}/`)}function x(e,t,n){return e===t?n:`${n}${e.slice(t.length)}`}var S=`[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}`;RegExp(`^(?:\\.fundus-replace-${S}\\.tmp|\\.fundus-delete(?:-assets)?-${S})$`,`i`),RegExp(`\\.fundus-(?:replace-)?${S}$`,`i`);var C=[`preload`,`release`,`entries`,`constructor`,`prototype`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`],w=/^[a-z][A-Za-z0-9]*$/;function De(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. "navigationPanel").`}function Oe(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. "mainCatalog").`}var T={type:`audio`,accepts:[`mp3`,`wav`,`m4a`,`ogg`,`flac`],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Audio parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Audio parameters need a non-empty string "preset".`);return{preset:t.preset}}};function ke(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.$asset==`string`&&e.$asset!==``}var E={keyColor:[0,1,0],colorCutoff:.2,colorFeathering:.33,maskFeathering:1,sharpening:.5,despill:1,despillLuminanceAdd:.2,despillCoverage:1},Ae=[`colorCutoff`,`colorFeathering`,`maskFeathering`,`sharpening`,`despill`,`despillLuminanceAdd`];function D(e){return Math.min(1,Math.max(0,e))}function je(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`"chromaKey" must be an object.`);let t=e,n=t.keyColor;if(!Array.isArray(n)||n.length!==3||n.some(e=>typeof e!=`number`||!Number.isFinite(e)))throw Error(`"chromaKey.keyColor" must be an array of three numbers (RGB, 0–1 each).`);let r={keyColor:[D(n[0]),D(n[1]),D(n[2])]};for(let e of Ae){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))throw Error(`"chromaKey.${e}" must be a number (0–1).`);r[e]=D(n)}let i=t.despillCoverage;if(i!==void 0){if(typeof i!=`number`||!Number.isFinite(i))throw Error(`"chromaKey.despillCoverage" must be a number (0–1).`);r.despillCoverage=D(i)}return r}var O=[`mp4`,`mov`,`webm`,`m4v`];function k(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} parameters must be an object.`);let n=t;if(typeof n.preset!=`string`||n.preset.length===0)throw Error(`${e} parameters need a non-empty string "preset".`);if(n.maxWidth!==void 0&&(typeof n.maxWidth!=`number`||!Number.isInteger(n.maxWidth)||n.maxWidth<=0))throw Error(`${e} "maxWidth" must be a positive integer when set.`);return{preset:n.preset,...n.maxWidth===void 0?{}:{maxWidth:n.maxWidth}}}var A={type:`video`,accepts:[...O],defaultParameters:()=>({preset:`default`}),validateParameters(e){return k(`Video`,e)}};function j(e,t){if(t!==void 0){if(!ke(t))throw Error(`"${e}" must be an asset reference ({ "$asset": "<id>" }).`);return{$asset:t.$asset}}}var M={type:`chroma-key-video`,accepts:[...O],defaultParameters:()=>({preset:`default`,chromaKey:{...E,keyColor:[...E.keyColor]}}),validateParameters(e){let t=k(`Chroma-key-video`,e),n=e,r=je(n.chromaKey),i=j(`mask`,n.mask),a=j(`fallback`,n.fallback);return{...t,chromaKey:r,...i===void 0?{}:{mask:i},...a===void 0?{}:{fallback:a}}},collectReferences(e){let t=[];return e.mask&&t.push({field:`mask`,assetId:e.mask.$asset,expectedTypes:[`image`]}),e.fallback&&t.push({field:`fallback`,assetId:e.fallback.$asset,expectedTypes:[`image`]}),t},processingParameters(e){return{preset:e.preset,...e.maxWidth===void 0?{}:{maxWidth:e.maxWidth}}}},N=[`png`,`jpg`,`jpeg`,`webp`,`avif`],P={type:`image`,accepts:[...N],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Image parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Image parameters need a non-empty string "preset".`);if(t.targetWidth!==void 0&&(typeof t.targetWidth!=`number`||!Number.isInteger(t.targetWidth)||t.targetWidth<=0))throw Error(`Image "targetWidth" must be a positive integer when set.`);return{preset:t.preset,...t.targetWidth===void 0?{}:{targetWidth:t.targetWidth}}}},F=[`nine`,`three-horizontal`,`three-vertical`,`one`];function I(){return{top:0,right:0,bottom:0,left:0}}function L(e){return{horizontal:e===`nine`||e===`three-horizontal`,vertical:e===`nine`||e===`three-vertical`}}function R(e,t,n,r){return t===`left`?n-e.right:t===`right`?n-e.left:t===`top`?r-e.bottom:r-e.top}function Me(e,t,n,r){return R(e,t,n,r)-1}function z(e,t,n){return Math.max(t,Math.min(n,e))}function Ne(e){let t=L(e.mode),n=e.overdraw??{top:0,right:0,bottom:0,left:0},r=t.horizontal&&(e.compression?.x??0)>0,i=t.vertical&&(e.compression?.y??0)>0,a=r?Math.max(e.insets.left,n.left):e.insets.left,o=r?Math.max(e.insets.right,n.right):e.insets.right,s=i?Math.max(e.insets.top,n.top):e.insets.top,c=i?Math.max(e.insets.bottom,n.bottom):e.insets.bottom,l=z(a,0,e.width),u=z(o,0,e.width-l),d=z(s,0,e.height);return{top:d,right:u,bottom:z(c,0,e.height-d),left:l}}function B(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Slice ${e} must be an object with top/right/bottom/left.`);let n=t,r=[`top`,`right`,`bottom`,`left`],i=I();for(let t of r){let r=n[t];if(typeof r!=`number`||!Number.isInteger(r)||r<0)throw Error(`Slice ${e}.${t} must be a non-negative integer.`);i[t]=r}return i}function Pe(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice compression must be an object with x/y percentages.`);let t=e,n={x:0,y:0};for(let e of[`x`,`y`]){let r=t[e];if(typeof r!=`number`||!Number.isInteger(r)||r<0||r>100)throw Error(`Slice compression.${e} must be an integer from 0 to 100.`);n[e]=r}return n}var V={type:`slice`,accepts:[...N],defaultParameters:()=>({mode:`nine`,insets:I(),pixelRatio:1,preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice parameters must be an object.`);let t=e;if(typeof t.mode!=`string`||!F.includes(t.mode))throw Error(`Slice "mode" must be one of ${F.map(e=>`'${e}'`).join(` | `)}.`);let n=B(`insets`,t.insets);if(typeof t.pixelRatio!=`number`||!Number.isInteger(t.pixelRatio)||t.pixelRatio<1)throw Error(`Slice "pixelRatio" must be an integer ≥ 1.`);let r=t.overdraw===void 0?void 0:B(`overdraw`,t.overdraw),i=t.compression===void 0?void 0:Pe(t.compression);if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Slice parameters need a non-empty string "preset".`);return{mode:t.mode,insets:n,pixelRatio:t.pixelRatio,...r===void 0?{}:{overdraw:r},...i===void 0?{}:{compression:i},preset:t.preset}}},H=new class{#e=new Map;register(e){if(this.#e.has(e.type))throw Error(`Plugin type "${e.type}" is already registered.`);this.#e.set(e.type,e)}has(e){return this.#e.has(e)}values(){return[...this.#e.values()]}types(){return[...this.#e.keys()]}project(e,t){let n=Object.create(null);for(let r of this.#e.keys()){if(!Object.hasOwn(e,r))throw Error(`Registered plugin "${r}" has no ${t}.`);n[r]=e[r]}return n}};H.register(P),H.register(V),H.register(A),H.register(M),H.register(T);var U=H.values();function Fe(e=U){return[...new Set(e.flatMap(e=>e.accepts))].sort().map(e=>`.${e}`)}function Ie(e,t=U){return t.find(t=>t.type===e)?.accepts.map(e=>`.${e}`).sort()??[]}function Le(e,t=U){let n=e.slice(e.lastIndexOf(`.`)+1).toLowerCase();return t.filter(e=>e.accepts.includes(n)).map(e=>e.type)}function W(e){return K(e)}function G(e,t){return e<t?-1:+(e>t)}function K(e){if(e===void 0)return`null`;if(e===null||typeof e==`number`||typeof e==`boolean`||typeof e==`string`)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(K).join(`,`)}]`;if(typeof e==`object`){let t=e,n=[];for(let e of Object.keys(t).sort())t[e]!==void 0&&n.push(`${JSON.stringify(e)}:${K(t[e])}`);return`{${n.join(`,`)}}`}throw Error(`Cannot canonicalize a ${typeof e} value.`)}function Re(e,t){let n={};for(let[r,i]of Object.entries(e.assets)){n[r]=[];let e=t[i.type];if(e?.collectReferences)try{n[r]=e.collectReferences(e.validateParameters(i.parameters))}catch{}}return n}function ze(e,t){let n=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(!(n.has(e)||!Object.hasOwn(t,e))){n.add(e);for(let n of t[e])r.push(n.assetId)}}return n}function Be(e,t){let n=new Set(Object.keys(e.manifests));for(let t of Object.values(e.assets))for(let e of t.manifests)n.add(e);let r={};for(let i of[...n].sort(G)){let n=Object.entries(e.assets).filter(([,e])=>e.manifests.includes(i)).map(([e])=>e).sort(G),a=new Set(n),o=new Set(n),s=new Map;for(let e of n)for(let n of ze([e],t)){if(o.add(n),a.has(n))continue;let t=s.get(n)??[];t.push(e),s.set(n,t)}r[i]={explicitMemberIds:n,passiveMembers:[...s.entries()].map(([e,t])=>({assetId:e,via:t})).sort((e,t)=>G(e.assetId,t.assetId)),deliveredAssetIds:o}}return r}function Ve(e,t,n,r){return n&&q(n,r)?`committed`:t&&q(t,r)?`rolled-back`:`unknown`}function q(e,t){return W(e)===W(t)}var J=Object.fromEntries(H.values().map(e=>[e.type,e]));function He(e,t,n){let r=e.library.assets[t]?.type,i=r?J[r]:void 0;if(!i)return[`asset:${t}`];try{let e=i.validateParameters(n),r=i.collectReferences?.(e)??[];return[...new Set([`asset:${t}`,...r.map(e=>`asset:${e.assetId}`)])]}catch{return[`asset:${t}`]}}function Y(e,t){let n=new Map(t.assets.map(e=>[e.id,e])),r={...e,assets:e.assets.map(e=>{let t=n.get(e.id);return t?{...e,rawUrl:t.rawUrl,rawHash:t.rawHash,gitStatus:t.gitStatus,importSource:t.importSource,proxy:t.proxy,warnings:t.warnings,duplicateIds:t.duplicateIds,passiveManifests:t.passiveManifests,references:t.references}:e}),gitBranch:t.gitBranch,importDefaults:t.importDefaults,issues:t.issues,presetNames:t.presetNames,presetCapabilities:t.presetCapabilities,rawIngestionQueue:t.rawIngestionQueue};return X(r,r.library)}function Ue(e,t){let n=structuredClone(e.library);n.folders=[...t.library.folders];for(let[e,r]of Object.entries(n.assets)){let i=t.library.assets[e];i?r.raw=i.raw:delete n.assets[e]}return Y(X(e,n),t)}function X(e,t,n=new Map){let r=new Map(e.assets.map(e=>[e.id,e])),i=new Map([...n.entries()].map(([e,t])=>[t,e])),a=Re(t,J),o=Be(t,a),s=We(o),c=new Map;for(let[e,t]of Object.entries(a))for(let n of t){let t=c.get(n.assetId)??[];t.push({field:n.field,assetId:e}),c.set(n.assetId,t)}let l=Object.entries(t.assets).map(([e,o])=>{let l=r.get(i.get(e)??e);return l?{...l,id:e,raw:o.raw,folder:v(o.raw),parameters:o.parameters,manifests:o.manifests,duplicateIds:l.duplicateIds.map(e=>n.get(e)??e).filter(e=>Object.hasOwn(t.assets,e)).sort(),passiveManifests:s.get(e)??[],references:{outgoing:a[e].map(e=>({field:e.field,assetId:e.assetId})),incoming:c.get(e)??[]}}:null}).filter(e=>e!==null).sort((e,t)=>e.id.localeCompare(t.id)),u=new Map(l.map(e=>[e.id,e.proxy?.fileSize??0])),d=Object.fromEntries(Object.keys(t.manifests).map(e=>{let t=o[e];return[e,{explicitMemberIds:t.explicitMemberIds,passiveMembers:t.passiveMembers}]})),f=Object.fromEntries(Object.keys(t.manifests).map(e=>[e,[...o[e].deliveredAssetIds].reduce((e,t)=>e+(u.get(t)??0),0)]));return{...e,library:t,assets:l,manifestMemberships:d,manifestDeliveredBytes:f,issues:e.issues.map(e=>({...e,...e.assetId&&n.has(e.assetId)?{assetId:n.get(e.assetId)}:{}}))}}function We(e){let t=new Map;for(let[n,r]of Object.entries(e))for(let e of r.passiveMembers){let{assetId:r,via:i}=e,a=t.get(r)??[];a.push({manifest:n,via:i}),t.set(r,a)}for(let e of t.values())e.sort((e,t)=>e.manifest.localeCompare(t.manifest));return t}function Z(e){return t=>{let n=structuredClone(t.library);return X(t,n,e(n)??new Map)}}function Ge(e,t){return Z(n=>{let r=n.assets[e];if(!r)return;t.parameters!==void 0&&(r.parameters=structuredClone(t.parameters)),t.manifests!==void 0&&(r.manifests=[...new Set(t.manifests)].sort());let i=t.renameTo??e;if(!(i!==e&&n.assets[i]))return i!==e&&(delete n.assets[e],n.assets[i]=r),t.folder!==void 0&&(r.raw=_(t.folder,y(r.raw))),i===e?void 0:new Map([[e,i]])})}function Ke(e,t){return Z(n=>{for(let r of new Set(e)){let e=n.assets[r];e&&(e.raw=_(t,y(e.raw)))}})}function qe(e){return Z(t=>{for(let n of new Set(e))delete t.assets[n]})}function Je(e){return Z(t=>{t.folders.includes(e)||t.folders.push(e),t.folders.sort()})}function Q(e,t){return Z(n=>{let r=n.folders.filter(t=>b(t,e)).map(n=>x(n,e,t)),i=new Set(n.folders.filter(t=>!b(t,e)).map(m));if(!r.some(e=>i.has(m(e)))){n.folders=n.folders.map(n=>b(n,e)?x(n,e,t):n).sort();for(let r of Object.values(n.assets)){let n=v(r.raw);b(n,e)&&(r.raw=_(x(n,e,t),y(r.raw)))}}})}function Ye(e,t){return Q(e,_(h(e),t))}function Xe(e,t){return Q(e,_(t,g(e)))}function Ze(e){return Z(t=>{t.folders=t.folders.filter(t=>!b(t,e));for(let[n,r]of Object.entries(t.assets))b(v(r.raw),e)&&delete t.assets[n]})}function Qe(e){return Z(t=>{Object.hasOwn(t.manifests,e)||(t.manifests[e]={})})}function $e(e,t){return Z(n=>{let r=n.manifests[e];if(r&&(t.color!==void 0&&(t.color===null?delete r.color:r.color=t.color),t.emoji!==void 0&&(t.emoji===null?delete r.emoji:r.emoji=t.emoji),!(t.renameTo===void 0||t.renameTo===e)&&!n.manifests[t.renameTo])){delete n.manifests[e],n.manifests[t.renameTo]=r;for(let r of Object.values(n.assets))r.manifests=r.manifests.map(n=>n===e?t.renameTo:n).sort()}})}function et(e){return Z(t=>{delete t.manifests[e];for(let n of Object.values(t.assets))n.manifests=n.manifests.filter(t=>t!==e)})}var tt=class{#e=Promise.resolve();#t=new Map;enqueue(e){let t=this.#e.then(e,e);return this.#e=t.then(()=>{},()=>{}),t}coalesce(e,t){let n=this.#t.get(e);if(n)return n;let r=this.enqueue(t).finally(()=>{this.#t.get(e)===r&&this.#t.delete(e)});return this.#t.set(e,r),r}},nt=class{#e=null;#t;constructor(e){this.#t=e}discover(e){if(this.#e)return this.#e;let t=(async()=>{try{this.#t({available:await e(),error:null})}catch(e){this.#t({available:null,error:e instanceof Error?e.message:String(e)})}})();return this.#e=t.finally(()=>{this.#e=null}),this.#e}};function rt(e,t,n){return e??t??(n.length>0?n.join(`
|
|
2
|
+
`):null)}var it=new class{#e=new tt;#t=new xe;#n=0;#r=0;#i=[];#a=t(null);get state(){return e(this.#a)}set state(e){n(this.#a,e,!0)}#o=t(!1);get saving(){return e(this.#o)}set saving(e){n(this.#o,e,!0)}#s=t(null);get error(){return e(this.#s)}set error(e){n(this.#s,e,!0)}#c=t(null);get usageAvailable(){return e(this.#c)}set usageAvailable(e){n(this.#c,e,!0)}#l=t(null);get usageCapabilityError(){return e(this.#l)}set usageCapabilityError(e){n(this.#l,e,!0)}#u=t(0);get usageRefreshRevision(){return e(this.#u)}set usageRefreshRevision(e){n(this.#u,e,!0)}#d=new nt(e=>{this.usageAvailable=e.available,this.usageCapabilityError=e.error});#f=t(!1);get loaded(){return e(this.#f)}set loaded(e){n(this.#f,e,!0)}async refresh(){return this.#p(u,{rebaseEditableState:!0})}discoverUsageCapability(){return this.#d.discover(s)}reconcile(){return this.#p(d,{coalesce:!0})}async reconcileOnFocus(){let e=this.usageRefreshRevision;await this.reconcile(),this.usageRefreshRevision===e&&this.usageRefreshRevision++}connectLibraryEvents(){if(typeof EventSource>`u`)return()=>{};let e=new EventSource(`/api/events`),t=()=>void this.reconcile();return e.addEventListener(`library-changed`,t),e.addEventListener(`open`,t),()=>{e.removeEventListener(`library-changed`,t),e.removeEventListener(`open`,t),e.close()}}#p(e,t={}){let n=async()=>{try{let n=await e();this.#t.value===null||t.rebaseEditableState?this.#t.replaceBase(n):this.#t.mergeBase(e=>Ue(e,n)),this.#h(),this.error=null}catch(e){this.error=e instanceof Error?e.message:String(e)}finally{this.loaded=!0}};return t.coalesce?this.#e.coalesce(`reconcile`,n):this.#e.enqueue(n)}mutate(e,t,n){return this.#m(e,t,n)}mutateFromServer(e,t){return this.#m(e,void 0,t)}#m(e,t,n={dependencies:[]}){let r=++this.#r,i=this.#t.value?.library,a=t?this.#t.add(t,n.dependencies):null,o=a===null?void 0:this.#t.value?.library;return a!==null&&this.#h(),this.#n+=1,this.saving=!0,this.#e.enqueue(async()=>{this.error=null;try{if(this.#i.some(e=>e.failedMutationId<r&&r<=e.throughMutationId&&p(n.dependencies,e.dependencies)))throw a!==null&&(this.#t.reject(a),this.#h()),new $;let t=await e();a===null?this.#t.replaceBase(t):this.#t.confirm(a,t,e=>Y(e,t)),this.#h()}catch(e){if(e instanceof $)throw this.error=e.message,e;let t=null;try{t=await u();let s=Ve(e,i,o,t.library);if(s===`committed`&&a!==null){let e=t;this.#t.confirm(a,e,t=>Y(t,e)),this.#h(),this.error=null;return}this.#t.replaceBase(t),s===`rolled-back`&&a!==null&&n.invalidatesOnFailure?.length?(this.#i.push({failedMutationId:r,throughMutationId:this.#r,dependencies:n.invalidatesOnFailure}),this.#t.rejectAffectedFrom(a,n.invalidatesOnFailure)):a!==null&&this.#t.reject(a)}catch{a!==null&&this.#t.reject(a)}throw this.#h(),this.error=e instanceof Error?e.message:String(e),e}finally{--this.#n,this.saving=this.#n>0,this.#n===0&&(this.#i=[])}})}#h(){this.state=this.#t.value}get manifestNames(){return Object.keys(this.state?.library.manifests??{}).sort()}manifestAppearance(e){return this.state?.library.manifests[e]??{}}get generalIssues(){return this.state?.issues.filter(e=>e.assetId===void 0).map(e=>e.message)??[]}assetById(e){return this.state?.assets.find(t=>t.id===e)??null}},$=class extends Error{constructor(){super(`Change was cancelled because an earlier structural save failed.`)}};export{fe as $,Oe as A,f as B,L as C,E as D,A as E,_ as F,de as G,ve as H,h as I,c as J,ye as K,m as L,g as M,v as N,T as O,b as P,l as Q,x as R,Me as S,M as T,me as U,ce as V,he as W,pe as X,re as Y,ue as Z,H as _,Qe as a,ae as at,I as b,et as c,ne as ct,Ge as d,be as et,$e as f,Le as g,Ie as h,Je as i,se as it,Te as j,De as k,Ke as l,Fe as m,rt as n,le as nt,qe as o,ge as ot,Ye as p,te as q,He as r,oe as rt,Ze as s,_e as st,it as t,ie as tt,Xe as u,Ne as v,P as w,R as x,V as y,ee as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./DLEDBLL1.js";import{i as e,o as t}from"./
|
|
1
|
+
import"./DLEDBLL1.js";import{i as e,o as t}from"./DUBuA2Dm.js";var n={get data(){return t.data},get error(){return t.error},get form(){return t.form},get params(){return t.params},get route(){return t.route},get state(){return t.state},get status(){return t.status},get url(){return t.url}};e.updated.check;var r=n;export{r as t};
|
|
Binary file
|
|
Binary file
|