unspaghettit 0.1.8 → 0.2.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 +28 -10
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css +1 -0
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css +1 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css.br +0 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{ByNzXSTs.js → BO66rBOa2.js} +1 -1
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DsHardz9.js → BOrLmFwJ.js} +1 -1
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js +3 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js.br +0 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js +1 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js +1 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C8VYoO28.js → Bp8HpEPe2.js} +1 -1
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
- package/build/client/_app/immutable/chunks/{C8VYoO28.js.gz → Bp8HpEPe2.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js +1 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BsIqn_3K2.js → CJjJLwzv2.js} +1 -1
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js +1 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js +2 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js +1 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js +1 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js +1 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js +1 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js +1 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js.br +2 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js +1 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js +1 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js +1 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjWKKtqp.js +1 -0
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +1 -0
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js +1 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DZ7_iXX8.js → HKLi1Yz3.js} +1 -1
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js +1 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js +5 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.br +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js +1 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js.br +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js +2 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js +1 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js +6 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js.br +0 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js +1 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js.br +1 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +2 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js +1 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +4 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js +1 -0
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js +1 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js +1 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js +3 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +42 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js +5 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js +1 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js +5 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.l6ZO_YE3.js → 9.CMW6a2Lg.js} +51 -48
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.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/server/chunks/0-C_o0oz-N.js +15 -0
- package/build/server/chunks/0-C_o0oz-N.js.map +1 -0
- package/build/server/chunks/1-DPpKAKXV.js +9 -0
- package/build/server/chunks/{1-58bNZ9nH.js.map → 1-DPpKAKXV.js.map} +1 -1
- package/build/server/chunks/2-AlfFqtL1.js +9 -0
- package/build/server/chunks/2-AlfFqtL1.js.map +1 -0
- package/build/server/chunks/3-vbjUt_51.js +16 -0
- package/build/server/chunks/3-vbjUt_51.js.map +1 -0
- package/build/server/chunks/4-BNow4x6D.js +16 -0
- package/build/server/chunks/4-BNow4x6D.js.map +1 -0
- package/build/server/chunks/5-D7OCJpxD.js +9 -0
- package/build/server/chunks/5-D7OCJpxD.js.map +1 -0
- package/build/server/chunks/6-QQ7r8Rd5.js +9 -0
- package/build/server/chunks/6-QQ7r8Rd5.js.map +1 -0
- package/build/server/chunks/7-CbPLGaIG.js +9 -0
- package/build/server/chunks/7-CbPLGaIG.js.map +1 -0
- package/build/server/chunks/8-CVO-E-sf.js +9 -0
- package/build/server/chunks/8-CVO-E-sf.js.map +1 -0
- package/build/server/chunks/9-DxT1baO5.js +9 -0
- package/build/server/chunks/9-DxT1baO5.js.map +1 -0
- package/build/server/chunks/{FeatureCard-CDB0iQEO.js → FeatureCard-BQOY6gJQ.js} +2 -2
- package/build/server/chunks/{FeatureCard-CDB0iQEO.js.map → FeatureCard-BQOY6gJQ.js.map} +1 -1
- package/build/server/chunks/{FeatureJson-BKCG8vk2.js → FeatureJson-Bv-qiOSf.js} +2 -2
- package/build/server/chunks/{FeatureJson-BKCG8vk2.js.map → FeatureJson-Bv-qiOSf.js.map} +1 -1
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js +311 -0
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +1 -0
- package/build/server/chunks/{FeatureValidator-DDdFIzr8.js → FeatureValidator-B8qEjAUW.js} +235 -3
- package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +1 -0
- package/build/server/chunks/{ManageTagsDialog-CT8-t_GJ.js → ManageTagsDialog-DBxA3tM2.js} +4 -3
- package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +1 -0
- package/build/server/chunks/{ProjectsIndex-yg-CEhxx.js → ProjectsIndex-CoDrvRya.js} +8 -8
- package/build/server/chunks/ProjectsIndex-CoDrvRya.js.map +1 -0
- package/build/server/chunks/{RenameTag-nSZ6Leh-.js → RenameTag-BuWLMl1m.js} +2 -2
- package/build/server/chunks/{RenameTag-nSZ6Leh-.js.map → RenameTag-BuWLMl1m.js.map} +1 -1
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js +88 -0
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +1 -0
- package/build/server/chunks/{TagFilterSelect-BlEttqQE.js → TagFilterSelect-DbO0Qduh.js} +4 -3
- package/build/server/chunks/TagFilterSelect-DbO0Qduh.js.map +1 -0
- package/build/server/chunks/{TagPalette-CvQJ40bt.js → TagPalette-CtMNYCmu.js} +6 -2
- package/build/server/chunks/TagPalette-CtMNYCmu.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-D2SACu8G.js → _layout.svelte-BREws55o.js} +99 -37
- package/build/server/chunks/_layout.svelte-BREws55o.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Dbu42LbU.js → _page.svelte-B1s7jxaQ.js} +9 -8
- package/build/server/chunks/{_page.svelte-Dbu42LbU.js.map → _page.svelte-B1s7jxaQ.js.map} +1 -1
- package/build/server/chunks/_page.svelte-B7hT3P8E.js +29 -0
- package/build/server/chunks/{_page.svelte-CsqELhKQ.js.map → _page.svelte-B7hT3P8E.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-DYOnk7iP.js → _page.svelte-BKKCa9H5.js} +11 -8
- package/build/server/chunks/{_page.svelte-DYOnk7iP.js.map → _page.svelte-BKKCa9H5.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-C2jPZylo.js → _page.svelte-BKTveFAj.js} +16 -14
- package/build/server/chunks/_page.svelte-BKTveFAj.js.map +1 -0
- package/build/server/chunks/_page.svelte-BqSC-1vK.js +404 -0
- package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +1 -0
- package/build/server/chunks/{_page.svelte-bbz79XAC.js → _page.svelte-BtI2zZ_Z.js} +38 -282
- package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +1 -0
- package/build/server/chunks/_page.svelte-De508ek8.js +29 -0
- package/build/server/chunks/{_page.svelte-C3FIXVWr.js.map → _page.svelte-De508ek8.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BUfFGiJQ.js → _page.svelte-Zf9H4KOP.js} +16 -14
- package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bs4QqmRJ.js → _server.ts-0uNTZKwF.js} +7 -6
- package/build/server/chunks/{_server.ts-Bs4QqmRJ.js.map → _server.ts-0uNTZKwF.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bnpe4TIM.js → _server.ts-BIBWjQI-.js} +5 -4
- package/build/server/chunks/{_server.ts-Bnpe4TIM.js.map → _server.ts-BIBWjQI-.js.map} +1 -1
- package/build/server/chunks/{_server.ts-FARjojeH.js → _server.ts-BihpbxOW.js} +5 -4
- package/build/server/chunks/{_server.ts-FARjojeH.js.map → _server.ts-BihpbxOW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-efMdTu3p.js → _server.ts-BuoQ02BW.js} +5 -4
- package/build/server/chunks/{_server.ts-efMdTu3p.js.map → _server.ts-BuoQ02BW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDtoQw0L.js → _server.ts-CWvU15tL.js} +5 -4
- package/build/server/chunks/{_server.ts-DDtoQw0L.js.map → _server.ts-CWvU15tL.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B80OMNjj.js → _server.ts-D4EO0VHu.js} +6 -5
- package/build/server/chunks/{_server.ts-B80OMNjj.js.map → _server.ts-D4EO0VHu.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DZi40j_b.js → _server.ts-DDa0Nk_S.js} +5 -4
- package/build/server/chunks/{_server.ts-DZi40j_b.js.map → _server.ts-DDa0Nk_S.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BaT7ADxX.js → _server.ts-DcZPhyhK.js} +7 -6
- package/build/server/chunks/{_server.ts-BaT7ADxX.js.map → _server.ts-DcZPhyhK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CMPK37Vt.js → _server.ts-DsbbVoOn.js} +5 -4
- package/build/server/chunks/{_server.ts-CMPK37Vt.js.map → _server.ts-DsbbVoOn.js.map} +1 -1
- package/build/server/chunks/{_server.ts-y0yINgGA.js → _server.ts-Dy5zQHe2.js} +8 -7
- package/build/server/chunks/{_server.ts-y0yINgGA.js.map → _server.ts-Dy5zQHe2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CagU2lG4.js → _server.ts-YnfXkeMJ.js} +8 -7
- package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +1 -0
- package/build/server/chunks/{_server.ts-RzdFK98M.js → _server.ts-vcaqdwxS.js} +5 -4
- package/build/server/chunks/_server.ts-vcaqdwxS.js.map +1 -0
- package/build/server/chunks/{browserContainer-D4Rbh5md.js → browserContainer-CNX7ANld.js} +115 -30
- package/build/server/chunks/browserContainer-CNX7ANld.js.map +1 -0
- package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js +681 -0
- package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +1 -0
- package/build/server/chunks/{client-DzD76Kll.js → client-DfpLcAZ9.js} +2 -2
- package/build/server/chunks/{client-DzD76Kll.js.map → client-DfpLcAZ9.js.map} +1 -1
- package/build/server/chunks/{error.svelte-BYvfCaDL.js → error.svelte-C35KOpru.js} +4 -4
- package/build/server/chunks/{error.svelte-BYvfCaDL.js.map → error.svelte-C35KOpru.js.map} +1 -1
- package/build/server/chunks/eventBus-B9k-Vzso.js +19 -0
- package/build/server/chunks/eventBus-B9k-Vzso.js.map +1 -0
- package/build/server/chunks/{featuresStore.svelte-C5UcVnjA.js → featuresStore.svelte-DR1gYZyu.js} +6 -5
- package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +1 -0
- package/build/server/chunks/{internal-BA0a_nCh.js → internal-BPKrFkK1.js} +2 -2
- package/build/server/chunks/{internal-BA0a_nCh.js.map → internal-BPKrFkK1.js.map} +1 -1
- package/build/server/chunks/{projectsStore.svelte-CCIKC4cA.js → projectsStore.svelte-QDz5PchX.js} +3 -2
- package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +1 -0
- package/build/server/chunks/{reconcile-CYtw0vAj.js → reconcile-Dv7jS3C8.js} +3 -3
- package/build/server/chunks/{reconcile-CYtw0vAj.js.map → reconcile-Dv7jS3C8.js.map} +1 -1
- package/build/server/chunks/shared-server-CCs2CV3b.js +14 -0
- package/build/server/chunks/shared-server-CCs2CV3b.js.map +1 -0
- package/build/server/chunks/{snapshotRepository-D04sCQ0-.js → snapshotRepository-BPXCjX92.js} +40 -8
- package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +1 -0
- package/build/server/chunks/{state-BVel4q-J.js → state-CpLVNZq7.js} +2 -2
- package/build/server/chunks/{state-BVel4q-J.js.map → state-CpLVNZq7.js.map} +1 -1
- package/build/server/chunks/{sync-BFBTG9bE.js → sync-DZ3dn761.js} +2 -2
- package/build/server/chunks/{sync-BFBTG9bE.js.map → sync-DZ3dn761.js.map} +1 -1
- package/build/server/chunks/{syncBridge-B90NwG8R.js → syncBridge-BwXzPdjJ.js} +2 -2
- package/build/server/chunks/{syncBridge-B90NwG8R.js.map → syncBridge-BwXzPdjJ.js.map} +1 -1
- package/build/server/chunks/{TagDotStrip-K9ispK6D.js → tagPaletteStore.svelte-DfZOBvgY.js} +5 -87
- package/build/server/chunks/tagPaletteStore.svelte-DfZOBvgY.js.map +1 -0
- package/build/server/chunks/{tourStore.svelte-C2hizkdG.js → tourStore.svelte-CYs4oLjF.js} +2 -2
- package/build/server/chunks/tourStore.svelte-CYs4oLjF.js.map +1 -0
- package/build/server/index.js +2 -12
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +36 -28
- package/build/server/manifest.js.map +1 -1
- package/cli/README.md +46 -20
- package/cli/clients/claude-code.ts +5 -4
- package/cli/clients/claude-desktop.ts +5 -4
- package/cli/commands/dashboard.ts +38 -4
- package/cli/commands/init.ts +147 -84
- package/cli/commands/view.ts +77 -0
- package/cli/skills/unspa-audit/SKILL.md +9 -0
- package/cli/skills/unspa-edit/SKILL.md +91 -0
- package/cli/skills/unspa-implement/SKILL.md +46 -1
- package/cli/unspa.ts +57 -13
- package/cli/util/context-files.ts +5 -3
- package/cli/util/views.ts +38 -0
- package/mcp-server/resources/operations.ts +2 -1
- package/mcp-server/tools/_evolution.ts +53 -0
- package/mcp-server/tools/action.ts +64 -6
- package/mcp-server/tools/batch.ts +34 -24
- package/mcp-server/tools/feature.ts +17 -9
- package/mcp-server/tools/queue.ts +101 -9
- package/mcp-server/tools/specGaps.ts +14 -1
- package/package.json +3 -1
- package/src/features/behavior-model/application/use-cases/MutateFeature.ts +20 -31
- package/src/features/behavior-model/application/use-cases/SaveFeature.ts +13 -9
- package/src/features/behavior-model/domain/entities/Action.ts +167 -95
- package/src/features/behavior-model/domain/services/FeatureTransforms.ts +49 -0
- package/src/features/behavior-model/domain/services/FeatureValidator.ts +50 -0
- package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +28 -3
- package/src/features/behavior-model/presentation/components/ActionEditor.svelte +55 -7
- package/src/features/builder-mode/application/use-cases/GetBuilderModeDashboard.ts +41 -0
- package/src/features/builder-mode/application/use-cases/GetBuilderModeProject.ts +42 -0
- package/src/features/builder-mode/domain/BuilderModeDashboard.ts +172 -0
- package/src/features/builder-mode/infrastructure/adapters/defaultBuilderHost.ts +27 -0
- package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +1335 -0
- package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +289 -0
- package/src/features/builder-mode/presentation/components/ClampedDescription.svelte +174 -0
- package/src/features/builder-mode/presentation/components/GameScore.svelte +194 -0
- package/src/features/builder-mode/presentation/ports/BuilderHostPorts.ts +39 -0
- package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +679 -0
- package/src/features/implementation-queue/application/use-cases/EnqueueQueueItem.ts +16 -5
- package/src/features/implementation-queue/application/use-cases/SetQueueItemTarget.ts +38 -0
- package/src/features/implementation-queue/domain/entities/QueueItem.ts +43 -0
- package/src/features/implementation-queue/domain/services/QueueOperations.ts +26 -1
- package/src/features/maturity/domain/MaturityScorer.ts +13 -4
- package/src/features/mcp-tools/application/tools/listActions.ts +9 -1
- package/src/features/projects/infrastructure/io/ProjectJson.ts +25 -4
- package/src/lib/views/enabled.ts +19 -0
- package/src/lib/views/registry.ts +72 -0
- package/src/routes/+layout.svelte +583 -348
- package/src/routes/builder-mode/+page.svelte +9 -0
- package/src/routes/builder-mode/+page.ts +12 -0
- package/src/routes/tutorial/+page.svelte +8 -0
- package/src/shared/infrastructure/container.ts +208 -199
- package/build/client/_app/immutable/assets/0.BgNAkMzG.css +0 -1
- package/build/client/_app/immutable/assets/0.BgNAkMzG.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BgNAkMzG.css.gz +0 -0
- package/build/client/_app/immutable/chunks/8V0Jan-K.js +0 -2
- package/build/client/_app/immutable/chunks/8V0Jan-K.js.br +0 -0
- package/build/client/_app/immutable/chunks/8V0Jan-K.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B5jHfatx.js +0 -1
- package/build/client/_app/immutable/chunks/B5jHfatx.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5jHfatx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQQLoxQo.js +0 -5
- package/build/client/_app/immutable/chunks/BQQLoxQo.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQQLoxQo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BZCGqXF-.js +0 -1
- package/build/client/_app/immutable/chunks/BZCGqXF-.js.br +0 -2
- package/build/client/_app/immutable/chunks/BZCGqXF-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BpZHquM3.js +0 -1
- package/build/client/_app/immutable/chunks/BpZHquM3.js.br +0 -0
- package/build/client/_app/immutable/chunks/BpZHquM3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BsIqn_3K2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BsIqn_3K2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BxAqshUk.js +0 -1
- package/build/client/_app/immutable/chunks/BxAqshUk.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxAqshUk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ByNzXSTs.js.br +0 -0
- package/build/client/_app/immutable/chunks/ByNzXSTs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C0OSZ2OV.js +0 -1
- package/build/client/_app/immutable/chunks/C0OSZ2OV.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0OSZ2OV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2XQCtR3.js +0 -1
- package/build/client/_app/immutable/chunks/C2XQCtR3.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2XQCtR3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8VYoO28.js.br +0 -0
- package/build/client/_app/immutable/chunks/CKUA0lwj.js +0 -1
- package/build/client/_app/immutable/chunks/CKUA0lwj.js.br +0 -0
- package/build/client/_app/immutable/chunks/CKUA0lwj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CM5qK71w.js +0 -6
- package/build/client/_app/immutable/chunks/CM5qK71w.js.br +0 -0
- package/build/client/_app/immutable/chunks/CM5qK71w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CiC9AlkQ.js +0 -1
- package/build/client/_app/immutable/chunks/CiC9AlkQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CiC9AlkQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DF6QYH3p.js +0 -3
- package/build/client/_app/immutable/chunks/DF6QYH3p.js.br +0 -0
- package/build/client/_app/immutable/chunks/DF6QYH3p.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DGo7EzwK.js +0 -1
- package/build/client/_app/immutable/chunks/DGo7EzwK.js.br +0 -0
- package/build/client/_app/immutable/chunks/DGo7EzwK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DOrHTzKX2.js +0 -2
- package/build/client/_app/immutable/chunks/DOrHTzKX2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DOrHTzKX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DZ7_iXX8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZ7_iXX8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DayeafKd.js +0 -1
- package/build/client/_app/immutable/chunks/DayeafKd.js.br +0 -0
- package/build/client/_app/immutable/chunks/DayeafKd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DsHardz9.js.br +0 -1
- package/build/client/_app/immutable/chunks/DsHardz9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dvd8XBNO.js +0 -1
- package/build/client/_app/immutable/chunks/Dvd8XBNO.js.br +0 -1
- package/build/client/_app/immutable/chunks/Dvd8XBNO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/lYfEZr7V.js +0 -1
- package/build/client/_app/immutable/chunks/lYfEZr7V.js.br +0 -0
- package/build/client/_app/immutable/chunks/lYfEZr7V.js.gz +0 -0
- package/build/client/_app/immutable/chunks/nx-Rqoe9.js +0 -1
- package/build/client/_app/immutable/chunks/nx-Rqoe9.js.br +0 -0
- package/build/client/_app/immutable/chunks/nx-Rqoe9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CBQ5lc4C.js +0 -2
- package/build/client/_app/immutable/entry/app.CBQ5lc4C.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CBQ5lc4C.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CwosiFCq.js +0 -1
- package/build/client/_app/immutable/entry/start.CwosiFCq.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CwosiFCq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CrNDTsZU.js +0 -3
- package/build/client/_app/immutable/nodes/0.CrNDTsZU.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CrNDTsZU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DIhR9Se9.js +0 -1
- package/build/client/_app/immutable/nodes/1.DIhR9Se9.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DIhR9Se9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Cxe9W2ys.js +0 -1
- package/build/client/_app/immutable/nodes/2.Cxe9W2ys.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Cxe9W2ys.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.Db_qGhZh.js +0 -3
- package/build/client/_app/immutable/nodes/3.Db_qGhZh.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Db_qGhZh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CNlfoebz.js +0 -42
- package/build/client/_app/immutable/nodes/4.CNlfoebz.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CNlfoebz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.52vWUOmx.js +0 -5
- package/build/client/_app/immutable/nodes/5.52vWUOmx.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.52vWUOmx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DEa_tOGv.js +0 -1
- package/build/client/_app/immutable/nodes/6.DEa_tOGv.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DEa_tOGv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Bj0xztLC.js +0 -5
- package/build/client/_app/immutable/nodes/7.Bj0xztLC.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Bj0xztLC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.l6ZO_YE3.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.l6ZO_YE3.js.gz +0 -0
- package/build/server/chunks/0-BpC7BfBT.js +0 -15
- package/build/server/chunks/0-BpC7BfBT.js.map +0 -1
- package/build/server/chunks/1-58bNZ9nH.js +0 -9
- package/build/server/chunks/2-DF_NN0lE.js +0 -9
- package/build/server/chunks/2-DF_NN0lE.js.map +0 -1
- package/build/server/chunks/3-NRtKEkC_.js +0 -16
- package/build/server/chunks/3-NRtKEkC_.js.map +0 -1
- package/build/server/chunks/4-MZJkDNx2.js +0 -9
- package/build/server/chunks/4-MZJkDNx2.js.map +0 -1
- package/build/server/chunks/5-Lq13lWK3.js +0 -9
- package/build/server/chunks/5-Lq13lWK3.js.map +0 -1
- package/build/server/chunks/6-DqZ3Anew.js +0 -9
- package/build/server/chunks/6-DqZ3Anew.js.map +0 -1
- package/build/server/chunks/7-BOAHc6Hs.js +0 -9
- package/build/server/chunks/7-BOAHc6Hs.js.map +0 -1
- package/build/server/chunks/8-DBHj3VAe.js +0 -9
- package/build/server/chunks/8-DBHj3VAe.js.map +0 -1
- package/build/server/chunks/FeatureValidator-DDdFIzr8.js.map +0 -1
- package/build/server/chunks/ManageTagsDialog-CT8-t_GJ.js.map +0 -1
- package/build/server/chunks/ProjectsIndex-yg-CEhxx.js.map +0 -1
- package/build/server/chunks/TagDotStrip-K9ispK6D.js.map +0 -1
- package/build/server/chunks/TagFilterSelect-BlEttqQE.js.map +0 -1
- package/build/server/chunks/TagPalette-CvQJ40bt.js.map +0 -1
- package/build/server/chunks/_layout.svelte-D2SACu8G.js.map +0 -1
- package/build/server/chunks/_page.svelte-BUfFGiJQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-C2jPZylo.js.map +0 -1
- package/build/server/chunks/_page.svelte-C3FIXVWr.js +0 -27
- package/build/server/chunks/_page.svelte-CsqELhKQ.js +0 -27
- package/build/server/chunks/_page.svelte-bbz79XAC.js.map +0 -1
- package/build/server/chunks/_server.ts-CagU2lG4.js.map +0 -1
- package/build/server/chunks/_server.ts-RzdFK98M.js.map +0 -1
- package/build/server/chunks/browserContainer-D4Rbh5md.js.map +0 -1
- package/build/server/chunks/featuresStore.svelte-C5UcVnjA.js.map +0 -1
- package/build/server/chunks/projectsStore.svelte-CCIKC4cA.js.map +0 -1
- package/build/server/chunks/snapshotRepository-D04sCQ0-.js.map +0 -1
- package/build/server/chunks/tourStore.svelte-C2hizkdG.js.map +0 -1
- /package/build/client/_app/immutable/assets/{8.nv0I59TU.css → 9.nv0I59TU.css} +0 -0
- /package/build/client/_app/immutable/assets/{8.nv0I59TU.css.br → 9.nv0I59TU.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{8.nv0I59TU.css.gz → 9.nv0I59TU.css.gz} +0 -0
- /package/build/client/_app/immutable/chunks/{BQ9GodWX.js → BQ9GodWX2.js} +0 -0
- /package/build/client/_app/immutable/chunks/{BQ9GodWX.js.br → BQ9GodWX2.js.br} +0 -0
- /package/build/client/_app/immutable/chunks/{BQ9GodWX.js.gz → BQ9GodWX2.js.gz} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n}from"./DF6QYH3p.js";var r=`unspa.identity.name`,i=`unspa.identity.asked`,a=40,o=`Anonymous`,s=e=>e.replace(/[^\p{L}\p{N} \-_.@'’]/gu,``).trim().slice(0,a),c=new class{#e=e(``);get name(){return t(this.#e)}set name(e){n(this.#e,e,!0)}initialized=!1;init(){if(this.initialized||(this.initialized=!0,typeof localStorage>`u`))return;let e=localStorage.getItem(r);e&&(this.name=s(e))}setName(e){let t=s(e);this.name=t,!(typeof localStorage>`u`)&&(t.length>0?localStorage.setItem(r,t):localStorage.removeItem(r))}get hasBeenAsked(){return typeof localStorage>`u`?!0:localStorage.getItem(i)===`1`}markAsked(){typeof localStorage>`u`||localStorage.setItem(i,`1`)}get author(){return this.name.length>0?this.name:o}};export{c as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
var e=e=>e;function t(e){let t=e-1;return t*t*t+1}function n(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function r(t,{delay:n=0,duration:r=400,easing:i=e}={}){let a=+getComputedStyle(t).opacity;return{delay:n,duration:r,easing:i,css:e=>`opacity: ${e*a}`}}function i(e,{delay:r=0,duration:i=400,easing:a=t,x:o=0,y:s=0,opacity:c=0}={}){let l=getComputedStyle(e),u=+l.opacity,d=l.transform===`none`?``:l.transform,f=u*(1-c),[p,m]=n(o),[h,g]=n(s);return{delay:r,duration:i,easing:a,css:(e,t)=>`
|
|
2
|
-
transform: ${d} translate(${(1-e)*p}${m}, ${(1-e)*h}${g});
|
|
3
|
-
opacity: ${u-f*t}`}}function a(e,{delay:n=0,duration:r=400,easing:i=t,start:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=1-a,d=c*(1-o);return{delay:n,duration:r,easing:i,css:(e,t)=>`
|
|
4
|
-
transform: ${l} scale(${1-u*t});
|
|
5
|
-
opacity: ${c-d*t}
|
|
6
|
-
`}}function o(e){let t=e-1;return t*t*t+1}export{a as i,r as n,i as r,o as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,D as n,F as r,H as i,I as a,J as o,L as s,O as c,P as l,Q as u,U as d,X as f,Y as p,_ as m,a as h,c as g,dt as _,ft as v,j as y,k as b,l as x,ot as S,p as C,q as w,s as T,st as E,tt as D,u as O,v as k,w as A}from"./DF6QYH3p.js";import"./xihTtKlq.js";import{$ as j,at as M,nt as N,ot as P}from"./C0OSZ2OV.js";import{i as F,n as I,r as L}from"./BpZHquM3.js";var R=y(`<button type="button"></button>`),z=y(`<div class="absolute right-0 z-30 mt-2 w-56 rounded-lg border border-hairline bg-white p-3 shadow-lg" role="dialog" aria-label="Color picker"><p class="mb-2 text-[10px] font-semibold uppercase tracking-wider text-slate-500">Presets</p> <div class="grid grid-cols-5 gap-2"></div> <div class="mt-3 border-t border-hairline pt-3"><label class="flex items-center justify-between gap-2 text-xs text-slate-700"><span class="font-medium">Custom</span> <input type="color" class="h-7 w-12 cursor-pointer rounded border border-slate-300 bg-white p-0.5"/></label></div> <div class="mt-2"><button type="button" class="flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs font-medium text-slate-600 transition hover:bg-slate-50 hover:text-red-700 disabled:cursor-default disabled:opacity-40 disabled:hover:bg-transparent disabled:hover:text-slate-600"><!> <span>No color</span></button></div></div>`),B=y(`<div class="relative inline-block"><button type="button" class="flex size-6 cursor-pointer items-center justify-center overflow-hidden rounded-full ring-1 ring-inset ring-slate-300 transition hover:ring-slate-500" aria-haspopup="dialog" title="Pick a color"><!></button> <!></div>`);function V(t,a){E(a,!0);let c=h(a,`label`,3,`tag`),l=e(!1),p=e(null),g=e(null);function y(){u(l,!s(l))}function w(){u(l,!1)}d(()=>{if(!s(l))return;let e=e=>{let t=e.target;s(p)?.contains(t)||s(g)?.contains(t)||w()},t=e=>{e.key===`Escape`&&w()};return window.addEventListener(`pointerdown`,e,!0),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`keydown`,t)}});function M(e){a.onChange(e),w()}function N(e){let t=e.target.value;a.onChange(j(t))}function P(e){let t=e.target.value;a.onChange(j(t)),w()}var L=B(),V=o(L),H=o(V),U=e=>{I(e,{color:null,size:4})};n(H,e=>{a.value||e(U)}),v(V),T(V,e=>u(g,e),()=>s(g));var W=f(V,2),G=e=>{var t=z(),n=f(o(t),2);A(n,21,()=>F,e=>e.color,(e,t)=>{let n=D(()=>a.value===s(t).color);var o=R();let l;i(()=>{l=k(o,1,`flex size-7 items-center justify-center rounded-full ring-offset-2 transition hover:scale-110`,null,l,{"ring-2":s(n),"ring-slate-900":s(n)}),m(o,`background-color: ${s(t).color??``};`),O(o,`title`,s(t).name),O(o,`aria-label`,`Set ${c()} color to ${s(t).name}`)}),r(`click`,o,()=>M(s(t).color)),b(e,o)}),v(n);var l=f(n,2),d=o(l),h=f(o(d),2);x(h),v(d),v(l);var g=f(l,2),y=o(g);I(o(y),{color:null,size:4}),_(2),v(y),v(g),v(t),T(t,e=>u(p,e),()=>s(p)),i(()=>{C(h,a.value??`#94a3b8`),O(h,`aria-label`,`Custom color for ${c()}`),y.disabled=a.value===null}),r(`input`,h,N),r(`change`,h,P),r(`click`,y,()=>M(null)),b(e,t)};n(W,e=>{s(l)&&e(G)}),v(L),i(()=>{m(V,a.value?`background-color: ${a.value};`:`background-color: white;`),O(V,`aria-expanded`,s(l)),O(V,`aria-label`,`Pick a color for ${c()}`)}),r(`click`,V,y),b(t,L),S()}l([`click`,`input`,`change`]);var H=y(`<p class="text-sm text-slate-500">No tags yet. Add a tag to a project or feature to start grouping.</p>`),U=y(`<li class="flex items-center justify-between gap-3 rounded-md px-2 py-1 text-sm hover:bg-slate-50"><span class="truncate text-slate-700"> </span> <button type="button" class="rounded px-2 py-1 text-xs font-medium text-slate-500 hover:bg-slate-100 hover:text-slate-900">Rename</button></li>`),W=y(`<li class="space-y-2"><div class="flex items-center justify-between gap-3"><div class="flex min-w-0 items-center gap-2"><!> <span class="truncate text-sm font-semibold text-slate-900"> </span> <span class="text-xs text-slate-500"> </span></div> <!></div> <ul class="space-y-1 pl-5"></ul></li>`),G=y(`<ul class="space-y-5"></ul>`),K=y(`<p class="text-sm text-red-700"> </p>`),q=y(`<div class="fixed inset-0 z-50 flex items-start justify-center bg-slate-950/40 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-md overflow-hidden rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="rename-tag-title"><header class="border-b border-hairline px-5 py-4"><h3 id="rename-tag-title" class="text-base font-semibold text-slate-950"> </h3> <p class="mt-1 text-xs text-slate-500">Updates every project and feature that uses this tag.</p></header> <div class="space-y-3 px-5 py-4"><label class="block text-sm"><span class="mb-1 block text-xs font-medium uppercase tracking-wide text-slate-500">Type</span> <input type="text" class="h-9 w-full rounded-md border border-slate-300 px-3 text-sm outline-none focus:border-brand-700"/></label> <label class="block text-sm"><span class="mb-1 block text-xs font-medium uppercase tracking-wide text-slate-500">Value</span> <input type="text" class="h-9 w-full rounded-md border border-slate-300 px-3 text-sm outline-none focus:border-brand-700"/></label> <!></div> <footer class="flex items-center justify-end gap-2 border-t border-hairline bg-slate-50 px-5 py-3"><button type="button" class="rounded-md px-3 py-1.5 text-sm font-medium text-slate-700 hover:bg-slate-100 disabled:opacity-40">Cancel</button> <button type="button" class="rounded-md bg-slate-900 px-3 py-1.5 text-sm font-medium text-white hover:bg-slate-800 disabled:opacity-40"> </button></footer></div></div>`),J=y(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-16 backdrop-blur-sm" role="presentation"><div class="w-full max-w-2xl overflow-hidden rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="manage-tags-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="manage-tags-title" class="text-base font-semibold text-slate-950">Manage tags</h2> <p class="mt-1 text-sm text-slate-500">Set a color per tag type, or rename a tag everywhere it appears.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="max-h-[60vh] overflow-y-auto px-5 py-4"><!></div> <footer class="flex items-center justify-end gap-2 border-t border-hairline bg-slate-50 px-5 py-3"><button type="button" class="rounded-md px-3 py-1.5 text-sm font-medium text-slate-700 hover:bg-slate-100">Done</button></footer></div></div> <!>`,1);function Y(l,d){E(d,!0);let m=e(null),h=D(()=>{let e=new Map;for(let t of d.tags){let n=t.type.trim().toLowerCase();if(!n)continue;let r=e.get(n);r?r.tags.some(e=>M(e)===M(t))||r.tags.push(t):e.set(n,{tags:[t]})}return[...e.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({key:e,display:N(e),tags:[...t.tags].sort((e,t)=>e.value.localeCompare(t.value))}))});async function y(e,t){try{await L.setTypeColor(e,t)}catch(e){console.error(`Failed to set tag color`,e)}}function C(e){u(m,{tag:e,type:N(e.type),value:N(e.value),busy:!1,error:null},!0)}function T(){u(m,null)}async function k(){let e=s(m);if(!e)return;let t=e.tag,n={type:e.type.trim(),value:e.value.trim()};if(!n.type||!n.value){u(m,{...e,error:`Type and value are required`},!0);return}if(M(t)===M(n)){u(m,null);return}u(m,{...e,busy:!0,error:null},!0);try{let e=await L.renameTag(t,n);u(m,null),await d.onRenamed?.({from:t,to:n,projectsUpdated:e.projectsUpdated,featuresUpdated:e.featuresUpdated})}catch(t){u(m,{...e,busy:!1,error:t.message},!0)}}function j(e){e.key===`Escape`&&(s(m)?T():d.onClose())}var F=t();a(`keydown`,w,j);var R=p(F),z=e=>{var t=J(),a=p(t),l=o(a),u=o(l),S=f(o(u),2);v(u);var w=f(u,2),E=o(w),j=e=>{b(e,H())},F=e=>{var t=G();A(t,21,()=>s(h),e=>e.key,(e,t)=>{let n=D(()=>L.colorFor(s(t).key));var a=W(),l=o(a),u=o(l),d=o(u);I(d,{get color(){return s(n)},size:2.5});var p=f(d,2),m=o(p,!0);v(p);var h=f(p,2),g=o(h);v(h),v(u),V(f(u,2),{get value(){return s(n)},onChange:e=>y(s(t).key,e),get label(){return s(t).display}}),v(l);var _=f(l,2);A(_,21,()=>s(t).tags,e=>M(e),(e,t)=>{var n=U(),a=o(n),l=o(a,!0);v(a);var u=f(a,2);v(n),i((e,t)=>{O(a,`title`,e),c(l,t)},[()=>P(s(t)),()=>N(s(t).value)]),r(`click`,u,()=>C(s(t))),b(e,n)}),v(_),v(a),i(()=>{c(m,s(t).display),c(g,`(${s(t).tags.length??``} value${s(t).tags.length===1?``:`s`})`)}),b(e,a)}),v(t),b(e,t)};n(E,e=>{s(h).length===0?e(j):e(F,-1)}),v(w);var R=f(w,2),z=o(R);v(R),v(l),v(a);var B=f(a,2),Y=e=>{var t=q(),a=o(t),l=o(a),u=o(l),d=o(u);v(u),_(2),v(l);var p=f(l,2),h=o(p),y=f(o(h),2);x(y),v(h);var S=f(h,2),C=f(o(S),2);x(C),v(S);var w=f(S,2),E=e=>{var t=K(),n=o(t,!0);v(t),i(()=>c(n,s(m).error)),b(e,t)};n(w,e=>{s(m).error&&e(E)}),v(p);var D=f(p,2),O=o(D),A=f(O,2),j=o(A,!0);v(A),v(D),v(a),v(t),i(e=>{c(d,`Rename "${e??``}"`),y.disabled=s(m).busy,C.disabled=s(m).busy,O.disabled=s(m).busy,A.disabled=s(m).busy,c(j,s(m).busy?`Renaming...`:`Rename everywhere`)},[()=>P(s(m).tag)]),r(`click`,t,e=>{e.currentTarget===e.target&&!s(m)?.busy&&T()}),g(y,()=>s(m).type,e=>s(m).type=e),g(C,()=>s(m).value,e=>s(m).value=e),r(`click`,O,T),r(`click`,A,k),b(e,t)};n(B,e=>{s(m)&&e(Y)}),r(`click`,a,e=>{e.currentTarget===e.target&&d.onClose()}),r(`click`,S,function(...e){d.onClose?.apply(this,e)}),r(`click`,z,function(...e){d.onClose?.apply(this,e)}),b(e,t)};n(R,e=>{d.open&&e(z)}),b(l,F),S()}l([`click`]);export{Y as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){return e()}function g(e){for(var t=0;t<e.length;t++)e[t]()}function _(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var v=1024,y=2048,b=4096,x=8192,S=16384,ee=32768,te=1<<25,ne=65536,re=1<<18,ie=1<<19,ae=1<<20,oe=1<<25,se=65536,ce=1<<21,le=1<<22,ue=1<<23,de=Symbol(`$state`),fe=Symbol(`legacy props`),pe=Symbol(``),me=Symbol(`attributes`),he=Symbol(`class`),ge=Symbol(`style`),_e=Symbol(`text`),ve=Symbol(`form reset`),ye=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},be=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function xe(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function Se(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Ce(){throw Error(`https://svelte.dev/e/missing_context`)}function we(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Te(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ee(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function De(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Oe(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ke(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Ae(){throw Error(`https://svelte.dev/e/fork_discarded`)}function je(){throw Error(`https://svelte.dev/e/fork_timing`)}function Me(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Ne(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Pe(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function Fe(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Ie(){throw Error(`https://svelte.dev/e/set_context_after_init`)}function Le(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Re(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function ze(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Be(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ve={},C=Symbol(`uninitialized`),He=`http://www.w3.org/1999/xhtml`;function Ue(){console.warn(`https://svelte.dev/e/derived_inert`)}function We(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function Ge(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ke(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function qe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var w=!1;function T(e){w=e}var E;function D(e){if(e===null)throw Ge(),Ve;return E=e}function Je(){return D(R(E))}function Ye(e){if(w){if(R(E)!==null)throw Ge(),Ve;E=e}}function Xe(e=1){if(w){for(var t=e,n=E;t--;)n=R(n);E=n}}function Ze(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=R(n);e&&n.remove(),n=i}}function Qe(e){if(!e||e.nodeType!==8)throw Ge(),Ve;return e.data}function $e(e){return e===this.v}function et(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function tt(e){return!et(e,this.v)}var O=!1,nt=!1;function rt(){nt=!0}var it=[];function at(e,t=!1,n=!1){return ot(e,new Map,``,it,null,n)}function ot(e,t,r,i,a=null,o=!1){if(typeof e==`object`&&e){var s=t.get(e);if(s!==void 0)return s;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(n(e)){var c=Array(e.length);t.set(e,c),a!==null&&t.set(a,c);for(var u=0;u<e.length;u+=1){var f=e[u];u in e&&(c[u]=ot(f,t,r,i,null,o))}return c}if(d(e)===l){c={},t.set(e,c),a!==null&&t.set(a,c);for(var p of Object.keys(e))c[p]=ot(e[p],t,r,i,null,o);return c}if(e instanceof Date)return structuredClone(e);if(typeof e.toJSON==`function`&&!o)return ot(e.toJSON(),t,r,i,e)}if(e instanceof EventTarget)return e;try{return structuredClone(e)}catch{return e}}var k=null;function st(e){k=e}function ct(){let e={};return[()=>(dt(e)||Ce(),lt(e)),t=>ut(e,t)]}function lt(e){return gt(`getContext`).get(e)}function ut(e,t){let n=gt(`setContext`);if(O){var r=G.f;!H&&r&32&&!k.i||Ie()}return n.set(e,t),t}function dt(e){return gt(`hasContext`).has(e)}function ft(){return gt(`getAllContexts`)}function pt(e,t=!1,n){k={p:k,i:!1,c:null,e:null,s:e,x:null,r:G,l:nt&&!t?{s:null,u:null,$:[]}:null}}function mt(e){var t=k,n=t.e;if(n!==null){t.e=null;for(var r of n)or(r)}return e!==void 0&&(t.x=e),t.i=!0,k=t.p,e??{}}function ht(){return!nt||k!==null&&k.l===null}function gt(e){return k===null&&Se(e),k.c??=new Map(_t(k)||void 0)}function _t(e){let t=e.p;for(;t!==null;){let e=t.c;if(e!==null)return e;t=t.p}return null}var vt=[];function yt(){var e=vt;vt=[],g(e)}function A(e){if(vt.length===0&&!Vt){var t=vt;queueMicrotask(()=>{t===vt&&yt()})}vt.push(e)}function bt(){for(;vt.length>0;)yt()}function xt(e){var t=G;if(t===null)return H.f|=ue,e;if(!(t.f&32768)&&!(t.f&4))throw e;St(e,t)}function St(e,t){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}var Ct=~(y|b|v);function j(e,t){e.f=e.f&Ct|t}function wt(e){e.f&512||e.deps===null?j(e,v):j(e,b)}function Tt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=se,Tt(t.deps))}function Et(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Tt(e.deps),j(e,v)}function Dt(e,t,n){if(e==null)return t(void 0),n&&n(void 0),m;let r=Q(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}var Ot=[];function kt(e,t=m){let n=null,r=new Set;function i(t){if(et(e,t)&&(e=t,n)){let t=!Ot.length;for(let t of r)t[1](),Ot.push(t,e);if(t){for(let e=0;e<Ot.length;e+=2)Ot[e][0](Ot[e+1]);Ot.length=0}}}function a(t){i(t(e))}function o(o,s=m){let c=[o,s];return r.add(c),r.size===1&&(n=t(i,a)||m),o(e),()=>{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}function At(e){let t;return Dt(e,e=>t=e)(),t}var jt=!1,Mt=!1,Nt=Symbol(`unmounted`);function Pt(e,t,n){let r=n[t]??={store:null,source:kn(void 0),unsubscribe:m};if(r.store!==e&&!(Nt in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=m;else{var i=!0;r.unsubscribe=Dt(e,e=>{i?r.source.v=e:F(r.source,e)}),i=!1}return e&&Nt in n?At(e):Z(r.source)}function Ft(){let e={};function t(){ir(()=>{for(var t in e)e[t].unsubscribe();o(e,Nt,{enumerable:!1,value:!0})})}return[e,t]}function It(e){var t=Mt;try{return Mt=!1,[e(),Mt]}finally{Mt=t}}var Lt=null,Rt=null,M=null,zt=null,N=null,Bt=null,Vt=!1,Ht=!1,Ut=null,Wt=null,Gt=0,Kt=1,qt=class e{id=Kt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;unblocked=new Set;#r=new Set;#i=new Set;#a=new Set;#o=0;#s=new Map;#c=null;#l=[];#u=[];#d=new Set;#f=new Set;#p=new Map;#m=new Set;is_fork=!1;#h=!1;#g(){if(this.is_fork)return!0;for(let n of this.#s.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#p.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#p.has(e)||this.#p.set(e,{d:[],m:[]}),this.#m.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#p.get(e);if(n){this.#p.delete(e);for(var r of n.d)j(r,y),t(r);for(r of n.m)j(r,b),t(r)}this.#m.add(e)}#_(){if(this.#e=!0,Gt++>1e3&&(this.#w(),Yt()),!this.#g()){for(let e of this.#d)this.#f.delete(e),j(e,y),this.schedule(e);for(let e of this.#f)j(e,b),this.schedule(e)}let t=this.#l;this.#l=[],this.apply();var n=Ut=[],r=[],i=Wt=[];for(let e of t)try{this.#v(e,n,r)}catch(t){throw nn(e),t}if(M=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Ut=null,Wt=null,this.#g()){this.#x(r),this.#x(n);for(let[e,t]of this.#p)tn(e,t);i.length>0&&M.#_();return}let o=this.#y();if(o){o.#b(this);return}this.#d.clear(),this.#f.clear();for(let e of this.#r)e(this);this.#r.clear(),zt=this,Xt(r),Xt(n),zt=null,this.#c?.resolve();var s=M;if(this.linked&&this.#o===0&&this.#w(),O&&!this.linked&&(this.#S(),M=s),this.#l.length>0){s===null&&(s=this,this.#C());let e=s;e.#l.push(...this.#l.filter(t=>!e.#l.includes(t)))}s!==null&&s.#_()}#v(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#p.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):O&&i&16777224?n.push(r):Fr(r)&&(i&16&&this.#f.add(r),Br(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve)}let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#f.delete(i),j(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#w(),M=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)Et(e[t],this.#d,this.#f)}capture(e,t,n=!1){e.v!==C&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),N?.set(e,t)),this.is_fork||(e.v=t)}activate(){M=this}deactivate(){M=null,N=null}flush(){try{Ht=!0,M=this,this.#_()}finally{Gt=0,Bt=null,Ut=null,Wt=null,Ht=!1,M=null,N=null,wn.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear(),this.#a.clear(),this.#w()}register_created_effect(e){this.#u.push(e)}#S(){this.#w();for(let l=Lt;l!==null;l=l.#n){var e=l.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(l.current.has(r)){var n=l.current.get(r)[0];if(e&&i!==n)l.current.set(r,[i,a]);else continue}t.push(r)}if(e)for(let[e,t]of this.async_deriveds){let n=l.async_deriveds.get(e);n&&t.promise.then(n.resolve)}if(l.#e){var r=[...l.current.keys()].filter(e=>!this.current.has(e));if(r.length===0)e&&l.discard();else if(t.length>0){if(e)for(let e of this.#m)l.unskip_effect(e,e=>{e.f&4194320?l.schedule(e):l.#x([e])});l.activate();var i=new Set,a=new Map;for(var o of t)Zt(o,r,i,a);a=new Map;var s=[...l.current.keys()].filter(e=>this.current.has(e)?this.current.get(e)[0]!==e.v:!0);if(s.length>0)for(let e of this.#u)!(e.f&155648)&&$t(e,s,a)&&(e.f&4194320?(j(e,y),l.schedule(e)):l.#d.add(e));if(l.#l.length>0&&!l.#h){l.apply();for(var c of l.#l)l.#v(c,[],[]);l.#l=[]}l.deactivate()}}}}increment(e,t){if(this.#o+=1,e){let e=this.#s.get(t)??0;this.#s.set(t,e+1)}}decrement(e,t){if(--this.#o,e){let e=this.#s.get(t)??0;e===1?this.#s.delete(t):this.#s.set(t,e-1)}this.#h||(this.#h=!0,A(()=>{this.#h=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#d.add(t);for(let e of t)this.#f.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}on_fork_commit(e){this.#a.add(e)}run_fork_commit_callbacks(){for(let e of this.#a)e(this);this.#a.clear()}settled(){return(this.#c??=_()).promise}static ensure(){if(M===null){let t=M=new e;t.#C(),!Ht&&!Vt&&A(()=>{t.#e||t.flush()})}return M}apply(){if(!O||!this.is_fork&&this.#t===null&&this.#n===null){N=null;return}N=new Map;for(let[e,[t]]of this.current)N.set(e,t);for(let t=Lt;t!==null;t=t.#n)if(!(t===this||t.is_fork)){var e=!1;if(t.id<this.id){for(let[n,[,r]]of t.current)if(!r&&this.current.has(n)){e=!0;break}}if(!e)for(let[e,n]of t.previous)N.has(e)||N.set(e,n)}}schedule(e){if(Bt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ut!==null&&t===G&&(O||(H===null||!(H.f&2))&&!jt))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#l.push(t)}#C(){Rt===null?Lt=Rt=this:(Rt.#n=this,this.#t=Rt),Rt=this}#w(){var e=this.#t,t=this.#n;e===null?Lt=t:e.#n=t,t===null?Rt=e:t.#t=e,this.linked=!1}};function Jt(e){var t=Vt;Vt=!0;try{var n;for(e&&(M!==null&&!M.is_fork&&M.flush(),n=e());;){if(bt(),M===null)return n;M.flush()}}finally{Vt=t}}function Yt(){try{ke()}catch(e){St(e,Bt)}}var P=null;function Xt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Fr(r)&&(P=new Set,Br(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&vr(r),P?.size>0)){wn.clear();for(let e of P){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)P.has(n)&&(P.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Br(n)}}P.clear()}}P=null}}function Zt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Zt(i,t,n,r):e&4194320&&!(e&2048)&&$t(i,t,r)&&(j(i,y),en(i))}}function Qt(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?Qt(n,t):e&131072&&(j(n,y),t.add(n))}}function $t(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&$t(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function en(e){M.schedule(e)}function tn(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),j(e,v);for(var n=e.first;n!==null;)tn(n,t),n=n.next}}function nn(e){j(e,v);for(var t=e.first;t!==null;)nn(t),t=t.next}function rn(e){O||xe(`fork`),M!==null&&je();var t=qt.ensure();t.is_fork=!0,N=new Map;var n=!1,r=t.settled();return Jt(e),{commit:async()=>{if(n){await r;return}t.linked||Ae(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=Pr();t.activate(),t.run_fork_commit_callbacks(),t.deactivate(),Jt(()=>{var e=new Set;for(var n of t.current.keys())Qt(n,e);Tn(e),jn()}),t.flush(),await r},discard:()=>{for(var e of t.current.keys())e.wv=Pr();!n&&t.linked&&t.discard()}}}function an(e){let t=0,n=Dn(0),r;return()=>{rr()&&(Z(n),dr(()=>(t===0&&(r=Q(()=>e(()=>Mn(n)))),t+=1,()=>{A(()=>{--t,t===0&&(r?.(),r=void 0,Mn(n))})})))}}var on=ne|ie;function sn(e,t,n,r){new cn(e,t,n,r)}var cn=class{parent;is_pending=!1;transform_error;#e;#t=w?E:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=an(()=>(this.#m=Dn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=G;t.b=this,t.f|=128,n(e)},this.parent=G.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=pr(()=>{if(w){let e=this.#t;Je();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},on),w&&(this.#e=E)}#g(){try{this.#a=B(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=B(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=B(()=>e(this.#e)),A(()=>{var e=this.#c=document.createDocumentFragment(),t=I();e.append(t),this.#a=this.#x(()=>B(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,yr(this.#o,()=>{this.#o=null}),this.#b(M))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=B(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Cr(this.#a,e);let t=this.#n.pending;this.#o=B(()=>t(this.#e))}else this.#b(M)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Et(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=G,n=H,r=k;K(this.#i),W(this.#i),st(this.#i.ctx);try{return qt.ensure(),e()}catch(e){return xt(e),null}finally{K(t),W(n),st(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&yr(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,A(()=>{this.#d=!1,this.#m&&An(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Z(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;M?.is_fork?(this.#a&&M.skip_effect(this.#a),this.#o&&M.skip_effect(this.#o),this.#s&&M.skip_effect(this.#s),M.on_fork_commit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(V(this.#a),null),this.#o&&=(V(this.#o),null),this.#s&&=(V(this.#s),null),w&&(D(this.#t),Xe(),D(Ze()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){qe();return}r=!0,i&&Be(),this.#s!==null&&yr(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){St(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return B(()=>{var t=G;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return St(e,this.#i.parent),null}}))};A(()=>{var t;try{t=this.transform_error(e)}catch(e){St(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>St(e,this.#i&&this.#i.parent)):o(t)})}};function ln(e,t,n,r){let i=ht()?pn:_n;var a=e.filter(e=>!e.settled);if(n.length===0&&a.length===0){r(t.map(i));return}var o=G,s=un(),c=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function l(e){if(!(o.f&16384)){s();try{r(e)}catch(e){St(e,o)}dn()}}var u=fn();if(n.length===0){c.then(()=>l(t.map(i))).finally(u);return}function d(){Promise.all(n.map(e=>hn(e))).then(e=>l([...t.map(i),...e])).catch(e=>St(e,o)).finally(u)}c?c.then(()=>{s(),d(),dn()}):d()}function un(){var e=G,t=H,n=k,r=M;return function(i=!0){K(e),W(t),st(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function dn(e=!0){K(null),W(null),st(null),e&&M?.deactivate()}function fn(){var e=G,t=e.b,n=M,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),()=>{t.update_pending_count(-1,n),n.decrement(r,e)}}function pn(e){var t=2|y;return G!==null&&(G.f|=ie),{ctx:k,deps:null,effects:null,equals:$e,f:t,fn:e,reactions:null,rv:0,v:C,wv:0,parent:G,ac:null}}var mn=Symbol(`obsolete`);function hn(e,t,n){let r=G;r===null&&we();var i=void 0,a=Dn(C),o=!H,s=new Set;return ur(()=>{var t=G,n=_();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ye&&n.reject(e)}).finally(dn)}catch(e){n.reject(e),dn()}var c=M;if(o){if(t.f&32768)var l=fn();if(r.b.is_rendered())c.async_deriveds.get(t)?.reject(mn);else for(let e of s.values())e.reject(mn);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==mn&&(c.activate(),t?(a.f|=ue,An(a,t)):(a.f&8388608&&(a.f^=ue),An(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),ir(()=>{for(let e of s)e.reject(mn)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function gn(e){let t=pn(e);return O||Or(t),t}function _n(e){let t=pn(e);return t.equals=tt,t}function vn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)V(t[n])}}function yn(e){var t,n=G,r=e.parent;if(!Er&&r!==null&&e.v!==C&&r.f&24576)return Ue(),e.v;K(r);try{e.f&=~se,vn(e),t=Lr(e)}finally{K(n)}return t}function bn(e){var t=yn(e);if(!e.equals(t)&&(e.wv=Pr(),(!M?.is_fork||e.deps===null)&&(M===null?e.v=t:(M.capture(e,t,!0),zt?.capture(e,t,!0)),e.deps===null))){j(e,v);return}Er||(N===null?wt(e):(rr()||M?.is_fork)&&N.set(e,t))}function xn(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(ye),t.fn!==null&&(t.teardown=m),t.ac=null,zr(t,0),hr(t))}function Sn(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Br(t)}var Cn=new Set,wn=new Map;function Tn(e){Cn=e}var En=!1;function Dn(e,t){return{f:0,v:e,reactions:null,equals:$e,rv:0,wv:0}}function On(e,t){let n=Dn(e,t);return Or(n),n}function kn(e,t=!1,n=!0){let r=Dn(e);return t||(r.equals=tt),nt&&n&&k!==null&&k.l!==null&&(k.l.s??=[]).push(r),r}function F(e,t,n=!1){return H!==null&&(!U||H.f&131072)&&ht()&&H.f&4325394&&(q===null||!i.call(q,e))&&ze(),An(e,n?Pn(t):t,Wt)}function An(e,t,n=null){if(!e.equals(t)){wn.set(e,Er?t:e.v);var r=qt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&yn(t),N===null&&wt(t)}e.wv=Pr(),Nn(e,y,n),ht()&&G!==null&&G.f&1024&&!(G.f&96)&&(X===null?kr([e]):X.push(e)),!r.is_fork&&Cn.size>0&&!En&&jn()}return t}function jn(){En=!1;for(let e of Cn){e.f&1024&&j(e,b);let t;try{t=Fr(e)}catch{t=!0}t&&Br(e)}Cn.clear()}function Mn(e){F(e,e.v+1)}function Nn(e,t,n){var r=e.reactions;if(r!==null)for(var i=ht(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===G)){var l=(c&y)===0;if(l&&j(s,t),c&131072)Cn.add(s);else if(c&2){var u=s;N?.delete(u),c&65536||(c&512&&(G===null||!(G.f&2097152))&&(s.f|=se),Nn(u,b,n))}else if(l){var d=s;c&16&&P!==null&&P.add(d),n===null?en(d):n.push(d)}}}}function Pn(e){if(typeof e!=`object`||!e||de in e)return e;let t=d(e);if(t!==l&&t!==u)return e;var r=new Map,i=n(e),a=On(0),o=null,c=Mr,f=e=>{if(Mr===c)return e();var t=H,n=Mr;W(null),Nr(c);var r=e();return W(t),Nr(n),r};return i&&r.set(`length`,On(e.length,o)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Le();var i=r.get(t);return i===void 0?f(()=>{var e=On(n.value,o);return r.set(t,e),e}):F(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>On(C,o));r.set(t,e),Mn(a)}}else F(n,C),Mn(a);return!0},get(t,n,i){if(n===de)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||s(t,n)?.writable)&&(a=f(()=>On(Pn(c?t[n]:C),o)),r.set(n,a)),a!==void 0){var l=Z(a);return l===C?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=Z(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==C)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===de)return!0;var n=r.get(t),i=n!==void 0&&n.v!==C||Reflect.has(e,t);return(n!==void 0||G!==null&&(!i||s(e,t)?.writable))&&(n===void 0&&(n=f(()=>On(i?Pn(e[t]):C,o)),r.set(t,n)),Z(n)===C)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;d<l.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>On(C,o)),r.set(d+``,p)):F(p,C)}if(l===void 0)(!u||s(e,t)?.writable)&&(l=f(()=>On(void 0,o)),F(l,Pn(n)),r.set(t,l));else{u=l.v!==C;var m=f(()=>Pn(n));F(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&F(g,_+1)}Mn(a)}return!0},ownKeys(e){Z(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==C});for(var[n,i]of r)i.v!==C&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Re()}})}function Fn(e){try{if(typeof e==`object`&&e&&de in e)return e[de]}catch{}return e}function In(e,t){return Object.is(Fn(e),Fn(t))}new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);var Ln,Rn,zn,Bn,Vn;function Hn(){if(Ln===void 0){Ln=window,Rn=document,zn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Bn=s(t,`firstChild`).get,Vn=s(t,`nextSibling`).get,f(e)&&(e[he]=void 0,e[me]=null,e[ge]=void 0,e.__e=void 0),f(n)&&(n[_e]=void 0)}}function I(e=``){return document.createTextNode(e)}function L(e){return Bn.call(e)}function R(e){return Vn.call(e)}function Un(e,t){if(!w)return L(e);var n=L(E);if(n===null)n=E.appendChild(I());else if(t&&n.nodeType!==3){var r=I();return n?.before(r),D(r),r}return t&&Yn(n),D(n),n}function Wn(e,t=!1){if(!w){var n=L(e);return n instanceof Comment&&n.data===``?R(n):n}if(t){if(E?.nodeType!==3){var r=I();return E?.before(r),D(r),r}Yn(E)}return E}function Gn(e,t=1,n=!1){let r=w?E:e;for(var i;t--;)i=r,r=R(r);if(!w)return r;if(n){if(r?.nodeType!==3){var a=I();return r===null?i?.after(a):r.before(a),D(a),a}Yn(r)}return D(r),r}function Kn(e){e.textContent=``}function qn(){return!O||P!==null?!1:(G.f&ee)!==0}function Jn(e,t,n){let r=n?{is:n}:void 0;return document.createElementNS(t??`http://www.w3.org/1999/xhtml`,e,r)}function Yn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Xn(e){w&&L(e)!==null&&Kn(e)}var Zn=!1;function Qn(){Zn||(Zn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ve]?.()})},{capture:!0}))}function $n(e){var t=H,n=G;W(null),K(null);try{return e()}finally{W(t),K(n)}}function er(e,t,n,r=n){e.addEventListener(t,()=>$n(n));let i=e[ve];i?e[ve]=()=>{i(),r(!0)}:e[ve]=()=>r(!0),Qn()}function tr(e){G===null&&(H===null&&Oe(e),De()),Er&&Ee(e)}function nr(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function z(e,t){var n=G;n!==null&&n.f&8192&&(e|=x);var r={ctx:k,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var i=r;if(e&4)Ut===null?qt.ensure().schedule(r):Ut.push(r);else if(t!==null){try{Br(r)}catch(e){throw V(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=ne))}if(i!==null&&(i.parent=n,n!==null&&nr(i,n),H!==null&&H.f&2&&!(e&64))){var a=H;(a.effects??=[]).push(i)}return r}function rr(){return H!==null&&!U}function ir(e){let t=z(8,null);return j(t,v),t.teardown=e,t}function ar(e){tr(`$effect`);var t=G.f;if(!H&&t&32&&!(t&32768)){var n=k;(n.e??=[]).push(e)}else return or(e)}function or(e){return z(4|ae,e)}function sr(e){return tr(`$effect.pre`),z(8|ae,e)}function cr(e){qt.ensure();let t=z(64|ie,e);return(e={})=>new Promise(n=>{e.outro?yr(t,()=>{V(t),n(void 0)}):(V(t),n(void 0))})}function lr(e){return z(4,e)}function ur(e){return z(le|ie,e)}function dr(e,t=0){return z(8|t,e)}function fr(e,t=[],n=[],r=[]){ln(r,t,n,t=>{z(8,()=>e(...t.map(Z)))})}function pr(e,t=0){return z(16|t,e)}function B(e){return z(32|ie,e)}function mr(e){var t=e.teardown;if(t!==null){let e=Er,n=H;Dr(!0),W(null);try{t.call(null)}finally{Dr(e),W(n)}}}function hr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&$n(()=>{e.abort(ye)});var r=n.next;n.f&64?n.parent=null:V(n,t),n=r}}function gr(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||V(t),t=n}}function V(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(_r(e.nodes.start,e.nodes.end),n=!0),j(e,te),hr(e,t&&!n),zr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();mr(e),e.f^=te,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&vr(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function _r(e,t){for(;e!==null;){var n=e===t?null:R(e);e.remove(),e=n}}function vr(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function yr(e,t,n=!0){var r=[];br(e,r,!0);var i=()=>{n&&V(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function br(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;br(i,t,o?n:!1)}i=a}}}function xr(e){Sr(e,!0)}function Sr(e,t){if(e.f&8192){e.f^=x,e.f&1024||(j(e,y),qt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Sr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Cr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:R(n);t.append(n),n=i}}var wr=null,Tr=!1,Er=!1;function Dr(e){Er=e}var H=null,U=!1;function W(e){H=e}var G=null;function K(e){G=e}var q=null;function Or(e){H!==null&&(!O||H.f&2)&&(q===null?q=[e]:q.push(e))}var J=null,Y=0,X=null;function kr(e){X=e}var Ar=1,jr=0,Mr=jr;function Nr(e){Mr=e}function Pr(){return++Ar}function Fr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~se),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Fr(a)&&bn(a),a.wv>e.wv)return!0}t&512&&N===null&&j(e,v)}return!1}function Ir(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!O&&q!==null&&i.call(q,e)))for(var a=0;a<r.length;a++){var o=r[a];o.f&2?Ir(o,t,!1):t===o&&(n?j(o,y):o.f&1024&&j(o,b),en(o))}}function Lr(e){var t=J,n=Y,r=X,i=H,a=q,o=k,s=U,c=Mr,l=e.f;J=null,Y=0,X=null,H=l&96?null:e,q=null,st(e.ctx),U=!1,Mr=++jr,e.ac!==null&&($n(()=>{e.ac.abort(ye)}),e.ac=null);try{e.f|=ce;var u=e.fn,d=u();e.f|=ee;var f=e.deps,p=M?.is_fork;if(J!==null){var m;if(p||zr(e,Y),f!==null&&Y>0)for(f.length=Y+J.length,m=0;m<J.length;m++)f[Y+m]=J[m];else e.deps=f=J;if(rr()&&e.f&512)for(m=Y;m<f.length;m++)(f[m].reactions??=[]).push(e)}else !p&&f!==null&&Y<f.length&&(zr(e,Y),f.length=Y);if(ht()&&X!==null&&!U&&f!==null&&!(e.f&6146))for(m=0;m<X.length;m++)Ir(X[m],e);if(i!==null&&i!==e){if(jr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=jr;if(t!==null)for(let e of t)e.rv=jr;X!==null&&(r===null?r=X:r.push(...X))}return e.f&8388608&&(e.f^=ue),d}catch(e){return xt(e)}finally{e.f^=ce,J=t,Y=n,X=r,H=i,q=a,st(o),U=s,Mr=c}}function Rr(e,t){let n=t.reactions;if(n!==null){var a=r.call(n,e);if(a!==-1){var o=n.length-1;o===0?n=t.reactions=null:(n[a]=n[o],n.pop())}}if(n===null&&t.f&2&&(J===null||!i.call(J,t))){var s=t;s.f&512&&(s.f^=512,s.f&=~se),s.v!==C&&wt(s),xn(s),zr(s,0)}}function zr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Rr(e,n[r])}function Br(e){var t=e.f;if(!(t&16384)){j(e,v);var n=G,r=Tr;G=e,Tr=!0;try{t&16777232?gr(e):hr(e),mr(e);var i=Lr(e);e.teardown=typeof i==`function`?i:null,e.wv=Ar}finally{Tr=r,G=n}}}async function Vr(){if(O)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Jt()}function Hr(){return qt.ensure().settled()}function Z(e){var t=(e.f&2)!=0;if(wr?.add(e),H!==null&&!U&&!(G!==null&&G.f&16384)&&(q===null||!i.call(q,e))){var n=H.deps;if(H.f&2097152)e.rv<jr&&(e.rv=jr,J===null&&n!==null&&n[Y]===e?Y++:J===null?J=[e]:J.push(e));else{H.deps??=[],i.call(H.deps,e)||H.deps.push(e);var r=e.reactions;r===null?e.reactions=[H]:i.call(r,H)||r.push(H)}}if(Er&&wn.has(e))return wn.get(e);if(t){var a=e;if(Er){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Wr(a))&&(o=yn(a)),wn.set(a,o),o}var s=(a.f&512)==0&&!U&&H!==null&&(Tr||(H.f&512)!=0),c=(a.f&ee)===0;Fr(a)&&(s&&(a.f|=512),bn(a)),s&&!c&&(Sn(a),Ur(a))}if(N?.has(e))return N.get(e);if(e.f&8388608)throw e.v;return e.v}function Ur(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(Sn(t),Ur(t))}function Wr(e){if(e.v===C)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(wn.has(t)||t.f&2&&Wr(t))return!0;return!1}function Q(e){var t=U;try{return U=!0,e()}finally{U=t}}function Gr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(de in e)Kr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&de in n&&Kr(n)}}}function Kr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Kr(e[n],t)}catch{}let n=d(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=c(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var qr=[`touchstart`,`touchmove`];function Jr(e){return qr.includes(e)}var Yr=Symbol(`events`),Xr=new Set,Zr=new Set;function Qr(e,t,n,r={}){function i(e){if(r.capture||ri.call(t,e),!e.cancelBubble)return $n(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?A(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function $r(e,t,n,r,i){var a={capture:r,passive:i},o=Qr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&ir(()=>{t.removeEventListener(e,o,a)})}function ei(e,t,n){(t[Yr]??={})[e]=n}function ti(e){for(var t=0;t<e.length;t++)Xr.add(e[t]);for(var n of Zr)n(e)}var ni=null;function ri(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],a=i[0]||e.target;ni=e;var s=0,c=ni===e&&e[Yr];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Yr]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(a=i[s]||e.target,a!==t){o(e,`currentTarget`,{configurable:!0,get(){return a||n}});var d=H,f=G;W(null),K(null);try{for(var p,m=[];a!==null;){var h=a.assignedSlot||a.parentNode||a.host||null;try{var g=a[Yr]?.[r];g!=null&&(!a.disabled||e.target===a)&&g.call(a,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble||h===t||h===null)break;a=h}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[Yr]=t,delete e.currentTarget,W(d),K(f)}}}var ii=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ai(e){return ii?.createHTML(e)??e}function oi(e){var t=Jn(`template`);return t.innerHTML=ai(e.replaceAll(`<!>`,`<!---->`)),t.content}function $(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function si(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(w)return $(E,null),E;i===void 0&&(i=oi(a?e:`<!>`+e),n||(i=L(i)));var t=r||zn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=L(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function ci(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=(t&1)!=0,a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(w)return $(E,null),E;if(!o){var e=L(oi(a));if(i)for(o=document.createDocumentFragment();L(e);)o.appendChild(L(e));else o=L(e)}var t=o.cloneNode(!0);if(i){var n=L(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function li(e,t){return ci(e,t,`svg`)}function ui(e=``){if(!w){var t=I(e+``);return $(t,t),t}var n=E;return n.nodeType===3?Yn(n):(n.before(n=I()),D(n)),$(n,n),n}function di(){if(w)return $(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=I();return e.append(t,n),$(t,n),e}function fi(e,t){if(w){var n=G;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),Je();return}e!==null&&e.before(t)}var pi=!0;function mi(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[_e]??=e.nodeValue)&&(e[_e]=n,e.nodeValue=`${n}`)}function hi(e,t){return vi(e,t)}function gi(e,t){Hn(),t.intro=t.intro??!1;let n=t.target,r=w,i=E;try{for(var a=L(n);a&&(a.nodeType!==8||a.data!==`[`);)a=R(a);if(!a)throw Ve;T(!0),D(a);let r=vi(e,{...t,anchor:a});return T(!1),r}catch(r){if(r instanceof Error&&r.message.split(`
|
|
2
|
-
`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==Ve&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Ne(),Hn(),Kn(n),T(!1),hi(e,t)}finally{T(r),D(i)}}var _i=new Map;function vi(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){Hn();var l=void 0,u=cr(()=>{var u=n??t.appendChild(I());sn(u,{pending:()=>{}},t=>{pt({});var n=k;if(o&&(n.c=o),i&&(r.$$events=i),w&&$(t,null),pi=s,l=e(t,r)||{},pi=!0,w&&(G.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw Ge(),Ve;mt()},c);var d=new Set,f=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!d.has(r)){d.add(r);var i=Jr(r);for(let e of[t,document]){var a=_i.get(e);a===void 0&&(a=new Map,_i.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,ri,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return f(a(Xr)),Zr.add(f),()=>{for(var e of d)for(let n of[t,document]){var r=_i.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,ri),r.delete(e),r.size===0&&_i.delete(n)):r.set(e,i)}Zr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return yi.set(l,u),l}var yi=new WeakMap;function bi(e,t){let n=yi.get(e);return n?(yi.delete(e),n(t)):Promise.resolve()}var xi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)xr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(V(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Cr(r,t),t.append(I()),this.#n.set(e,{effect:r,fragment:t})}else V(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),yr(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(V(n.effect),this.#n.delete(e))};ensure(e,t){var n=M,r=qn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=I();i.append(a),this.#n.set(e,{effect:B(()=>t(a)),fragment:i})}else this.#t.set(e,B(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else w&&(this.anchor=E),this.#a(n)}};function Si(e,t,n=!1){var r;w&&(r=E,Je());var i=new xi(e),a=n?ne:0;function o(e,t){if(w){var n=Qe(r);if(e!==parseInt(n.substring(1))){var a=Ze();D(a),i.anchor=a,T(!1),i.ensure(e,t),T(!0);return}}i.ensure(e,t)}pr(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var Ci=Symbol(`NaN`);function wi(e,t,n){w&&Je();var r=new xi(e),i=!ht();pr(()=>{var e=t();e!==e&&(e=Ci),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function Ti(e,t){return t}function Ei(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c<i;c++){let n=t[c];yr(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Di(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;Kn(d),d.append(u),e.items.clear()}Di(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Di(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=oe,Cr(a,document.createDocumentFragment())):V(t[i],n)}}var Oi;function ki(e,t,r,i,o,s=null){var c=e,l=new Map;if(t&4){var u=e;c=w?D(L(u)):u.appendChild(I())}w&&Je();var d=null,f=_n(()=>{var e=r();return n(e)?e:e==null?[]:a(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,ji(v,p,c,t,i),d!==null&&(p.length===0?d.f&33554432?(d.f^=oe,Ni(d,null,c)):xr(d):yr(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:pr(()=>{p=Z(f);var e=p.length;let n=!1;w&&Qe(c)===`[!`!=(e===0)&&(c=Ze(),D(c),T(!1),n=!0);for(var a=new Set,u=M,v=qn(),y=0;y<e;y+=1){w&&E.nodeType===8&&E.data===`]`&&(c=E,n=!0,T(!1));var b=p[y],x=i(b,y),S=h?null:l.get(x);S?(S.v&&An(S.v,b),S.i&&An(S.i,y),v&&u.unskip_effect(S.e)):(S=Mi(l,h?c:Oi??=I(),b,x,y,o,t,r),h||(S.e.f|=oe),l.set(x,S)),a.add(x)}if(e===0&&s&&!d&&(h?d=B(()=>s(c)):(d=B(()=>s(Oi??=I())),d.f|=oe)),e>a.size&&Te(``,``,``),w&&e>0&&D(Ze()),!h)if(m.set(u,a),v){for(let[e,t]of l)a.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);n&&T(!0),Z(f)}),flags:t,items:l,pending:m,outrogroups:null,fallback:d};h=!1,w&&(c=E)}function Ai(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function ji(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=Ai(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=i(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=i(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(xr(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=oe,_===l)Ni(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Pi(e,d,_),Pi(e,_,y),Ni(_,y,n),d=_,p=[],m=[],l=Ai(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],ee=p[p.length-1];for(x=0;x<p.length;x+=1)Ni(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Pi(e,S.prev,ee.next),Pi(e,d,S),Pi(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),Ni(_,l,n),Pi(e,_.prev,_.next),Pi(e,_,d===null?e.effect.first:d.next),Pi(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Ai(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Ai(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Di(e,a(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var te=[];if(u!==void 0)for(_ of u)_.f&8192||te.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&te.push(l),l=Ai(l.next);var ne=te.length;if(ne>0){var re=r&4&&s===0?n:null;if(o){for(v=0;v<ne;v+=1)te[v].nodes?.a?.measure();for(v=0;v<ne;v+=1)te[v].nodes?.a?.fix()}Ei(e,te,re)}}o&&A(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Mi(e,t,n,r,i,a,o,s){var c=o&1?o&16?Dn(n):kn(n,!1,!1):null,l=o&2?Dn(i):null;return{v:c,i:l,e:B(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Ni(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=R(r);if(a.before(r),r===i)return;r=o}}function Pi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Fi(e,t,...n){var r=new xi(e);pr(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},ne)}function Ii(e){return(t,...n)=>{var r=e(...n),i;w?(i=E,Je()):(i=L(oi(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&ir(a)}}function Li(e,t,n){var r;w&&(r=E,Je());var i=new xi(e);pr(()=>{var e=t()??null;if(w&&Qe(r)===`[`!=(e!==null)){var a=Ze();D(a),i.anchor=a,T(!1),i.ensure(e,e&&(t=>n(t,e))),T(!0);return}i.ensure(e,e&&(t=>n(t,e)))},ne)}var Ri=()=>performance.now(),zi={tick:e=>requestAnimationFrame(e),now:()=>Ri(),tasks:new Set};function Bi(){let e=zi.now();zi.tasks.forEach(t=>{t.c(e)||(zi.tasks.delete(t),t.f())}),zi.tasks.size!==0&&zi.tick(Bi)}function Vi(e){let t;return zi.tasks.size===0&&zi.tick(Bi),{promise:new Promise(n=>{zi.tasks.add(t={c:e,f:n})}),abort(){zi.tasks.delete(t)}}}function Hi(e,t){$n(()=>{e.dispatchEvent(new CustomEvent(t))})}function Ui(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Wi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=Ui(n.trim());t[i]=r.trim()}return t}var Gi=e=>e;function Ki(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return $n(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=qi(t,m(),p,1,()=>{Hi(t,`introstart`)},()=>{Hi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=qi(t,m(),f,0,()=>{Hi(t,`outrostart`)},()=>{Hi(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=G;if((g.nodes.t??=[]).push(h),i&&pi){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&lr(()=>{Q(()=>h.in())})}}function qi(e,t,n,r,i,a){var o=r===1;if(p(t)){var s,c=!1;return A(()=>{c||(s=qi(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:m,deactivate:m,reset:m,t:()=>r};let{delay:l=0,css:u,tick:d,easing:f=Gi}=t;var h=[];if(o&&n===void 0&&(d&&d(0,1),u)){var g=Wi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var p=!1;if(u)for(var m=Math.ceil(c/(1e3/60)),h=0;h<=m;h+=1){var g=o+s*f(h/m),y=Wi(u(g,1-g));l.push(y),p||=y.overflow===`hidden`}p&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*f(e/c)},d&&Vi(()=>{if(v.playState!==`running`)return!1;var e=_();return d(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,d?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=m)},deactivate:()=>{a=m},reset:()=>{r===0&&d?.(1,0)},t:()=>_()}}function Ji(e,t){let n=null,r=w;var i;if(w){n=E;for(var a=L(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=R(a);if(a===null)T(!1);else{var o=R(a);a.remove(),D(o)}}w||(i=document.head.appendChild(I()));try{pr(()=>{var e=B(()=>t(i));e.f|=re})}finally{r&&(T(!0),D(n))}}function Yi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Yi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Xi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Yi(e))&&(r&&(r+=` `),r+=t);return r}function Zi(e){return typeof e==`object`?Xi(e):e??``}var Qi=[...`
|
|
3
|
-
\r\f\xA0\v`];function $i(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Qi.includes(r[o-1]))&&(s===r.length||Qi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function ea(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function ta(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function na(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(ta)),i&&c.push(...Object.keys(i).map(ta));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=ta(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=ea(r)),i&&(n+=ea(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function ra(e,t,n,r,i,a){var o=e[he];if(w||o!==n||o===void 0){var s=$i(n,r,a);(!w||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[he]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function ia(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function aa(e,t,n,r){var i=e[ge];if(w||i!==t){var a=na(t,r);(!w||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ge]=t}else r&&(Array.isArray(r)?(ia(e,n?.[0],r[0]),ia(e,n?.[1],r[1],`important`)):ia(e,n,r));return r}function oa(e,t,r=!1){if(e.multiple){if(t==null)return;if(!n(t))return Ke();for(var i of e.options)i.selected=t.includes(la(i));return}for(i of e.options)if(In(la(i),t)){i.selected=!0;return}(!r||t!==void 0)&&(e.selectedIndex=-1)}function sa(e){var t=new MutationObserver(()=>{oa(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),ir(()=>{t.disconnect()})}function ca(e,t,n=t){var r=new WeakSet,i=!0;er(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),la);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&la(o)}n(a),e.__value=a,M!==null&&r.add(M)}),lr(()=>{var a=t();if(e===document.activeElement){var o=O?zt:M;if(r.has(o))return}if(oa(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=la(s),n(a))}e.__value=a,i=!1}),sa(e)}function la(e){return`__value`in e?e.__value:e.value}var ua=Symbol(`is custom element`),da=Symbol(`is html`),fa=be?`link`:`LINK`,pa=be?`progress`:`PROGRESS`;function ma(e){if(w){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;va(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;va(e,`checked`,null),e.checked=r}}};e[ve]=n,A(n),Qn()}}function ha(e,t){var n=ya(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==pa)||(e.value=t??``)}function ga(e,t){var n=ya(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function _a(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function va(e,t,n,r){var i=ya(e);w&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===fa)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[pe]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&xa(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ya(e){return e[me]??={[ua]:e.nodeName.includes(`-`),[da]:e.namespaceURI===He}}var ba=new Map;function xa(e){var t=e.getAttribute(`is`)||e.nodeName,n=ba.get(t);if(n)return n;ba.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function Sa(e,t,n=t){var r=new WeakSet;er(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ca(e)?wa(a):a,n(a),M!==null&&r.add(M),await Vr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(w&&e.defaultValue!==e.value||Q(t)==null&&e.value)&&(n(Ca(e)?wa(e.value):e.value),M!==null&&r.add(M)),dr(()=>{var n=t();if(e===document.activeElement){var i=O?zt:M;if(r.has(i))return}Ca(e)&&n===wa(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Ca(e){var t=e.type;return t===`number`||t===`range`}function wa(e){return e===``?null:+e}function Ta(e,t){return e===t||e?.[de]===t}function Ea(e={},t,n,r){var i=k.r,a=G;return lr(()=>{var o,s;return dr(()=>{o=s,s=r?.()||[],Q(()=>{Ta(n(...s),e)||(t(e,...s),o&&Ta(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ta(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Da(e=!1){let t=k,n=t.l.u;if(!n)return;let r=()=>Gr(t.s);if(e){let e=0,n={},i=pn(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>Z(i)}n.b.length&&sr(()=>{Oa(t,r),g(n.b)}),ar(()=>{let e=Q(()=>n.m.map(h));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&ar(()=>{Oa(t,r),g(n.a)})}function Oa(e,t){if(e.l.s)for(let t of e.l.s)Z(t);t()}function ka(e,t,n,r){var i=!nt||(n&2)!=0,a=(n&8)!=0,o=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>o&&i?(u??=pn(r),Z(u)):(l&&(l=!1,c=o?Q(r):r),c);let f;if(a){var p=de in e||fe in e;f=s(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=It(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Fe(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?pn:_n)(()=>(v=!1,g()));a&&Z(y);var b=G;return(function(e,t){if(arguments.length>0){let n=t?Z(y):i&&a?Pn(e):e;return F(y,n),v=!0,c!==void 0&&(c=n),e}return Er&&v||b.f&16384?y.v:Z(y)})}function Aa(e){return class extends ja{constructor(t){super({component:e,...t})}}}var ja=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=kn(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Z(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===fe?!0:(Z(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return F(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?gi:hi)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),!O&&(!e?.props?.$$host||e.sync===!1)&&Jt(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e===`$set`||e===`$destroy`||e===`$on`||o(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{bi(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function Ma(e,t){if(O||xe(`hydratable`),w){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);We(e)}return t()}var Na=t({afterUpdate:()=>Ba,beforeUpdate:()=>za,createContext:()=>ct,createEventDispatcher:()=>Ra,createRawSnippet:()=>Ii,flushSync:()=>Jt,fork:()=>rn,getAbortSignal:()=>Pa,getAllContexts:()=>ft,getContext:()=>lt,hasContext:()=>dt,hydratable:()=>Ma,hydrate:()=>gi,mount:()=>hi,onDestroy:()=>Ia,onMount:()=>Fa,setContext:()=>ut,settled:()=>Hr,tick:()=>Vr,unmount:()=>bi,untrack:()=>Q});function Pa(){return H===null&&Me(),(H.ac??=new AbortController).signal}function Fa(e){k===null&&Se(`onMount`),nt&&k.l!==null?Va(k).m.push(e):ar(()=>{let t=Q(e);if(typeof t==`function`)return t})}function Ia(e){k===null&&Se(`onDestroy`),Fa(()=>()=>Q(e))}function La(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Ra(){let e=k;return e===null&&Se(`createEventDispatcher`),(t,r,i)=>{let a=e.s.$$events?.[t];if(a){let o=n(a)?a.slice():[a],s=La(t,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function za(e){k===null&&Se(`beforeUpdate`),k.l===null&&Pe(`beforeUpdate`),Va(k).b.push(e)}function Ba(e){k===null&&Se(`afterUpdate`),k.l===null&&Pe(`afterUpdate`),Va(k).a.push(e)}function Va(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{On as $,di as A,Q as B,Fi as C,Si as D,wi as E,ei as F,Xn as G,fr as H,$r as I,Un as J,Rn as K,Z as L,li as M,ui as N,mi as O,ti as P,F as Q,Hr as R,Li as S,Ti as T,ar as U,lr as V,sr as W,Gn as X,Wn as Y,Pn as Z,aa as _,ka as a,lt as at,Ji as b,Sa as c,ut as ct,ga as d,Xe as dt,_n as et,_a as f,Ye as ft,oa as g,sa as h,Aa as i,kt as it,si as j,fi as k,ma as l,at as lt,ca as m,Ia as n,Ft as nt,Da as o,mt as ot,ha as p,t as pt,Ln as q,Fa as r,Pt as rt,Ea as s,pt as st,Na as t,gn as tt,va as u,rt as ut,ra as v,ki as w,Ki as x,Zi as y,Vr as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,F as n,H as r,I as i,J as a,L as o,N as s,O as c,P as l,Q as u,U as d,X as f,Y as p,a as m,c as h,ft as g,j as _,k as v,l as y,m as b,n as x,ot as S,p as C,q as w,r as T,s as E,st as D,tt as O,u as k,w as A,z as j}from"./DF6QYH3p.js";import{t as M}from"./BxAqshUk.js";import"./xihTtKlq.js";import{at as N,dt as P,ft as ee,gt as te,it as ne,mt as re,nt as ie,t as F,tt as ae}from"./C0OSZ2OV.js";import{t as oe}from"./DsHardz9.js";import"./BZCGqXF-.js";import{t as I}from"./DayeafKd.js";import{t as L}from"./nx-Rqoe9.js";import{t as se}from"./B5jHfatx.js";import{r as ce,t as R}from"./BpZHquM3.js";import{t as le}from"./Dhqg7r_2.js";import{a as ue,i as de,r as fe,s as pe}from"./DZ7_iXX8.js";import{t as me}from"./lYfEZr7V.js";import{t as he}from"./CiC9AlkQ.js";var z=_(`<a class="block"><p class="line-clamp-3 text-sm leading-6 text-slate-600"> </p></a>`),B=_(`<p class="text-sm leading-6 text-slate-500">No description yet. Add a note so collaborators know what belongs here.</p>`),ge=_(`<article data-tour="project-card" class="group relative flex h-full min-h-52 flex-col justify-between overflow-hidden rounded-xl border border-cyan-100 bg-white p-5 shadow-sm shadow-cyan-950/5 transition duration-150 hover:-translate-y-0.5 hover:border-cyan-200 hover:bg-cyan-50/20 hover:shadow-md hover:shadow-cyan-950/10 focus-within:border-cyan-300"><div class="absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-500 via-brand-mint to-violet-400"></div> <div class="space-y-3"><div class="flex items-start justify-between gap-3"><a class="block min-w-0 flex-1"><h3 class="truncate text-base font-semibold text-slate-950 group-hover:text-brand-800"> </h3></a> <span class="shrink-0 rounded-md border border-cyan-100 bg-cyan-50 px-2 py-0.5 text-xs font-medium text-brand-800" title="Features in project"> </span></div> <!></div> <div class="mt-5 flex items-end justify-between gap-3 border-t border-hairline pt-3 text-xs text-slate-500"><div class="min-w-0 flex-1 space-y-2"><!> <span class="block truncate"> </span></div> <div class="flex shrink-0 items-center gap-1"><button type="button" class="rounded px-2 py-1 text-slate-400 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100 hover:bg-red-50 hover:text-red-600"> </button></div></div></article>`);function _e(e,i){D(i,!0);let o=m(i,`tagTypeOptions`,19,()=>[]),s=m(i,`deleteLabel`,3,`Delete`);function l(){L.openProject(String(i.summary.id))}var u=ge(),d=f(a(u),2),p=a(d),h=a(p),_=a(h),y=a(_,!0);g(_),g(h);var b=f(h,2),x=a(b);g(b),g(p);var C=f(p,2),w=e=>{var t=z(),o=a(t),s=a(o,!0);g(o),g(t),r(()=>{k(t,`href`,`/projects/${i.summary.id}`),c(s,i.summary.description)}),n(`click`,t,l),v(e,t)},T=e=>{v(e,B())};t(C,e=>{i.summary.description?e(w):e(T,-1)}),g(d);var E=f(d,2),O=a(E),A=a(O);R(A,{get tags(){return i.summary.tags},get onAddTag(){return i.onAddTag},get onRemoveTag(){return i.onRemoveTag},get typeOptions(){return o()}});var j=f(A,2),M=a(j);g(j),g(O);var N=f(O,2),P=a(N),ee=a(P,!0);g(P),g(N),g(E),g(u),r(e=>{k(h,`href`,`/projects/${i.summary.id}`),c(y,i.summary.name),c(x,`${i.summary.featureCount??``} feature${i.summary.featureCount===1?``:`s`}`),c(M,`Updated ${e??``}`),c(ee,s())},[()=>new Date(i.summary.updatedAt).toLocaleDateString()]),n(`click`,h,l),n(`click`,P,function(...e){i.onDelete?.apply(this,e)}),v(e,u),S()}l([`click`]);var ve=_(`<form data-tour="new-project-form" class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.6fr_auto] md:items-end"><div><label for="proj-name" class="mb-1.5 block text-xs font-medium text-slate-700">Project name</label> <input id="proj-name" type="text" placeholder="e.g. Acme Platform" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="proj-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="proj-desc" data-tour="new-project-description" type="text" placeholder="What product or initiative does this group?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function ye(t,n){D(n,!0);let s=e(``),l=e(``),p=e(!1),m=e(null),_=O(()=>le(I.currentStep,`new-project`,o(s)));d(()=>{o(m)&&j().then(()=>o(m)?.focus())});async function b(e){if(e.preventDefault(),!o(p)&&o(s).trim().length!==0&&o(l).trim().length!==0){u(p,!0);try{await n.onSubmit(o(s).trim(),o(l).trim()),u(s,``),u(l,``)}finally{u(p,!1)}}}var x=ve(),C=a(x),w=f(a(C),2);y(w),E(w,e=>u(m,e),()=>o(m)),g(C);var T=f(C,2),A=f(a(T),2);y(A),g(T);var M=f(T,2),N=a(M,!0);g(M),g(x),r(e=>{k(M,`title`,o(_).blocked?`Tutorial: name must be exactly "${o(_).requiredValue}"`:void 0),M.disabled=e,c(N,o(p)?`Creating...`:`New project`)},[()=>o(p)||o(s).trim().length===0||o(l).trim().length===0||o(_).blocked]),i(`submit`,x,b),h(w,()=>o(s),e=>u(s,e)),h(A,()=>o(l),e=>u(l,e)),v(t,x),S()}var be=_(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),xe=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading projects...</div>`),Se=_(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Ce=_(`<div class="space-y-3"><p>No projects yet.</p> <button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first project</button></div>`),we=_(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),Te=_(`<li><!></li>`),Ee=_(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),De=_(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-project-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-project-title" class="text-base font-semibold text-slate-950">New project</h2> <p class="mt-1 text-sm text-slate-500">Create a project for related behavior models.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),Oe=_(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="flex items-center justify-between gap-3"><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Home</p> <button type="button" class="inline-flex items-center gap-1.5 rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 transition hover:border-brand-300 hover:bg-cyan-50 hover:text-brand-800 disabled:opacity-50" title="Restore a project from a .unspa file"><span aria-hidden="true">⬆</span> </button> <input type="file" accept=".unspa,application/octet-stream,application/json" class="hidden"/></div> <div class="mt-2 max-w-3xl"><h1 class="text-4xl font-semibold tracking-tight text-slate-950">Projects</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Group related behavior models and inspect their resources, data, events, and transitions together.</p></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="project-search" class="sr-only">Search projects</label> <input id="project-search" type="search" placeholder="Search projects..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Features</option></select></label> <button type="button" data-tour="new-project-button" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800"><span class="text-base leading-none" aria-hidden="true">+</span> New project</button></div></div></header> <section aria-labelledby="projects-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="projects-list-title" class="text-base font-semibold text-slate-950">Your projects</h2> <p class="text-sm text-slate-500">Open a project to inspect the features it groups.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function ke(l,m){D(m,!0);let h=null,_=e(`all`),k=e(!1),j=e(!1),I=e(`updated`);T(()=>{L.refresh(),ce.refresh(),h=oe(e=>{(e.kind===`project`||e.kind===`feature`)&&L.refreshSilent()})}),x(()=>{h?.(),h=null});function R(e){let t=[...e.tags??[]];return e.customTag?.trim()&&t.push({type:e.customTagType?.trim()||`Tag`,value:e.customTag.trim()}),t}async function le(e,t){await M(`/projects/${await L.create(e,t)}`)}let z=e(!1),B=e(null);function ge(){o(z)||o(B)?.click()}async function ve(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){u(z,!0);try{let e=await de(n),t=await te({title:`Import .unspa file`,message:`Enter the passphrase used when "${n.name}" was exported. A wrong passphrase will not corrupt anything — the file just stays encrypted.`,inputLabel:`Passphrase`,password:!0,confirmLabel:`Import`,tone:`info`});if(t===null)return;let r=await fe(e,t);await L.refreshSilent(),await P({title:`Import complete`,message:`Restored project with ${r.featuresImported} feature(s) and ${r.statusesImported} implementation-status sidecar(s).`,tone:`success`}),await M(`/projects/${r.projectId}`)}catch(e){await P({title:`Import failed`,message:e instanceof ue?`That file is not a valid .unspa bundle: ${e.message}`:e instanceof pe?e.message:`Import failed: ${e.message}`,tone:`danger`})}finally{u(z,!1)}}}async function ke(e){L.stagePendingDelete(e);let t=L.summaries.find(t=>String(t.id)===String(e))?.name??`this project`,n=await F(),r=((await n.useCases.getProject(e))?.featureIds??[]).map(String),i=[];if(r.length===0){if(!await re({title:`Delete "${t}"?`,message:`This project has no linked features. Removing it cannot be undone.`,confirmLabel:`Delete project`,tone:`danger`})){L.clearPendingDelete();return}}else{let e=await Promise.all(r.map(async e=>({id:e,label:(await n.useCases.getFeatureCard(e))?.name??e,defaultChecked:!0}))),a=await ee({title:`Delete "${t}"?`,message:`This project links to ${r.length} feature${r.length===1?``:`s`}. Tick the ones you want to delete in the same batch. Anything left unchecked stays available as an unassigned feature.`,items:e,confirmLabel:`Delete project + selected`,cancelLabel:`Cancel`,tone:`danger`});if(!a.confirmed){L.clearPendingDelete();return}i=a.selectedIds}for(let e of i)await n.useCases.deleteFeature(e);await L.remove(e),i.length>0&&await se.refreshSilent()}function Ae(e){e.key===`Escape`&&u(k,!1)}let V=O(()=>(L.search.trim().length===0?[...L.summaries]:L.summaries.filter(e=>{let t=L.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)})).filter(e=>je(e,o(_))).sort((e,t)=>o(I)===`name`?e.name.localeCompare(t.name):o(I)===`count`?t.featureCount-e.featureCount:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()));function je(e,t){let n=R(e);if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=N(t);return n.some(e=>N(e)===r)}let H=O(()=>{let e=[];for(let t of L.summaries)for(let n of R(t))e.push(n);return e});d(()=>{ce.registerTypes(o(H).map(e=>e.type))});let Me=O(()=>[...new Set(o(H).map(e=>ie(e.type)))].sort((e,t)=>e.localeCompare(t)));function Ne(e){return L.summaries.filter(t=>je(t,e)).length}async function Pe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);i&&(await r.useCases.saveProject({...i,tags:ae(R(i),{type:t,value:n})}),await L.refreshSilent())}async function Fe(e,t,n){let r=await F(),i=await r.useCases.getProject(e);if(!i)return;let a=ne(R(i),{type:t,value:n});await r.useCases.saveProject({...i,tags:a,customTagType:void 0,customTag:void 0}),o(_)!==`all`&&o(_)!==`untagged`&&N(o(_))===N({type:t,value:n})&&u(_,`all`),await L.refreshSilent()}var Ie=Oe();i(`keydown`,w,Ae);var U=p(Ie),W=a(U),G=a(W),K=f(a(G),2),Le=f(a(K));g(K);var Re=f(K,2);E(Re,e=>u(B,e),()=>o(B)),g(G);var ze=f(G,4),q=a(ze),J=f(a(q),2);y(J);var Be=f(J,2),Ve=e=>{var t=be();n(`click`,t,()=>L.setSearch(``)),v(e,t)},He=O(()=>L.search.trim().length>0);t(Be,e=>{o(He)&&e(Ve)}),g(q);var Ue=f(q,2),We=a(Ue);me(We,{get tags(){return o(H)},get value(){return o(_)},onChange:e=>u(_,e,!0),onManage:()=>u(j,!0),countLabel:Ne});var Y=f(We,2),X=f(a(Y),2),Z=a(X);Z.value=Z.__value=`updated`;var Q=f(Z);Q.value=Q.__value=`name`;var Ge=f(Q);Ge.value=Ge.__value=`count`,g(X),g(Y);var Ke=f(Y,2);g(Ue),g(ze),g(W);var qe=f(W,2),$=a(qe),Je=f(a($),2),Ye=a(Je);g(Je),g($);var Xe=f($,2),Ze=e=>{v(e,xe())},Qe=e=>{var t=Se(),n=a(t,!0);g(t),r(()=>c(n,L.error)),v(e,t)},$e=e=>{var r=we(),i=a(r),o=e=>{var t=Ce(),r=f(a(t),2);g(t),n(`click`,r,()=>u(k,!0)),v(e,t)},c=e=>{v(e,s(`No projects match your search.`))};t(i,e=>{L.summaries.length===0?e(o):e(c,-1)}),g(r),v(e,r)},et=e=>{var t=Ee();A(t,21,()=>o(V),e=>e.id,(e,t)=>{var n=Te();_e(a(n),{get summary(){return o(t)},get tagTypeOptions(){return o(Me)},onAddTag:(e,n)=>Pe(o(t).id,e,n),onRemoveTag:(e,n)=>Fe(o(t).id,e,n),onDelete:()=>ke(o(t).id)}),g(n),v(e,n)}),g(t),v(e,t)};t(Xe,e=>{L.loading?e(Ze):L.error?e(Qe,1):o(V).length===0?e($e,2):e(et,-1)}),g(qe),g(U);var tt=f(U,2),nt=e=>{var t=De(),r=a(t),i=a(r),o=f(a(i),2);g(i);var s=f(i,2);ye(a(s),{onSubmit:le}),g(s),g(r),g(t),n(`click`,t,e=>{e.currentTarget===e.target&&u(k,!1)}),n(`click`,o,()=>u(k,!1)),v(e,t)};t(tt,e=>{o(k)&&e(nt)}),he(f(tt,2),{get open(){return o(j)},get tags(){return o(H)},onClose:()=>u(j,!1),onRenamed:()=>L.refreshSilent()}),r(()=>{K.disabled=o(z),c(Le,` ${o(z)?`Importing...`:`Import .unspa`}`),C(J,L.search),c(Ye,`${o(V).length??``} shown`)}),n(`click`,K,ge),n(`change`,Re,ve),n(`input`,J,e=>L.setSearch(e.target.value)),b(X,()=>o(I),e=>u(I,e)),n(`click`,Ke,()=>u(k,!0)),v(l,Ie),S()}l([`click`,`change`,`input`]);export{ke as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n,Z as r,lt as i,tt as a}from"./DF6QYH3p.js";import{ct as o,f as s,t as c}from"./C0OSZ2OV.js";import{n as l,r as u,t as d}from"./C8VYoO28.js";var f=new class{#e=e(!0);get loading(){return t(this.#e)}set loading(e){n(this.#e,e,!0)}#t=e(null);get feature(){return t(this.#t)}set feature(e){n(this.#t,e,!0)}#n=e(null);get error(){return t(this.#n)}set error(e){n(this.#n,e,!0)}#r=e(null);get saveError(){return t(this.#r)}set saveError(e){n(this.#r,e,!0)}#i=e(!1);get saving(){return t(this.#i)}set saving(e){n(this.#i,e,!0)}#a=e(r([]));get historyEntries(){return t(this.#a)}set historyEntries(e){n(this.#a,e,!0)}#o=e(-1);get historyCursor(){return t(this.#o)}set historyCursor(e){n(this.#o,e,!0)}#s=a(()=>this.historyCursor>0);get canUndo(){return t(this.#s)}set canUndo(e){n(this.#s,e)}#c=a(()=>this.historyCursor>=0&&this.historyCursor<this.historyEntries.length-1);get canRedo(){return t(this.#c)}set canRedo(e){n(this.#c,e)}currentId=null;client=null;clientUnsubscribe=null;historyUnsubscribe=null;async load(e){try{this.loading=!0,this.error=null,this.currentId=e;let t=await(await c()).useCases.getFeature(e);this.feature=t,this.subscribeRoom(e)}catch(e){this.error=e.message}finally{this.loading=!1}}async mutate(e){if(!this.feature||!this.currentId)return;let t=i(this.feature),n=e(t),r=n===t?t:d(n);if(this.applyNext(r),this.client){this.saving=!0,this.saveError=null;try{this.client.setSnapshot(r),o(`feature.saved`,{id:String(r.id),name:r.name})}catch(e){e instanceof s&&e.errors.length>0?this.saveError=`${e.message}\n• ${e.errors.join(`
|
|
2
|
-
• `)}`:this.saveError=e.message}finally{this.saving=!1}}}dismissSaveError(){this.saveError=null}reset(){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.historyUnsubscribe&&=(this.historyUnsubscribe(),null),this.client=null,this.currentId=null,this.feature=null,this.error=null,this.saveError=null,this.loading=!0,this.saving=!1,this.historyEntries=[],this.historyCursor=-1}undo(){this.client?.undo()}redo(){this.client?.redo()}jumpToHistory(e){this.client?.jumpTo(e)}clearHistory(){this.client?.clearHistory()}subscribeRoom(e){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.historyUnsubscribe&&=(this.historyUnsubscribe(),null);let t=u(`feature`,e);this.client=t,this.clientUnsubscribe=t.observe((t,n)=>{n!==`local`&&t&&this.currentId===e&&this.applyNext(t)}),this.historyEntries=t.history.entries,this.historyCursor=t.history.cursor,this.historyUnsubscribe=t.observeHistory(t=>{this.currentId===e&&(this.historyEntries=t.entries,this.historyCursor=t.cursor)})}applyNext(e){if(!this.feature){this.feature=e;return}l(this.feature,e)}};export{f as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n}from"./DF6QYH3p.js";import{lt as r}from"./C0OSZ2OV.js";var i=new class{events;#e=e(null);get tour(){return t(this.#e)}set tour(e){n(this.#e,e,!0)}#t=e(0);get stepIndex(){return t(this.#t)}set stepIndex(e){n(this.#t,e,!0)}eventUnsubscribe=null;constructor(e){this.events=e}get currentStep(){return this.tour?this.tour.steps[this.stepIndex]??null:null}get isActive(){return this.tour!==null}get totalSteps(){return this.tour?.steps.length??0}start(e){this.tour=e,this.stepIndex=0,this.rewireEventTrigger()}next(){if(!this.tour)return;let e=this.tour.steps.length-1;if(this.stepIndex>=e){this.complete();return}this.stepIndex+=1,this.rewireEventTrigger()}previous(){!this.tour||this.stepIndex<=0||(--this.stepIndex,this.rewireEventTrigger())}cancel(){this.teardown()}complete(){this.teardown()}teardown(){this.eventUnsubscribe?.(),this.eventUnsubscribe=null,this.tour=null,this.stepIndex=0}rewireEventTrigger(){this.eventUnsubscribe?.(),this.eventUnsubscribe=null;let e=this.currentStep;if(!e||e.advance.kind!==`event`)return;let t=e.advance.event,n=e.advance.match;this.eventUnsubscribe=this.events.subscribe(e=>{e.name===t&&(n&&!n(e.payload)||this.next())})}}(new class{subscribe(e){return r(t=>{e(t.payload?{name:t.name,payload:t.payload}:{name:t.name})})}});export{i as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a ��Y-7�m�6�œW`��džQl�<����ē����{lKZ��Q� oi���3q銾"R
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ut as e}from"./DF6QYH3p.js";e();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
�import{ut as e}from"./DF6QYH3p.js";e();
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,F as t,H as n,J as r,L as i,O as a,P as o,X as s,_ as c,ft as l,g as u,h as d,j as f,k as p,ot as m,st as h,tt as g,u as _,w as v}from"./DF6QYH3p.js";import"./xihTtKlq.js";import{at as y,nt as b}from"./C0OSZ2OV.js";import{n as x,r as S}from"./BpZHquM3.js";var C=f(`<option> </option>`),w=f(`<optgroup></optgroup>`),T=f(`<button type="button" class="ml-0 max-w-0 overflow-hidden whitespace-nowrap rounded px-0 py-1 text-xs font-medium text-slate-500 opacity-0 transition-all duration-200 delay-0 ease-out group-hover/tagfilter:ml-1 group-hover/tagfilter:max-w-24 group-hover/tagfilter:px-2 group-hover/tagfilter:opacity-100 group-hover/tagfilter:delay-300 group-focus-within/tagfilter:ml-1 group-focus-within/tagfilter:max-w-24 group-focus-within/tagfilter:px-2 group-focus-within/tagfilter:opacity-100 group-focus-within/tagfilter:delay-300 hover:bg-slate-100 hover:text-slate-900" title="Rename tags or set colors">Manage</button>`),E=f(`<label class="group/tagfilter flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Tag</span> <!> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none" aria-label="Filter by tag"><option> </option><option> </option><!></select> <!></label>`);function D(o,f){h(f,!0);let D=g(()=>{let e=new Map;for(let t of f.tags){let n=t.type.trim().toLowerCase();if(!n)continue;let r=e.get(n);r?r.tags.some(e=>y(e)===y(t))||r.tags.push(t):e.set(n,{typeKey:n,display:b(n),tags:[t]})}return[...e.values()].sort((e,t)=>e.display.localeCompare(t.display)).map(e=>({...e,tags:[...e.tags].sort((e,t)=>e.value.localeCompare(t.value))}))}),O=g(()=>i(D).flatMap(e=>e.tags)),k=`__all__`,A=`__untagged__`,j=g(()=>f.value===`all`?k:f.value===`untagged`?A:y(f.value));function M(e){let t=e.target.value;if(t===k){f.onChange(`all`);return}if(t===A){f.onChange(`untagged`);return}let n=i(O).find(e=>y(e)===t);n&&f.onChange({type:n.type,value:n.value})}let N=g(()=>f.value!==`all`&&f.value!==`untagged`?S.colorFor(f.value.type):null),P=g(()=>f.value!==`all`&&f.value!==`untagged`),F=g(()=>f.countLabel?.(`all`)),I=g(()=>f.countLabel?.(`untagged`));var L=E(),R=s(r(L),2),z=e=>{x(e,{get color(){return i(N)},size:2})};e(R,e=>{i(P)&&e(z)});var B=s(R,2),V=r(B),H=r(V);l(V),V.value=V.__value=k;var U=s(V),W=r(U);l(U),U.value=U.__value=A,v(s(U),17,()=>i(D),e=>e.typeKey,(e,t)=>{let o=g(()=>S.colorFor(i(t).typeKey));var s=w();v(s,21,()=>i(t).tags,e=>y(e),(e,t)=>{let s=g(()=>f.countLabel?.({type:i(t).type,value:i(t).value}));var u=C(),d=r(u);l(u);var m={};n((e,t)=>{c(u,i(o)?`background-color: color-mix(in srgb, ${i(o)} 12%, white);`:void 0),a(d,`${e??``}${i(s)===void 0?``:` (${i(s)})`}`),m!==(m=t)&&(u.value=(u.__value=t)??``)},[()=>b(i(t).value),()=>y(i(t))]),p(e,u)}),l(s),n(()=>{_(s,`label`,i(t).display),c(s,i(o)?`background-color: color-mix(in srgb, ${i(o)} 28%, white);`:void 0)}),p(e,s)}),l(B);var G;d(B);var K=s(B,2),q=e=>{var n=T();t(`click`,n,function(...e){f.onManage?.apply(this,e)}),p(e,n)};e(K,e=>{f.onManage&&e(q)}),l(L),n(()=>{a(H,`All${i(F)===void 0?``:` (${i(F)})`}`),a(W,`Untagged${i(I)===void 0?``:` (${i(I)})`}`),G!==(G=i(j))&&(B.value=(B.__value=i(j))??``,u(B,i(j)))}),t(`change`,B,M),p(o,L),m()}o([`change`,`click`]);export{D as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,L as t,Q as n,Z as r}from"./DF6QYH3p.js";import{ct as i,t as a}from"./C0OSZ2OV.js";var o=`Unknown`,s=new class{#e=e(!0);get loading(){return t(this.#e)}set loading(e){n(this.#e,e,!0)}#t=e(r([]));get summaries(){return t(this.#t)}set summaries(e){n(this.#t,e,!0)}#n=e(``);get search(){return t(this.#n)}set search(e){n(this.#n,e,!0)}#r=e(null);get pendingDeleteId(){return t(this.#r)}set pendingDeleteId(e){n(this.#r,e,!0)}#i=e(``);get selectedProjectId(){return t(this.#i)}set selectedProjectId(e){n(this.#i,e,!0)}#a=e(null);get error(){return t(this.#a)}set error(e){n(this.#a,e,!0)}async refresh(){try{this.loading=!0,this.error=null;let e=await a();this.summaries=[...await e.useCases.listProjects()]}catch(e){this.error=e.message}finally{this.loading=!1}}async refreshSilent(){try{let e=await a();this.summaries=[...await e.useCases.listProjects()],this.error=null}catch(e){this.error=e.message}}setSearch(e){this.search=e,i(`project.search_updated`,{query:e})}setSelectedProject(e){this.selectedProjectId=e,e&&i(`project.opened`,{id:e})}openProject(e){return this.setSelectedProject(e),`/projects/${e}`}stagePendingDelete(e){this.pendingDeleteId=e,i(`project.delete_requested`,{id:e})}clearPendingDelete(){this.pendingDeleteId=null}async create(e,t){let n=await(await a()).useCases.createProject({name:e,description:t});return await this.refreshSilent(),i(`project.created`,{id:String(n.id),name:n.name}),n.id}async remove(e){this.summaries=this.summaries.filter(t=>String(t.id)!==String(e)),this.clearPendingDelete(),await(await a()).useCases.deleteProject(e),i(`project.deleted`,{id:String(e)})}async reconcileOrphanFeatures(){let e=await a(),t=await e.useCases.listFeatures();if(t.length===0)return;let n=await e.useCases.listProjects(),r=new Set;for(let t of n){let n=await e.useCases.getProject(t.id);if(n)for(let e of n.featureIds)r.add(String(e))}let i=t.filter(e=>!r.has(String(e.id)));if(i.length===0)return;let s=n.find(e=>e.name===o);if(!s){let t=await e.useCases.createProject({name:o,description:`Auto-created bucket. Holds features that are not assigned to any other project. Rename or reassign to clean it up.`});s={id:t.id,name:t.name,description:t.description,featureCount:0,createdAt:t.createdAt,updatedAt:t.updatedAt}}for(let t of i)await e.useCases.addFeatureToProject(s.id,t.id);await this.refreshSilent()}};export{s as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CrNDTsZU.js","../chunks/DF6QYH3p.js","../chunks/BxAqshUk.js","../chunks/BZCGqXF-.js","../chunks/C2XQCtR3.js","../chunks/CM5qK71w.js","../chunks/xihTtKlq.js","../chunks/Dvd8XBNO.js","../chunks/C0OSZ2OV.js","../chunks/nx-Rqoe9.js","../chunks/DayeafKd.js","../chunks/DsHardz9.js","../chunks/CKUA0lwj.js","../assets/0.BgNAkMzG.css","../nodes/1.DIhR9Se9.js","../nodes/2.Cxe9W2ys.js","../chunks/DGo7EzwK.js","../chunks/B5jHfatx.js","../chunks/DZ7_iXX8.js","../chunks/CiC9AlkQ.js","../chunks/BpZHquM3.js","../chunks/lYfEZr7V.js","../chunks/Dhqg7r_2.js","../chunks/BzLd0mTH.js","../nodes/3.Db_qGhZh.js","../chunks/8V0Jan-K.js","../chunks/BQQLoxQo.js","../chunks/BQ9GodWX.js","../nodes/4.CNlfoebz.js","../chunks/ByNzXSTs.js","../chunks/C8VYoO28.js","../chunks/BsIqn_3K2.js","../chunks/DOrHTzKX2.js","../nodes/5.52vWUOmx.js","../nodes/6.DEa_tOGv.js","../nodes/7.Bj0xztLC.js","../nodes/8.l6ZO_YE3.js","../assets/8.nv0I59TU.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{$ as e,A as t,D as n,H as r,J as i,L as a,N as o,O as s,Q as c,S as l,U as u,W as d,X as f,Y as p,a as m,ft as h,i as g,j as _,k as v,ot as y,r as b,s as x,st as S,tt as C,z as w}from"../chunks/DF6QYH3p.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=_(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=_(`<!> <!>`,1);function k(g,_){S(_,!0);let T=m(_,`components`,23,()=>[]),E=m(_,`data_0`,3,null),k=m(_,`data_1`,3,null);d(()=>_.stores.page.set(_.page)),u(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),_.stores.page.notify()});let A=e(!1),j=e(!1),M=e(null);b(()=>{let e=_.stores.page.subscribe(()=>{a(A)&&(c(j,!0),w().then(()=>{c(M,document.title||`untitled page`,!0)}))});return c(A,!0),e});let N=C(()=>_.constructors[1]);var P=O(),F=p(P),I=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,n)=>{x(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();l(p(r),()=>a(N),(e,t)=>{x(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),v(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)},L=e=>{let n=C(()=>_.constructors[0]);var r=t();l(p(r),()=>a(n),(e,t)=>{x(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),v(e,r)};n(F,e=>{_.constructors[1]?e(I):e(L,-1)});var R=f(F,2),z=e=>{var t=D(),c=i(t),l=e=>{var t=o();r(()=>s(t,a(M))),v(e,t)};n(c,e=>{a(j)&&e(l)}),h(t),v(e,t)};n(R,e=>{a(A)&&e(z)}),v(g,P),y()}var A=g(k),j=[()=>T(()=>import(`../nodes/0.CrNDTsZU.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]),import.meta.url),()=>T(()=>import(`../nodes/1.DIhR9Se9.js`),__vite__mapDeps([14,1,4,2,6]),import.meta.url),()=>T(()=>import(`../nodes/2.Cxe9W2ys.js`),__vite__mapDeps([15,1,6,7,16,2,3,8,17,9,18,19,20,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/3.Db_qGhZh.js`),__vite__mapDeps([24,1,2,3,6,8,17,9,25,20,26,27,19,21]),import.meta.url),()=>T(()=>import(`../nodes/4.CNlfoebz.js`),__vite__mapDeps([28,1,2,3,4,29,8,30,12,5,6,7,31,32,20,22,23,10,26]),import.meta.url),()=>T(()=>import(`../nodes/5.52vWUOmx.js`),__vite__mapDeps([33,1,6,8,31,17,9]),import.meta.url),()=>T(()=>import(`../nodes/6.DEa_tOGv.js`),__vite__mapDeps([34,1,6,7,16,2,3,8,17,9,18,19,20,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/7.Bj0xztLC.js`),__vite__mapDeps([35,1,2,3,29,8,30,12,5,6,7,17,9,25,20,26,18,21,22,23,10,11]),import.meta.url),()=>T(()=>import(`../nodes/8.l6ZO_YE3.js`),__vite__mapDeps([36,1,2,3,6,8,17,9,27,32,30,12,23,10,37]),import.meta.url)],M=[],N={"/":[2],"/features":[3],"/features/[id]":[4],"/mcp":[5],"/projects":[6],"/projects/[id]":[7],"/tutorial":[8]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,s as t}from"../chunks/BxAqshUk.js";export{t as load_css,e as start};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,C as n,D as r,E as i,F as a,H as o,I as s,J as c,L as l,M as u,O as d,P as f,Q as p,T as m,U as h,X as g,Y as _,Z as v,_ as y,c as b,d as x,dt as S,et as C,ft as w,j as T,k as E,l as D,o as O,ot as k,pt as A,q as j,r as M,s as ee,st as N,tt as P,u as F,v as I,w as L,x as R}from"../chunks/DF6QYH3p.js";import{t as z}from"../chunks/BxAqshUk.js";import"../chunks/xihTtKlq.js";import{t as B}from"../chunks/C2XQCtR3.js";import{i as V,n as H,r as U,t as W}from"../chunks/CM5qK71w.js";import{gt as te,ht as G,mt as K,ut as q}from"../chunks/C0OSZ2OV.js";import"../chunks/Dvd8XBNO.js";import{t as J}from"../chunks/DsHardz9.js";import"../chunks/BZCGqXF-.js";import{t as Y}from"../chunks/DayeafKd.js";import{t as ne}from"../chunks/nx-Rqoe9.js";import{t as X}from"../chunks/CKUA0lwj.js";var Z=A({prerender:()=>!1,ssr:()=>!1,trailingSlash:()=>Q}),Q=`never`,re=T(`<span class="mt-1 block text-xs leading-relaxed opacity-80"> </span>`),ie=T(`<li class="flex"><button type="button"><span class="min-w-0 flex-1"><span class="block text-sm"> </span> <!></span> <span aria-hidden="true" class="shrink-0 text-base transition group-hover:translate-x-1">→</span></button></li>`),ae=T(`<div class="px-7 pt-2 pb-5"><ul class="flex max-h-80 flex-col gap-3 overflow-y-auto"></ul></div>`),oe=T(`<p class="mt-2 text-xs font-medium text-red-700"> </p>`),se=T(`<div class="px-7 pt-1 pb-4"><label class="block text-xs font-medium text-slate-700"> <input autocorrect="off" autocapitalize="off" spellcheck="false" class="mono mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/></label> <!></div>`),ce=T(`<span class="mt-0.5 block text-xs text-slate-500"> </span>`),le=T(`<li><label class="flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white"><input type="checkbox"/> <span class="min-w-0 flex-1"><span class="block text-sm font-medium text-slate-900"> </span> <!></span></label></li>`),ue=T(`<div class="border-t border-hairline px-6 py-3"><div class="mb-2 flex items-center justify-between"><span class="text-xs font-medium uppercase tracking-wide text-slate-500"> </span> <div class="flex gap-2 text-xs"><button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select all</button> <span class="text-slate-300">·</span> <button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select none</button></div></div> <ul class="max-h-72 space-y-1.5 overflow-y-auto rounded-lg border border-hairline bg-slate-50 p-2"></ul></div>`),de=T(`<button type="button"> </button>`),fe=T(`<button type="button" class="rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950"> </button>`),pe=T(`<button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm text-slate-700 transition hover:bg-slate-100"> </button> <button type="button"> </button>`,1),me=T(`<div class="fixed inset-0 z-100 flex items-center justify-center px-4" role="presentation"><button type="button" aria-label="Dismiss" class="absolute inset-0 bg-slate-950/40 backdrop-blur-sm"></button> <div role="dialog" aria-modal="true" aria-labelledby="app-dialog-title" aria-describedby="app-dialog-message"><div class="flex gap-4 px-7 pt-7 pb-5"><div> </div> <div class="min-w-0 flex-1 pt-1"><h2 id="app-dialog-title" class="text-lg leading-tight text-slate-950"> </h2> <p id="app-dialog-message" class="mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600"> </p></div></div> <!> <div class="flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3"><!></div></div></div>`);function he(n,i){N(i,!0);let u=P(()=>G.current),f=e(v(new Set)),m=e(``),y=e(null),C=e(null);h(()=>{l(u)?.kind===`checklist`?p(f,new Set(l(u).opts.items.filter(e=>e.defaultChecked).map(e=>e.id)),!0):p(f,new Set,!0),l(u)?.kind===`prompt`?(p(m,l(u).opts.defaultValue??``,!0),p(y,null),queueMicrotask(()=>l(C)?.focus())):(p(m,``),p(y,null))});function T(e){let t=new Set(l(f));t.has(e)?t.delete(e):t.add(e),p(f,t,!0)}function O(){l(u)?.kind===`checklist`&&p(f,new Set(l(u).opts.items.map(e=>e.id)),!0)}function A(){p(f,new Set,!0)}function M(){l(u)?.kind===`prompt`?G.resolvePrompt(null):G.resolveCurrent(!1)}function z(){if(l(u)?.kind===`checklist`)G.resolveCurrent(!0,Array.from(l(f)));else if(l(u)?.kind===`prompt`){let e=l(m),t=l(u).opts.validate?l(u).opts.validate(e):null;if(t){p(y,t,!0);return}G.resolvePrompt(e)}else G.resolveCurrent(!0)}function B(e){l(u)&&(e.key===`Escape`?(e.preventDefault(),M()):e.key===`Enter`&&l(u).kind!==`checklist`&&(e.preventDefault(),z()))}let U={default:{icon:`?`,iconBg:`bg-slate-100`,iconColor:`text-slate-700`,confirmBtn:`bg-slate-900 hover:bg-slate-800 text-white`,check:`accent-slate-700`},danger:{icon:`!`,iconBg:`bg-rose-50`,iconColor:`text-rose-600`,confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white`,check:`accent-rose-600`},info:{icon:`i`,iconBg:`bg-brand-50`,iconColor:`text-brand-700`,confirmBtn:`bg-brand-700 hover:bg-brand-600 text-white`,check:`accent-brand-700`},success:{icon:`✓`,iconBg:`bg-emerald-50`,iconColor:`text-emerald-600`,confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white`,check:`accent-emerald-600`},warning:{icon:`!`,iconBg:`bg-amber-50`,iconColor:`text-amber-600`,confirmBtn:`bg-amber-600 hover:bg-amber-500 text-white`,check:`accent-amber-600`}},te=P(()=>l(u)?.opts.tone??(l(u)?.kind===`alert`?`info`:`default`)),K=P(()=>U[l(te)]);var q=t();s(`keydown`,j,B);var J=_(q),Y=e=>{var t=me(),n=c(t),i=g(n,2),s=c(i),h=c(s),v=c(h,!0);w(h);var k=g(h,2),j=c(k),N=c(j,!0);w(j);var P=g(j,2),B=c(P,!0);w(P),w(k),w(s);var U=g(s,2),te=e=>{var t=ae(),n=c(t);L(n,21,()=>l(u).opts.options,e=>e.id,(e,t)=>{var n=ie(),i=c(n),s=c(i),u=c(s),f=c(u,!0);w(u);var p=g(u,2),m=e=>{var n=re(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(p,e=>{l(t).description&&e(m)}),w(s),S(2),w(i),w(n),o(()=>{I(i,1,`group flex w-full items-center justify-between gap-4 rounded-xl px-5 py-4 text-left shadow-sm shadow-slate-950/5 transition hover:shadow-md focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(f,l(t).label)}),a(`click`,i,()=>G.resolveChoice(l(t).id)),E(e,n)}),w(n),w(t),E(e,t)},q=e=>{var t=se(),n=c(t),i=c(n),s=g(i);D(s),ee(s,e=>p(C,e),()=>l(C)),w(n);var f=g(n,2),h=e=>{var t=oe(),n=c(t,!0);w(t),o(()=>d(n,l(y))),E(e,t)};r(f,e=>{l(y)&&e(h)}),w(t),o(()=>{d(i,`${l(u).opts.inputLabel??`Value`??``} `),F(s,`type`,l(u).opts.password?`password`:`text`),F(s,`autocomplete`,l(u).opts.password?`new-password`:`off`),F(s,`placeholder`,l(u).opts.placeholder??``)}),a(`input`,s,()=>p(y,null)),b(s,()=>l(m),e=>p(m,e)),E(e,t)},J=e=>{var t=ue(),n=c(t),i=c(n),s=c(i);w(i);var p=g(i,2),m=c(p),h=g(m,4);w(p),w(n);var _=g(n,2);L(_,21,()=>l(u).opts.items,e=>e.id,(e,t)=>{var n=le(),i=c(n),s=c(i);D(s);var u=g(s,2),p=c(u),m=c(p,!0);w(p);var h=g(p,2),_=e=>{var n=ce(),r=c(n,!0);w(n),o(()=>d(r,l(t).description)),E(e,n)};r(h,e=>{l(t).description&&e(_)}),w(u),w(i),w(n),o(e=>{I(s,1,`mt-0.5 h-4 w-4 rounded ${l(K).check}`),x(s,e),d(m,l(t).label)},[()=>l(f).has(l(t).id)]),a(`change`,s,()=>T(l(t).id)),E(e,n)}),w(_),w(t),o(()=>d(s,`${l(f).size??``} of ${l(u).opts.items.length??``} selected`)),a(`click`,m,O),a(`click`,h,A),E(e,t)};r(U,e=>{l(u).kind===`choice`?e(te):l(u).kind===`prompt`?e(q,1):l(u).kind===`checklist`&&e(J,2)});var Y=g(U,2),ne=c(Y),X=e=>{var t=de(),n=c(t,!0);w(t),o(()=>{I(t,1,`rounded-md px-4 py-2 text-sm transition ${l(K).confirmBtn}`),d(n,l(u).opts.buttonLabel??`OK`)}),a(`click`,t,M),E(e,t)},Z=e=>{var t=fe(),n=c(t,!0);w(t),o(()=>d(n,l(u).opts.cancelLabel??`Close`)),a(`click`,t,M),E(e,t)},Q=e=>{var t=pe(),n=_(t),r=c(n,!0);w(n);var i=g(n,2),s=c(i,!0);w(i),o(()=>{d(r,l(u).opts.cancelLabel??`Cancel`),I(i,1,`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${l(K).confirmBtn}`),d(s,l(u).opts.confirmLabel??`Confirm`)}),a(`click`,n,M),a(`click`,i,z),E(e,t)};r(ne,e=>{l(u).kind===`alert`?e(X):l(u).kind===`choice`?e(Z,1):e(Q,-1)}),w(Y),w(i),w(t),o(()=>{I(i,1,`relative w-full ${l(u).kind===`checklist`||l(u).kind===`choice`?`max-w-lg`:`max-w-md`} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`),I(h,1,`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${l(K).iconBg} ${l(K).iconColor}`),d(v,l(K).icon),d(N,l(u).opts.title),d(B,l(u).opts.message)}),a(`click`,n,M),R(3,i,()=>V,()=>({duration:140,start:.96,easing:W})),R(3,t,()=>H,()=>({duration:120,easing:W})),E(e,t)};r(J,e=>{l(u)&&e(Y)}),E(n,q),k()}f([`click`,`input`,`change`]);var ge=T(`<div class="untangler-sky svelte-dds6m1" aria-hidden="true"><div class="untangler svelte-dds6m1"><svg viewBox="0 0 240 110" role="img" class="svelte-dds6m1"><g class="tangle tangle-outline svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="tangle tangle-fill svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="clean clean-outline svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="clean clean-fill svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="glint svelte-dds6m1"><rect x="-18" y="18" width="14" height="78" rx="3" class="svelte-dds6m1"></rect></g></svg></div></div>`);function _e(n,i){N(i,!0);let a=[`arrowup`,`arrowup`,`arrowdown`,`arrowdown`,`arrowleft`,`arrowright`,`arrowleft`,`arrowright`,`b`,`a`],o=e(!1),c=``,u=0,d=null;function f(e){return e instanceof HTMLElement?e.isContentEditable?!0:!!e.closest(`input, textarea, select, [contenteditable='true']`):!1}function m(){p(o,!1),d&&clearTimeout(d),requestAnimationFrame(()=>{p(o,!0),d=setTimeout(()=>{p(o,!1)},5200)})}function g(e){return e===a[u]?(u+=1,u<a.length?!1:(u=0,!0)):(u=+(e===a[0]),!1)}function v(e){return e.length!==1||(c=(c+e).slice(-9),c!==`spaghetti`)?!1:(c=``,!0)}function y(e){if(f(e.target))return;let t=e.key.toLowerCase();(g(t)||v(t))&&m()}h(()=>()=>{d&&clearTimeout(d)});var b=t();s(`keydown`,j,y);var x=_(b),S=e=>{E(e,ge())};r(x,e=>{l(o)&&e(S)}),E(n,b),k()}var ve=4,ye=5e3,be=e=>{if(e.op!==`delete`)switch(e.kind){case`feature`:return`/features/${e.id}`;case`project`:return`/projects/${e.id}`;case`implementation-status`:return`/features/${e.id}`}},xe=800,$=new class{#e=e(v([]));get toasts(){return l(this.#e)}set toasts(e){p(this.#e,e,!0)}nextId=1;subscribed=!1;unsubscribe=null;timers=new Map;recentKeys=new Map;start(){this.subscribed||(this.subscribed=!0,this.unsubscribe=J(e=>this.handle(e)))}dismiss(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}reset(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.recentKeys.clear(),this.unsubscribe&&this.unsubscribe(),this.unsubscribe=null,this.subscribed=!1}handle(e){let t=`${e.kind}:${e.id}:${e.op??`save`}`,n=Date.now(),r=this.recentKeys.get(t);if(r!==void 0&&n-r<xe){this.recentKeys.set(t,n);return}this.recentKeys.set(t,n);let i=this.nextId++,a=[{id:i,kind:e.kind,entityId:e.id,name:e.name,projectName:e.projectName,op:e.op??`save`,changeOp:e.changeOp,changePath:e.changePath,previousName:e.previousName,actingFor:e.actingFor,...be(e)?{href:be(e)}:{}},...this.toasts].slice(0,ve),o=new Set(a.map(e=>e.id));for(let[e,t]of this.timers)o.has(e)||(clearTimeout(t),this.timers.delete(e));this.toasts=a;let s=setTimeout(()=>this.dismiss(i),ye);this.timers.set(i,s)}},Se=T(`<span class="rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800"> </span>`),Ce=T(`<span class="shrink-0 text-slate-400" aria-hidden="true">›</span>`),we=T(`<!> <span> </span>`,1),Te=T(`<div class="mt-0.5 truncate text-[11px] text-slate-500"> </div>`),Ee=T(`<a class="rounded-md bg-white/70 px-2 py-1 text-xs font-medium text-slate-700 hover:bg-white hover:text-brand-800">View</a>`),De=T(`<div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] font-semibold uppercase tracking-wide"><span class="text-slate-500"> </span> <!></div> <div class="mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900"></div> <!></div> <div class="flex shrink-0 items-center gap-1"><!> <button type="button" class="rounded-md px-1.5 py-1 text-xs text-slate-500 hover:bg-white/70 hover:text-slate-900" aria-label="Dismiss">✕</button></div></div>`),Oe=T(`<div class="pointer-events-none fixed top-20 right-4 z-50 flex w-full max-w-md flex-col gap-2" role="status" aria-live="polite"></div>`);function ke(e,n){N(n,!1),M(()=>{$.start()});function i(e){switch(e){case`feature`:return`feature`;case`project`:return`project`;case`implementation-status`:return`status`}}function s(e){switch(e){case`feature`:return`border-cyan-200 bg-cyan-50`;case`project`:return`border-violet-200 bg-violet-50`;case`implementation-status`:return`border-emerald-200 bg-emerald-50`}}function u(e){if(e.op===`delete`)return`deleted`;switch(e.changeOp){case`added`:return`added`;case`removed`:return`removed`;case`renamed`:return`renamed`;case`edited`:return`edited`;case`queued`:return`queued`;case`unqueued`:return`unqueued`;case`created`:return`created`;case`deleted`:return`deleted`;default:return`saved`}}function f(e){let t=[];e.projectName&&t.push(e.projectName);let n=e.changePath?.[0],r=n!==void 0&&(e.name===n||!e.name);if(e.name&&!r&&t.push(e.name),e.changePath&&e.changePath.length>0)for(let n of e.changePath)t.push(n);else e.name&&t[t.length-1]!==e.name&&t.push(e.name);let i=[];for(let e of t)e!==`unknown`&&i[i.length-1]!==e&&i.push(e);return i.length===0&&i.push(e.entityId),i}O();var p=t(),h=_(p),v=e=>{var t=Oe();L(t,5,()=>$.toasts,e=>e.id,(e,t)=>{let n=C(()=>f(l(t)));var p=De(),h=c(p),v=c(h),y=c(v),b=c(y);w(y);var x=g(y,2),S=e=>{var n=Se(),r=c(n);w(n),o(()=>d(r,`for ${l(t).actingFor??``}`)),E(e,n)};r(x,e=>{l(t).actingFor&&e(S)}),w(v);var T=g(v,2);L(T,5,()=>l(n),m,(e,t,i)=>{var a=we(),s=_(a),u=e=>{E(e,Ce())};r(s,e=>{i>0&&e(u)});var f=g(s,2),p=c(f,!0);w(f),o(()=>{I(f,1,`truncate ${i===l(n).length-1?`font-semibold`:`text-slate-600`}`),d(p,l(t))}),E(e,a)}),w(T);var D=g(T,2),O=e=>{var n=Te(),r=c(n);w(n),o(()=>d(r,`was “${l(t).previousName??``}”`)),E(e,n)};r(D,e=>{l(t).changeOp===`renamed`&&l(t).previousName&&e(O)}),w(h);var k=g(h,2),A=c(k),j=e=>{var n=Ee();o(()=>F(n,`href`,l(t).href)),a(`click`,n,()=>$.dismiss(l(t).id)),E(e,n)};r(A,e=>{l(t).href&&e(j)});var M=g(A,2);w(k),w(p),o((e,t,n)=>{I(p,1,`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${e??``}`),d(b,`MCP · ${t??``} ${n??``}`)},[()=>s(l(t).kind),()=>u(l(t)),()=>i(l(t).kind)]),a(`click`,M,()=>$.dismiss(l(t).id)),R(1,p,()=>U,()=>({x:24,duration:180,easing:W})),R(2,p,()=>H,()=>({duration:140})),E(e,p)}),w(t),E(e,t)};r(h,e=>{$.toasts.length>0&&e(v)}),E(e,p),k()}f([`click`]);var Ae=t=>{let n=e(null),r=e(null);if(!t)return{get element(){return l(n)},get rect(){return l(r)},dispose(){}};let i=null,a=e=>{p(r,e?e.getBoundingClientRect():null,!0)},o=()=>{let e=document.querySelector(t);e!==i&&(i=e,p(n,e,!0)),a(e)};o();let s=new MutationObserver(o);s.observe(document.body,{childList:!0,subtree:!0});let c=0,u=()=>{c||=requestAnimationFrame(()=>{c=0,i&&a(i)})},d=new ResizeObserver(u);i&&d.observe(i);let f=new MutationObserver(()=>{d.disconnect(),i&&d.observe(i)});f.observe(document.body,{childList:!0,subtree:!0});let m=()=>u(),h=()=>u();return window.addEventListener(`scroll`,m,!0),window.addEventListener(`resize`,h),{get element(){return l(n)},get rect(){return l(r)},dispose(){c&&cancelAnimationFrame(c),s.disconnect(),f.disconnect(),d.disconnect(),window.removeEventListener(`scroll`,m,!0),window.removeEventListener(`resize`,h)}}},je=(e,t)=>{let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))},Me=e=>{let t=[];for(let n of e){let e=document.querySelector(n.selector);if(!e){t.push(n);continue}e.value.length===0&&je(e,n.value)}return t},Ne=e=>{let t=new WeakSet,n=()=>{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()},r=new MutationObserver(r=>{if(!e.matches(`:popover-open`))return;let i=!1;for(let e of r){if(e.type!==`attributes`||e.attributeName!==`open`)continue;let n=e.target;n instanceof HTMLDialogElement&&(n.hasAttribute(`open`)?t.has(n)||(t.add(n),i=!0):t.delete(n))}i&&n()});return r.observe(document.body,{subtree:!0,attributes:!0,attributeFilter:[`open`]}),{dispose(){r.disconnect()}}},Pe=T(`<div class="mt-3 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-2 text-[11px] text-amber-900"><p class="mb-1.5 font-medium">First, head to the right page.</p> <button type="button" class="rounded-md bg-slate-900 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-slate-800"> </button></div>`),Fe=T(`<p class="mt-3 text-[10px] italic text-slate-500">Click the highlighted element to continue.</p>`),Ie=T(`<p class="mt-3 text-[10px] italic text-slate-500">Do the action above to continue.</p>`),Le=T(`<p class="mt-3 text-[10px] italic text-amber-700">Finish the action above first, then click Next.</p>`),Re=T(`<aside popover="manual" class="fixed z-1010 m-0 w-80 max-w-[calc(100vw-3rem)] rounded-xl border border-brand-200 bg-white p-4 shadow-2xl shadow-slate-950/20 transition-[top,left,bottom,right] duration-200" aria-label="Interactive tutorial"><header class="mb-2 flex items-start justify-between gap-3"><div class="min-w-0"><p class="text-[10px] font-semibold uppercase tracking-wide text-brand-700"> </p> <h3 class="mt-0.5 text-sm font-semibold text-slate-950"> </h3></div> <button type="button" class="rounded-md px-1.5 py-0.5 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700" aria-label="Exit tutorial" title="Exit tutorial">x</button></header> <p class="whitespace-pre-line text-xs leading-5 text-slate-700"> </p> <!> <footer class="mt-3 flex items-center justify-between gap-2"><button type="button" class="rounded-md p-1 text-slate-500 hover:bg-slate-100 hover:text-slate-800 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Previous step" title="Back">←</button> <button type="button" class="rounded-md border border-slate-300 bg-white px-2.5 py-1 text-[11px] font-medium text-slate-600 hover:bg-slate-50">Exit</button> <button type="button" class="rounded-md bg-brand-700 px-3 py-1 text-[11px] font-semibold text-white hover:bg-brand-800 disabled:cursor-not-allowed disabled:bg-slate-300"> </button></footer></aside>`);function ze(t,n){N(n,!0);let i=e(null);h(()=>{n.panelEl?.(l(i))});let s=P(()=>n.stepNumber===1),u=P(()=>n.stepNumber===n.totalSteps),f=P(()=>{switch(n.placement.kind){case`bottom-right`:return`bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;`;case`bottom-left`:return`bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;`;case`absolute`:return`top: ${n.placement.top}px; left: ${n.placement.left}px; bottom: auto; right: auto;`}});var m=Re(),_=c(m),v=c(_),b=c(v),x=c(b);w(b);var S=g(b,2),C=c(S,!0);w(S),w(v);var T=g(v,2);w(_);var D=g(_,2),O=c(D,!0);w(D);var A=g(D,2),j=e=>{var t=Pe(),r=g(c(t),2),i=c(r);w(r),w(t),o(()=>d(i,`${n.step.route.label??``} →`)),a(`click`,r,function(...e){n.onGoToRoute?.apply(this,e)}),E(e,t)},M=e=>{E(e,Fe())},I=e=>{E(e,Ie())},L=e=>{E(e,Le())};r(A,e=>{!n.onCorrectRoute&&n.step.route?e(j):n.step.advance.kind===`click`?e(M,1):n.step.advance.kind===`event`?e(I,2):n.step.advance.kind===`manual`&&!n.nextEnabled&&e(L,3)});var R=g(A,2),z=c(R),B=g(z,2),V=g(B,2),H=c(V);w(V),w(R),w(m),ee(m,e=>p(i,e),()=>l(i)),o(()=>{y(m,l(f)),d(x,`Tutorial · step ${n.stepNumber??``} of ${n.totalSteps??``}`),d(C,n.step.title),d(O,n.step.body),z.disabled=l(s),V.disabled=!n.nextEnabled,F(V,`title`,n.nextEnabled?l(u)?`Finish the tour`:`Next step`:`Finish the current action first`),d(H,`${l(u)?`Finish`:`Next`} →`)}),a(`click`,T,function(...e){n.onExit?.apply(this,e)}),a(`click`,z,function(...e){n.onPrev?.apply(this,e)}),a(`click`,B,function(...e){n.onExit?.apply(this,e)}),a(`click`,V,function(...e){n.onNext?.apply(this,e)}),E(t,m),k()}f([`click`]);var Be=T(`<div class="pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent" aria-hidden="true"></div>`),Ve=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 top-20 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll up to see highlighted element"><span aria-hidden="true">↑</span> <span>Highlight is above — click to scroll up</span></button>`,1),He=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 bottom-24 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll down to see highlighted element"><span>Highlight is below — click to scroll down</span> <span aria-hidden="true">↓</span></button>`,1),Ue=T(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div>`);function We(n,i){N(i,!0);let s=e(0);h(()=>{let e=()=>{p(s,window.innerHeight,!0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)});let c=P(()=>i.rect?{top:i.rect.top-10,left:i.rect.left-10,width:i.rect.width+20,height:i.rect.height+20}:null),u=P(()=>!i.rect||l(s)===0?null:i.rect.bottom<64?`above`:i.rect.top>l(s)?`below`:`visible`);var d=t(),f=_(d),m=e=>{var t=Be();o(()=>y(t,`top: ${l(c).top??``}px; left: ${l(c).left??``}px; width: ${l(c).width??``}px; height: ${l(c).height??``}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)),E(e,t)},v=e=>{var t=Ve();a(`click`,g(_(t),2),()=>window.scrollBy({top:-window.innerHeight*.7,behavior:`smooth`})),E(e,t)},b=e=>{var t=He();a(`click`,g(_(t),2),()=>window.scrollBy({top:window.innerHeight*.7,behavior:`smooth`})),E(e,t)},x=e=>{E(e,Ue())};r(f,e=>{l(c)&&l(u)===`visible`?e(m):l(c)&&l(u)===`above`?e(v,1):l(c)&&l(u)===`below`?e(b,2):e(x,-1)}),E(n,d),k()}f([`click`]);var Ge=T(`<!> <!>`,1);function Ke(n,i){N(i,!0);let a=P(()=>Y.currentStep),o=P(()=>l(a)?.route?B.url?.pathname===l(a).route.pathname:!0),s=e(null);h(()=>{let e=Ae(l(o)?l(a)?.target??null:null);return p(s,e,!0),()=>e.dispose()});let c=P(()=>l(s)?.rect??null),u=P(()=>{if(typeof window>`u`)return{kind:`bottom-right`};let e=l(a)?.panelPosition??`bottom-right`;if(e===`avoid-target`)return l(c)&&l(c).left+l(c).width/2>window.innerWidth/2?{kind:`bottom-left`}:{kind:`bottom-right`};if(e===`below-target`&&l(c)){let e=l(c).bottom+16;if(e+220>window.innerHeight-16)return{kind:`bottom-right`};let t=l(c).left+l(c).width/2-320/2;return{kind:`absolute`,top:e,left:Math.max(16,Math.min(t,window.innerWidth-320-16))}}return{kind:`bottom-right`}}),d=P(()=>!l(a)||l(a).advance.kind!==`manual`?!1:l(a).canAdvance?l(a).canAdvance():!0);h(()=>{let e=l(s)?.element;e&&e.scrollIntoView({behavior:`smooth`,block:`center`})}),h(()=>{let e=l(a);if(!e?.focusSelector||!l(o))return;let t=e.focusSelector,n=!1,r=0,i=()=>{if(n||r++>60)return;let e=document.querySelector(t);if(e){e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.select();return}requestAnimationFrame(i)};return requestAnimationFrame(i),()=>{n=!0}}),h(()=>{if(!l(a)?.lockScroll)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}),h(()=>{if(!l(a)?.target||Y.stepIndex===0)return;let e=!1,t=null,n=!1,r=setInterval(()=>{n||(l(s)?.element==null?e&&!t&&(t=setTimeout(()=>Y.previous(),500)):(e=!0,t&&=(clearTimeout(t),null)))},150);return()=>{n=!0,clearInterval(r),t&&clearTimeout(t)}}),h(()=>{let e=l(a);if(!e||e.advance.kind!==`click`)return;let t=e.advance.selector,n=e=>{let n=e.target;n instanceof Element&&n.closest(t)&&setTimeout(()=>Y.next(),0)};return document.addEventListener(`click`,n,!0),()=>document.removeEventListener(`click`,n,!0)}),h(()=>{let e=l(a);if(!e?.prefill||e.prefill.length===0||!l(o))return;let t=[...e.prefill],n=0,r=!1,i=()=>{r||(t=Me(t),t.length>0&&(n=requestAnimationFrame(i)))};return i(),()=>{r=!0,n&&cancelAnimationFrame(n)}});let f=e(null);h(()=>{l(f)&&(l(a)&&!l(f).matches(`:popover-open`)&&l(f).showPopover(),!l(a)&&l(f).matches(`:popover-open`)&&l(f).hidePopover())}),h(()=>{if(!l(f))return;let e=Ne(l(f));return()=>e.dispose()});function m(){l(a)?.route&&z(l(a).route.pathname)}var v=t(),y=_(v),b=e=>{var t=Ge(),n=_(t),i=e=>{We(e,{get rect(){return l(c)}})};r(n,e=>{l(o)&&e(i)});var s=g(n,2);{let e=P(()=>Y.stepIndex+1);ze(s,{get step(){return l(a)},get stepNumber(){return l(e)},get totalSteps(){return Y.totalSteps},get onCorrectRoute(){return l(o)},get placement(){return l(u)},get nextEnabled(){return l(d)},panelEl:e=>p(f,e,!0),onGoToRoute:m,onPrev:()=>Y.previous(),onNext:()=>Y.next(),onExit:()=>Y.cancel()})}E(e,t)};r(y,e=>{l(a)&&e(b)}),E(n,v),k()}var qe=T(`<a> </a>`),Je=T(`<span aria-hidden="true"> </span>`),Ye=u(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="8" r="3.5"></circle><path d="M5 20c1.2-3.6 4-5.5 7-5.5s5.8 1.9 7 5.5"></path></svg>`),Xe=T(`<p class="px-3 pt-2 pb-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400">Signed in as</p> <p class="truncate px-3 pb-2 text-sm font-medium text-slate-800"> </p> <div class="my-1 h-px bg-slate-100"></div>`,1),Ze=T(`<div role="menu" class="absolute right-0 top-12 z-40 w-60 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><!> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-slate-700 hover:bg-slate-50"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-slate-400" aria-hidden="true"><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 1 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg> <span class="min-w-0 flex-1"><span class="block font-medium"> </span> <span class="block text-[11px] text-slate-500">Shown on every history entry you create.</span></span></button> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-rose-700 hover:bg-rose-50 hover:text-rose-800"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-rose-500" aria-hidden="true"><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg> <span class="min-w-0 flex-1"><span class="block font-semibold">Reset local data</span> <span class="block text-[11px] text-rose-600/80">Wipes display name + browser settings. Projects on disk are kept.</span></span></button></div>`),Qe=T(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),$e=T(`<div class="flex min-h-full flex-col bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)] text-ink"><header class="sticky top-0 z-30 border-b border-slate-200 bg-white/95 backdrop-blur"><div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6"><a href="/" class="flex items-center gap-2"><img src="/unspaghettit_logo.png" alt="Unspaghettit" class="h-12 w-auto"/> <span class="relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block">Unspaghettit <span class="font-grotesk absolute right-0 -bottom-2 text-[10px] font-medium tracking-wide text-slate-500">by Lyriks.io</span></span></a> <div class="flex items-center gap-3"><nav aria-label="Primary" class="flex items-center rounded-lg border border-slate-200 bg-white p-1 text-sm font-medium text-slate-600 shadow-sm shadow-slate-950/5"></nav> <div class="relative"><button type="button" aria-haspopup="menu"><!> <span aria-hidden="true"></span></button> <!></div></div></div></header> <main class="flex-1"><!></main></div> <!> <!> <!> <!>`,1);function et(t,u){N(u,!0),M(async()=>{X.init(),q.init(),!X.name&&!X.hasBeenAsked&&(X.markAsked(),queueMicrotask(()=>{f()}));try{await ne.reconcileOrphanFeatures()}catch(e){console.warn(`Orphan reconciliation failed:`,e)}});async function f(){let e=await te({title:`Your display name`,message:`Shown on every history entry you create. Stored locally in this browser — never sent off-machine. Leave empty to stay anonymous.`,inputLabel:`Display name`,defaultValue:X.name,placeholder:`e.g. John`,confirmLabel:`Save`,tone:`info`});e!==null&&X.setName(e)}let h=P(()=>X.name.trim().charAt(0).toUpperCase()),v=e(!1),y=e(null);function b(e){if(!l(v))return;let t=l(y);t&&(t.contains(e.target)||p(v,!1))}async function x(){p(v,!1),await f()}async function C(){p(v,!1),await T()}async function T(){if(await K({title:`Reset local browser data?`,message:`Clears your display name, the dashboard's local preferences, and any cached per-tab state in this browser. Your projects, features, history, and queue stay on disk untouched. The page will reload to apply a fresh state.`,confirmLabel:`Reset everything`,cancelLabel:`Cancel`,tone:`danger`})){try{localStorage.clear()}catch{}try{sessionStorage.clear()}catch{}location.reload()}}let D=[{href:`/projects`,label:`Projects`,match:e=>e===`/`||e.startsWith(`/projects`)},{href:`/mcp`,label:`MCP`,match:e=>e.startsWith(`/mcp`)},{href:`/tutorial`,label:`Tutorial`,match:e=>e.startsWith(`/tutorial`)}],O=P(()=>B.url.pathname);var A=$e();s(`mousedown`,j,b),s(`keydown`,j,e=>{e.key===`Escape`&&l(v)&&p(v,!1)});var z=_(A),V=c(z),U=c(V),G=g(c(U),2),J=c(G);L(J,21,()=>D,m,(e,t)=>{let n=P(()=>l(t).match(B.url.pathname));var r=qe(),i=c(r,!0);w(r),o(e=>{F(r,`href`,l(t).href),F(r,`data-tour`,e),I(r,1,`rounded-md px-3 py-1.5 transition ${l(n)?`bg-slate-900 text-white`:`hover:bg-slate-100 hover:text-slate-950`}`),d(i,l(t).label)},[()=>`nav-${l(t).href.replace(/^\//,``)}`]),E(e,r)}),w(J);var Y=g(J,2),Z=c(Y),Q=c(Z),re=e=>{var t=Je(),n=c(t,!0);w(t),o(()=>d(n,l(h))),E(e,t)},ie=e=>{E(e,Ye())};r(Q,e=>{X.name?e(re):e(ie,-1)});var ae=g(Q,2);w(Z);var oe=g(Z,2),se=e=>{var t=Ze(),n=c(t),i=e=>{var t=Xe(),n=g(_(t),2),r=c(n,!0);w(n),S(2),o(()=>d(r,X.name)),E(e,t)};r(n,e=>{X.name&&e(i)});var s=g(n,2),l=g(c(s),2),u=c(l),f=c(u,!0);w(u),S(2),w(l),w(s);var p=g(s,2);w(t),o(()=>d(f,X.name?`Change display name`:`Set display name`)),a(`click`,s,x),a(`click`,p,C),E(e,t)};r(oe,e=>{l(v)&&e(se)}),w(Y),ee(Y,e=>p(y,e),()=>l(y)),w(G),w(U),w(V);var ce=g(V,2);i(c(ce),()=>l(O),e=>{var t=Qe();n(c(t),()=>u.children),w(t),R(1,t,()=>H,()=>({duration:160,easing:W})),E(e,t)}),w(ce),w(z);var le=g(z,2);he(le,{});var ue=g(le,2);_e(ue,{});var de=g(ue,2);ke(de,{}),Ke(g(de,2),{}),o(()=>{F(Z,`aria-expanded`,l(v)),F(Z,`aria-label`,X.name?`Signed in as ${X.name}. Open identity menu.`:`Set your display name`),F(Z,`title`,X.name?`Signed in as ${X.name}`:`Set a display name so your edits are recognisable in history`),I(Z,1,`group relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-sm font-semibold shadow-sm shadow-slate-950/5 ring-1 ring-transparent transition focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-300
|
|
2
|
-
${X.name?`bg-linear-to-br from-brand-600 to-brand-800 text-white hover:from-brand-500 hover:to-brand-700`:`border border-dashed border-slate-300 bg-white text-slate-400 hover:border-brand-400 hover:text-brand-700`}`),I(ae,1,`absolute -right-0.5 -bottom-0.5 inline-flex h-3 w-3 items-center justify-center rounded-full ring-2 ring-white
|
|
3
|
-
${X.name?`bg-emerald-500`:`bg-amber-400`}`)}),a(`click`,Z,()=>p(v,!l(v))),E(t,A),k()}f([`click`]);export{et as component,Z as universal};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{H as e,J as t,O as n,X as r,Y as i,ft as a,j as o,k as s,ot as c,st as l}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/C2XQCtR3.js";var d=o(`<h1> </h1> <p> </p>`,1);function f(o,f){l(f,!0);var p=d(),m=i(p),h=t(m,!0);a(m);var g=r(m,2),_=t(g,!0);a(g),e(()=>{n(h,u.status),n(_,u.error?.message)}),s(o,p),c()}export{f as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{K as e,V as t,b as n}from"../chunks/DF6QYH3p.js";import"../chunks/xihTtKlq.js";import"../chunks/Dvd8XBNO.js";import{t as r}from"../chunks/DGo7EzwK.js";function i(i){n(`1uha8ag`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,F as n,H as r,I as i,J as a,K as o,L as s,N as c,O as l,P as u,Q as d,U as f,V as p,X as m,Y as ee,Z as h,b as g,c as _,dt as v,ft as y,g as b,h as te,j as x,k as S,l as C,m as ne,ot as re,pt as ie,q as ae,r as oe,s as se,st as ce,tt as w,u as le,w as ue,z as de}from"../chunks/DF6QYH3p.js";import{c as T,t as fe}from"../chunks/BxAqshUk.js";import"../chunks/xihTtKlq.js";import{at as E,dt as D,mt as pe,nt as me,pt as he,r as ge,t as _e}from"../chunks/C0OSZ2OV.js";import"../chunks/BZCGqXF-.js";import{t as O}from"../chunks/nx-Rqoe9.js";import{t as k}from"../chunks/B5jHfatx.js";import{r as ve}from"../chunks/BpZHquM3.js";import{t as ye}from"../chunks/lYfEZr7V.js";import{t as be}from"../chunks/CiC9AlkQ.js";import{t as A}from"../chunks/BQ9GodWX.js";import{t as xe}from"../chunks/8V0Jan-K.js";function j(e,t){throw new T(e,t.toString())}var M=ie({load:()=>N}),N=()=>{throw j(307,`/projects`)},P=x(`<form class="grid gap-3 rounded-xl border border-cyan-100 bg-cyan-50/40 p-4 md:grid-cols-[1fr_1.4fr_auto] md:items-end"><div><label for="feature-name" class="mb-1.5 block text-xs font-medium text-slate-700">Feature name</label> <input id="feature-name" type="text" placeholder="e.g. Restaurant booking" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <div><label for="feature-desc" class="mb-1.5 block text-xs font-medium text-slate-700">Description</label> <input id="feature-desc" type="text" placeholder="What is this feature about?" class="h-10 w-full rounded-md border border-cyan-100 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100" required=""/></div> <button type="submit" class="h-10 rounded-md bg-brand-800 px-4 text-sm font-medium text-white hover:bg-brand-900 disabled:cursor-not-allowed disabled:opacity-50"> </button></form>`);function Se(t,n){ce(n,!0);let o=e(``),c=e(``),u=e(!1),p=e(null);f(()=>{s(p)&&de().then(()=>s(p)?.focus())});async function ee(e){if(e.preventDefault(),!s(u)&&s(o).trim().length!==0&&s(c).trim().length!==0){d(u,!0);try{await n.onSubmit(s(o).trim(),s(c).trim()),d(o,``),d(c,``)}finally{d(u,!1)}}}var h=P(),g=a(h),v=m(a(g),2);C(v),se(v,e=>d(p,e),()=>s(p)),y(g);var b=m(g,2),te=m(a(b),2);C(te),y(b);var x=m(b,2),ne=a(x,!0);y(x),y(h),r(e=>{x.disabled=e,l(ne,s(u)?`Creating...`:`New feature`)},[()=>s(u)||s(o).trim().length===0||s(c).trim().length===0]),i(`submit`,h,ee),_(v,()=>s(o),e=>d(o,e)),_(te,()=>s(c),e=>d(c,e)),S(t,h),re()}var Ce=x(`<button type="button" class="h-8 rounded-md px-2 text-xs font-medium text-slate-500 hover:bg-slate-50 hover:text-slate-900">Clear</button>`),we=x(`<option> </option>`),Te=x(`<div class="absolute right-0 z-20 mt-2 w-56 rounded-lg border border-hairline bg-white p-1 shadow-lg"><button type="button" class="flex w-full items-start rounded-md px-3 py-2 text-left text-sm text-slate-700 hover:bg-slate-50 disabled:opacity-50"><span><span class="block font-medium"> </span> <span class="block text-xs text-slate-500">Add bundled example specs.</span></span></button></div>`),Ee=x(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500">Loading features...</div>`),De=x(`<div class="rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"> </div>`),Oe=x(`<div class="space-y-3"><p>No features yet.</p> <p class="text-xs">Features live inside projects. Start by opening or creating a project.</p> <div class="flex flex-wrap justify-center gap-2"><a href="/projects" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Go to projects</a> <button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm font-medium text-slate-700"> </button></div></div>`),ke=x(`<div class="rounded-lg border border-dashed border-hairline bg-white p-8 text-center text-sm text-slate-500"><!></div>`),Ae=x(`<li><!></li>`),je=x(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),Me=x(`<div class="fixed inset-0 z-40 flex items-start justify-center bg-slate-950/30 px-4 py-24 backdrop-blur-sm" role="presentation"><div class="w-full max-w-3xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="new-feature-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="new-feature-title" class="text-base font-semibold text-slate-950">New feature</h2> <p class="mt-1 text-sm text-slate-500">Start a behavior model from a blank specification.</p></div> <button type="button" class="rounded-md px-2 py-1 text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-900" aria-label="Close">x</button></header> <div class="p-5"><!></div></div></div>`),Ne=x(`<div class="mx-auto max-w-7xl px-4 py-8 sm:px-6"><header class="mb-6 border-b border-slate-200 pb-6"><div class="grid gap-6 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end"><div class="max-w-3xl"><div><p class="text-xs font-semibold uppercase tracking-wide text-brand-700">Behavior models</p> <h1 class="mt-2 text-4xl font-semibold tracking-tight text-slate-950">Features</h1> <p class="mt-2 max-w-2xl text-sm leading-6 text-slate-600">Describe what software does as surfaces, actions, states, rules, effects, and events.</p></div></div> <div class="grid grid-cols-2 gap-3 sm:grid-cols-4 lg:w-[42rem]"><div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-brand-700">Models</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500"> </p></div> <div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-violet-700">Surfaces</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">Across models</p></div> <div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-amber-700">Actions</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">Actions</p></div> <div class="rounded-xl border border-slate-200 bg-white p-4 shadow-sm shadow-slate-950/5"><p class="text-xs font-medium uppercase tracking-wide text-emerald-700">Maturity</p> <p class="mt-2 text-2xl font-semibold text-slate-950"> </p> <p class="mt-1 text-xs text-slate-500">Average</p></div></div></div> <div class="mt-6 flex flex-col gap-3 rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5 lg:flex-row lg:items-center lg:justify-between"><div class="flex min-w-0 items-center rounded-lg border border-hairline bg-white p-1 lg:flex-1"><label for="feature-search" class="sr-only">Search features</label> <input id="feature-search" type="search" placeholder="Search features..." class="h-9 w-full min-w-0 rounded-md border-0 bg-transparent px-3 text-sm outline-none placeholder:text-slate-400"/> <!></div> <div class="flex flex-col gap-2 sm:flex-row sm:items-center"><label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Project</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>All</option><option>Unassigned</option><!></select></label> <!> <label class="flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm text-slate-600"><span class="text-xs font-medium">Sort</span> <select class="bg-transparent text-sm font-medium text-slate-800 outline-none"><option>Updated</option><option>Name</option><option>Maturity</option></select></label> <div class="relative"><button type="button" class="inline-flex h-10 items-center gap-2 rounded-lg border border-hairline bg-white px-3 text-sm font-medium text-slate-700 hover:bg-slate-50">More <span class="text-xs text-slate-400" aria-hidden="true">v</span></button> <!></div> <a href="/projects" class="inline-flex h-10 items-center justify-center gap-2 rounded-md bg-slate-900 px-4 text-sm font-medium text-white hover:bg-slate-800" title="New features are created from a project"><span class="text-base leading-none" aria-hidden="true">+</span> New feature</a></div></div></header> <section aria-labelledby="features-list-title"><div class="mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between"><div><h2 id="features-list-title" class="text-base font-semibold text-slate-950">Behavior models</h2> <p class="text-sm text-slate-500">Open an feature to edit surfaces, rules, effects, and scenarios.</p></div> <p class="text-xs text-slate-500"> </p></div> <!></section></div> <!> <!>`,1);function F(u,x){ce(x,!0),oe(()=>{k.refresh(),O.refresh(),ve.refresh()});async function ie(e,t){await fe(`/features/${await k.create(e,t)}`)}async function de(e){await pe({title:`Delete "${k.summaries.find(t=>String(t.id)===String(e))?.name??`this feature`}"?`,message:`Its surfaces, actions, rules, and scenarios will be removed. Any project that references it keeps the link, but the feature itself is gone. This cannot be undone.`,confirmLabel:`Delete feature`,tone:`danger`})&&await k.remove(e)}let T=e(!1),j=e(``),M=e(!1),N=e(!1),P=e(`updated`),F=e(null),I=e(`all`),L=e(`all`),R=e(!1),z=e(h(new Map));async function Pe(e){if(s(z).has(e))return;let t=await(await _e()).useCases.getProject(e),n=new Map(s(z));n.set(e,new Set(t?.featureIds.map(String)??[])),d(z,n,!0)}async function Fe(){let e=await _e(),t=await Promise.all(O.summaries.map(async t=>{let n=await e.useCases.getProject(t.id);return[String(t.id),new Set(n?.featureIds.map(String)??[])]}));d(z,new Map(t),!0)}f(()=>{if(s(I)!==`all`){if(s(I)===`unassigned`){Fe();return}Pe(s(I))}});let Ie=w(()=>k.summaries.reduce((e,t)=>e+t.surfaceCount,0)),Le=w(()=>k.summaries.reduce((e,t)=>e+t.actionCount,0)),Re=w(()=>k.summaries.length===0?0:Math.round(k.summaries.reduce((e,t)=>e+t.maturityPercentage,0)/k.summaries.length)),B=w(()=>{let e=[];for(let t of k.summaries)for(let n of t.tags??[])e.push(n);return e});f(()=>{ve.registerTypes(s(B).map(e=>e.type))});let ze=w(()=>[...new Set(s(B).map(e=>me(e.type)))].sort((e,t)=>e.localeCompare(t)));f(()=>{if(!s(N))return;let e=e=>{s(F)?.contains(e.target)||d(N,!1)};return window.addEventListener(`pointerdown`,e,!0),()=>window.removeEventListener(`pointerdown`,e,!0)});function Be(e){e.key===`Escape`&&(d(N,!1),d(M,!1))}let V=w(()=>{let e=s(j).trim().toLowerCase(),t=t=>e.length===0||t.name.toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e),n=e=>{if(s(I)===`all`)return!0;if(s(I)===`unassigned`){for(let t of s(z).values())if(t.has(e))return!1;return!0}return s(z).get(s(I))?.has(e)??!1};return k.summaries.filter(e=>t(e)&&n(String(e.id))&&Ve(e,s(L))).sort((e,t)=>s(P)===`name`?e.name.localeCompare(t.name):s(P)===`maturity`?t.maturityPercentage-e.maturityPercentage:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())});function Ve(e,t){let n=e.tags??[];if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=E(t);return n.some(e=>E(e)===r)}function He(e){return k.summaries.filter(t=>Ve(t,e)).length}async function Ue(){if(!s(T)){d(T,!0);try{let e=await k.loadSamples(),t=e.addedProjects.length+e.addedFeatures.length>0,n=e.skippedProjects.length+e.skippedFeatures.length>0;if(!t&&!n)await D({title:`Nothing to load`,message:`No samples are bundled in this build.`,tone:`warning`});else if(!t)await D({title:`Already available`,message:A(e,`skipped`)+`
|
|
2
|
-
|
|
3
|
-
Delete them and load again to restore from the sample.`,tone:`info`});else if(e.addedProjects.length>0){let t=e.addedProjects.length,n=e.addedFeatures.length,r=t===1?`project`:`projects`,i=n>0?`Added ${t} ${r} and ${n} ${n===1?`feature`:`features`}.`:`Added ${t} ${r}.`,a=e.addedFeatures.map(e=>e.name).join(` · `),o=await he({title:`Samples loaded`,message:i,options:e.addedProjects.map(e=>({id:e.id,label:`Open ${e.name}`,description:a||void 0})),cancelLabel:`Close`,tone:`success`});o&&await fe(`/projects/${o}`)}else await D({title:`Samples loaded`,message:A(e,`added`)+(n?`\n\nAlready present:\n${A(e,`skipped`)}`:``),tone:`success`})}finally{d(T,!1)}}}var We=Ne();i(`keydown`,ae,Be),g(`1d0dgro`,e=>{p(()=>{o.title=`Features / Unspaghettit`})});var H=ee(We),U=a(H),W=a(U),Ge=m(a(W),2),G=a(Ge),K=m(a(G),2),Ke=a(K,!0);y(K);var qe=m(K,2),Je=a(qe);y(qe),y(G);var q=m(G,2),Ye=m(a(q),2),Xe=a(Ye,!0);y(Ye),v(2),y(q);var J=m(q,2),Ze=m(a(J),2),Qe=a(Ze,!0);y(Ze),v(2),y(J);var $e=m(J,2),et=m(a($e),2),tt=a(et);y(et),v(2),y($e),y(Ge),y(W);var nt=m(W,2),Y=a(nt),X=m(a(Y),2);C(X);var rt=m(X,2),it=e=>{var t=Ce();n(`click`,t,()=>d(j,``)),S(e,t)},at=w(()=>s(j).trim().length>0);t(rt,e=>{s(at)&&e(it)}),y(Y);var ot=m(Y,2),Z=a(ot),Q=m(a(Z),2),$=a(Q);$.value=$.__value=`all`;var st=m($);st.value=st.__value=`unassigned`,ue(m(st),17,()=>O.summaries,e=>e.id,(e,t)=>{var n=we(),i=a(n,!0);y(n);var o={};r(()=>{l(i,s(t).name),o!==(o=s(t).id)&&(n.value=(n.__value=s(t).id)??``)}),S(e,n)}),y(Q);var ct;te(Q),y(Z);var lt=m(Z,2);ye(lt,{get tags(){return s(B)},get value(){return s(L)},onChange:e=>d(L,e,!0),onManage:()=>d(R,!0),countLabel:He});var ut=m(lt,2),dt=m(a(ut),2),ft=a(dt);ft.value=ft.__value=`updated`;var pt=m(ft);pt.value=pt.__value=`name`;var mt=m(pt);mt.value=mt.__value=`maturity`,y(dt),y(ut);var ht=m(ut,2),gt=a(ht),_t=m(gt,2),vt=e=>{var t=Te(),i=a(t),o=a(i),c=a(o),u=a(c,!0);y(c),v(2),y(o),y(i),y(t),r(()=>{i.disabled=s(T),l(u,s(T)?`Loading samples...`:`Load sample project`)}),n(`click`,i,()=>{d(N,!1),Ue()}),S(e,t)};t(_t,e=>{s(N)&&e(vt)}),y(ht),se(ht,e=>d(F,e),()=>s(F)),v(2),y(ot),y(nt),y(U);var yt=m(U,2),bt=a(yt),xt=m(a(bt),2),St=a(xt);y(xt),y(bt);var Ct=m(bt,2),wt=e=>{S(e,Ee())},Tt=e=>{var t=De(),n=a(t,!0);y(t),r(()=>l(n,k.error)),S(e,t)},Et=e=>{var i=ke(),o=a(i),u=e=>{var t=Oe(),i=m(a(t),4),o=m(a(i),2),c=a(o,!0);y(o),y(i),y(t),r(()=>{o.disabled=s(T),l(c,s(T)?`Loading...`:`Load sample project`)}),n(`click`,o,Ue),S(e,t)},d=e=>{S(e,c(`No features match your search.`))};t(o,e=>{k.summaries.length===0?e(u):e(d,-1)}),y(i),S(e,i)},Dt=e=>{var t=je();ue(t,21,()=>s(V),e=>e.id,(e,t)=>{var n=Ae();xe(a(n),{get summary(){return s(t)},get tagTypeOptions(){return s(ze)},onAddTag:(e,n)=>k.addTag(String(s(t).id),{type:e,value:n}),onRemoveTag:async(e,n)=>{await k.removeTag(String(s(t).id),{type:e,value:n}),s(L)!==`all`&&s(L)!==`untagged`&&E(s(L))===E({type:e,value:n})&&d(L,`all`)},onDelete:()=>de(s(t).id)}),y(n),S(e,n)}),y(t),S(e,t)};t(Ct,e=>{k.loading?e(wt):k.error?e(Tt,1):s(V).length===0?e(Et,2):e(Dt,-1)}),y(yt),y(H);var Ot=m(H,2),kt=e=>{var t=Me(),r=a(t),i=a(r),o=m(a(i),2);y(i);var s=m(i,2);Se(a(s),{onSubmit:ie}),y(s),y(r),y(t),n(`click`,t,e=>{e.currentTarget===e.target&&d(M,!1)}),n(`click`,o,()=>d(M,!1)),S(e,t)};t(Ot,e=>{s(M)&&e(kt)}),be(m(Ot,2),{get open(){return s(R)},get tags(){return s(B)},onClose:()=>d(R,!1),onRenamed:()=>k.refreshSilent()}),r(()=>{l(Ke,s(V).length),l(Je,`${k.summaries.length??``} total`),l(Xe,s(Ie)),l(Qe,s(Le)),l(tt,`${s(Re)??``}%`),ct!==(ct=s(I))&&(Q.value=(Q.__value=s(I))??``,b(Q,s(I))),le(gt,`aria-expanded`,s(N)),l(St,`${s(V).length??``} shown`)}),_(X,()=>s(j),e=>d(j,e)),n(`change`,Q,e=>{let t=e.currentTarget.value;d(I,t===`all`||t===`unassigned`?t:ge(t),!0)}),ne(dt,()=>s(P),e=>d(P,e)),n(`click`,gt,()=>d(N,!s(N))),S(u,We),re()}u([`click`,`change`]);export{F as component,M as universal};
|
|
Binary file
|
|
Binary file
|