fundus 0.4.0 → 0.6.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 +132 -130
- package/build/client/_app/immutable/assets/2.CtqoikFs.css +1 -0
- package/build/client/_app/immutable/assets/2.CtqoikFs.css.br +0 -0
- package/build/client/_app/immutable/assets/2.CtqoikFs.css.gz +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css +1 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css.br +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVIa_uFP.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{CeJsL6hj.js → BT3jFrxa.js} +1 -1
- package/build/client/_app/immutable/chunks/BT3jFrxa.js.br +1 -0
- package/build/client/_app/immutable/chunks/BT3jFrxa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CPFeEkfP.js +108 -0
- package/build/client/_app/immutable/chunks/CPFeEkfP.js.br +0 -0
- package/build/client/_app/immutable/chunks/CPFeEkfP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQrHfI-c.js +1 -0
- package/build/client/_app/immutable/chunks/CQrHfI-c.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQrHfI-c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D0BLX4Qd.js +1 -0
- package/build/client/_app/immutable/chunks/D0BLX4Qd.js.br +0 -0
- package/build/client/_app/immutable/chunks/D0BLX4Qd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D24lHNM9.js +1 -0
- package/build/client/_app/immutable/chunks/D24lHNM9.js.br +0 -0
- package/build/client/_app/immutable/chunks/D24lHNM9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6VoU_x4.js +1 -0
- package/build/client/_app/immutable/chunks/D6VoU_x4.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6VoU_x4.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.BQ4TfPHG.js → app.DmVWkUml.js} +2 -2
- package/build/client/_app/immutable/entry/app.DmVWkUml.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DmVWkUml.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dsf5wSaR.js +1 -0
- package/build/client/_app/immutable/entry/start.Dsf5wSaR.js.br +0 -0
- package/build/client/_app/immutable/entry/start.Dsf5wSaR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.l-jE2v4o.js +2 -0
- package/build/client/_app/immutable/nodes/0.l-jE2v4o.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.l-jE2v4o.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.C8DOqctV.js → 1.CRPVOtEh.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CRPVOtEh.js.br +3 -0
- package/build/client/_app/immutable/nodes/1.CRPVOtEh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.8Si6qHSH.js +3 -0
- package/build/client/_app/immutable/nodes/2.8Si6qHSH.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.8Si6qHSH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CdI42Umt.js +1 -0
- package/build/client/_app/immutable/nodes/3.CdI42Umt.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CdI42Umt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.mMkL80q1.js +2 -0
- package/build/client/_app/immutable/nodes/4.mMkL80q1.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.mMkL80q1.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-CG2t-ufq.js → context.js-FvYkJDOy.js} +62 -49
- package/build/server/chunks/chunks/context.js-FvYkJDOy.js.map +1 -0
- package/build/server/chunks/chunks/{contract.js-sHny3b-s.js → contract.js-DGMufT2e.js} +191 -178
- package/build/server/chunks/chunks/contract.js-DGMufT2e.js.map +1 -0
- package/build/server/chunks/chunks/{core.js-Clg1CHb6.js → core.js-DNIuZ9y-.js} +88 -2
- package/build/server/chunks/chunks/core.js-DNIuZ9y-.js.map +1 -0
- package/build/server/chunks/chunks/{exports.js-rOfFZumP.js → exports.js-Bepiq5XZ.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-rOfFZumP.js.map → exports.js-Bepiq5XZ.js.map} +1 -1
- package/build/server/chunks/chunks/{http.js--6sDZFfm.js → http.js-DWYlsbZd.js} +2 -2
- package/build/server/chunks/chunks/{http.js--6sDZFfm.js.map → http.js-DWYlsbZd.js.map} +1 -1
- package/build/server/chunks/chunks/{internal.js-DnveDsYn.js → internal.js-Cy01GWTk.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-DnveDsYn.js.map → internal.js-Cy01GWTk.js.map} +1 -1
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/manifest-membership.js-CJnQXrL4.js +213 -0
- package/build/server/chunks/chunks/manifest-membership.js-CJnQXrL4.js.map +1 -0
- package/build/server/chunks/chunks/raw-reconciliation.js-_D9lZ_sc.js +11 -0
- package/build/server/chunks/chunks/raw-reconciliation.js-_D9lZ_sc.js.map +1 -0
- package/build/server/chunks/chunks/{raw-reconciliation.js-DOFtjkgu.js → raw-reconciliation2.js-C2No1QIL.js} +3 -34
- package/build/server/chunks/chunks/raw-reconciliation2.js-C2No1QIL.js.map +1 -0
- package/build/server/chunks/chunks/{shared.js-DtvIbMLj.js → shared.js-b0LBJ1Hx.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-DtvIbMLj.js.map → shared.js-b0LBJ1Hx.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-bP1j9RdM.js → utils.js-CecFjHB0.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-bP1j9RdM.js.map → utils.js-CecFjHB0.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CkSErIdC.js → _server.ts.js-Bmyh2WUa.js} +7 -6
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CkSErIdC.js.map → _server.ts.js-Bmyh2WUa.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-BfdsBPWo.js → _server.ts.js-hoRG5JRv.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-BfdsBPWo.js.map → _server.ts.js-hoRG5JRv.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-D0aKDq87.js → _server.ts.js-BdO9kwrn.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-D0aKDq87.js.map → _server.ts.js-BdO9kwrn.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-DsX_m2gc.js → _server.ts.js-BojOH5gj.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-DsX_m2gc.js.map → _server.ts.js-BojOH5gj.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-nfThjRxs.js → _server.ts.js-DWIptU3K.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-nfThjRxs.js.map → _server.ts.js-DWIptU3K.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CseHmsYB.js → _server.ts.js-CaiOgcPc.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CseHmsYB.js.map → _server.ts.js-CaiOgcPc.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-CHiICsyC.js → _server.ts.js-Bug1Y1W9.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-CHiICsyC.js.map → _server.ts.js-Bug1Y1W9.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-Dgf46K5u.js → _server.ts.js-B9N7cPff.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-Dgf46K5u.js.map → _server.ts.js-B9N7cPff.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-DwQJUZFa.js → _server.ts.js-CiWdcZEv.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-DwQJUZFa.js.map → _server.ts.js-CiWdcZEv.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-BnKS8nVF.js → _server.ts.js-CNqGzdRB.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-BnKS8nVF.js.map → _server.ts.js-CNqGzdRB.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-BrDbLcyO.js → _server.ts.js-BHwcGKE_.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-BrDbLcyO.js.map → _server.ts.js-BHwcGKE_.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DIUiQuyd.js → _server.ts.js-CPoTCXQk.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DIUiQuyd.js.map → _server.ts.js-CPoTCXQk.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BrReStaf.js → _server.ts.js-iDOU2RdK.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BrReStaf.js.map → _server.ts.js-iDOU2RdK.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-B31iGwJ-.js → _server.ts.js-DikbQm3f.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-B31iGwJ-.js.map → _server.ts.js-DikbQm3f.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DeZQFNdj.js → _server.ts.js-DTdHkWuR.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-DeZQFNdj.js.map → _server.ts.js-DTdHkWuR.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DhDhUU7V.js → _server.ts.js-Cn8hwP5P.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DhDhUU7V.js.map → _server.ts.js-Cn8hwP5P.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-DGkPIMcq.js → _server.ts.js-BdUCIBJ_.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-DGkPIMcq.js.map → _server.ts.js-BdUCIBJ_.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-BTQgWDH1.js → _server.ts.js-CBLdZJZB.js} +8 -7
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-BTQgWDH1.js.map → _server.ts.js-CBLdZJZB.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DB3i4juR.js → _server.ts.js-DVtQlFHS.js} +7 -6
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DB3i4juR.js.map → _server.ts.js-DVtQlFHS.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-kmc-gejQ.js → _server.ts.js-CY_gjOPq.js} +8 -7
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-kmc-gejQ.js.map → _server.ts.js-CY_gjOPq.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-B8EE1DD9.js → _server.ts.js-BOfjGM87.js} +8 -7
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-B8EE1DD9.js.map → _server.ts.js-BOfjGM87.js.map} +1 -1
- package/build/server/chunks/entries/{hooks.server.js-DbBA5yYQ.js → hooks.server.js-BH0-wX67.js} +7 -6
- package/build/server/chunks/entries/{hooks.server.js-DbBA5yYQ.js.map → hooks.server.js-BH0-wX67.js.map} +1 -1
- package/build/server/chunks/{handler-J6aKdov3.js → handler-DMnHzDi5.js} +5 -5
- package/build/server/chunks/{handler-J6aKdov3.js.map → handler-DMnHzDi5.js.map} +1 -1
- package/build/server/chunks/{index.js-CsvWJ7Qu.js → index.js-BbOitM8j.js} +5 -5
- package/build/server/chunks/{index.js-CsvWJ7Qu.js.map → index.js-BbOitM8j.js.map} +1 -1
- package/build/server/chunks/{manifest.js-wHtZ9vlA.js → manifest.js-EeQkh4Qe.js} +28 -28
- package/build/server/chunks/{manifest.js-wHtZ9vlA.js.map → manifest.js-EeQkh4Qe.js.map} +1 -1
- package/build/server/chunks/nodes/0.js-CS9Xzs-1.js +11 -0
- package/build/server/chunks/nodes/0.js-CS9Xzs-1.js.map +1 -0
- package/build/server/chunks/nodes/1.js-GmjtwLZL.js +7 -0
- package/build/server/chunks/nodes/{1.js-CrPfmKpN.js.map → 1.js-GmjtwLZL.js.map} +1 -1
- package/build/server/chunks/nodes/2.js-Pip0Abb-.js +7 -0
- package/build/server/chunks/nodes/2.js-Pip0Abb-.js.map +1 -0
- package/build/server/chunks/nodes/3.js-CJKDeQST.js +7 -0
- package/build/server/chunks/nodes/3.js-CJKDeQST.js.map +1 -0
- package/build/server/chunks/nodes/4.js-CtmXxVg2.js +7 -0
- package/build/server/chunks/nodes/{4.js-tgwl3VD3.js.map → 4.js-CtmXxVg2.js.map} +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +1 -1
- package/dist/core/plugins/slice.d.ts +28 -4
- package/dist/core/plugins/slice.js +50 -0
- package/dist/server/importers/pinned-https.d.ts +0 -2
- package/dist/server/importers/pinned-https.js +49 -39
- package/dist/server/library-store.d.ts +1 -1
- package/dist/server/library-store.js +5 -1
- package/dist/server/operations.js +20 -1
- package/dist/server/plugins/slice.d.ts +3 -2
- package/dist/server/plugins/slice.js +21 -9
- package/dist/server/processing/slice-processing.d.ts +14 -0
- package/dist/server/processing/slice-processing.js +148 -0
- package/package.json +1 -1
- package/build/client/_app/immutable/assets/2.B5tQm8hR.css +0 -1
- package/build/client/_app/immutable/assets/2.B5tQm8hR.css.br +0 -0
- package/build/client/_app/immutable/assets/2.B5tQm8hR.css.gz +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVb-Lqdf.css +0 -1
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVb-Lqdf.css.br +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.CVb-Lqdf.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BPiGyn-T.js +0 -1
- package/build/client/_app/immutable/chunks/BPiGyn-T.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPiGyn-T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BoEHtxM8.js +0 -1
- package/build/client/_app/immutable/chunks/BoEHtxM8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BoEHtxM8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C-T1_s5P.js +0 -1
- package/build/client/_app/immutable/chunks/C-T1_s5P.js.br +0 -0
- package/build/client/_app/immutable/chunks/C-T1_s5P.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CeJsL6hj.js.br +0 -0
- package/build/client/_app/immutable/chunks/CeJsL6hj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cq4Yaq35.js +0 -108
- package/build/client/_app/immutable/chunks/Cq4Yaq35.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cq4Yaq35.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5sQSsUv.js +0 -1
- package/build/client/_app/immutable/chunks/D5sQSsUv.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5sQSsUv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/TZFh8bT7.js +0 -1
- package/build/client/_app/immutable/chunks/TZFh8bT7.js.br +0 -0
- package/build/client/_app/immutable/chunks/TZFh8bT7.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BQ4TfPHG.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BQ4TfPHG.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.COP9tIRH.js +0 -1
- package/build/client/_app/immutable/entry/start.COP9tIRH.js.br +0 -0
- package/build/client/_app/immutable/entry/start.COP9tIRH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CftchwYV.js +0 -2
- package/build/client/_app/immutable/nodes/0.CftchwYV.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CftchwYV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.C8DOqctV.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.C8DOqctV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BR8OVsS9.js +0 -3
- package/build/client/_app/immutable/nodes/2.BR8OVsS9.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BR8OVsS9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BO5hcxIH.js +0 -1
- package/build/client/_app/immutable/nodes/3.BO5hcxIH.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BO5hcxIH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DTaH-k-c.js +0 -2
- package/build/client/_app/immutable/nodes/4.DTaH-k-c.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DTaH-k-c.js.gz +0 -0
- package/build/server/chunks/chunks/asset-id.js-CFsW8jeL.js +0 -48
- package/build/server/chunks/chunks/asset-id.js-CFsW8jeL.js.map +0 -1
- package/build/server/chunks/chunks/context.js-CG2t-ufq.js.map +0 -1
- package/build/server/chunks/chunks/contract.js-sHny3b-s.js.map +0 -1
- package/build/server/chunks/chunks/core.js-Clg1CHb6.js.map +0 -1
- package/build/server/chunks/chunks/raw-reconciliation.js-DOFtjkgu.js.map +0 -1
- package/build/server/chunks/chunks/raw-reconciliation2.js-DFwky2ou.js +0 -11
- package/build/server/chunks/chunks/raw-reconciliation2.js-DFwky2ou.js.map +0 -1
- package/build/server/chunks/nodes/0.js-By6-kbk6.js +0 -11
- package/build/server/chunks/nodes/0.js-By6-kbk6.js.map +0 -1
- package/build/server/chunks/nodes/1.js-CrPfmKpN.js +0 -7
- package/build/server/chunks/nodes/2.js-C-i3Y5t2.js +0 -7
- package/build/server/chunks/nodes/2.js-C-i3Y5t2.js.map +0 -1
- package/build/server/chunks/nodes/3.js-C1gcIGeV.js +0 -7
- package/build/server/chunks/nodes/3.js-C1gcIGeV.js.map +0 -1
- package/build/server/chunks/nodes/4.js-tgwl3VD3.js +0 -7
|
@@ -77,7 +77,7 @@ export declare class LibraryStore {
|
|
|
77
77
|
*/
|
|
78
78
|
replaceRawFile(id: string, options: ReplaceRawFileOptions): Promise<Library>;
|
|
79
79
|
/** CAS-protected replacement used only by a repeatable import source. */
|
|
80
|
-
replaceRawFromImportSource(id: string, bytes: Uint8Array, expected: ImportSourceExpectation, nextSource?: ImportSourceRecord): Promise<Library>;
|
|
80
|
+
replaceRawFromImportSource(id: string, bytes: Uint8Array, expected: ImportSourceExpectation, nextSource?: ImportSourceRecord, updateParameters?: (parameters: unknown) => unknown): Promise<Library>;
|
|
81
81
|
/** Replace an asset's parameters (validated by the owning plugin). */
|
|
82
82
|
updateParameters(id: string, parameters: unknown): Promise<Library>;
|
|
83
83
|
/** Replace an asset's manifest membership (every name must exist). */
|
|
@@ -248,7 +248,7 @@ export class LibraryStore {
|
|
|
248
248
|
return library;
|
|
249
249
|
}
|
|
250
250
|
/** CAS-protected replacement used only by a repeatable import source. */
|
|
251
|
-
async replaceRawFromImportSource(id, bytes, expected, nextSource) {
|
|
251
|
+
async replaceRawFromImportSource(id, bytes, expected, nextSource, updateParameters) {
|
|
252
252
|
return this.#enqueue(async () => {
|
|
253
253
|
const library = await this.read();
|
|
254
254
|
const record = this.#requireAsset(library, id);
|
|
@@ -272,6 +272,7 @@ export class LibraryStore {
|
|
|
272
272
|
const backupPath = `${absolutePath}.fundus-reimport-${token}`;
|
|
273
273
|
const previousHash = record.rawHash;
|
|
274
274
|
const previousSource = structuredClone(record.importSource);
|
|
275
|
+
const previousParameters = structuredClone(record.parameters);
|
|
275
276
|
let staged = false;
|
|
276
277
|
let installed = false;
|
|
277
278
|
try {
|
|
@@ -283,11 +284,14 @@ export class LibraryStore {
|
|
|
283
284
|
record.rawHash = sha256Hex(bytes);
|
|
284
285
|
if (nextSource)
|
|
285
286
|
record.importSource = structuredClone(nextSource);
|
|
287
|
+
if (updateParameters)
|
|
288
|
+
record.parameters = updateParameters(record.parameters);
|
|
286
289
|
await this.write(library);
|
|
287
290
|
}
|
|
288
291
|
catch (cause) {
|
|
289
292
|
record.rawHash = previousHash;
|
|
290
293
|
record.importSource = previousSource;
|
|
294
|
+
record.parameters = previousParameters;
|
|
291
295
|
if (installed)
|
|
292
296
|
await unlink(absolutePath).catch(() => { });
|
|
293
297
|
if (staged)
|
|
@@ -16,6 +16,7 @@ import { classifyRawDirectory, verifyStableRawFile } from './raw-reconciliation.
|
|
|
16
16
|
import { rawSafetyIssues } from './raw-safety.js';
|
|
17
17
|
import { serverImporters } from './importers.js';
|
|
18
18
|
import { SourceImportError } from './importers/contract.js';
|
|
19
|
+
import { validateFigmaSourceParameters } from './importers/figma.js';
|
|
19
20
|
/**
|
|
20
21
|
* The CLI's `--parameters` merge semantics (M7): a SHALLOW merge at the top
|
|
21
22
|
* level onto the current parameters — a nested object value replaces the whole
|
|
@@ -42,6 +43,11 @@ export function mergeParameterPatch(currentParameters, patch) {
|
|
|
42
43
|
}
|
|
43
44
|
return merged;
|
|
44
45
|
}
|
|
46
|
+
function figmaSlicePixelRatio(raw, type) {
|
|
47
|
+
if (type !== 'slice' || raw.importSource?.importer !== 'figma')
|
|
48
|
+
return undefined;
|
|
49
|
+
return validateFigmaSourceParameters(raw.importSource.parameters).scale;
|
|
50
|
+
}
|
|
45
51
|
export class FundusOperations {
|
|
46
52
|
#config;
|
|
47
53
|
#registry;
|
|
@@ -310,9 +316,17 @@ export class FundusOperations {
|
|
|
310
316
|
if (!plugin.descriptor.accepts.includes(raw.extension)) {
|
|
311
317
|
throw new SourceImportError('invalid-response', `The ${snapshot.expected.type} type does not accept ".${raw.extension}" files.`);
|
|
312
318
|
}
|
|
319
|
+
// A missing input is a refresh of the saved source and deliberately
|
|
320
|
+
// preserves authored parameters. An explicit input is a reimport and
|
|
321
|
+
// synchronizes a Figma slice's pixel ratio to its new export scale.
|
|
322
|
+
const pixelRatio = snapshot.input === undefined
|
|
323
|
+
? undefined
|
|
324
|
+
: figmaSlicePixelRatio(raw, snapshot.expected.type);
|
|
313
325
|
let library;
|
|
314
326
|
try {
|
|
315
|
-
library = await this.#store.replaceRawFromImportSource(id, raw.bytes, snapshot.expected, raw.importSource
|
|
327
|
+
library = await this.#store.replaceRawFromImportSource(id, raw.bytes, snapshot.expected, raw.importSource, pixelRatio === undefined
|
|
328
|
+
? undefined
|
|
329
|
+
: (parameters) => plugin.descriptor.validateParameters(mergeParameterPatch(parameters, { pixelRatio })));
|
|
316
330
|
}
|
|
317
331
|
catch (cause) {
|
|
318
332
|
if (cause instanceof Error && cause.message === 'stale-import') {
|
|
@@ -347,6 +361,11 @@ export class FundusOperations {
|
|
|
347
361
|
if (seeded !== undefined)
|
|
348
362
|
next = seeded;
|
|
349
363
|
}
|
|
364
|
+
// Source scale is a default: an explicit parametersPatch below still wins.
|
|
365
|
+
const pixelRatio = figmaSlicePixelRatio(raw, options.type);
|
|
366
|
+
if (pixelRatio !== undefined) {
|
|
367
|
+
next = mergeParameterPatch(next, { pixelRatio });
|
|
368
|
+
}
|
|
350
369
|
if (options.parametersPatch !== undefined) {
|
|
351
370
|
next = mergeParameterPatch(next, options.parametersPatch);
|
|
352
371
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slice plugin (server part): the same sharp conversion as the image plugin,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* fixed caps keep their source-pixel size, while optional compression removes
|
|
4
|
+
* redundant pixels from the stretchable regions. The slicing data itself is
|
|
5
|
+
* entry-only.
|
|
5
6
|
*/
|
|
6
7
|
import { type ImagePreset, type SliceParameters } from '../../core/index.js';
|
|
7
8
|
import { type ServerAssetTypePlugin, type ServerPluginConfigDefinition } from './contract.js';
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slice plugin (server part): the same sharp conversion as the image plugin,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* fixed caps keep their source-pixel size, while optional compression removes
|
|
4
|
+
* redundant pixels from the stretchable regions. The slicing data itself is
|
|
5
|
+
* entry-only.
|
|
5
6
|
*/
|
|
6
|
-
import { SLICE_BUILT_IN_PRESETS, defaultInsetsForSize, slicePlugin, validateImagePreset } from '../../core/index.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SLICE_BUILT_IN_PRESETS, defaultInsetsForSize, processedSliceInsets, slicePlugin, validateImagePreset } from '../../core/index.js';
|
|
8
|
+
import { readImageDimensions } from '../processing/image-processing.js';
|
|
9
|
+
import { processSliceImageFile } from '../processing/slice-processing.js';
|
|
8
10
|
import { extensionForImageFormat } from './image.js';
|
|
9
11
|
import { mergePresets } from './config.js';
|
|
10
12
|
import { requireProxyField, resolveNamedPreset } from './contract.js';
|
|
@@ -51,16 +53,26 @@ export const sliceServerPlugin = {
|
|
|
51
53
|
pixelRatio: detectPixelRatio(rawFileName)
|
|
52
54
|
};
|
|
53
55
|
},
|
|
54
|
-
process: (job) =>
|
|
56
|
+
process: (job) => processSliceImageFile({
|
|
55
57
|
sourcePath: job.sourcePath,
|
|
56
58
|
targetPath: job.targetPath,
|
|
57
|
-
preset: job.preset
|
|
59
|
+
preset: job.preset,
|
|
60
|
+
mode: job.parameters.mode,
|
|
61
|
+
insets: job.parameters.insets,
|
|
62
|
+
overdraw: job.parameters.overdraw,
|
|
63
|
+
compression: job.parameters.compression
|
|
58
64
|
}),
|
|
59
65
|
readProxyInfo: (proxyPath) => readImageDimensions(proxyPath),
|
|
60
66
|
buildManifestEntry: ({ parameters, src, proxy }) => {
|
|
67
|
+
const sourceWidth = requireProxyField(proxy, 'width');
|
|
68
|
+
const sourceHeight = requireProxyField(proxy, 'height');
|
|
61
69
|
const slicing = {
|
|
62
70
|
mode: parameters.mode,
|
|
63
|
-
insets:
|
|
71
|
+
insets: processedSliceInsets({
|
|
72
|
+
...parameters,
|
|
73
|
+
width: sourceWidth,
|
|
74
|
+
height: sourceHeight
|
|
75
|
+
}),
|
|
64
76
|
pixelRatio: parameters.pixelRatio,
|
|
65
77
|
// An all-zero overdraw is semantically "none" — keep the entry minimal.
|
|
66
78
|
...(hasAnySide(parameters.overdraw) ? { overdraw: parameters.overdraw } : {})
|
|
@@ -69,8 +81,8 @@ export const sliceServerPlugin = {
|
|
|
69
81
|
kind: 'slice',
|
|
70
82
|
src,
|
|
71
83
|
slicing,
|
|
72
|
-
sourceWidth
|
|
73
|
-
sourceHeight
|
|
84
|
+
sourceWidth,
|
|
85
|
+
sourceHeight
|
|
74
86
|
};
|
|
75
87
|
}
|
|
76
88
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ImagePreset, type SliceCompression, type SliceInsets, type SliceMode } from '../../core/index.js';
|
|
2
|
+
import { type ImageProcessingOutput } from './image-processing.js';
|
|
3
|
+
/** The length after percentage-based compression, with one stretch pixel kept. */
|
|
4
|
+
export declare function compressedStretchSize(size: number, compression: number): number;
|
|
5
|
+
export declare function assertSliceCompressionDimensions(width: number, height: number): void;
|
|
6
|
+
export declare function processSliceImageFile(options: {
|
|
7
|
+
sourcePath: string;
|
|
8
|
+
targetPath: string;
|
|
9
|
+
preset: ImagePreset;
|
|
10
|
+
mode: SliceMode;
|
|
11
|
+
insets: SliceInsets;
|
|
12
|
+
overdraw?: SliceInsets;
|
|
13
|
+
compression?: SliceCompression;
|
|
14
|
+
}): Promise<ImageProcessingOutput>;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice-specific image processing. Fixed caps are copied pixel-for-pixel; only
|
|
3
|
+
* the source region that will be stretched is scaled down. Bands are extracted
|
|
4
|
+
* and recomposed through temporary PNGs so large assets are not held in several
|
|
5
|
+
* full-size raw buffers at once.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdir, mkdtemp, rm } from 'node:fs/promises';
|
|
8
|
+
import { tmpdir } from 'node:os';
|
|
9
|
+
import { dirname, join } from 'node:path';
|
|
10
|
+
import sharp from 'sharp';
|
|
11
|
+
import { processedSliceInsets, slicedAxesFor } from '../../core/index.js';
|
|
12
|
+
import { processImageFile } from './image-processing.js';
|
|
13
|
+
const MAX_COMPRESSION_PIXELS = 32_000_000;
|
|
14
|
+
function clamp(value, min, max) {
|
|
15
|
+
return Math.max(min, Math.min(max, value));
|
|
16
|
+
}
|
|
17
|
+
/** The length after percentage-based compression, with one stretch pixel kept. */
|
|
18
|
+
export function compressedStretchSize(size, compression) {
|
|
19
|
+
if (size <= 0)
|
|
20
|
+
return 0;
|
|
21
|
+
return Math.max(1, Math.round(size * (1 - clamp(compression, 0, 100) / 100)));
|
|
22
|
+
}
|
|
23
|
+
export function assertSliceCompressionDimensions(width, height) {
|
|
24
|
+
if (width * height > MAX_COMPRESSION_PIXELS) {
|
|
25
|
+
throw new Error(`Slice compression supports images up to ${MAX_COMPRESSION_PIXELS.toLocaleString('en-US')} pixels.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function fixedBands(size, startInset, endInset) {
|
|
29
|
+
const start = clamp(startInset, 0, size);
|
|
30
|
+
const end = clamp(endInset, 0, size - start);
|
|
31
|
+
return { start, center: size - start - end, end };
|
|
32
|
+
}
|
|
33
|
+
function axisBands(start, center, end, targetCenter) {
|
|
34
|
+
return [
|
|
35
|
+
{ start: 0, size: start, targetSize: start },
|
|
36
|
+
{ start, size: center, targetSize: targetCenter },
|
|
37
|
+
{ start: start + center, size: end, targetSize: end }
|
|
38
|
+
].filter((band) => band.size > 0 && band.targetSize > 0);
|
|
39
|
+
}
|
|
40
|
+
async function compressAxisToPng(options) {
|
|
41
|
+
const horizontal = options.axis === 'x';
|
|
42
|
+
const width = horizontal
|
|
43
|
+
? options.start + options.targetCenter + options.end
|
|
44
|
+
: options.dimensions.width;
|
|
45
|
+
const height = horizontal
|
|
46
|
+
? options.dimensions.height
|
|
47
|
+
: options.start + options.targetCenter + options.end;
|
|
48
|
+
const composites = [];
|
|
49
|
+
let destinationOffset = 0;
|
|
50
|
+
let bandIndex = 0;
|
|
51
|
+
for (const band of axisBands(options.start, options.center, options.end, options.targetCenter)) {
|
|
52
|
+
const bandPath = join(options.temporaryDirectory, `${options.prefix}-${bandIndex}.png`);
|
|
53
|
+
const extracted = sharp(options.sourcePath).extract({
|
|
54
|
+
left: horizontal ? band.start : 0,
|
|
55
|
+
top: horizontal ? 0 : band.start,
|
|
56
|
+
width: horizontal ? band.size : options.dimensions.width,
|
|
57
|
+
height: horizontal ? options.dimensions.height : band.size
|
|
58
|
+
});
|
|
59
|
+
if (band.targetSize !== band.size) {
|
|
60
|
+
extracted.resize({
|
|
61
|
+
width: horizontal ? band.targetSize : options.dimensions.width,
|
|
62
|
+
height: horizontal ? options.dimensions.height : band.targetSize,
|
|
63
|
+
fit: 'fill'
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
await extracted.png().toFile(bandPath);
|
|
67
|
+
composites.push({
|
|
68
|
+
input: bandPath,
|
|
69
|
+
left: horizontal ? destinationOffset : 0,
|
|
70
|
+
top: horizontal ? 0 : destinationOffset
|
|
71
|
+
});
|
|
72
|
+
destinationOffset += band.targetSize;
|
|
73
|
+
bandIndex += 1;
|
|
74
|
+
}
|
|
75
|
+
await sharp({
|
|
76
|
+
create: { width, height, channels: 4, background: { r: 0, g: 0, b: 0, alpha: 0 } }
|
|
77
|
+
})
|
|
78
|
+
.composite(composites)
|
|
79
|
+
.png()
|
|
80
|
+
.toFile(options.targetPath);
|
|
81
|
+
return { width, height };
|
|
82
|
+
}
|
|
83
|
+
export async function processSliceImageFile(options) {
|
|
84
|
+
const axes = slicedAxesFor(options.mode);
|
|
85
|
+
const compressionX = axes.horizontal ? (options.compression?.x ?? 0) : 0;
|
|
86
|
+
const compressionY = axes.vertical ? (options.compression?.y ?? 0) : 0;
|
|
87
|
+
if (compressionX === 0 && compressionY === 0) {
|
|
88
|
+
return processImageFile(options);
|
|
89
|
+
}
|
|
90
|
+
const metadata = await sharp(options.sourcePath).metadata();
|
|
91
|
+
if (metadata.width === undefined || metadata.height === undefined) {
|
|
92
|
+
throw new Error(`Could not read image dimensions of ${options.sourcePath}.`);
|
|
93
|
+
}
|
|
94
|
+
assertSliceCompressionDimensions(metadata.width, metadata.height);
|
|
95
|
+
let dimensions = { width: metadata.width, height: metadata.height };
|
|
96
|
+
const processedInsets = processedSliceInsets({
|
|
97
|
+
...options,
|
|
98
|
+
width: metadata.width,
|
|
99
|
+
height: metadata.height
|
|
100
|
+
});
|
|
101
|
+
let currentPath = options.sourcePath;
|
|
102
|
+
const temporaryDirectory = await mkdtemp(join(tmpdir(), 'fundus-slice-compression-'));
|
|
103
|
+
try {
|
|
104
|
+
if (compressionX > 0) {
|
|
105
|
+
const bands = fixedBands(dimensions.width, processedInsets.left, processedInsets.right);
|
|
106
|
+
const targetCenter = compressedStretchSize(bands.center, compressionX);
|
|
107
|
+
if (targetCenter > 0 && targetCenter < bands.center) {
|
|
108
|
+
currentPath = join(temporaryDirectory, 'compressed-x.png');
|
|
109
|
+
dimensions = await compressAxisToPng({
|
|
110
|
+
sourcePath: options.sourcePath,
|
|
111
|
+
targetPath: currentPath,
|
|
112
|
+
temporaryDirectory,
|
|
113
|
+
prefix: 'x-band',
|
|
114
|
+
dimensions,
|
|
115
|
+
axis: 'x',
|
|
116
|
+
...bands,
|
|
117
|
+
targetCenter
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (compressionY > 0) {
|
|
122
|
+
const bands = fixedBands(dimensions.height, processedInsets.top, processedInsets.bottom);
|
|
123
|
+
const targetCenter = compressedStretchSize(bands.center, compressionY);
|
|
124
|
+
if (targetCenter > 0 && targetCenter < bands.center) {
|
|
125
|
+
const nextPath = join(temporaryDirectory, 'compressed-y.png');
|
|
126
|
+
dimensions = await compressAxisToPng({
|
|
127
|
+
sourcePath: currentPath,
|
|
128
|
+
targetPath: nextPath,
|
|
129
|
+
temporaryDirectory,
|
|
130
|
+
prefix: 'y-band',
|
|
131
|
+
dimensions,
|
|
132
|
+
axis: 'y',
|
|
133
|
+
...bands,
|
|
134
|
+
targetCenter
|
|
135
|
+
});
|
|
136
|
+
currentPath = nextPath;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
await mkdir(dirname(options.targetPath), { recursive: true });
|
|
140
|
+
const info = await sharp(currentPath)
|
|
141
|
+
.toFormat(options.preset.format, options.preset.quality !== undefined ? { quality: options.preset.quality } : {})
|
|
142
|
+
.toFile(options.targetPath);
|
|
143
|
+
return { width: info.width, height: info.height };
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
await rm(temporaryDirectory, { recursive: true, force: true });
|
|
147
|
+
}
|
|
148
|
+
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.backdrop.svelte-n5o24b{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-n5o24b{border:1px solid var(--border);background:var(--panel);border-radius:8px;width:420px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-n5o24b{margin:0 0 4px;font-size:12px}.destination.svelte-n5o24b{color:var(--text-faint);margin:0 0 16px}.row.svelte-n5o24b{gap:12px;display:flex}.field.svelte-n5o24b{color:var(--text-dim);flex-direction:column;flex:1;gap:4px;margin-bottom:10px;display:flex}.field.wide.svelte-n5o24b{width:100%}.warning.svelte-n5o24b{color:var(--warning);margin:6px 0 0;font-size:11px}.actions.svelte-n5o24b{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.context-menu.svelte-109nkvw{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-109nkvw{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-109nkvw:hover,button.svelte-109nkvw:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-109nkvw{color:var(--danger)}hr.svelte-109nkvw{background:var(--border);border:0;height:1px;margin:4px 8px}.manifest-label.svelte-1b4m5oj{align-items:center;gap:4px;min-width:0;display:inline-flex}.emoji.svelte-1b4m5oj{flex:none;line-height:1}.name.svelte-1b4m5oj{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip.svelte-1b4m5oj{background:color-mix(in srgb, var(--manifest-color) 20%, transparent);color:var(--manifest-color);border-radius:4px;padding:0 5px;font-size:10px}.chip.passive.svelte-1b4m5oj{border:1px dashed var(--manifest-color);background:0 0}.library-view.svelte-1uha8ag{flex:1;min-height:0;display:flex}.page.svelte-1uha8ag{flex:1;min-height:0;padding:16px;position:relative;overflow-y:auto}.selection-bar.svelte-1uha8ag,.filter-bar.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.selection-bar.svelte-1uha8ag{margin-bottom:8px}.filter-bar.svelte-1uha8ag{margin-bottom:16px}.selection-summary.svelte-1uha8ag{color:var(--accent);white-space:nowrap;font-weight:600}.toggle.svelte-1uha8ag{color:var(--text-dim);align-items:center;gap:6px;display:inline-flex}.search.svelte-1uha8ag{align-items:center;gap:5px;width:220px;padding:0 6px;display:flex}.search.svelte-1uha8ag:focus-within{border-color:var(--accent)}.search-icon.svelte-1uha8ag{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-width:1.5px;stroke-linecap:round;flex:none}.search-input.svelte-1uha8ag{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-faint);border-radius:3px;flex:none;padding:1px 4px;font:9px/14px system-ui,sans-serif}.import.svelte-1uha8ag{background:var(--accent);color:var(--text);margin-left:auto}.section.svelte-1uha8ag{margin-bottom:24px}.section.svelte-1uha8ag:last-child{margin-bottom:0}.section-emoji.svelte-1uha8ag{margin-right:6px}.grid.svelte-1uha8ag,.folder-grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.folder-card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);min-width:0;height:60px;color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.folder-card.svelte-1uha8ag:hover,.folder-card.svelte-1uha8ag:focus-visible{border-color:var(--accent);outline:none}.folder-card.drop-target.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.folder-card.dragging-folder.svelte-1uha8ag{opacity:.55}.folder-card-icon.svelte-1uha8ag{color:var(--text-dim);flex:none;align-items:center;display:flex}.folder-card-details.svelte-1uha8ag{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.folder-card-details.svelte-1uha8ag strong:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.folder-card-details.svelte-1uha8ag span:where(.svelte-1uha8ag),.folder-card-arrow.svelte-1uha8ag{color:var(--text-faint)}.folder-card-arrow.svelte-1uha8ag{flex:none;font-size:18px}.card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);border-radius:8px;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative}.card.selected.svelte-1uha8ag{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.asset-select.svelte-1uha8ag{z-index:1;width:16px;height:16px;accent-color:var(--accent);position:absolute;top:12px;left:12px}.card.svelte-1uha8ag:hover{border-color:var(--accent)}.thumbnail.svelte-1uha8ag{border-radius:var(--radius);justify-content:center;align-items:center;height:96px;display:flex;overflow:hidden}.meta.svelte-1uha8ag{align-items:center;gap:6px;min-width:0;display:flex}.id.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.type-badge.svelte-1uha8ag{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:10px}.badges.svelte-1uha8ag{flex-wrap:wrap;gap:4px;min-height:16px;display:flex}.badge.svelte-1uha8ag{border-radius:4px;padding:0 5px;font-size:10px}.badge.warning.svelte-1uha8ag{background:var(--warning-soft);color:var(--warning)}.empty.svelte-1uha8ag{color:var(--text-dim);text-align:center;padding:48px}.dialog-row.svelte-1uha8ag{align-items:center;gap:8px;display:flex}.dialog-row.svelte-1uha8ag span:where(.svelte-1uha8ag){width:44px;color:var(--text-dim)}.dialog-row.svelte-1uha8ag input:where(.svelte-1uha8ag){flex:1}.dialog-text.svelte-1uha8ag,.dialog-warning.svelte-1uha8ag{margin:8px 0 0}.dialog-warning.svelte-1uha8ag{color:var(--warning)}.drop-hint.svelte-1uha8ag{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;background:#0d99ff14;border-radius:12px;justify-content:center;align-items:center;font-size:14px;display:flex;position:fixed;inset:48px 8px 8px}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.playback.svelte-nchstv{align-items:center;gap:6px;width:100%;display:flex}.btn.svelte-nchstv{background:var(--panel-raised);border-radius:var(--radius);width:28px;height:28px;color:var(--text);border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn.svelte-nchstv:hover:not(:disabled){border-color:var(--border)}.btn.svelte-nchstv:focus-visible{border-color:var(--accent);outline:none}.btn.svelte-nchstv:disabled{opacity:.4;cursor:not-allowed}.btn.active.svelte-nchstv{background:var(--accent-soft);color:var(--accent)}.btn.svelte-nchstv svg:where(.svelte-nchstv){width:16px;height:16px;display:block}.time.svelte-nchstv{color:var(--text-dim);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.volume-group.svelte-nchstv{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.range.svelte-nchstv{appearance:none;background:var(--panel-raised);cursor:pointer;border-radius:999px;height:4px}.range.scrub.svelte-nchstv{flex:1;min-width:0;margin:0 2px}.range.volume.svelte-nchstv{flex:none;width:72px}.range.svelte-nchstv:disabled{opacity:.4;cursor:not-allowed}.range.svelte-nchstv::-webkit-slider-thumb{appearance:none;background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-nchstv::-moz-range-thumb{background:var(--accent);border:none;border-radius:50%;width:12px;height:12px}.range.svelte-nchstv:focus-visible{outline:none}.range.svelte-nchstv:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.range.svelte-nchstv:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--accent-soft)}.audio-waveform.svelte-1liihyn{flex-direction:column;gap:8px;width:100%;height:100%;min-height:0;display:flex}.wave.svelte-1liihyn{cursor:pointer;touch-action:none;flex:1;width:100%;min-height:0;display:block}.footer.svelte-1liihyn{flex:none;align-items:center;display:flex}.stage.svelte-1ww4cvx{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.audio-frame.svelte-1ww4cvx{width:min(90%,480px);height:128px}p.svelte-1ww4cvx{color:var(--text-dim)}.icon.svelte-jamecx{display:block}.scrub-number.svelte-nhap92{flex:1;min-width:0;display:flex;position:relative}.input.svelte-nhap92{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}.scrub-number.right.svelte-nhap92 .input:where(.svelte-nhap92){text-align:right}.input.svelte-nhap92::-webkit-outer-spin-button{appearance:none;margin:0}.input.svelte-nhap92::-webkit-inner-spin-button{appearance:none;margin:0}.scrub-surface.svelte-nhap92{cursor:ew-resize;touch-action:none;position:absolute;inset:0}.number-field.svelte-368zap{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-368zap{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.number-input.svelte-368zap{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex;position:relative;overflow:hidden}.number-input.svelte-368zap:focus-within{border-color:var(--accent)}.fill.svelte-368zap{pointer-events:none;z-index:0;background:#4a4a4a;height:100%;position:absolute;top:0;left:0}.icon-slot.svelte-368zap{z-index:1;width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex;position:relative}.number-input.svelte-368zap .scrub-number{z-index:1}h3.svelte-1ol624f{letter-spacing:0;text-transform:none;color:#fff;margin:0 0 10px;font-size:11px;font-weight:400}.select-field.svelte-bczi6w{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-bczi6w{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.select-input.svelte-bczi6w{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.select-input.svelte-bczi6w:focus-within{border-color:var(--accent)}.icon-slot.svelte-bczi6w{width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:flex}select.svelte-bczi6w{width:100%;min-width:0;height:100%;color:var(--text);background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-m9vwwu{border-bottom:1px solid var(--border-soft);padding:12px}.hint.svelte-m9vwwu{color:var(--text-faint);margin:4px 0 0;font-size:11px}.info.svelte-m9vwwu{font-variant-numeric:tabular-nums;margin:0}.file.svelte-m9vwwu{color:var(--text-dim);word-break:break-all}section.svelte-1by8n8t{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-1by8n8t{margin-bottom:8px}.fundus-slice.svelte-1820t2z{width:100%;height:100%;position:relative;overflow:hidden}.fundus-slice--overdraw.svelte-1820t2z{overflow:visible}.fundus-slice__cell.svelte-1820t2z{position:absolute;overflow:hidden}.fundus-slice__cell.svelte-1820t2z img:where(.svelte-1820t2z){pointer-events:none;-webkit-user-select:none;user-select:none;max-width:none;max-height:none;position:absolute}.fundus-slice-canvas.svelte-xdsbrz{width:100%;height:100%;position:relative}canvas.svelte-xdsbrz{pointer-events:none;display:block;position:absolute}.fundus-chroma-key-video.svelte-r30mxh{width:100%;height:100%;position:relative}canvas.svelte-r30mxh,img.svelte-r30mxh{width:100%;height:100%;display:block}video.svelte-r30mxh{visibility:hidden;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.stage.svelte-10eps7e{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.stage.svelte-10eps7e img{object-fit:contain;max-width:90%;max-height:90%}img.svelte-gdduef{object-fit:contain;max-width:100%;max-height:100%}section.svelte-1yd7n22{border-bottom:1px solid var(--border-soft);padding:12px}.modes.svelte-1yd7n22{flex-direction:column;gap:4px;display:flex}.modes.svelte-1yd7n22 button:where(.svelte-1yd7n22){text-align:left;background:var(--panel-raised);color:var(--text);border-radius:var(--radius);border:1px solid #0000;padding:6px 10px}.modes.svelte-1yd7n22 button:where(.svelte-1yd7n22):hover{border-color:var(--border)}.modes.svelte-1yd7n22 button.on:where(.svelte-1yd7n22){background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.insets.svelte-1yd7n22{grid-template-columns:1fr 1fr;gap:8px;min-width:0;display:grid}.preview-panel.svelte-1mjaycs{flex-direction:column;height:100%;min-height:0;display:flex}.bar.svelte-1mjaycs{flex:none;align-items:center;gap:10px;padding:8px 0;display:flex}.size.svelte-1mjaycs{color:var(--text-dim);font-variant-numeric:tabular-nums}.backends.svelte-1mjaycs{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);gap:2px;margin-left:auto;padding:2px;display:inline-flex}.backends.svelte-1mjaycs button:where(.svelte-1mjaycs){color:var(--text-dim);background:0 0;border:none;border-radius:4px;padding:2px 8px}.backends.svelte-1mjaycs button.on:where(.svelte-1mjaycs){background:var(--accent-soft);color:var(--accent);font-weight:600}.reset.svelte-1mjaycs{background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.reset.svelte-1mjaycs:hover{border-color:var(--accent)}.stage.svelte-1mjaycs{border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;padding:24px;overflow:auto}.box.svelte-1mjaycs{position:relative;box-shadow:0 0 0 1px #ffffff1f}.box.svelte-1mjaycs .fill{position:absolute;inset:0}.handle.svelte-1mjaycs{touch-action:none;background:0 0;position:absolute}.handle.edge-right.svelte-1mjaycs{cursor:ew-resize;width:10px;height:100%;top:0;right:-4px}.handle.edge-bottom.svelte-1mjaycs{cursor:ns-resize;width:100%;height:10px;bottom:-4px;left:0}.handle.corner.svelte-1mjaycs{cursor:nwse-resize;background:var(--accent);width:16px;height:16px;box-shadow:0 0 0 2px var(--canvas);border-radius:3px;bottom:-6px;right:-6px}.canvas.svelte-1jfrg6d{flex-direction:column;height:100%;min-height:0;display:flex}.toolbar.svelte-1jfrg6d{flex:none;align-items:center;gap:8px;padding:8px 0;display:flex}.toolbar.svelte-1jfrg6d button:where(.svelte-1jfrg6d){background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:4px 10px}.toolbar.svelte-1jfrg6d button:where(.svelte-1jfrg6d):hover{border-color:var(--accent)}.toolbar.svelte-1jfrg6d button.active:where(.svelte-1jfrg6d){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.zoom.svelte-1jfrg6d{text-align:center;min-width:44px;color:var(--text-dim);font-variant-numeric:tabular-nums}.dims.svelte-1jfrg6d{color:var(--text-dim);font-variant-numeric:tabular-nums;margin-left:auto}.viewport.svelte-1jfrg6d{touch-action:none;cursor:grab;border:1px solid var(--border);border-radius:var(--radius-large);flex:1;min-height:0;position:relative;overflow:hidden}.viewport.panning.svelte-1jfrg6d{cursor:grabbing}.image-wrap.svelte-1jfrg6d{transform-origin:0 0;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #ffffff14}.image-wrap.svelte-1jfrg6d img:where(.svelte-1jfrg6d){width:100%;height:100%;image-rendering:pixelated;pointer-events:none;-webkit-user-select:none;user-select:none;display:block}.center-rect.svelte-1jfrg6d{pointer-events:none;position:absolute}.center-rect.side-edges.svelte-1jfrg6d{border-left:1px dashed #0d99ff99;border-right:1px dashed #0d99ff99}.center-rect.cap-edges.svelte-1jfrg6d{border-top:1px dashed #0d99ff99;border-bottom:1px dashed #0d99ff99}.overdraw-band.svelte-1jfrg6d{pointer-events:none;background:#38bdf829;position:absolute}.line.svelte-1jfrg6d{background:var(--accent);touch-action:none;position:absolute}.line.overdraw-line.svelte-1jfrg6d{background:#38bdf8 padding-box content-box}.line.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){background:#38bdf8}.line.v.svelte-1jfrg6d{cursor:ew-resize;box-sizing:content-box;background-clip:content-box;width:1px;height:100%;margin-left:-.5px;padding:0 7px;top:0;transform:translate(-7px)}.line.h.svelte-1jfrg6d{cursor:ns-resize;box-sizing:content-box;background-clip:content-box;width:100%;height:1px;margin-top:-.5px;padding:7px 0;left:0;transform:translateY(-7px)}.line.active.svelte-1jfrg6d{background-color:var(--text);background-clip:content-box}.tag.svelte-1jfrg6d{background:var(--accent);color:var(--text);font-variant-numeric:tabular-nums;pointer-events:none;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;position:absolute}.line.v.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:4px;left:50%;transform:translate(-50%)}.line.h.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:50%;left:4px;transform:translateY(-50%)}.line.v.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){top:auto;bottom:4px}.line.h.overdraw-line.svelte-1jfrg6d .tag:where(.svelte-1jfrg6d){left:auto;right:4px}.editor.svelte-1ea2lvt{flex-direction:column;flex:1;min-height:0;display:flex}.tabs.svelte-1ea2lvt{flex:none;gap:4px;margin-bottom:4px;display:inline-flex}.tabs.svelte-1ea2lvt button:where(.svelte-1ea2lvt){border-radius:var(--radius);color:var(--text-dim);background:0 0;border:none;padding:4px 10px}.tabs.svelte-1ea2lvt button.on:where(.svelte-1ea2lvt){background:var(--accent-soft);color:var(--accent)}.pane.svelte-1ea2lvt{flex:1;min-height:0}.empty.svelte-1ea2lvt{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}section.svelte-ij1927{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-ij1927{margin-bottom:8px}.stage.svelte-qls820{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.preview-column.svelte-qls820{flex-direction:column;align-items:center;gap:8px;display:flex}.video-frame.svelte-qls820{width:min(90%,480px)}.video-frame.svelte-qls820 video{width:100%;height:100%}p.svelte-qls820{color:var(--text-dim)}video.svelte-ejgo9x{object-fit:contain;max-width:100%;max-height:100%}.picker.svelte-56kutb{flex-direction:column;gap:4px;min-width:0;margin-bottom:8px;display:flex}.caption.svelte-56kutb{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.reference-input.svelte-56kutb{border-radius:4px;align-items:center;min-width:0;height:24px;padding:0;display:flex;position:relative}.reference-input.svelte-56kutb:focus-within{border-color:var(--accent)}.current.svelte-56kutb{min-width:0;height:100%;color:var(--text);text-align:left;background:0 0;border:none;outline:none;flex:1;align-items:center;gap:4px;padding:0 6px 0 0;display:flex}.current.empty.svelte-56kutb{color:var(--text-faint)}.preview-slot.svelte-56kutb{box-sizing:border-box;background:#4a4a4a;border-radius:3px 0 0 3px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;margin-left:-1px;padding:2px;display:flex;overflow:hidden}.preview.svelte-56kutb{object-fit:contain;width:100%;height:100%}.missing-preview.svelte-56kutb{color:var(--warning);font-weight:700}.clear.svelte-56kutb{border:none;border-left:1px solid var(--border-soft);width:24px;height:24px;color:var(--text-dim);background:0 0;border-radius:0 3px 3px 0;outline:none;flex:none;padding:0}.clear.svelte-56kutb:hover{color:var(--danger)}.id.svelte-56kutb,.placeholder.svelte-56kutb{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dangling.svelte-56kutb{color:var(--warning)}.dropdown.svelte-56kutb{z-index:10;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);max-height:240px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000080}.option.svelte-56kutb{border-radius:var(--radius);width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.option.svelte-56kutb .thumbnail:where(.svelte-56kutb){object-fit:contain;background:var(--canvas);border-radius:3px;flex:none;width:24px;height:24px}.option.svelte-56kutb:hover{background:var(--panel-raised)}.option.selected.svelte-56kutb{background:var(--accent-soft);color:var(--accent)}.hint.svelte-56kutb{color:var(--text-faint);margin:4px;font-size:11px}.color-field.svelte-gjs979{flex-direction:column;gap:4px;min-width:0;display:flex}.caption.svelte-gjs979{letter-spacing:.27px;color:#ffffffb2;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.color-input.svelte-gjs979{border-radius:4px;align-items:center;gap:4px;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.color-input.svelte-gjs979:focus-within{border-color:var(--accent)}.swatch-slot.svelte-gjs979{flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.swatch.svelte-gjs979{cursor:pointer;background:0 0;border:1px solid #ffffff3d;border-radius:3px;width:16px;height:16px;margin:0;padding:0;overflow:hidden}.swatch.svelte-gjs979::-webkit-color-swatch-wrapper{padding:0}.swatch.svelte-gjs979::-webkit-color-swatch{border:none}.hex-input.svelte-gjs979{width:100%;min-width:0;color:var(--text);font-variant-numeric:tabular-nums;text-transform:uppercase;background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:11px}section.svelte-rsjkek{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-rsjkek{margin-bottom:8px}.stage.svelte-1y3xro5{border:1px solid var(--border);border-radius:8px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:auto}.preview-column.svelte-1y3xro5{flex-direction:column;align-items:center;gap:8px;display:flex}.compare-row.svelte-1y3xro5{justify-content:center;align-items:flex-start;gap:16px;width:100%;max-width:760px;display:flex}figure.svelte-1y3xro5{flex-direction:column;flex:1 1 0;align-items:center;gap:6px;min-width:0;margin:0;display:flex}figcaption.svelte-1y3xro5{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px}.video-frame.svelte-1y3xro5{width:100%}.video-frame.svelte-1y3xro5 video{width:100%;height:100%}p.svelte-1y3xro5{color:var(--text-dim)}section.svelte-3jblpy{border-bottom:1px solid var(--border-soft);padding:12px}.field.svelte-3jblpy{margin-bottom:8px}.backdrop.svelte-1f5yh58{z-index:100;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog.svelte-1f5yh58{background:var(--panel);border:1px solid var(--border);border-radius:8px;width:360px;padding:16px;box-shadow:0 12px 32px #00000080}h2.svelte-1f5yh58{margin:0 0 4px;font-size:12px}.file-name.svelte-1f5yh58{color:var(--text-dim);font-variant-numeric:tabular-nums;margin:0}.destination.svelte-1f5yh58{color:var(--text-faint);margin:2px 0 16px}.row.svelte-1f5yh58{align-items:center;gap:8px;margin-bottom:8px;display:flex}.label.svelte-1f5yh58{width:64px;color:var(--text-dim);flex:none}.row.svelte-1f5yh58 input:where(.svelte-1f5yh58){flex:1}.row.manifests.svelte-1f5yh58{align-items:flex-start}.row.manifests.svelte-1f5yh58>.label:where(.svelte-1f5yh58){line-height:28px}.manifest-list.svelte-1f5yh58{flex:1;max-height:132px;overflow-y:auto}.empty-manifests.svelte-1f5yh58{color:var(--text-faint);margin:0;font-size:11px}.segmented.svelte-1f5yh58{border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented.svelte-1f5yh58 button:where(.svelte-1f5yh58){background:var(--panel-raised);color:var(--text-dim);border:none;padding:4px 12px}.segmented.svelte-1f5yh58 button.on:where(.svelte-1f5yh58){background:var(--accent);color:var(--text)}.hint.svelte-1f5yh58{color:var(--text-dim);margin:4px 0 0;font-size:11px}.hint.warn.svelte-1f5yh58,.error.svelte-1f5yh58{color:var(--warning)}.actions.svelte-1f5yh58{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.directory.svelte-ftwms1{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;width:220px;min-width:180px;max-width:320px;min-height:0;display:flex}header.svelte-ftwms1{border-bottom:1px solid var(--border-soft);align-items:center;height:40px;padding:0 8px 0 12px;display:flex}header.svelte-ftwms1 strong:where(.svelte-ftwms1){font-size:11px}.actions.svelte-ftwms1{margin-left:auto;display:flex}.icon-button.svelte-ftwms1{width:24px;height:24px;color:var(--text-dim);border-radius:var(--radius-small);background:0 0;border:0}.icon-button.svelte-ftwms1:hover:not(:disabled){background:var(--panel-raised);color:var(--text)}.icon-button.danger.svelte-ftwms1:hover:not(:disabled){color:var(--danger)}.icon-button.svelte-ftwms1:disabled{opacity:.3;cursor:default}.tree.svelte-ftwms1{padding:6px 4px;overflow:auto}.folder-row.svelte-ftwms1,.asset-row.svelte-ftwms1{padding-left:calc((var(--depth) + 2) * 14px);display:flex}.row.svelte-ftwms1{color:var(--text-dim);border-radius:var(--radius-small);text-align:left;background:0 0;border:0;align-items:center;gap:6px;min-width:0;height:28px;display:flex}.row.special.svelte-ftwms1{width:100%;padding:0 8px}.row.folder.svelte-ftwms1{flex:1;padding:0 8px 0 2px}.row.asset.svelte-ftwms1{cursor:grab;flex:1;padding:0 8px 0 2px}.row.asset.svelte-ftwms1:active{cursor:grabbing}.row.svelte-ftwms1:hover,.row.selected.svelte-ftwms1{background:var(--panel-raised);color:var(--text)}.row.asset.current.svelte-ftwms1,.row.selected.svelte-ftwms1{background:var(--accent-soft);color:var(--accent)}.row.drop-target.svelte-ftwms1{outline:1px solid var(--accent);background:var(--accent-soft)}.glyph.svelte-ftwms1{width:14px;color:var(--text-faint);flex:none;justify-content:center;align-items:center;display:flex}.asset-glyph.svelte-ftwms1{font-size:7px}.asset-warning.svelte-ftwms1{color:var(--warning);flex:none;margin-left:auto}.label.svelte-ftwms1{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.count.svelte-ftwms1{color:var(--text-faint);margin-left:auto;font-size:10px}.dialog-row.svelte-ftwms1{align-items:center;gap:8px;display:flex}.dialog-row.svelte-ftwms1 span:where(.svelte-ftwms1){width:44px;color:var(--text-dim)}.dialog-row.svelte-ftwms1 input:where(.svelte-ftwms1){flex:1}.dialog-path.svelte-ftwms1,.dialog-text.svelte-ftwms1,.dialog-warning.svelte-ftwms1{margin:8px 0 0}.dialog-path.svelte-ftwms1{color:var(--text-faint)}.dialog-warning.svelte-ftwms1{color:var(--warning)}.context-menu.svelte-10jgqdh{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-10jgqdh{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-10jgqdh:hover,button.svelte-10jgqdh:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-10jgqdh{color:var(--danger)}hr.svelte-10jgqdh{background:var(--border);border:0;height:1px;margin:4px 8px}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,I as t,L as n,Q as r,X as i,Y as a,n as o,t as s}from"./D65cSBhe.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function ee(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function g(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var _=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),_(e,t));var v=new Map;function te(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=g(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function y(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${ee(...e)}"]`}return n}var ne=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,re=/^\/\((?:[^)]+)\)$/;function x(e){let t=[];return{pattern:e===`/`||re.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=ne.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var ce=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function le(e,t){let n=ae(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(ce,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=x(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1ak67p5?.base??``,pe=globalThis.__sveltekit_1ak67p5?.assets??S??``,me=``;function he(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return S+me+le(e[0],e[1])}var ge=`1784118922124`,_e=`sveltekit:snapshot`,ve=`sveltekit:scroll`,ye=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},E=location.origin;function be(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function O(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var xe={...T,"":T.hover};function Se(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ce(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Se(e)}}function we(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||A(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===E&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function k(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,`preload-code`)),i===null&&(i=O(s,`preload-data`)),t===null&&(t=O(s,`keepfocus`)),n===null&&(n=O(s,`noscroll`)),a===null&&(a=O(s,`reload`)),o===null&&(o=O(s,`replacestate`)),s=Se(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:xe[r??`off`],preload_data:xe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Te(e){let t=r(e),n=!0;function i(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:i,set:a,subscribe:o}}var Ee={v:h};function De(){let{set:e,subscribe:t}=r(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==ge;return n&&(e(!0),Ee.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function A(e,t,n){return e.origin!==E||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...ke],[...new Set([...ke])];function Ae(e){return e.filter(e=>e!=null)}function j(e,t){return e+`/`+t}function je(e){return e instanceof c||e instanceof u?e.status:500}function Me(e){return e instanceof u?e.text:`Internal Error`}var M,N,P,Ne=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Pe=`a:`;Ne?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Pe)},N={current:null},P={current:!1}):(M=new class{#e=i({});get data(){return e(this.#e)}set data(e){a(this.#e,e)}#t=i(null);get form(){return e(this.#t)}set form(e){a(this.#t,e)}#n=i(null);get error(){return e(this.#n)}set error(e){a(this.#n,e)}#r=i({});get params(){return e(this.#r)}set params(e){a(this.#r,e)}#i=i({id:null});get route(){return e(this.#i)}set route(e){a(this.#i,e)}#a=i({});get state(){return e(this.#a)}set state(e){a(this.#a,e)}#o=i(-1);get status(){return e(this.#o)}set status(e){a(this.#o,e)}#s=i(new URL(Pe));get url(){return e(this.#s)}set url(e){a(this.#s,e)}},N=new class{#e=i(null);get current(){return e(this.#e)}set current(e){a(this.#e,e)}},P=new class{#e=i(!1);get current(){return e(this.#e)}set current(e){a(this.#e,e)}},Ee.v=()=>P.current=!0);function Fe(e){Object.assign(M,e)}var{onMount:Ie,tick:Le}=s,Re=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),F=null,I=de(`sveltekit:scroll`)??{},L=de(`sveltekit:snapshot`)??{},R={url:Te({}),page:Te({}),navigating:r(null),updated:De()};function ze(e){I[e]=D()}function Be(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;L[n];)delete L[n],n+=1}function z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Ve(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var He,Ue,We,B,Ge,V,Ke={},qe={},Je=[],Ye=[],H=null;function Xe(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var Ze=new Map,Qe=new Set,$e=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},et=!1,tt=!1,nt=!0,G=!1,K=!1,rt=!1,it=!1,at,q,J,Y,ot=new Set,st=new Map,ct=new Map;async function lt(e,t,n){if(globalThis.__sveltekit_1ak67p5.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1ak67p5.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),He=ue(e),B=document.documentElement,Ge=t,Ue=e.nodes[0],We=e.nodes[1],Ue(),We(),q=history.state?.[C],J=history.state?.[w],q||(q=J=Date.now(),history.replaceState({...history.state,[C]:q,[w]:J},``));let r=I[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Lt(Ge,n)):(await Z({type:`enter`,url:be(V.hash?Ut(new URL(location.href)):location.href),replace_state:!0}),i()),It()}function ut(){Je.length=0,it=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(L[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){L[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){ze(q),fe(ve,I),dt(J),fe(_e,L)}async function mt(e,t,r,i){let a,o;t.invalidateAll&&Xe(),await Z({type:`goto`,url:be(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:r,nav_token:i,accept:()=>{if(t.invalidateAll){it=!0,a=new Set;for(let[e,t]of st)for(let[n,r]of t)r.resource?.reset(),a.add(j(e,n));o=new Set;for(let[e,t]of ct)for(let n of t.keys())o.add(j(e,n))}t.invalidate&&t.invalidate.forEach(Ft)}}),t.invalidateAll&&n().then(n).then(()=>{for(let[e,t]of st)for(let[n,{resource:r}]of t)a?.has(j(e,n))&&r.start();for(let[e,t]of ct)for(let[n,{resource:r}]of t)o?.has(j(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==H?.id){Xe();let t={};ot.add(t),H={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(ot.delete(t),e.type===`loaded`&&e.state.error&&Xe(),e)),fork:null}}return H.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Fe(e.props.page),at=new V.root({target:t,props:{...e.props,stores:R,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:I[q]??D()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}ft(J),tt=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ae(n).map(e=>e.node.component),page:Ht(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function yt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:tt?y(r,i.href,t):te(r,t)}}function xt(e,t,n,r,i,a){if(it)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ht(M),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return ot.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=W.url?e!==At(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Ct(W.url,n),ee=!1,g=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!xt(ee,p,f,m,a.universal?.uses,r)?a:(ee=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await g[n])?.data);return e},server_data_node:St(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of g)e.catch(h);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await g[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(a&&ot.has(a))return wt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=je(t),u;if(t instanceof c)u=t.body;else{if(await R.updated.check())return await Ve(),await z(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await Et(e,_,o);return d?vt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Mt(n,{id:i.id},u,s)}else _.push(void 0);return vt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Et(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Dt({status:e,error:t,url:n,route:r}){let i={};try{return vt({url:n,params:i,branch:[await yt({loader:Ue,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:St(null)}),{node:await We(),loader:We,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await mt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Ze.has(t))return Ze.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ze.set(t,r),n=await r}catch{Ze.delete(t);return}return n}async function X(e,t){if(e&&!A(e,S,V.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of He){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:p(i),url:e}}}}function kt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function At(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Vt(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||Qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let ee=Y;Y=d;let g=await X(r,!1),_=e===`enter`?Vt(W,g,r,e):jt({url:r,type:e,delta:i?.delta,intent:g,scroll:i?.scroll,event:m});if(!_){p(),Y===d&&(Y=ee);return}let v=q,te=J;f(),G=!0,tt&&_.navigation.type!==`enter`&&R.navigating.set(N.current=_.navigation);let y=g&&await Tt(g);if(!y){if(A(r,S,V.hash))return await z(r,s);y=await Mt(r,{id:null},await $(new u(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=g?.url||r,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await R.updated.check())return await Ve(),await z(r,s);if(ut(),ze(v),dt(te),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:q+=e,[w]:J+=e,[ye]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Be(q,J)}let b=g&&H?.id===g.id?H.fork:null;H?.fork&&!b?Xe():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let ne;if(tt){let e=(await Promise.all(Array.from($e,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{U.delete(e)})}e.push(t),e.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=b&&await b;i?ne=i.commit():(F=null,at.$set(y.props),F&&Object.assign(y.props.page,F),Fe(y.props.page),ne=t?.()),rt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await ne,await n(),await n(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&F&&Object.assign(y.props.page,F);let x=null;if(nt){let e=i?i.scroll:o?D():null;e?scrollTo(e.x,e.y):(x=r.hash&&document.getElementById(Wt(r)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&Bt(r,!x),nt=!0,G=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=D()),U.forEach(e=>e(_.navigation)),e===`popstate`&&ft(J),R.navigating.set(N.current=null)}async function Mt(e,t,n,r,i){return e.origin===E&&e.pathname===location.pathname&&!et?await Dt({status:r,error:n,url:e,route:t}):await z(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ce(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=we(r,S,V.hash);if(o||s)return;let c=k(r),l=a&&At(W.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=we(e,S,V.hash);if(n||i)continue;let a=k(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&>(t))}}U.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=je(e),r=Me(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t={}){return e=new URL(be(e)),e.origin===E?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Ft(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function It(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!G){let e=Vt(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ce(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=we(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=k(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,ze(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(A(r,S,!1))return;let i=e.target,a=k(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!zt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Y={},n===q)return;let r=I[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=W.url?m(location)===m(W.url):!1;if(o===J&&(rt||s)){i!==M.state&&(M.state=i),e(a),I[q]=D(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[C]:++q,[w]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Re.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&R.navigating.set(N.current=null)});function e(e){W.url=M.url=e,R.page.set(Ht(M)),R.page.notify()}}async function Lt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){et=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(u,!1)||{}),d=He.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Rt(r.uses)),yt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:St(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await vt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l)return await z(new URL(t.location,location.href));f=await Dt({status:je(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await _t(f,e,p))}function Rt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var zt=!1;function Bt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Wt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=D();setTimeout(()=>{let a=history.state;zt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),zt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Vt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Ht(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Ut(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Wt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,he as c,N as i,lt as n,P as o,R as r,Oe as s,Pt as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as e,D as t,E as n,F as r,G as i,M as a,N as o,S as s,T as c,Z as l,at as u,c as d,et as f,g as p,h as m,i as h,j as g,k as _,l as v,q as y,tt as b,u as x}from"./D65cSBhe.js";import"./xihTtKlq.js";import{_ as S}from"./C-T1_s5P.js";var C=_(`<span class="color-dot svelte-151zph4"></span>`),w=_(`<span class="via svelte-151zph4"> </span>`),T=_(`<label><input type="checkbox" class="svelte-151zph4"/> <span class="marker svelte-151zph4" aria-hidden="true"><!></span> <span class="name svelte-151zph4"> </span> <!></label>`),E=_(`<div class="manifest-selector svelte-151zph4" role="group" aria-label="Manifest assignments"></div>`);function D(a,_){b(_,!0);let D=h(_,`disabled`,3,!1);function O(e){return _.passive.find(t=>t.manifest===e)}function k(e,t,n){return t?`${e}: explicitly assigned`:n?`${e}: passive member via ${n.via.join(`, `)}`:`${e}: not assigned`}var A=E();s(A,20,()=>_.manifests,e=>e,(a,s)=>{let f=l(()=>S.manifestAppearance(s)),h=l(()=>_.selected.includes(s)),b=l(()=>O(s)),E=l(()=>r(f).color??`var(--accent)`);var A=T();let j,M;var N=i(A);d(N);var P=y(N,2),F=i(P),I=i=>{var a=g();e(()=>n(a,r(f).emoji)),t(i,a)},L=e=>{t(e,C())};c(F,e=>{r(f).emoji?e(I):e(L,-1)}),u(P);var R=y(P,2),z=i(R,!0);u(R);var B=y(R,2),V=a=>{var o=w(),s=i(o);u(o),e(e=>n(s,`passive · via ${e??``}`),[()=>r(b).via.join(`, `)]),t(a,o)};c(B,e=>{r(b)&&!r(h)&&e(V)}),u(A),e((e,t)=>{j=p(A,1,`manifest-option control svelte-151zph4`,null,j,{selected:r(h),passive:r(b)!==void 0&&!r(h),disabled:D()}),v(A,`title`,e),M=m(A,``,M,{"--manifest-color":r(E)}),x(N,r(h)),N.disabled=D(),v(N,`aria-label`,t),n(z,s)},[()=>k(s,r(h),r(b)),()=>k(s,r(h),r(b))]),o(`change`,N,()=>_.onToggle(s)),t(a,A)}),u(A),t(a,A),f()}a([`change`]);export{D as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,X as t,Y as n}from"./D65cSBhe.js";async function r(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 Error(t)}return await e.json()}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 Error(t)}}async function a(){return r(await fetch(`/api/state`,{cache:`no-store`}))}async function o(){return r(await fetch(`/api/reconcile`,{method:`POST`,cache:`no-store`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}))}async function s(e,t,n,i=[]){return r(await fetch(`/api/raw/adopt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,id:t,type:n,manifests:i})}))}async function c(e,t){return r(await fetch(`/api/raw/edited/accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,type:t})}))}async function l(e){return r(await fetch(`/api/raw/edited/dismiss`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function u(e,t,n,i,a=[]){let o=new FormData;o.set(`file`,e),o.set(`type`,t),o.set(`id`,n),o.set(`folder`,i);for(let e of a)o.append(`manifests`,e);return r(await fetch(`/api/assets`,{method:`POST`,body:o}))}async function d(e){return r(await fetch(`/api/imports`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({importer:`figma`,input:{url:e.url,format:`png`,scale:e.scale},type:e.type,id:e.id,folder:e.folder,manifests:e.manifests})}))}async function f(e,t){return r(await fetch(`/api/assets/${encodeURIComponent(e)}/reimport`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t?{input:{...t,format:`png`}}:{}})}))}async function p(e,t){let n=new FormData;return n.set(`file`,t),r(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,body:n}))}async function m(e){return r(await fetch(`/api/folders`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}))}async function h(e,t){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})}))}async function g(e,t){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({parent:t})}))}async function _(e){return r(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function v(e,t){return r(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function y(e,t){return r(await fetch(`/api/assets/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e,folder:t})}))}async function b(e){return r(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function x(e){return r(await fetch(`/api/assets/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e})}))}async function S(e){return i(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetId:e})}))}async function C(e){return i(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folder:e})}))}async function w(e){return r(await fetch(`/api/manifests`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e})}))}async function T(e){return r(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function ee(e,t){return r(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}var te=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}},E=new class{#e=new te;#t=t(null);get state(){return e(this.#t)}set state(e){n(this.#t,e,!0)}#n=t(!1);get saving(){return e(this.#n)}set saving(e){n(this.#n,e,!0)}#r=t(null);get error(){return e(this.#r)}set error(e){n(this.#r,e,!0)}#i=t(!1);get loaded(){return e(this.#i)}set loaded(e){n(this.#i,e,!0)}async refresh(){return this.#a(a)}reconcile(){return this.#a(o,!0)}#a(e,t=!1){let n=async()=>{try{this.state=await e(),this.error=null}catch(e){this.error=e instanceof Error?e.message:String(e)}finally{this.loaded=!0}};return t?this.#e.coalesce(`reconcile`,n):this.#e.enqueue(n)}mutate(e){return this.#e.enqueue(async()=>{this.saving=!0,this.error=null;try{let t=await e();return this.state=t,t}catch(e){throw this.error=e instanceof Error?e.message:String(e),e}finally{this.saving=!1}})}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}},D=`[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-${D}\\.tmp|\\.fundus-delete(?:-assets)?-${D})$`,`i`),RegExp(`\\.fundus-(?:replace-)?${D}$`,`i`);var O=[`preload`,`release`,`entries`,`constructor`,`prototype`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`],k=/^[a-z][A-Za-z0-9]*$/;function A(e){return k.test(e)?O.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 j(e){return k.test(e)?O.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 M={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 N(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.$asset==`string`&&e.$asset!==``}var P={keyColor:[0,1,0],colorCutoff:.2,colorFeathering:.33,maskFeathering:1,sharpening:.5,despill:1,despillLuminanceAdd:.2},F=[`colorCutoff`,`colorFeathering`,`maskFeathering`,`sharpening`,`despill`,`despillLuminanceAdd`];function I(e){return Math.min(1,Math.max(0,e))}function L(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:[I(n[0]),I(n[1]),I(n[2])]};for(let e of F){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))throw Error(`"chromaKey.${e}" must be a number (0–1).`);r[e]=I(n)}return r}var R=[`mp4`,`mov`,`webm`,`m4v`];function z(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 B={type:`video`,accepts:[...R],defaultParameters:()=>({preset:`default`}),validateParameters(e){return z(`Video`,e)}};function V(e,t){if(t!==void 0){if(!N(t))throw Error(`"${e}" must be an asset reference ({ "$asset": "<id>" }).`);return{$asset:t.$asset}}}var H={type:`chroma-key-video`,accepts:[...R],defaultParameters:()=>({preset:`default`,chromaKey:{...P,keyColor:[...P.keyColor]}}),validateParameters(e){let t=z(`Chroma-key-video`,e),n=e,r=L(n.chromaKey),i=V(`mask`,n.mask),a=V(`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}}}},U=[`png`,`jpg`,`jpeg`,`webp`,`avif`],W={type:`image`,accepts:[...U],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}}}},G=[`nine`,`three-horizontal`,`three-vertical`,`one`];function K(){return{top:0,right:0,bottom:0,left:0}}function q(e){return{horizontal:e===`nine`||e===`three-horizontal`,vertical:e===`nine`||e===`three-vertical`}}function J(e,t,n,r){return t===`left`?n-e.right:t===`right`?n-e.left:t===`top`?r-e.bottom:r-e.top}function Y(e,t,n,r){return J(e,t,n,r)-1}function X(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=K();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}var Z={type:`slice`,accepts:[...U],defaultParameters:()=>({mode:`nine`,insets:K(),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`||!G.includes(t.mode))throw Error(`Slice "mode" must be one of ${G.map(e=>`'${e}'`).join(` | `)}.`);let n=X(`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:X(`overdraw`,t.overdraw);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},preset:t.preset}}},Q=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}};Q.register(W),Q.register(Z),Q.register(B),Q.register(H),Q.register(M);var $=Q.values();function ne(e=$){return[...new Set(e.flatMap(e=>e.accepts))].sort().map(e=>`.${e}`)}function re(e,t=$){return t.find(t=>t.type===e)?.accepts.map(e=>`.${e}`).sort()??[]}function ie(e,t=$){let n=e.slice(e.lastIndexOf(`.`)+1).toLowerCase();return t.filter(e=>e.accepts.includes(n)).map(e=>e.type)}function ae(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`}export{v as A,x as C,d as D,l as E,S as F,C as I,u as L,f as M,h as N,y as O,p as P,b as S,T,E as _,Q as a,m as b,J as c,W as d,H as f,j as g,A as h,ie as i,ee as j,g as k,Y as l,M as m,re as n,Z as o,B as p,ae as r,K as s,ne as t,q as u,c as v,_ as w,w as x,s as y};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|