unspaghettit 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/assets/0.DSctqr5I.css +1 -0
- package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
- package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +1 -0
- package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
- package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B439_FLv.js +1 -0
- package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
- package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BCEY79Dw.js +1 -0
- package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +2 -0
- package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DBJWcC6Y.js → BYIrIC5L.js} +1 -1
- package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js +1 -0
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
- package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BvOhVtZg.js +1 -0
- package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +1 -0
- package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CY3em1ma2.js +1 -0
- package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CgdRZPgI.js +1 -0
- package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DkxwAIfJ2.js +1 -0
- package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DatGSObE.js → OJscNS3T.js} +1 -1
- package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
- package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js +2 -0
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
- package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js +2 -0
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js +1 -0
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
- package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +4 -0
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.Dyte3Ggf.js} +1 -1
- package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js +2 -0
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 11.wvMfJKC2.js} +1 -1
- package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CmPPom9Z.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +1 -0
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.BvMzqBJj.js → 4.DbfAvO8Z.js} +1 -1
- package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +42 -0
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +1 -0
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.BOHISqs-.js → 7.Ejs18ZUc.js} +1 -1
- package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 8.B-HweAc8.js} +1 -1
- package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +5 -0
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CKPeM6tx.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/client/lyriks_logo.svg +148 -0
- package/build/client/lyriks_logo.svg.br +0 -0
- package/build/client/lyriks_logo.svg.gz +0 -0
- package/build/server/chunks/{0-C_o0oz-N.js → 0-Co8kcANG.js} +4 -4
- package/build/server/chunks/{0-C_o0oz-N.js.map → 0-Co8kcANG.js.map} +1 -1
- package/build/server/chunks/1-BSUItTig.js +9 -0
- package/build/server/chunks/{1-DPpKAKXV.js.map → 1-BSUItTig.js.map} +1 -1
- package/build/server/chunks/10-BygvxrZp.js +9 -0
- package/build/server/chunks/10-BygvxrZp.js.map +1 -0
- package/build/server/chunks/11-DRx0tRx2.js +9 -0
- package/build/server/chunks/11-DRx0tRx2.js.map +1 -0
- package/build/server/chunks/{2-AlfFqtL1.js → 2-BQT3m1vc.js} +3 -3
- package/build/server/chunks/{2-AlfFqtL1.js.map → 2-BQT3m1vc.js.map} +1 -1
- package/build/server/chunks/{3-vbjUt_51.js → 3-DPZ9BquJ.js} +3 -3
- package/build/server/chunks/{3-vbjUt_51.js.map → 3-DPZ9BquJ.js.map} +1 -1
- package/build/server/chunks/{4-BNow4x6D.js → 4-DHo47YX6.js} +3 -3
- package/build/server/chunks/{4-BNow4x6D.js.map → 4-DHo47YX6.js.map} +1 -1
- package/build/server/chunks/5-Cp9evBAG.js +9 -0
- package/build/server/chunks/5-Cp9evBAG.js.map +1 -0
- package/build/server/chunks/6-DiBq3bOV.js +9 -0
- package/build/server/chunks/6-DiBq3bOV.js.map +1 -0
- package/build/server/chunks/{6-QQ7r8Rd5.js → 7-C4hmS0dG.js} +3 -3
- package/build/server/chunks/{6-QQ7r8Rd5.js.map → 7-C4hmS0dG.js.map} +1 -1
- package/build/server/chunks/{7-CbPLGaIG.js → 8-CFFuDzBC.js} +4 -4
- package/build/server/chunks/{7-CbPLGaIG.js.map → 8-CFFuDzBC.js.map} +1 -1
- package/build/server/chunks/9-nhhKZJrs.js +9 -0
- package/build/server/chunks/9-nhhKZJrs.js.map +1 -0
- package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +757 -0
- package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +1 -0
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-CfbXNYe8.js} +2 -2
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-CfbXNYe8.js.map} +1 -1
- package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-DDoQJ_C9.js} +2 -2
- package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +1 -0
- package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-DUVJ3hyL.js} +2 -2
- package/build/server/chunks/{ProjectsIndex-CoDrvRya.js.map → ProjectsIndex-DUVJ3hyL.js.map} +1 -1
- package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +271 -0
- package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-BREws55o.js → _layout.svelte-CLTmk0xU.js} +66 -15
- package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +1 -0
- package/build/server/chunks/{_page.svelte-De508ek8.js → _page.svelte-B1nG3PKn.js} +4 -4
- package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-B1nG3PKn.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-BW_nbAAH.js} +11 -315
- package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-Caq7J0jU.js} +91 -47
- package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +1 -0
- package/build/server/chunks/{_page.svelte-B7hT3P8E.js → _page.svelte-Cham-dsM.js} +4 -4
- package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-Cham-dsM.js.map} +1 -1
- package/build/server/chunks/_page.svelte-Dhwjwph_.js +41 -0
- package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-DlFVT40-.js} +3 -3
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-DlFVT40-.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-NVT2dzpG.js} +176 -327
- package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-Oj-W7G5s.js} +5 -5
- package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-Oj-W7G5s.js.map} +1 -1
- package/build/server/chunks/_page.svelte-Z_kK2lHY.js +68 -0
- package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +1 -0
- package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BpRIU_zP.js} +217 -6
- package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +1 -0
- package/build/server/chunks/client-DeX3TC3s.js +51 -0
- package/build/server/chunks/{client-DfpLcAZ9.js.map → client-DeX3TC3s.js.map} +1 -1
- package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-Cdjeq3L2.js} +4 -4
- package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-Cdjeq3L2.js.map} +1 -1
- package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +161 -0
- package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +1 -0
- package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
- package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
- package/build/server/chunks/{internal-BPKrFkK1.js → internal-KYK0WpL7.js} +4 -4
- package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-KYK0WpL7.js.map} +1 -1
- package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +313 -0
- package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +1 -0
- package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-B5xqb6-s.js} +3 -272
- package/build/server/chunks/reconcile-B5xqb6-s.js.map +1 -0
- package/build/server/chunks/registry-DqAn_hVE.js +21 -0
- package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
- package/build/server/chunks/{state-CpLVNZq7.js → state-DBjl9lhV.js} +2 -2
- package/build/server/chunks/{state-CpLVNZq7.js.map → state-DBjl9lhV.js.map} +1 -1
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +33 -17
- package/build/server/manifest.js.map +1 -1
- package/cli/commands/dashboard.ts +14 -0
- package/cli/commands/init.ts +26 -0
- package/cli/commands/theme.ts +62 -0
- package/cli/unspa.ts +38 -2
- package/cli/util/context-files.ts +5 -0
- package/cli/util/theme.ts +34 -0
- package/mcp-server/sync-notifier.ts +88 -35
- package/package.json +2 -1
- package/src/app.css +187 -0
- package/src/app.html +15 -1
- package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +531 -0
- package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +492 -0
- package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +370 -0
- package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +13 -5
- package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +43 -0
- package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
- package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
- package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
- package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
- package/src/features/projects/presentation/components/ProjectEditor.svelte +7 -0
- package/src/features/simulator/application/use-cases/RunScenarios.ts +15 -1
- package/src/hooks.server.ts +11 -1
- package/src/lib/theme/registry.ts +77 -0
- package/src/lib/theme/themeStore.svelte.ts +64 -0
- package/src/routes/+layout.svelte +184 -30
- package/src/routes/features/[id]/graph/+page.svelte +34 -0
- package/src/routes/projects/[id]/graph/+page.svelte +79 -0
- package/src/shared/presentation/components/ProgressBar.svelte +1 -1
- package/src/shared/presentation/toast/SyncToast.svelte +14 -3
- package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
- package/static/lyriks_logo.svg +148 -0
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
- 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/chunks/BO66rBOa2.js +0 -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/DBJWcC6Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
- package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
- package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -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/DjWKKtqp.js +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
- 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/iQu0D9Ux.js +0 -1
- 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/entry/app.CLgh6Mx_.js +0 -2
- 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 +0 -1
- 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 +0 -4
- 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.br +0 -2
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -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 +0 -1
- 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.br +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
- 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.br +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -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 +0 -5
- 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/9.CMW6a2Lg.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
- package/build/server/chunks/1-DPpKAKXV.js +0 -9
- package/build/server/chunks/5-D7OCJpxD.js +0 -9
- package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
- package/build/server/chunks/8-CVO-E-sf.js +0 -9
- package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
- package/build/server/chunks/9-DxT1baO5.js +0 -9
- package/build/server/chunks/9-DxT1baO5.js.map +0 -1
- package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
- package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
- package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
- package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
- package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
- package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
- package/build/server/chunks/client-DfpLcAZ9.js +0 -24
- package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
- package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 11.nv0I59TU.css} +0 -0
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 11.nv0I59TU.css.br} +0 -0
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.gz → 11.nv0I59TU.css.gz} +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{$ as e,A as t,C as n,E as r,F as i,G as a,H as o,I as s,J as c,L as l,M as u,N as d,O as f,Q as p,R as m,U as h,V as g,W as _,X as v,Y as y,Z as b,at as x,c as S,ct as C,et as w,it as T,j as E,k as D,l as O,lt as k,m as A,mt as j,n as M,o as N,p as ee,pt as P,q as F,r as I,rt as L,s as R,tt as z,u as B,v as V,x as H,z as U}from"../chunks/BPl9BITm.js";import{t as W}from"../chunks/DatGSObE.js";import"../chunks/xihTtKlq.js";import{n as te,t as ne}from"../chunks/ib21i2T_.js";import{E as re,H as ie,T as ae,a as G,at as oe,i as se,lt as ce,pt as le,t as K,vt as ue}from"../chunks/Bp2_Vghh.js";import"../chunks/suTxxv1t.js";import{t as de}from"../chunks/BOrLmFwJ.js";import"../chunks/DHoA038D.js";import{t as q}from"../chunks/Cl7Z3e6-.js";import{t as fe}from"../chunks/cMamJTsF.js";import{t as pe}from"../chunks/D8YEa1po.js";import{t as J}from"../chunks/DKgYpi6_.js";import{t as me}from"../chunks/D9dKmajw.js";import{t as he}from"../chunks/Dhqg7r_2.js";import{n as ge,o as _e,t as ve}from"../chunks/HKLi1Yz3.js";import{t as ye}from"../chunks/N7PXjlRH.js";import{t as be}from"../chunks/CxyLMlpt2.js";import{a as Y,r as xe,s as Se,t as Ce}from"../chunks/BO66rBOa2.js";import{n as we,r as Te}from"../chunks/Bp8HpEPe2.js";var X=new class{#e=z(!0);get loading(){return U(this.#e)}set loading(e){w(this.#e,e,!0)}#t=z(null);get project(){return U(this.#t)}set project(e){w(this.#t,e,!0)}#n=L(()=>this.project?String(this.project.id):``);get id(){return U(this.#n)}set id(e){w(this.#n,e)}#r=L(()=>this.project?.name??``);get name(){return U(this.#r)}set name(e){w(this.#r,e)}#i=L(()=>this.project?this.project.featureIds.map(String):[]);get featureIds(){return U(this.#i)}set featureIds(e){w(this.#i,e)}#a=z(null);get error(){return U(this.#a)}set error(e){w(this.#a,e,!0)}#o=z(null);get saveError(){return U(this.#o)}set saveError(e){w(this.#o,e,!0)}#s=z(!1);get saving(){return U(this.#s)}set saving(e){w(this.#s,e,!0)}#c=z(!1);get dirty(){return U(this.#c)}set dirty(e){w(this.#c,e,!0)}#l=z(``);get lastSavedAt(){return U(this.#l)}set lastSavedAt(e){w(this.#l,e,!0)}#u=z(`features`);get activePanel(){return U(this.#u)}set activePanel(e){w(this.#u,e,!0)}#d=z(``);get selectedFeatureId(){return U(this.#d)}set selectedFeatureId(e){w(this.#d,e,!0)}#f=z(``);get search(){return U(this.#f)}set search(e){w(this.#f,e,!0)}#p=z(e([]));get historyEntries(){return U(this.#p)}set historyEntries(e){w(this.#p,e,!0)}#m=z(-1);get historyCursor(){return U(this.#m)}set historyCursor(e){w(this.#m,e,!0)}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 K()).useCases.getProject(e);this.project=t,this.dirty=!1,this.lastSavedAt=t?.updatedAt??``,this.subscribeRoom(e)}catch(e){this.error=e.message}finally{this.loading=!1}}setActivePanel(e){this.activePanel=e,q(`project.panel_switched`,{panel:e})}setSearch(e){this.search=e,q(`project.editor_search_updated`,{query:e})}setSelectedFeature(e){this.selectedFeatureId=e,e&&q(`project.feature_opened`,{featureId:e})}async addFeature(e){if(!(!this.project||!this.currentId)){this.saving=!0,this.saveError=null;try{let t=await(await K()).useCases.addFeatureToProject(this.currentId,e);this.applyProject(t),q(`project.feature_added`,{projectId:String(this.currentId),featureId:String(e)})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async removeFeature(e){if(!(!this.project||!this.currentId)){this.saving=!0,this.saveError=null;try{let t=await(await K()).useCases.removeFeatureFromProject(this.currentId,e);this.applyProject(t),q(`project.feature_removed`,{projectId:String(this.currentId),featureId:String(e)})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async rename(e){if(this.project){this.saving=!0,this.saveError=null;try{let t=await(await K()).useCases.saveProject({...this.project,name:e.trim()});this.applyProject(t)}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async updateMetadata(e,t){if(!this.project)return;let n=e.trim();if(n.length!==0){this.saving=!0,this.saveError=null;try{let e=await K(),r=t.trim(),i=await e.useCases.saveProject({...this.project,name:n,description:r.length>0?r:void 0});this.applyProject(i),q(`project.saved`,{id:String(i.id),name:i.name})}catch(e){this.saveError=e.message}finally{this.saving=!1}}}async setDescription(e){if(this.project){this.saving=!0,this.saveError=null;try{let t=await K(),n=e.trim(),r=await t.useCases.saveProject({...this.project,description:n.length>0?n:void 0});this.applyProject(r)}catch(e){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.project=null,this.historyEntries=[],this.historyCursor=-1,this.error=null,this.saveError=null,this.loading=!0,this.saving=!1,this.dirty=!1,this.lastSavedAt=``,this.activePanel=`features`,this.selectedFeatureId=``,this.search=``}applyProject(e){this.project?we(this.project,e):this.project=e,this.dirty=!1,this.lastSavedAt=e.updatedAt}subscribeRoom(e){this.clientUnsubscribe&&=(this.clientUnsubscribe(),null),this.historyUnsubscribe&&=(this.historyUnsubscribe(),null);let t=Te(`project`,e);this.client=t,this.clientUnsubscribe=t.observe((t,n)=>{n!==`local`&&t&&this.currentId===e&&(this.project?we(this.project,t):this.project=t,this.lastSavedAt=t.updatedAt)}),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)})}},Z=new class{#e=z(!1);get loading(){return U(this.#e)}set loading(e){w(this.#e,e,!0)}#t=z(e([]));get features(){return U(this.#t)}set features(e){w(this.#t,e,!0)}#n=z(e([]));get allSummaries(){return U(this.#n)}set allSummaries(e){w(this.#n,e,!0)}#r=z(null);get error(){return U(this.#r)}set error(e){w(this.#r,e,!0)}async load(e){this.loading=!0,this.error=null;try{let t=await K(),n=await Promise.all(e.map(e=>t.useCases.getFeature(e)));this.features=n.filter(e=>e!==null)}catch(e){this.error=e.message}finally{this.loading=!1}}async syncWith(e){let t=new Set(e.map(String)),n=new Map(this.features.map(e=>[String(e.id),e])),r=e.filter(e=>!n.has(String(e))),i=n;if(r.length>0)try{let e=await K(),t=await Promise.all(r.map(t=>e.useCases.getFeature(t)));i=new Map(n);for(let e of t)e&&i.set(String(e.id),e)}catch(e){this.error=e.message;return}this.features=e.map(e=>i.get(String(e))).filter(e=>e!==void 0&&t.has(String(e.id)))}async refetchOne(e){try{let t=await(await K()).useCases.getFeature(e),n=this.features.findIndex(t=>String(t.id)===String(e));if(!t){n>=0&&(this.features=[...this.features.slice(0,n),...this.features.slice(n+1)]);return}n>=0?this.features=[...this.features.slice(0,n),t,...this.features.slice(n+1)]:this.features=[...this.features,t]}catch(e){this.error=e.message}}async loadAllSummaries(){try{let e=await K();this.allSummaries=[...await e.useCases.listFeatures()]}catch(e){this.error=e.message}}reset(){this.features=[],this.allSummaries=[],this.loading=!1,this.error=null}},Ee=d(`<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>`),De=d(`<div class="space-y-3"><p>No features in this project yet.</p> <div class="flex flex-wrap justify-center gap-2"><button type="button" class="rounded-md bg-slate-900 px-4 py-2 text-sm font-medium text-white">Create first feature</button></div></div>`),Oe=d(`<div class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"><!></div>`),ke=d(`<li><!></li>`),Ae=d(`<ul class="grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"></ul>`),je=d(`<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-2xl rounded-xl border border-hairline bg-white shadow-xl" role="dialog" aria-modal="true" aria-labelledby="add-feature-dialog-title"><header class="flex items-start justify-between gap-4 border-b border-hairline px-5 py-4"><div><h2 id="add-feature-dialog-title" class="text-base font-semibold text-slate-950">Add an feature</h2> <p class="mt-1 text-sm text-slate-500">Create a new behavior model. It will be tied to this project automatically.</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> <form class="space-y-3 p-5" data-tour="new-feature-form"><label class="block text-xs font-medium text-slate-700">Feature name <input type="text" placeholder="e.g. Restaurant booking" class="mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900" required=""/></label> <label class="block text-xs font-medium text-slate-700">Description <input type="text" data-tour="new-feature-description" placeholder="What is this feature about?" class="mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-slate-900" required=""/></label> <div class="flex justify-end gap-2 pt-2"><button type="button" class="h-10 rounded-md border border-slate-300 bg-white px-4 text-sm font-medium text-slate-700 hover:bg-slate-50">Cancel</button> <button type="submit" class="h-10 rounded-md bg-slate-900 px-4 text-sm font-medium text-white disabled:opacity-50"> </button></div></form></div></div>`),Me=d(`<div class="space-y-4"><div class="rounded-xl border border-slate-200 bg-white p-3 shadow-sm shadow-slate-950/5"><div class="flex flex-col gap-3 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-feature-search" class="sr-only">Search project features</label> <input id="project-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">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> <button type="button" data-tour="new-feature-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" title="Create a new feature inside this project"><span aria-hidden="true">+</span> New feature</button></div></div></div> <!></div> <!>`,1);function Ne(n,o){k(o,!0);let s=z(`all`);function c(e,t){return t.length===0?!0:e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)}function u(e,t){let n=e.tags??[];if(t===`all`)return!0;if(t===`untagged`)return n.length===0;let r=ce(t);return n.some(e=>ce(e)===r)}let d=L(()=>{let e=o.search.trim().toLowerCase();return o.features.filter(t=>c(t,e)&&u(t,U(s)))}),f=L(()=>{let e=[];for(let t of o.features)for(let n of t.tags??[])e.push(n);return e});a(()=>{pe.registerTypes(U(f).map(e=>e.type))});function h(e){let t=o.search.trim().toLowerCase();return o.features.filter(n=>c(n,t)&&u(n,e)).length}let x=z(!1),T=z(null),M=z(`updated`),N=z(``),P=z(``),F=z(!1),I=L(()=>he(fe.currentStep,`new-feature`,U(N))),V=z(e(new Map));a(()=>{let e=o.features.map(e=>String(e.id)),t=!1;return(async()=>{let n=await K(),r=e.filter(e=>!U(V).has(e));if(r.length===0)return;let i=await Promise.all(r.map(async e=>[e,await n.statusRepository.get(e)]));if(t)return;let a=new Map(U(V));for(let[e,t]of i)a.set(e,t);w(V,a,!0)})(),()=>{t=!0}}),a(()=>{U(x)&&g().then(()=>U(T)?.focus())});function H(){w(x,!0)}function W(){w(x,!1),w(N,``),w(P,``)}async function te(){let e=U(N).trim();if(!(U(F)||e.length===0)&&U(P).trim().length!==0){w(F,!0);try{await o.onCreate(e,U(P).trim()),W()}finally{w(F,!1)}}}function ne(e){e.key===`Escape`&&W()}function ie(e){let t=re(e),n=ae(e,U(V).get(String(e.id))??null);return{id:e.id,name:e.name,description:e.description,surfaceCount:e.surfaces.length,actionCount:e.surfaces.reduce((e,t)=>e+t.actions.length,0),createdAt:e.createdAt,updatedAt:e.updatedAt,tags:e.tags,maturityPercentage:t.percentage,criticalIssueCount:t.criticalIssues.length,recommendedIssueCount:t.recommendedIssues.length,implementationPercentage:n.expectedCount===0?null:n.percentage,implementationFoundCount:n.foundCount,implementationExpectedCount:n.expectedCount,implementationHasReport:n.hasReport}}let G=L(()=>U(d).map(ie).sort((e,t)=>U(M)===`name`?e.name.localeCompare(t.name):U(M)===`maturity`?t.maturityPercentage-e.maturityPercentage:new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())),le=L(()=>{let e=new Set;for(let t of o.features)for(let n of t.tags??[])e.add(oe(n.type));return[...e].sort((e,t)=>e.localeCompare(t))});function ue(e){let t=X.project?.implementationQueue??[],n=`feature:${String(e)}`;return t.some(e=>se(e)===n)}async function de(e){if(!X.project)return;let t=await(await K()).useCases.enqueueQueueItem(X.project.id,{kind:`feature`,featureId:e});X.project&&=t.project}async function q(e){if(!X.project)return;let t=X.project.implementationQueue??[],n=`feature:${String(e)}`,r=t.find(e=>se(e)===n);if(!r)return;let i=await(await K()).useCases.dequeueQueueItem(X.project.id,r.id);X.project&&=i}var J=Me();m(`keydown`,y,ne);var me=b(J),ge=v(me),_e=v(ge),ve=v(_e),Y=p(v(ve),2);O(Y);var xe=p(Y,2),Se=e=>{var t=Ee();l(`click`,t,()=>o.onSearch(``)),E(e,t)},Ce=L(()=>o.search.trim().length>0);D(xe,e=>{U(Ce)&&e(Se)}),j(ve);var we=p(ve,2),Te=v(we);ye(Te,{get tags(){return U(f)},get value(){return U(s)},onChange:e=>w(s,e,!0),countLabel:h});var Z=p(Te,2),Ne=p(v(Z),2),Pe=v(Ne);Pe.value=Pe.__value=`updated`;var Q=p(Pe);Q.value=Q.__value=`name`;var Fe=p(Q);Fe.value=Fe.__value=`maturity`,j(Ne),j(Z);var Ie=p(Z,2);j(we),j(_e),j(ge);var Le=p(ge,2),Re=e=>{var t=Oe(),n=v(t),r=e=>{var t=De(),n=p(v(t),2),r=v(n);j(n),j(t),l(`click`,r,()=>H()),E(e,t)},a=e=>{E(e,i(`No features match your search.`))};D(n,e=>{o.features.length===0?e(r):e(a,-1)}),j(t),E(e,t)},ze=e=>{var t=Ae();r(t,21,()=>U(G),e=>e.id,(e,t)=>{var n=ke(),r=v(n);{let e=L(()=>o.onRemoveTag?(e,n)=>o.onRemoveTag(U(t).id,{type:e,value:n}):void 0),n=L(()=>ue(U(t).id));be(r,{get summary(){return U(t)},get tagTypeOptions(){return U(le)},deleteLabel:`Remove`,onAddTag:(e,n)=>o.onAddTag(U(t).id,{type:e,value:n}),get onRemoveTag(){return U(e)},onDelete:()=>o.onRemove(U(t).id),get queued(){return U(n)},onAddToQueue:()=>de(U(t).id),onRemoveFromQueue:()=>q(U(t).id)})}j(n),E(e,n)}),j(t),E(e,t)};D(Le,e=>{U(G).length===0?e(Re):e(ze,-1)}),j(me);var Be=p(me,2),Ve=e=>{var n=je(),r=v(n),i=v(r),a=p(v(i),2);j(i);var o=p(i,2),s=v(o),c=p(v(s));O(c),R(c,e=>w(T,e),()=>U(T)),j(s);var u=p(s,2),d=p(v(u));O(d),j(u);var f=p(u,2),h=v(f),g=p(h,2),y=v(g,!0);j(g),j(f),j(o),j(r),j(n),_(e=>{g.disabled=e,B(g,`title`,U(I).blocked?`Tutorial: name must be exactly "${U(I).requiredValue}"`:void 0),t(y,U(F)?`Creating...`:`Create feature`)},[()=>U(F)||U(N).trim().length===0||U(P).trim().length===0||U(I).blocked]),l(`click`,n,e=>{e.currentTarget===e.target&&W()}),l(`click`,a,W),m(`submit`,o,e=>{e.preventDefault(),te()}),S(c,()=>U(N),e=>w(N,e)),S(d,()=>U(P),e=>w(P,e)),l(`click`,h,W),E(e,n)};D(Be,e=>{U(x)&&e(Ve)}),_(()=>ee(Y,o.search)),l(`input`,Y,e=>o.onSearch(e.target.value)),A(Ne,()=>U(M),e=>w(M,e)),l(`click`,Ie,()=>H()),E(n,J),C()}s([`input`,`click`]);var Pe=e=>`${e.kind}|${e.provider}|${e.name}`.toLowerCase(),Q=e=>{let t=new Map;for(let n of e)for(let e of n.resources){let r=Pe(e),i={featureId:String(n.id),featureName:n.name},a=t.get(r);if(a){a.sources.some(e=>e.featureId===i.featureId)||a.sources.push(i);continue}t.set(r,{key:r,name:e.name,kind:e.kind,provider:e.provider,scope:e.scope,sensitivity:e.sensitivity,containsPii:e.containsPii,description:e.description,sources:[i]})}return Array.from(t.values())},Fe=e=>{let t=new Map;for(let n of e)for(let e of Y(n)){let r=e.namespace.toLowerCase(),i={featureId:String(n.id),featureName:n.name},a=t.get(r);if(a){a.sources.some(e=>e.featureId===i.featureId)||a.sources.push(i),e.fields.length>a.fieldCount&&(a.fieldCount=e.fields.length),!a.description&&e.description&&(a.description=e.description);continue}t.set(r,{key:r,namespace:e.namespace,description:e.description,fieldCount:e.fields.length,sources:[i]})}return Array.from(t.values())},Ie=e=>{let t=new Map;for(let n of e){let e=new Map((n.events??[]).map(e=>[String(e.name),e]));for(let r of xe(n)){let i=String(r.name),a=i.toLowerCase(),o=e.get(i),s={featureId:String(n.id),featureName:n.name},c=t.get(a);if(c){if(c.sources.some(e=>e.featureId===s.featureId)||c.sources.push(s),c.emissions+=r.emissions.length,o){!c.description&&o.description&&(c.description=o.description);let e=o.payloadSchema?.length??0;e>c.payloadFieldCount&&(c.payloadFieldCount=e)}continue}t.set(a,{key:a,name:i,description:o?.description,payloadFieldCount:o?.payloadSchema?.length??0,emissions:r.emissions.length,sources:[s]})}}return Array.from(t.values())},Le=e=>{let t=new Map;for(let n of e)for(let e of Ce(n)){let r=e.sources[0]?.description,i=`${e.fromSurfaceName}|${e.toSurfaceName}|${r??``}`.toLowerCase(),a={featureId:String(n.id),featureName:n.name},o=t.get(i);if(o){o.sources.some(e=>e.featureId===a.featureId)||o.sources.push(a),o.sourcesCount+=e.sources.length;continue}t.set(i,{key:i,sourceName:e.fromSurfaceName,targetName:e.toSurfaceName,label:r,sourcesCount:e.sources.length,sources:[a]})}return Array.from(t.values())},Re=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),ze=d(`<div class="text-xs font-normal text-slate-500"> </div>`),Be=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),Ve=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),He=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Name</th><th class="px-3 py-2">Kind</th><th class="px-3 py-2">Provider</th><th class="px-3 py-2">Scope</th><th class="px-3 py-2">Sensitivity</th><th class="px-3 py-2">PII</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function Ue(e,n){k(n,!0);let i=L(()=>Q(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.name.toLowerCase().includes(t)||e.provider.toLowerCase().includes(t)||e.kind.toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=Re(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No resources declared across the project features.`:`No resources match your search.`)),E(e,n)},l=e=>{var n=He(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=Ve(),a=v(i),o=v(a),s=p(o),c=e=>{var r=ze(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d,!0);j(d);var m=p(d),h=v(m,!0);j(m);var g=p(m),y=v(g,!0);j(g);var b=p(g),x=v(b,!0);j(b);var S=p(b),C=v(S);r(C,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Be(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(C),j(S),j(i),_(()=>{t(o,`${U(n).name??``} `),t(u,U(n).kind),t(f,U(n).provider),t(h,U(n).scope),t(y,U(n).sensitivity),t(x,U(n).containsPii?`Yes`:`No`)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var We=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),Ge=d(`<div class="text-xs font-normal text-slate-500"> </div>`),Ke=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),qe=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),Je=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Namespace</th><th class="px-3 py-2">Fields</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function Ye(e,n){k(n,!0);let i=L(()=>Fe(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.namespace.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=We(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No data entities declared across the project features.`:`No data entities match your search.`)),E(e,n)},l=e=>{var n=Je(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=qe(),a=v(i),o=v(a),s=p(o),c=e=>{var r=Ge(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d);r(f,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Ke(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(f),j(d),j(i),_(()=>{t(o,`${U(n).namespace??``} `),t(u,U(n).fieldCount)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var Xe=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),Ze=d(`<div class="font-sans text-xs text-slate-500"> </div>`),Qe=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),$e=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-mono text-slate-950"> <!></td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),et=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">Event name</th><th class="px-3 py-2">Emissions</th><th class="px-3 py-2">Payload fields</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function tt(e,n){k(n,!0);let i=L(()=>Ie(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.name.toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=Xe(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No events registered across the project features.`:`No events match your search.`)),E(e,n)},l=e=>{var n=et(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=$e(),a=v(i),o=v(a),s=p(o),c=e=>{var r=Ze(),i=v(r,!0);j(r),_(()=>t(i,U(n).description)),E(e,r)};D(s,e=>{U(n).description&&e(c)}),j(a);var l=p(a),u=v(l,!0);j(l);var d=p(l),f=v(d,!0);j(d);var m=p(d),h=v(m);r(h,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=Qe(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(h),j(m),j(i),_(()=>{t(o,`${U(n).name??``} `),t(u,U(n).emissions),t(f,U(n).payloadFieldCount)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var nt=d(`<p class="rounded-lg border border-dashed border-hairline bg-white p-6 text-center text-sm text-slate-500"> </p>`),rt=d(`<a class="rounded-full border border-cyan-100 bg-cyan-50/60 px-2 py-0.5 text-brand-700 hover:bg-cyan-50 hover:underline"> </a>`),it=d(`<tr class="border-t border-slate-100"><td class="px-3 py-2 font-medium text-slate-950"> </td><td class="px-3 py-2 text-slate-700"> </td><td class="px-3 py-2 text-slate-600"> </td><td class="px-3 py-2 text-xs"><div class="flex flex-wrap gap-1"></div></td></tr>`),at=d(`<div class="overflow-x-auto rounded-lg border border-hairline bg-white"><table class="w-full text-sm"><thead class="bg-slate-50 text-left text-xs uppercase tracking-wide text-slate-500"><tr><th class="px-3 py-2">From</th><th class="px-3 py-2">To</th><th class="px-3 py-2">Label</th><th class="px-3 py-2">From features</th></tr></thead><tbody></tbody></table></div>`);function ot(e,n){k(n,!0);let i=L(()=>Le(n.features)),a=L(()=>n.search.trim().length===0?U(i):U(i).filter(e=>{let t=n.search.toLowerCase();return e.sourceName.toLowerCase().includes(t)||e.targetName.toLowerCase().includes(t)||(e.label??``).toLowerCase().includes(t)||e.sources.some(e=>e.featureName.toLowerCase().includes(t))}));var o=u(),s=b(o),c=e=>{var n=nt(),r=v(n,!0);j(n),_(()=>t(r,U(i).length===0?`No transitions declared across the project features.`:`No transitions match your search.`)),E(e,n)},l=e=>{var n=at(),i=v(n),o=p(v(i));r(o,21,()=>U(a),e=>e.key,(e,n)=>{var i=it(),a=v(i),o=v(a,!0);j(a);var s=p(a),c=v(s,!0);j(s);var l=p(s),u=v(l,!0);j(l);var d=p(l),f=v(d);r(f,21,()=>U(n).sources,e=>e.featureId,(e,n)=>{var r=rt(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).featureId}`),t(i,U(n).featureName)}),E(e,r)}),j(f),j(d),j(i),_(()=>{t(o,U(n).sourceName),t(c,U(n).targetName),t(u,U(n).label??`-`)}),E(e,i)}),j(o),j(i),j(n),E(e,n)};D(s,e=>{U(a).length===0?e(c):e(l,-1)}),E(e,o),C()}var st=d(`<div class="px-6 py-10 text-center text-xs text-slate-500">No edits yet. Project metadata changes, feature add/remove, queue mutations - they all land here.</div>`),ct=d(`<span class="ml-1 text-purple-700"> </span>`),lt=d(`<li class="flex items-start gap-3 px-4 py-2.5 text-xs"><span> </span> <div class="min-w-0 flex-1"><p class="truncate font-medium text-slate-800"> </p> <p class="mt-0.5 text-[11px] text-slate-500"> <!></p></div></li>`),ut=d(`<ol class="divide-y divide-slate-100"></ol>`),dt=d(`<section class="rounded-lg border border-hairline bg-white"><header class="flex items-center justify-between border-b border-hairline px-4 py-3"><div><h2 class="text-sm font-semibold text-slate-950">Project history</h2> <p class="mt-0.5 text-xs text-slate-500"> </p></div> <span class="rounded-md bg-slate-100 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide text-slate-600">Audit</span></header> <!></section>`);function ft(e,n){k(n,!0);let i=L(()=>[...X.historyEntries].reverse()),a=e=>{let t=new Date(e),n=new Date,r=t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate(),i=t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${t.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`},o=e=>e===`mcp`?`bg-purple-100 text-purple-700`:e===`system`?`bg-neutral-100 text-neutral-600`:`bg-sky-100 text-sky-700`,s=e=>e===`mcp`?`AI`:e===`system`?`sys`:e.replace(/^user-/,``).replace(/^Anon-/,``);var c=dt(),l=v(c),u=v(l),d=p(v(u),2),f=v(d);j(d),j(u),P(2),j(l);var m=p(l,2),h=e=>{E(e,st())},g=e=>{var n=ut();r(n,21,()=>U(i),e=>e.id,(e,n)=>{var r=lt(),i=v(r),c=v(i,!0);j(i);var l=p(i,2),u=v(l),d=v(u,!0);j(u);var f=p(u,2),m=v(f),h=p(m),g=e=>{var r=ct(),i=v(r);j(r),_(()=>t(i,`· for ${U(n).actingFor??``}`)),E(e,r)};D(h,e=>{U(n).actingFor&&e(g)}),j(f),j(l),j(r),_((e,r,a)=>{V(i,1,`mt-0.5 inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[10px] font-semibold ${e??``}`),B(i,`title`,`Author: ${U(n).author}`),t(c,r),t(d,U(n).label??`Edit`),t(m,`${a??``} `)},[()=>o(U(n).author),()=>s(U(n).author),()=>a(U(n).ts)]),E(e,r)}),j(n),E(e,n)};D(m,e=>{U(i).length===0?e(h):e(g,-1)}),j(c),_(()=>t(f,`${X.historyEntries.length??``} edit${X.historyEntries.length===1?``:`s`} · read-only`)),E(e,c),C()}var $=new class{#e=z(e([]));get views(){return U(this.#e)}set views(e){w(this.#e,e,!0)}#t=z(!1);get loading(){return U(this.#t)}set loading(e){w(this.#t,e,!0)}#n=z(null);get error(){return U(this.#n)}set error(e){w(this.#n,e,!0)}async refresh(){let e=X.project?.id;if(!e){this.views=[];return}this.loading=!0,this.error=null;try{let t=await K();this.views=await t.useCases.listQueue(e)}catch(e){this.error=e.message}finally{this.loading=!1}}isQueued(e){let t=e.kind===`feature`?`feature:${String(e.featureId)}`:e.kind===`surface`?`surface:${String(e.featureId)}:${String(e.surfaceId)}`:`action:${String(e.featureId)}:${String(e.actionId)}`;return this.views.some(e=>se(e.item)===t)}async enqueueFeature(e,t){await this.mutate(async n=>{await n.useCases.enqueueQueueItem(e,{kind:`feature`,featureId:t})})}async enqueueSurface(e,t,n){await this.mutate(async r=>{await r.useCases.enqueueQueueItem(e,{kind:`surface`,featureId:t,surfaceId:n})})}async enqueueAction(e,t,n){await this.mutate(async r=>{await r.useCases.enqueueQueueItem(e,{kind:`action`,featureId:t,actionId:n})})}async dequeue(e,t){await this.mutate(async n=>{await n.useCases.dequeueQueueItem(e,t)})}async moveTo(e,t,n){await this.mutate(async r=>{await r.useCases.moveQueueItem(e,t,{kind:`to`,targetIndex:n})})}reset(){this.views=[],this.loading=!1,this.error=null}async mutate(e){this.error=null;try{await e(await K()),await this.refresh()}catch(e){this.error=e.message}}},pt=d(`<p class="rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700"> </p>`),mt=d(`<div class="rounded-lg border border-dashed border-slate-300 bg-white p-6 text-center text-xs text-slate-500"><p class="font-medium text-slate-700">No items queued yet.</p> <p class="mt-1 mx-auto max-w-md">Hover any Feature card or any Action row and click <strong>+ queue</strong> to add it here. Then ask your LLM "implement the next thing in the queue".</p></div>`),ht=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a> <span class="text-xs text-slate-500"> </span>`,1),gt=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a> <span class="text-xs text-slate-500"> </span>`,1),_t=d(`<a class="font-medium text-slate-900 hover:text-brand-800 hover:underline"> </a>`),vt=d(`<span class="block truncate text-xs text-slate-500"> </span>`),yt=d(`<span class="shrink-0 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] font-semibold text-amber-800" title="Target was deleted from the spec">orphan</span>`),bt=d(`<li draggable="true"><span class="cursor-grab select-none text-slate-300 transition-colors group-hover:text-slate-500 active:cursor-grabbing" aria-hidden="true" title="Drag to reorder">⋮⋮</span> <span class="w-5 shrink-0 text-right text-[11px] tabular-nums text-slate-400"> </span> <span> </span> <div class="min-w-0 flex-1 truncate"><!> <!></div> <!> <div class="flex shrink-0 items-center gap-0.5 opacity-0 transition group-hover:opacity-100 group-focus-within:opacity-100"><button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Move up" title="Move up">↑</button> <button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Move down" title="Move down">↓</button> <button type="button" class="rounded px-1 text-xs text-slate-400 hover:bg-red-50 hover:text-red-600" aria-label="Remove from queue" title="Remove from queue">x</button></div></li>`),xt=d(`<ul class="space-y-1.5"></ul>`),St=d(`<div class="space-y-3"><header class="flex items-start justify-between gap-3"><div><h2 class="text-sm font-semibold text-slate-800">Implementation queue</h2> <p class="mt-1 text-xs text-slate-500">What to implement next. Drag to reorder. The MCP <code class="mono text-[11px]">get_next_queued</code> tool reads the top live entry so an LLM can pick up where you left off without you naming the feature.</p></div> <span class="shrink-0 rounded-md bg-slate-100 px-2 py-0.5 text-xs font-medium text-slate-700"> </span></header> <!> <!></div>`);function Ct(e,n){k(n,!0),a(()=>{X.project?.implementationQueue,o(()=>{$.refresh()})}),I(()=>{$.refresh()});let i=z(null),s=z(null);function c(e,t){w(i,t,!0),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(t)))}function u(e,t){U(i)!==null&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),w(s,t,!0))}async function d(e,t){e.preventDefault();let n=U(i);w(i,null),w(s,null),!(!n||!X.project)&&await $.moveTo(X.project.id,n,t)}function f(){w(i,null),w(s,null)}async function h(e,t){if(!X.project)return;let n=$.views.findIndex(t=>t.item.id===e);n<0||await $.moveTo(X.project.id,e,n+t)}async function g(e){X.project&&await $.dequeue(X.project.id,e)}var y=St(),x=v(y),S=p(v(x),2),T=v(S,!0);j(S),j(x);var O=p(x,2),A=e=>{var n=pt(),r=v(n,!0);j(n),_(()=>t(r,$.error)),E(e,n)};D(O,e=>{$.error&&e(A)});var M=p(O,2),N=e=>{E(e,mt())},ee=e=>{var n=xt();r(n,23,()=>$.views,e=>e.item.id,(e,n,r)=>{let a=L(()=>U(n).item.id),o=L(()=>U(i)===U(a)),y=L(()=>U(s)===U(r)&&U(i)!==null&&U(i)!==U(a));var x=bt(),S=p(v(x),2),C=v(S);j(S);var w=p(S,2),T=v(w,!0);j(w);var O=p(w,2),k=v(O),A=e=>{var r=ht(),i=b(r),a=v(i,!0);j(i);var o=p(i,2),s=v(o);j(o),_(()=>{B(i,`href`,`/features/${U(n).item.featureId}`),t(a,U(n).actionName??`(unnamed action)`),t(s,`· ${U(n).featureName??``}`)}),E(e,r)},M=e=>{var r=gt(),i=b(r),a=v(i,!0);j(i);var o=p(i,2),s=v(o);j(o),_(()=>{B(i,`href`,`/features/${U(n).item.featureId}`),t(a,U(n).surfaceName??`(unnamed surface)`),t(s,`· ${U(n).featureName??``}`)}),E(e,r)},N=e=>{var r=_t(),i=v(r,!0);j(r),_(()=>{B(r,`href`,`/features/${U(n).item.featureId}`),t(i,U(n).featureName)}),E(e,r)};D(k,e=>{U(n).item.kind===`action`?e(A):U(n).item.kind===`surface`?e(M,1):e(N,-1)});var ee=p(k,2),P=e=>{var r=vt(),i=v(r,!0);j(r),_(()=>t(i,U(n).item.note)),E(e,r)};D(ee,e=>{U(n).item.note&&e(P)}),j(O);var F=p(O,2),I=e=>{E(e,yt())};D(F,e=>{U(n).orphaned&&e(I)});var R=p(F,2),z=v(R),H=p(z,2),W=p(H,2);j(R),j(x),_(()=>{V(x,1,`group flex items-center gap-2 rounded-md border bg-white px-2 py-1.5 text-sm transition
|
|
2
|
-
${U(n).orphaned?`border-amber-200 bg-amber-50/40`:`border-slate-200`}
|
|
3
|
-
${U(o)?`opacity-40`:``}
|
|
4
|
-
${U(y)?`border-brand-400 ring-1 ring-brand-200`:``}`),t(C,`${U(r)+1}.`),V(w,1,`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide
|
|
5
|
-
${U(n).item.kind===`feature`?`bg-violet-100 text-violet-800`:U(n).item.kind===`surface`?`bg-emerald-100 text-emerald-800`:`bg-cyan-100 text-cyan-800`}`),t(T,U(n).item.kind),z.disabled=U(r)===0,H.disabled=U(r)===$.views.length-1}),m(`dragstart`,x,e=>c(e,U(a))),m(`dragover`,x,e=>u(e,U(r))),m(`drop`,x,e=>d(e,U(r))),m(`dragend`,x,f),l(`click`,z,()=>h(U(a),-1)),l(`click`,H,()=>h(U(a),1)),l(`click`,W,()=>g(U(a))),E(e,x)}),j(n),E(e,n)};D(M,e=>{$.views.length===0?e(N):e(ee,-1)}),j(y),_(()=>t(T,$.views.length)),E(e,y),C()}s([`click`]);var wt=d(`<div class="space-y-3"><label class="block"><span class="sr-only">Project name</span> <input type="text" class="w-full rounded-lg border border-slate-300 bg-white px-3 py-2 text-3xl font-semibold tracking-tight text-slate-950 outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100 sm:text-4xl"/></label> <label class="block"><span class="sr-only">Project description</span> <textarea rows="3" placeholder="Describe what belongs in this project..." class="w-full resize-none rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm leading-6 text-slate-700 outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"></textarea></label> <div class="flex flex-wrap gap-2"><button type="button" class="rounded-md bg-slate-900 px-3 py-1.5 text-xs font-medium text-white disabled:opacity-50"> </button> <button type="button" class="rounded-md border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50">Cancel</button></div></div>`),Tt=d(`<p class="mt-2 max-w-3xl text-sm leading-6 text-slate-600"> </p>`),Et=d(`<p class="mt-2 max-w-3xl text-sm leading-6 text-slate-500">A project that groups related behavior models and their implementation signals.</p>`),Dt=d(`<div class="mt-3"><!></div>`),Ot=d(`<h1 class="truncate text-4xl font-semibold tracking-tight text-slate-950"> </h1> <!> <!> <div class="mt-3 flex flex-wrap items-center gap-3 text-xs text-slate-500"><button class="font-medium text-brand-700 hover:underline">Edit project</button> <span> </span> <span> </span></div>`,1),kt=d(`<p class="mt-4 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700"> <button type="button" class="ml-2 underline">dismiss</button></p>`),At=d(`<button type="button"> <span> </span></button>`),jt=d(`<div class="mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"><input type="search" class="h-10 w-full max-w-sm rounded-lg border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/> <p class="text-xs text-slate-500"> </p></div>`),Mt=d(`<p class="text-sm text-slate-500">Loading features...</p>`),Nt=d(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),Pt=d(`<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"><a href="/projects" class="inline-flex items-center gap-1 text-xs font-semibold uppercase tracking-wide text-brand-700 hover:underline"><span aria-hidden="true">←</span> Back to projects</a> <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="Encrypt the project (and all its features + status) into a .unspa file you can share or back up"><span aria-hidden="true">⬇</span> </button></div> <div class="mt-3"><div class="min-w-0"><!></div></div> <!></header> <div class="mb-4 rounded-xl border border-slate-200 bg-white p-1 shadow-sm shadow-slate-950/5"><nav class="flex flex-wrap gap-1"></nav></div> <!> <!></div>`);function Ft(e,i){k(i,!0);let o=[{id:`features`,label:`Features`},{id:`queue`,label:`Queue`},{id:`resources`,label:`Resources`},{id:`data`,label:`Entity`},{id:`events`,label:`Events`},{id:`transitions`,label:`Transitions`},{id:`history`,label:`History`}],s=z(!1),c=z(``),d=z(``);a(()=>{let e=X.project;!e||U(s)||(w(c,e.name,!0),w(d,e.description??``,!0))}),a(()=>{let e=X.project?.tags??[];e.length>0&&pe.registerTypes(e.map(e=>e.type))});function m(e){let t=Z.features;switch(e){case`features`:return t.length;case`queue`:return X.project?.implementationQueue?.length??0;case`resources`:return Q(t).length;case`data`:return Fe(t).length;case`events`:return Ie(t).length;case`transitions`:return Le(t).length;case`history`:return X.historyEntries.length}}async function h(){X.project&&(await X.updateMetadata(U(c),U(d)),X.saveError||w(s,!1))}async function g(e,t){Z.features.find(t=>t.id===e)&&(await J.addTag(String(e),t),X.project&&await Z.load(X.project.featureIds))}async function y(e,t){Z.features.find(t=>t.id===e)&&(await J.removeTag(String(e),t),X.project&&await Z.load(X.project.featureIds))}async function x(e,t){let n=await J.create(e,t);await X.addFeature(n),await W(`/features/${n}`)}async function T(e){await X.removeFeature(e),X.project&&await Z.load(X.project.featureIds)}let A=z(!1);async function M(){let e=X.project;if(!e||U(A))return;let t=await ue({title:`Export project`,message:`Encrypt "${e.name}" with a passphrase and download as a .unspa file. You'll need the same passphrase to import it back. Minimum 8 characters.`,inputLabel:`Passphrase`,placeholder:`At least 8 characters`,password:!0,confirmLabel:`Export`,tone:`info`,validate:e=>e.length<8?`Passphrase must be at least 8 characters.`:null});if(t!==null){w(A,!0);try{let{envelope:n,projectName:r}=await ge(e.id,t);ve(n,r)}catch(e){await le({title:`Export failed`,message:e instanceof _e?e.message:`Export failed: ${e.message}`,tone:`danger`})}finally{w(A,!1)}}}var N=u(),P=b(N),I=e=>{let i=L(()=>X.project);var a=Pt(),C=v(a),k=v(C),N=p(v(k),2),P=p(v(N));j(N),j(k);var I=p(k,2),R=v(I),z=v(R),H=e=>{var n=wt(),r=v(n),i=p(v(r),2);O(i),j(r);var a=p(r,2),o=p(v(a),2);F(o),j(a);var u=p(a,2),f=v(u),m=v(f,!0);j(f);var g=p(f,2);j(u),j(n),_(e=>{f.disabled=e,t(m,X.saving?`Saving...`:`Save project`)},[()=>X.saving||U(c).trim().length===0||U(d).trim().length===0]),S(i,()=>U(c),e=>w(c,e)),S(o,()=>U(d),e=>w(d,e)),l(`click`,f,h),l(`click`,g,()=>w(s,!1)),E(e,n)},W=e=>{var n=Ot(),r=b(n),a=v(r,!0);j(r);var o=p(r,2),c=e=>{var n=Tt(),r=v(n,!0);j(n),_(()=>t(r,U(i).description)),E(e,n)},u=e=>{E(e,Et())};D(o,e=>{U(i).description?e(c):e(u,-1)});var d=p(o,2),f=e=>{var t=Dt();me(v(t),{get tags(){return U(i).tags}}),j(t),E(e,t)};D(d,e=>{U(i).tags&&U(i).tags.length>0&&e(f)});var m=p(d,2),h=v(m),g=p(h,2),y=v(g);j(g);var x=p(g,2),S=v(x,!0);j(x),j(m),_(e=>{t(a,U(i).name),t(y,`Updated ${e??``}`),t(S,X.saving?`Saving...`:`Saved`)},[()=>new Date(U(i).updatedAt).toLocaleString()]),l(`click`,h,()=>w(s,!0)),E(e,n)};D(z,e=>{U(s)?e(H):e(W,-1)}),j(R),j(I);var re=p(I,2),ie=e=>{var n=kt(),r=v(n),i=p(r);j(n),_(()=>t(r,`${X.saveError??``} `)),l(`click`,i,()=>X.dismissSaveError()),E(e,n)};D(re,e=>{X.saveError&&e(ie)}),j(C);var ae=p(C,2),G=v(ae);r(G,21,()=>o,e=>e.id,(e,n)=>{var r=At(),i=v(r),a=p(i),o=v(a,!0);j(a),j(r),_(e=>{V(r,1,`rounded-md px-3 py-1.5 text-sm font-medium transition ${X.activePanel===U(n).id?`bg-slate-900 text-white shadow-sm`:`text-slate-600 hover:bg-slate-100 hover:text-slate-950`}`),t(i,`${U(n).label??``} `),V(a,1,`ml-1 rounded bg-white/80 px-1.5 py-0.5 text-xs ${X.activePanel===U(n).id?`text-brand-900`:`text-slate-600`}`),t(o,e)},[()=>m(U(n).id)]),l(`click`,r,()=>X.setActivePanel(U(n).id)),E(e,r)}),j(G),j(ae);var oe=p(ae,2),se=e=>{var n=jt(),r=v(n);O(r);var i=p(r,2),a=v(i);j(i),j(n),_(e=>{B(r,`placeholder`,`Search ${X.activePanel}...`),ee(r,X.search),t(a,`${e??``} ${X.activePanel??``} in this project`)},[()=>m(X.activePanel)]),l(`input`,r,e=>X.setSearch(e.target.value)),E(e,n)};D(oe,e=>{X.activePanel!==`features`&&X.activePanel!==`queue`&&X.activePanel!==`history`&&e(se)});var ce=p(oe,2),le=e=>{E(e,Mt())},K=e=>{var t=u();f(b(t),()=>X.activePanel,e=>{var t=Nt(),r=v(t),i=e=>{Ne(e,{get features(){return Z.features},get search(){return X.search},onSearch:e=>X.setSearch(e),onCreate:x,onAddTag:g,onRemoveTag:y,onRemove:T})},a=e=>{Ct(e,{})},o=e=>{Ue(e,{get features(){return Z.features},get search(){return X.search}})},s=e=>{Ye(e,{get features(){return Z.features},get search(){return X.search}})},c=e=>{tt(e,{get features(){return Z.features},get search(){return X.search}})},l=e=>{ot(e,{get features(){return Z.features},get search(){return X.search}})},u=e=>{ft(e,{})};D(r,e=>{X.activePanel===`features`?e(i):X.activePanel===`queue`?e(a,1):X.activePanel===`resources`?e(o,2):X.activePanel===`data`?e(s,3):X.activePanel===`events`?e(c,4):X.activePanel===`transitions`?e(l,5):X.activePanel===`history`&&e(u,6)}),j(t),n(1,t,()=>te,()=>({duration:140,easing:ne})),E(e,t)}),E(e,t)};D(ce,e=>{Z.loading?e(le):e(K,-1)}),j(a),_(()=>{N.disabled=U(A),t(P,` ${U(A)?`Exporting...`:`Export .unspa`}`)}),l(`click`,N,M),E(e,a)};D(P,e=>{X.project&&e(I)}),E(e,N),C()}s([`click`,`input`]);var It=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading project…</p>`),Lt=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </p>`),Rt=d(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Project not found. <a href="/projects" class="text-brand-700 hover:underline">← Back to projects</a></p>`);function zt(e,n){k(n,!1);let r=()=>x(Se,`$page`,i),[i,a]=T(),o=null;I(async()=>{let e=r().params.id;if(!e)return;let t=G(e);await X.load(t),await Z.loadAllSummaries(),X.project&&await Z.load(X.project.featureIds),o=de(async e=>{X.project&&(e.kind===`project`&&e.id===String(t)?await Z.syncWith(X.project.featureIds):e.kind===`feature`&&(X.project.featureIds.some(t=>String(t)===e.id)?await Z.refetchOne(ie(e.id)):await Z.loadAllSummaries()))})}),M(()=>{o?.(),o=null,X.reset(),Z.reset()}),N();var s=u();H(`ffmenf`,e=>{h(()=>{c.title=`Project / Unspaghettit`})});var l=b(s),d=e=>{E(e,It())},f=e=>{var n=Lt(),r=v(n,!0);j(n),_(()=>t(r,X.error)),E(e,n)},p=e=>{E(e,Rt())},m=e=>{Ft(e,{})};D(l,e=>{X.loading?e(d):X.error?e(f,1):X.project?e(m,-1):e(p,2)}),E(e,s),C(),a()}export{zt as component};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const index = 1;
|
|
2
|
-
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./error.svelte-C35KOpru.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/1.KYdA6ppX.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/iQu0D9Ux.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/xihTtKlq.js"];
|
|
5
|
-
const stylesheets = [];
|
|
6
|
-
const fonts = [];
|
|
7
|
-
|
|
8
|
-
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=1-DPpKAKXV.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const index = 5;
|
|
2
|
-
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-BtI2zZ_Z.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/5.Dq6obSGG.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/iQu0D9Ux.js","_app/immutable/chunks/BO66rBOa2.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/Dg0acPpT.js","_app/immutable/chunks/CJjJLwzv2.js","_app/immutable/chunks/hpWJNn0t2.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/aNMRV4sP2.js"];
|
|
5
|
-
const stylesheets = [];
|
|
6
|
-
const fonts = [];
|
|
7
|
-
|
|
8
|
-
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=5-D7OCJpxD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"5-D7OCJpxD.js","sources":["../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/features/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/5.Dq6obSGG.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/iQu0D9Ux.js\",\"_app/immutable/chunks/BO66rBOa2.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Bp8HpEPe2.js\",\"_app/immutable/chunks/C8rRKIXT.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/Dg0acPpT.js\",\"_app/immutable/chunks/CJjJLwzv2.js\",\"_app/immutable/chunks/hpWJNn0t2.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/aNMRV4sP2.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE;AAC9G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC;AACzyB,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const index = 8;
|
|
2
|
-
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-Zf9H4KOP.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/8.DejSfIYh.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/BO66rBOa2.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/ib21i2T_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/suTxxv1t.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/CxyLMlpt2.js","_app/immutable/chunks/D9dKmajw.js","_app/immutable/chunks/D8YEa1po.js","_app/immutable/chunks/aNMRV4sP2.js","_app/immutable/chunks/HKLi1Yz3.js","_app/immutable/chunks/N7PXjlRH.js","_app/immutable/chunks/Dhqg7r_2.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js","_app/immutable/chunks/BOrLmFwJ.js"];
|
|
5
|
-
const stylesheets = [];
|
|
6
|
-
const fonts = [];
|
|
7
|
-
|
|
8
|
-
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=8-CVO-E-sf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"8-CVO-E-sf.js","sources":["../../../.svelte-kit/adapter-node/nodes/8.js"],"sourcesContent":["\n\nexport const index = 8;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/projects/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/8.DejSfIYh.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/BO66rBOa2.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/Bp8HpEPe2.js\",\"_app/immutable/chunks/C8rRKIXT.js\",\"_app/immutable/chunks/ib21i2T_.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/suTxxv1t.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/CxyLMlpt2.js\",\"_app/immutable/chunks/D9dKmajw.js\",\"_app/immutable/chunks/D8YEa1po.js\",\"_app/immutable/chunks/aNMRV4sP2.js\",\"_app/immutable/chunks/HKLi1Yz3.js\",\"_app/immutable/chunks/N7PXjlRH.js\",\"_app/immutable/chunks/Dhqg7r_2.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\",\"_app/immutable/chunks/BOrLmFwJ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE;AAC9G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACh3B,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const index = 9;
|
|
2
|
-
let component_cache;
|
|
3
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-BKKCa9H5.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/9.CMW6a2Lg.js","_app/immutable/chunks/BPl9BITm.js","_app/immutable/chunks/DatGSObE.js","_app/immutable/chunks/DHoA038D.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Bp2_Vghh.js","_app/immutable/chunks/DKgYpi6_.js","_app/immutable/chunks/BfMYiIUi.js","_app/immutable/chunks/Cl7Z3e6-.js","_app/immutable/chunks/BQ9GodWX2.js","_app/immutable/chunks/hpWJNn0t2.js","_app/immutable/chunks/Bp8HpEPe2.js","_app/immutable/chunks/C8rRKIXT.js","_app/immutable/chunks/BzLd0mTH.js","_app/immutable/chunks/cMamJTsF.js"];
|
|
5
|
-
const stylesheets = ["_app/immutable/assets/9.nv0I59TU.css"];
|
|
6
|
-
const fonts = [];
|
|
7
|
-
|
|
8
|
-
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=9-DxT1baO5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"9-DxT1baO5.js","sources":["../../../.svelte-kit/adapter-node/nodes/9.js"],"sourcesContent":["\n\nexport const index = 9;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tutorial/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/9.CMW6a2Lg.js\",\"_app/immutable/chunks/BPl9BITm.js\",\"_app/immutable/chunks/DatGSObE.js\",\"_app/immutable/chunks/DHoA038D.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/Bp2_Vghh.js\",\"_app/immutable/chunks/DKgYpi6_.js\",\"_app/immutable/chunks/BfMYiIUi.js\",\"_app/immutable/chunks/Cl7Z3e6-.js\",\"_app/immutable/chunks/BQ9GodWX2.js\",\"_app/immutable/chunks/hpWJNn0t2.js\",\"_app/immutable/chunks/Bp8HpEPe2.js\",\"_app/immutable/chunks/C8rRKIXT.js\",\"_app/immutable/chunks/BzLd0mTH.js\",\"_app/immutable/chunks/cMamJTsF.js\"];\nexport const stylesheets = [\"_app/immutable/assets/9.nv0I59TU.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AACzG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC3iB,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar-CfhccQ83.js","sources":["../../../.svelte-kit/adapter-node/chunks/ProgressBar.js"],"sourcesContent":["import { G as attr, l as derived, m as stringify, o as attr_class, q as escape_html, s as attr_style, u as ensure_array_like } from \"./index-server.js\";\n//#region src/shared/presentation/components/ProgressBar.svelte\nfunction ProgressBar($$renderer, $$props) {\n\t/**\n\t* Reusable maturity / implementation progress bar.\n\t*\n\t* Designed to replace the \"single flat colored fill\" pattern that was\n\t* scattered across FeatureCard / MaturityPanel / FeatureHealthStrip.\n\t* Adds:\n\t* - tier-based color (red < 50%, amber < 80%, emerald ≥ 80%) when no\n\t* explicit `color` is passed. The tier breakpoints match the\n\t* existing scorer thresholds so the visual identity stays in step\n\t* with the textual \"critical / recommended\" semantics.\n\t* - optional threshold ticks (50% + 80% by default). They anchor the\n\t* bar to the same tiers as the color, so a 65% bar visibly reads\n\t* \"past the red zone, not yet in the green zone\" instead of just\n\t* \"amber\".\n\t* - smooth width transition so live edits (Yjs reconcile, MCP\n\t* writes) animate from old → new value instead of teleporting.\n\t* - subtle inner shadow on the track + gradient overlay on the fill\n\t* so the bar feels like a control, not a flat rectangle.\n\t*\n\t* Props are deliberately minimal so the bar can be dropped anywhere\n\t* without forcing the caller to learn a wide API.\n\t*/\n\t/** 0–100. Clamped defensively so a malformed score can't break layout. */\n\t/** 0–100. Clamped defensively so a malformed score can't break layout. */\n\t/**\n\t* Optional explicit fill color (CSS color string). When omitted, the\n\t* bar picks one from the tier table below based on `percentage`. Use\n\t* this when the caller already computes an \"adaptive\" color from a\n\t* MaturityReport (e.g. shifting on critical-issue count).\n\t*/\n\t/** Bar height. xs=4, sm=6, md=10. Default sm. */\n\t/**\n\t* Show the small \"65%\" label to the right of the bar. Off by\n\t* default — most callers pair the bar with their own surrounding\n\t* percentage badge, so adding a duplicate would crowd the row.\n\t*/\n\t/**\n\t* Draw thin vertical ticks at these percentages. Default [50, 80]\n\t* mirrors the tier breakpoints. Pass [] to suppress.\n\t*/\n\t/** Accessible label for screen readers. */\n\tlet { percentage, color, size = \"sm\", showLabel = false, ticks = [50, 80], ariaLabel } = $$props;\n\tconst clamped = derived(() => Math.max(0, Math.min(100, Math.round(percentage))));\n\tconst tierColor = derived(() => clamped() >= 80 ? \"#10b981\" : clamped() >= 50 ? \"#f59e0b\" : \"#ef4444\");\n\tconst fillColor = derived(() => color ?? tierColor());\n\tconst trackHeightClass = derived(() => size === \"md\" ? \"h-2.5\" : size === \"sm\" ? \"h-1.5\" : \"h-1\");\n\t$$renderer.push(`<div class=\"flex w-full items-center gap-2\"><div${attr_class(`relative w-full overflow-hidden rounded-full bg-slate-100 ${trackHeightClass()}`)} style=\"box-shadow: inset 0 1px 1px rgba(15, 23, 42, 0.06);\" role=\"progressbar\"${attr(\"aria-valuenow\", clamped())}${attr(\"aria-valuemin\", 0)}${attr(\"aria-valuemax\", 100)}${attr(\"aria-label\", ariaLabel)}><div class=\"h-full rounded-full transition-[width,background-color] duration-300 ease-out\"${attr_style(` width: ${stringify(clamped())}%; background-color: ${stringify(fillColor())}; background-image: linear-gradient(180deg, rgba(255,255,255,0.18) 0%, rgba(0,0,0,0.06) 100%); `)}></div> <!--[-->`);\n\tconst each_array = ensure_array_like(ticks);\n\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\tlet tickPct = each_array[$$index];\n\t\tif (tickPct > 0 && tickPct < 100) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"pointer-events-none absolute top-0 bottom-0 w-px bg-slate-300/70\"${attr_style(`left: ${stringify(tickPct)}%;`)} aria-hidden=\"true\"></span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t}\n\t$$renderer.push(`<!--]--></div> `);\n\tif (showLabel) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\t$$renderer.push(`<span class=\"shrink-0 text-[10px] font-semibold tabular-nums text-slate-600\" style=\"min-width: 2.25rem; text-align: right;\">${escape_html(clamped())}%</span>`);\n\t} else $$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]--></div>`);\n}\n//#endregion\nexport { ProgressBar as t };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_layout.svelte-BREws55o.js","sources":["../../../.svelte-kit/adapter-node/chunks/enabled.js","../../../.svelte-kit/adapter-node/entries/pages/_layout.svelte.js"],"sourcesContent":["import { t as public_env } from \"./shared-server.js\";\n//#region src/lib/views/registry.ts\n/** The base view. Always enabled; it's where the dashboard lands by default. */\nvar EXPERT = {\n\tid: \"expert\",\n\tlabel: \"Expert\",\n\thref: \"/projects\",\n\tmatches: (pathname) => pathname === \"/\" || pathname.startsWith(\"/projects\") || pathname.startsWith(\"/features\")\n};\n/** Opt-in views, keyed by the id used in `PUBLIC_UNSPA_VIEWS`. */\nvar OPTIONAL_VIEWS = { builder: {\n\tid: \"builder\",\n\tlabel: \"Builder\",\n\thref: \"/builder-mode\",\n\tmatches: (pathname) => pathname.startsWith(\"/builder-mode\")\n} };\n/**\n* Parse the raw `PUBLIC_UNSPA_VIEWS` value into the ordered, de-duped list of\n* enabled view ids. Expert is always first; unknown ids are ignored.\n*/\nvar parseEnabledViewIds = (raw) => {\n\tconst requested = (raw ?? \"\").split(\",\").map((part) => part.trim().toLowerCase()).filter((id) => id.length > 0 && id !== \"expert\" && id in OPTIONAL_VIEWS);\n\treturn [\"expert\", ...[...new Set(requested)]];\n};\n/** Resolve the enabled view ids into their full definitions, in nav order. */\nvar resolveEnabledViews = (raw) => parseEnabledViewIds(raw).map((id) => id === \"expert\" ? EXPERT : OPTIONAL_VIEWS[id]);\n/** Whether a specific view is enabled. Expert is always enabled. */\nvar isViewEnabled = (raw, id) => parseEnabledViewIds(raw).includes(id);\n//#endregion\n//#region src/lib/views/enabled.ts\n/**\n* Runtime view enablement, read from `PUBLIC_UNSPA_VIEWS` (a comma list of\n* optional view ids, e.g. \"builder\"). Expert is always on. The value is a\n* runtime public env var — `unspa dashboard --view builder` sets it, or a\n* local `.env` for `vite dev` — so enabling a view is config, not a rebuild.\n*/\nvar enabledViews = () => resolveEnabledViews(public_env.PUBLIC_UNSPA_VIEWS);\nvar isEnabled = (id) => isViewEnabled(public_env.PUBLIC_UNSPA_VIEWS, id);\n//#endregion\nexport { isEnabled as n, enabledViews as t };\n","import { G as attr, l as derived, m as stringify, o as attr_class, q as escape_html, s as attr_style, u as ensure_array_like } from \"../../chunks/index-server.js\";\nimport { t as goto } from \"../../chunks/client.js\";\nimport { t as page } from \"../../chunks/state.js\";\nimport { b as dialogStore } from \"../../chunks/browserContainer.js\";\nimport { t as subscribeSyncEvents } from \"../../chunks/syncEvents.js\";\nimport \"../../chunks/navigation.js\";\nimport { t as tourStore } from \"../../chunks/tourStore.svelte.js\";\nimport \"../../chunks/projectsStore.svelte.js\";\nimport { t as builderModeStore } from \"../../chunks/builderModeStore.svelte.js\";\nimport { n as isEnabled, t as enabledViews } from \"../../chunks/enabled.js\";\nimport { t as identityStore } from \"../../chunks/identityStore.svelte.js\";\n//#region src/shared/presentation/dialogs/AppDialog.svelte\nfunction AppDialog($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst current = derived(() => dialogStore.current);\n\t\tlet selected = /* @__PURE__ */ new Set();\n\t\tlet inputValue = \"\";\n\t\tconst toneStyles = {\n\t\t\tdefault: {\n\t\t\t\ticon: \"?\",\n\t\t\t\ticonBg: \"bg-slate-100\",\n\t\t\t\ticonColor: \"text-slate-700\",\n\t\t\t\tconfirmBtn: \"bg-slate-900 hover:bg-slate-800 text-white\",\n\t\t\t\tcheck: \"accent-slate-700\"\n\t\t\t},\n\t\t\tdanger: {\n\t\t\t\ticon: \"!\",\n\t\t\t\ticonBg: \"bg-rose-50\",\n\t\t\t\ticonColor: \"text-rose-600\",\n\t\t\t\tconfirmBtn: \"bg-rose-600 hover:bg-rose-500 text-white\",\n\t\t\t\tcheck: \"accent-rose-600\"\n\t\t\t},\n\t\t\tinfo: {\n\t\t\t\ticon: \"i\",\n\t\t\t\ticonBg: \"bg-brand-50\",\n\t\t\t\ticonColor: \"text-brand-700\",\n\t\t\t\tconfirmBtn: \"bg-brand-700 hover:bg-brand-600 text-white\",\n\t\t\t\tcheck: \"accent-brand-700\"\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\ticon: \"✓\",\n\t\t\t\ticonBg: \"bg-emerald-50\",\n\t\t\t\ticonColor: \"text-emerald-600\",\n\t\t\t\tconfirmBtn: \"bg-emerald-600 hover:bg-emerald-500 text-white\",\n\t\t\t\tcheck: \"accent-emerald-600\"\n\t\t\t},\n\t\t\twarning: {\n\t\t\t\ticon: \"!\",\n\t\t\t\ticonBg: \"bg-amber-50\",\n\t\t\t\ticonColor: \"text-amber-600\",\n\t\t\t\tconfirmBtn: \"bg-amber-600 hover:bg-amber-500 text-white\",\n\t\t\t\tcheck: \"accent-amber-600\"\n\t\t\t}\n\t\t};\n\t\tconst tone = derived(() => current()?.opts.tone ?? (current()?.kind === \"alert\" ? \"info\" : \"default\"));\n\t\tconst style = derived(() => toneStyles[tone()]);\n\t\tif (current()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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\"${attr_class(`relative w-full ${current().kind === \"checklist\" || current().kind === \"choice\" ? \"max-w-lg\" : \"max-w-md\"} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`)}><div class=\"flex gap-4 px-7 pt-7 pb-5\"><div${attr_class(`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${style().iconBg} ${style().iconColor}`)}>${escape_html(style().icon)}</div> <div class=\"min-w-0 flex-1 pt-1\"><h2 id=\"app-dialog-title\" class=\"text-lg leading-tight text-slate-950\">${escape_html(current().opts.title)}</h2> <p id=\"app-dialog-message\" class=\"mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600\">${escape_html(current().opts.message)}</p></div></div> `);\n\t\t\tif (current().kind === \"choice\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"px-7 pt-2 pb-5\"><ul class=\"flex max-h-80 flex-col gap-3 overflow-y-auto\"><!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(current().opts.options);\n\t\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t\t$$renderer.push(`<li class=\"flex\"><button type=\"button\"${attr_class(`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 ${style().confirmBtn}`)}><span class=\"min-w-0 flex-1\"><span class=\"block text-sm\">${escape_html(option.label)}</span> `);\n\t\t\t\t\tif (option.description) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"mt-1 block text-xs leading-relaxed opacity-80\">${escape_html(option.description)}</span>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--></span> <span aria-hidden=\"true\" class=\"shrink-0 text-base transition group-hover:translate-x-1\">→</span></button></li>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></ul></div>`);\n\t\t\t} else if (current().kind === \"prompt\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"px-7 pt-1 pb-4\"><label class=\"block text-xs font-medium text-slate-700\">${escape_html(current().opts.inputLabel ?? \"Value\")} <input${attr(\"value\", inputValue)}${attr(\"type\", current().opts.password ? \"password\" : \"text\")}${attr(\"autocomplete\", current().opts.password ? \"new-password\" : \"off\")} autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\"${attr(\"placeholder\", current().opts.placeholder ?? \"\")} 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> `);\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t} else if (current().kind === \"checklist\") {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<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\">${escape_html(selected.size)} of ${escape_html(current().opts.items.length)} selected</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\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(current().opts.items);\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet item = each_array_1[$$index_1];\n\t\t\t\t\t$$renderer.push(`<li><label class=\"flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white\"><input type=\"checkbox\"${attr_class(`mt-0.5 h-4 w-4 rounded ${style().check}`)}${attr(\"checked\", selected.has(item.id), true)}/> <span class=\"min-w-0 flex-1\"><span class=\"block text-sm font-medium text-slate-900\">${escape_html(item.label)}</span> `);\n\t\t\t\t\tif (item.description) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"mt-0.5 block text-xs text-slate-500\">${escape_html(item.description)}</span>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--></span></label></li>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></ul></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <div class=\"flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3\">`);\n\t\t\tif (current().kind === \"alert\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\"${attr_class(`rounded-md px-4 py-2 text-sm transition ${style().confirmBtn}`)}>${escape_html(current().opts.buttonLabel ?? \"OK\")}</button>`);\n\t\t\t} else if (current().kind === \"choice\") {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950\">${escape_html(current().opts.cancelLabel ?? \"Close\")}</button>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<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\">${escape_html(current().opts.cancelLabel ?? \"Cancel\")}</button> <button type=\"button\"${attr_class(`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${style().confirmBtn}`)}>${escape_html(current().opts.confirmLabel ?? \"Confirm\")}</button>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div></div></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/shared/presentation/easter-eggs/FlyingSpaghettiEasterEgg.svelte\nfunction FlyingSpaghettiEasterEgg($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/shared/presentation/toast/syncToastStore.svelte.ts\nvar MAX_VISIBLE = 4;\nvar DEFAULT_TTL_MS = 5e3;\nvar hrefFor = (evt) => {\n\tif (evt.op === \"delete\") return void 0;\n\tswitch (evt.kind) {\n\t\tcase \"feature\": return `/features/${evt.id}`;\n\t\tcase \"project\": return `/projects/${evt.id}`;\n\t\tcase \"implementation-status\": return `/features/${evt.id}`;\n\t}\n};\nvar DEDUPE_WINDOW_MS = 800;\nvar SyncToastStore = class {\n\ttoasts = [];\n\tnextId = 1;\n\tsubscribed = false;\n\tunsubscribe = null;\n\ttimers = /* @__PURE__ */ new Map();\n\t/**\n\t* Implementation-status writes ride the same notify channel as feature\n\t* saves, but they fire as part of every audit pass and would spam the\n\t* toast feed. Tracked per-(kind:id) so a burst of identical events\n\t* within DEDUPE_WINDOW_MS collapses into a single toast.\n\t*/\n\trecentKeys = /* @__PURE__ */ new Map();\n\t/**\n\t* Idempotent. Call once from the root layout. Re-calls are no-ops, so\n\t* mounting/unmounting layout fragments won't tear the stream down.\n\t*/\n\tstart() {\n\t\tif (this.subscribed) return;\n\t\tthis.subscribed = true;\n\t\tthis.unsubscribe = subscribeSyncEvents((evt) => this.handle(evt));\n\t}\n\tdismiss(id) {\n\t\tconst timer = this.timers.get(id);\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\tthis.timers.delete(id);\n\t\t}\n\t\tthis.toasts = this.toasts.filter((t) => t.id !== id);\n\t}\n\t/** Test/teardown hook. Not used in production. */\n\treset() {\n\t\tfor (const t of this.timers.values()) clearTimeout(t);\n\t\tthis.timers.clear();\n\t\tthis.toasts = [];\n\t\tthis.recentKeys.clear();\n\t\tif (this.unsubscribe) this.unsubscribe();\n\t\tthis.unsubscribe = null;\n\t\tthis.subscribed = false;\n\t}\n\thandle(evt) {\n\t\tconst key = `${evt.kind}:${evt.id}:${evt.op ?? \"save\"}`;\n\t\tconst now = Date.now();\n\t\tconst seen = this.recentKeys.get(key);\n\t\tif (seen !== void 0 && now - seen < DEDUPE_WINDOW_MS) {\n\t\t\tthis.recentKeys.set(key, now);\n\t\t\treturn;\n\t\t}\n\t\tthis.recentKeys.set(key, now);\n\t\tconst id = this.nextId++;\n\t\tconst next = [{\n\t\t\tid,\n\t\t\tkind: evt.kind,\n\t\t\tentityId: evt.id,\n\t\t\tname: evt.name,\n\t\t\tprojectName: evt.projectName,\n\t\t\top: evt.op ?? \"save\",\n\t\t\tchangeOp: evt.changeOp,\n\t\t\tchangePath: evt.changePath,\n\t\t\tpreviousName: evt.previousName,\n\t\t\tactingFor: evt.actingFor,\n\t\t\t...hrefFor(evt) ? { href: hrefFor(evt) } : {}\n\t\t}, ...this.toasts].slice(0, MAX_VISIBLE);\n\t\tconst surviving = new Set(next.map((t) => t.id));\n\t\tfor (const [oldId, timer] of this.timers) if (!surviving.has(oldId)) {\n\t\t\tclearTimeout(timer);\n\t\t\tthis.timers.delete(oldId);\n\t\t}\n\t\tthis.toasts = next;\n\t\tconst timer = setTimeout(() => this.dismiss(id), DEFAULT_TTL_MS);\n\t\tthis.timers.set(id, timer);\n\t}\n};\nvar syncToastStore = new SyncToastStore();\n//#endregion\n//#region src/shared/presentation/toast/SyncToast.svelte\nfunction SyncToast($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tfunction kindLabel(kind) {\n\t\t\tswitch (kind) {\n\t\t\t\tcase \"feature\": return \"feature\";\n\t\t\t\tcase \"project\": return \"project\";\n\t\t\t\tcase \"implementation-status\": return \"status\";\n\t\t\t}\n\t\t}\n\t\tfunction kindAccent(kind) {\n\t\t\tswitch (kind) {\n\t\t\t\tcase \"feature\": return \"border-cyan-200 bg-cyan-50\";\n\t\t\t\tcase \"project\": return \"border-violet-200 bg-violet-50\";\n\t\t\t\tcase \"implementation-status\": return \"border-emerald-200 bg-emerald-50\";\n\t\t\t}\n\t\t}\n\t\tfunction opLabel(toast) {\n\t\t\tif (toast.op === \"delete\") return \"deleted\";\n\t\t\tswitch (toast.changeOp) {\n\t\t\t\tcase \"added\": return \"added\";\n\t\t\t\tcase \"removed\": return \"removed\";\n\t\t\t\tcase \"renamed\": return \"renamed\";\n\t\t\t\tcase \"edited\": return \"edited\";\n\t\t\t\tcase \"queued\": return \"queued\";\n\t\t\t\tcase \"unqueued\": return \"unqueued\";\n\t\t\t\tcase \"created\": return \"created\";\n\t\t\t\tcase \"deleted\": return \"deleted\";\n\t\t\t\tdefault: return \"saved\";\n\t\t\t}\n\t\t}\n\t\tfunction breadcrumb(toast) {\n\t\t\tconst parts = [];\n\t\t\tif (toast.projectName) parts.push(toast.projectName);\n\t\t\tconst root = toast.changePath?.[0];\n\t\t\tconst headIsEntity = root !== void 0 && (toast.name === root || !toast.name);\n\t\t\tif (toast.name && !headIsEntity) parts.push(toast.name);\n\t\t\tif (toast.changePath && toast.changePath.length > 0) for (const segment of toast.changePath) parts.push(segment);\n\t\t\telse if (toast.name && parts[parts.length - 1] !== toast.name) parts.push(toast.name);\n\t\t\tconst cleaned = [];\n\t\t\tfor (const seg of parts) {\n\t\t\t\tif (seg === \"unknown\") continue;\n\t\t\t\tif (cleaned[cleaned.length - 1] !== seg) cleaned.push(seg);\n\t\t\t}\n\t\t\tif (cleaned.length === 0) cleaned.push(toast.entityId);\n\t\t\treturn cleaned;\n\t\t}\n\t\tif (syncToastStore.toasts.length > 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(syncToastStore.toasts);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet toast = each_array[$$index_1];\n\t\t\t\tconst crumbs = breadcrumb(toast);\n\t\t\t\t$$renderer.push(`<div${attr_class(`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${stringify(kindAccent(toast.kind))}`)}><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\">MCP · ${escape_html(opLabel(toast))} ${escape_html(kindLabel(toast.kind))}</span> `);\n\t\t\t\tif (toast.actingFor) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<span class=\"rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800\">for ${escape_html(toast.actingFor)}</span>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div> <div class=\"mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900\"><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(crumbs);\n\t\t\t\tfor (let i = 0, $$length = each_array_1.length; i < $$length; i++) {\n\t\t\t\t\tlet segment = each_array_1[i];\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"shrink-0 text-slate-400\" aria-hidden=\"true\">›</span>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--> <span${attr_class(`truncate ${i === crumbs.length - 1 ? \"font-semibold\" : \"text-slate-600\"}`)}>${escape_html(segment)}</span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\t\tif (toast.changeOp === \"renamed\" && toast.previousName) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"mt-0.5 truncate text-[11px] text-slate-500\">was “${escape_html(toast.previousName)}”</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div> <div class=\"flex shrink-0 items-center gap-1\">`);\n\t\t\t\tif (toast.href) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<a${attr(\"href\", toast.href)} 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>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--> <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>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/tutorial/presentation/components/TourPanel.svelte\nfunction TourPanel($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/**\n\t\t* The side-panel UI of the tour: title, body, navigation buttons,\n\t\t* \"go to route\" CTA when the user is on the wrong page.\n\t\t*\n\t\t* Rendered as a `[popover=\"manual\"]` element so the browser places it\n\t\t* in the top layer cross-browser. Native `<dialog>.show()` is only\n\t\t* top-layer in Chromium; the Popover API is the cross-browser\n\t\t* equivalent and supports the same \"last opened wins\" re-stacking we\n\t\t* need to bump the panel above any modal dialog the app opens during\n\t\t* the tour.\n\t\t*\n\t\t* Pure view: receives all dynamic data via props + callbacks, owns no\n\t\t* state, knows nothing about the DOM at large. The orchestrator\n\t\t* (TourOverlay) feeds it the active step, the resolved position, and\n\t\t* the canAdvance verdict.\n\t\t*/\n\t\t/** 1-based index of the current step. */\n\t\t/** True when the page route already matches the step's `route.pathname`. */\n\t\t/** Resolved by the parent based on the step + target rect. */\n\t\t/** Whether the user has fulfilled the step's requirements (for manual-advance steps). */\n\t\t/**\n\t\t* Bound by the parent so it can call .showPopover()/.hidePopover()\n\t\t* on the underlying element.\n\t\t*/\n\t\tlet { step, stepNumber, totalSteps, onCorrectRoute, placement, nextEnabled, panelEl, onGoToRoute, onPrev, onNext, onExit } = $$props;\n\t\tconst isFirst = derived(() => stepNumber === 1);\n\t\tconst isLast = derived(() => stepNumber === totalSteps);\n\t\t/** Inline style string for the popover. Adds 1.5rem margins on edges. */\n\t\tconst positionStyle = derived(() => {\n\t\t\tswitch (placement.kind) {\n\t\t\t\tcase \"bottom-right\": return \"bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;\";\n\t\t\t\tcase \"bottom-left\": return \"bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;\";\n\t\t\t\tcase \"absolute\": return `top: ${placement.top}px; left: ${placement.left}px; bottom: auto; right: auto;`;\n\t\t\t}\n\t\t});\n\t\t$$renderer.push(`<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\"${attr_style(positionStyle())} 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\">Tutorial · step ${escape_html(stepNumber)} of ${escape_html(totalSteps)}</p> <h3 class=\"mt-0.5 text-sm font-semibold text-slate-950\">${escape_html(step.title)}</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\">${escape_html(step.body)}</p> `);\n\t\tif (!onCorrectRoute && step.route) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<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\">${escape_html(step.route.label)} →</button></div>`);\n\t\t} else if (step.advance.kind === \"click\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<p class=\"mt-3 text-[10px] italic text-slate-500\">Click the highlighted element to continue.</p>`);\n\t\t} else if (step.advance.kind === \"event\") {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<p class=\"mt-3 text-[10px] italic text-slate-500\">Do the action above to continue.</p>`);\n\t\t} else if (step.advance.kind === \"manual\" && !nextEnabled) {\n\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t$$renderer.push(`<p class=\"mt-3 text-[10px] italic text-amber-700\">Finish the action above first, then click Next.</p>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <footer class=\"mt-3 flex items-center justify-between gap-2\"><button type=\"button\"${attr(\"disabled\", isFirst(), true)} 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\"${attr(\"disabled\", !nextEnabled, true)} 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\"${attr(\"title\", nextEnabled ? isLast() ? \"Finish the tour\" : \"Next step\" : \"Finish the current action first\")}>${escape_html(isLast() ? \"Finish\" : \"Next\")} →</button></footer></aside>`);\n\t});\n}\n//#endregion\n//#region src/features/tutorial/presentation/components/TourSpotlight.svelte\nfunction TourSpotlight($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/**\n\t\t* Renders the visual highlight for a tour step:\n\t\t* - a ring + box-shadow cutout around `rect` when a target is found\n\t\t* and the rect overlaps the viewport\n\t\t* - an arrow indicator pinned to the top or bottom of the viewport\n\t\t* when the target is off-screen (the user scrolled away)\n\t\t* - a full-screen dim when there is no target (welcome / done steps)\n\t\t*\n\t\t* Pure view: takes a rect, renders pixels. Knows nothing about where\n\t\t* the rect comes from and nothing about the tour engine. Keeping this\n\t\t* component dumb is what lets the spotlight be reused for future tour\n\t\t* flavors (e.g. an \"explore mode\" that highlights without an active\n\t\t* tour step).\n\t\t*/\n\t\t/** Viewport rect of the element to highlight, or null for a full-screen dim. */\n\t\t/** Viewport rect of the element to highlight, or null for a full-screen dim. */\n\t\tlet { rect } = $$props;\n\t\tconst PAD = 10;\n\t\tconst ring = derived(() => {\n\t\t\tif (!rect) return null;\n\t\t\treturn {\n\t\t\t\ttop: rect.top - PAD,\n\t\t\t\tleft: rect.left - PAD,\n\t\t\t\twidth: rect.width + PAD * 2,\n\t\t\t\theight: rect.height + PAD * 2\n\t\t\t};\n\t\t});\n\t\t/**\n\t\t* Off-screen state of the target:\n\t\t* - 'above': target is above the visible viewport (or behind sticky header)\n\t\t* - 'below': target is below the visible viewport\n\t\t* - 'visible': at least partially in view\n\t\t* - null: no target (full-screen dim case)\n\t\t*/\n\t\tconst offscreen = derived(() => {\n\t\t\treturn null;\n\t\t});\n\t\tif (ring() && offscreen() === \"visible\") {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent\"${attr_style(`top: ${stringify(ring().top)}px; left: ${stringify(ring().left)}px; width: ${stringify(ring().width)}px; height: ${stringify(ring().height)}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)} aria-hidden=\"true\"></div>`);\n\t\t} else if (ring() && offscreen() === \"above\") {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t} else if (ring() && offscreen() === \"below\") {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<div class=\"pointer-events-none fixed inset-0 z-20 bg-slate-950/55\" aria-hidden=\"true\"></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/tutorial/presentation/components/TourOverlay.svelte\nfunction TourOverlay($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/**\n\t\t* Thin orchestrator. Composes:\n\t\t* - TourPanel (the side-panel UI, rendered as a `[popover]`)\n\t\t* - TourSpotlight (the highlight ring / full-screen dim)\n\t\t* - useTargetTracker (DOM observer that maps selector → live rect)\n\t\t* - inputPrefill (seeds tour-nominated inputs)\n\t\t* - topLayerStacker (keeps the panel above other top-layer dialogs)\n\t\t*\n\t\t* Each chunk knows one thing. This file's only job is gluing them to\n\t\t* the tour store and to the SvelteKit `page` for the route check.\n\t\t*/\n\t\tconst step = derived(() => tourStore.currentStep);\n\t\tconst onCorrectRoute = derived(() => {\n\t\t\tif (!step()?.route) return true;\n\t\t\treturn page.url?.pathname === step().route.pathname;\n\t\t});\n\t\tconst targetRect = derived(() => null);\n\t\t/**\n\t\t* Resolved panel placement honouring the step's `panelPosition` hint:\n\t\t* - `bottom-right` (default): pinned corner.\n\t\t* - `avoid-target`: flip to bottom-left if the target sits in the\n\t\t* right half of the viewport (simulator steps).\n\t\t* - `below-target`: position directly under the highlighted rect,\n\t\t* centred horizontally. Falls back to bottom-right if there's no\n\t\t* room or no target.\n\t\t*/\n\t\tconst PANEL_WIDTH = 320;\n\t\tconst PANEL_HEIGHT_ESTIMATE = 220;\n\t\tconst PANEL_MARGIN = 16;\n\t\tconst panelPlacement = derived(() => {\n\t\t\tif (typeof window === \"undefined\") return { kind: \"bottom-right\" };\n\t\t\tconst mode = step()?.panelPosition ?? \"bottom-right\";\n\t\t\tif (mode === \"avoid-target\") {\n\t\t\t\tif (!targetRect()) return { kind: \"bottom-right\" };\n\t\t\t\treturn targetRect().left + targetRect().width / 2 > window.innerWidth / 2 ? { kind: \"bottom-left\" } : { kind: \"bottom-right\" };\n\t\t\t}\n\t\t\tif (mode === \"below-target\" && targetRect()) {\n\t\t\t\tconst top = targetRect().bottom + PANEL_MARGIN;\n\t\t\t\tif (top + PANEL_HEIGHT_ESTIMATE > window.innerHeight - PANEL_MARGIN) return { kind: \"bottom-right\" };\n\t\t\t\tconst centredLeft = targetRect().left + targetRect().width / 2 - PANEL_WIDTH / 2;\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"absolute\",\n\t\t\t\t\ttop,\n\t\t\t\t\tleft: Math.max(PANEL_MARGIN, Math.min(centredLeft, window.innerWidth - PANEL_WIDTH - PANEL_MARGIN))\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn { kind: \"bottom-right\" };\n\t\t});\n\t\t/**\n\t\t* Whether the Next button should be enabled. Manual steps default\n\t\t* to enabled; click/event steps default to disabled (only the natural\n\t\t* trigger advances). A step's optional `canAdvance` predicate\n\t\t* overrides the manual default — used by the form-modification steps\n\t\t* to gate Next until the user has actually added the\n\t\t* parameter/effect/rule.\n\t\t*/\n\t\tconst nextEnabled = derived(() => {\n\t\t\tif (!step()) return false;\n\t\t\tif (step().advance.kind !== \"manual\") return false;\n\t\t\tif (step().canAdvance) return step().canAdvance();\n\t\t\treturn true;\n\t\t});\n\t\tfunction handleGoToRoute() {\n\t\t\tif (!step()?.route) return;\n\t\t\tgoto(step().route.pathname);\n\t\t}\n\t\tif (step()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tif (onCorrectRoute()) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\tTourSpotlight($$renderer, { rect: targetRect() });\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tTourPanel($$renderer, {\n\t\t\t\tstep: step(),\n\t\t\t\tstepNumber: tourStore.stepIndex + 1,\n\t\t\t\ttotalSteps: tourStore.totalSteps,\n\t\t\t\tonCorrectRoute: onCorrectRoute(),\n\t\t\t\tplacement: panelPlacement(),\n\t\t\t\tnextEnabled: nextEnabled(),\n\t\t\t\tpanelEl: (el) => el,\n\t\t\t\tonGoToRoute: handleGoToRoute,\n\t\t\t\tonPrev: () => tourStore.previous(),\n\t\t\t\tonNext: () => tourStore.next(),\n\t\t\t\tonExit: () => tourStore.cancel()\n\t\t\t});\n\t\t\t$$renderer.push(`<!---->`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/routes/+layout.svelte\nfunction _layout($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tconst initial = derived(() => identityStore.name.trim().charAt(0).toUpperCase());\n\t\tlet identityMenuOpen = false;\n\t\tlet settingsMenuOpen = false;\n\t\tlet { children } = $$props;\n\t\tconst views = derived(enabledViews);\n\t\tconst showViewSwitcher = derived(() => views().length > 1);\n\t\tconst builderActive = derived(() => isEnabled(\"builder\") && page.url.pathname.startsWith(\"/builder-mode\"));\n\t\tconst mcpActive = derived(() => page.url.pathname.startsWith(\"/mcp\"));\n\t\tconst dark = derived(builderActive);\n\t\tconst builderProject = derived(() => builderActive() ? builderModeStore.selectedProject : null);\n\t\tconst builderSearch = derived(() => builderModeStore.search);\n\t\tderived(() => page.url.pathname);\n\t\t$$renderer.push(`<div class=\"flex min-h-full flex-col bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)] text-ink\"><header${attr_class(`sticky top-0 z-30 border-b backdrop-blur transition-colors ${dark() ? \"border-slate-800 bg-slate-950/90\" : \"border-slate-200 bg-white/95\"}`)}><div class=\"mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6\"><div class=\"flex min-w-0 items-center gap-3\"><a href=\"/\" class=\"flex shrink-0 items-center gap-2\"><img src=\"/unspaghettit_logo.png\" alt=\"Unspaghettit\" class=\"h-12 w-auto\"/> <span${attr_class(`relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block ${dark() ? \"text-white\" : \"text-slate-950\"}`)}>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> `);\n\t\tif (showViewSwitcher()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div role=\"group\" aria-label=\"View mode\"${attr_class(`flex shrink-0 items-center rounded-full border p-0.5 text-[11px] font-medium ${dark() ? \"border-slate-700/70 bg-slate-800/60\" : \"border-slate-200 bg-slate-100\"}`)}><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(views());\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet view = each_array[$$index];\n\t\t\t\tconst active = view.matches(page.url.pathname);\n\t\t\t\t$$renderer.push(`<a${attr(\"href\", view.href)}${attr_class(`rounded-full px-2.5 py-0.5 transition ${active ? dark() ? \"bg-slate-700 text-white shadow-sm shadow-black/20\" : \"bg-white text-slate-900 shadow-sm shadow-slate-950/10\" : dark() ? \"text-slate-400 hover:text-slate-200\" : \"text-slate-500 hover:text-slate-800\"}`)}${attr(\"aria-current\", active ? \"page\" : void 0)}>${escape_html(view.label)}</a>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (builderProject()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"hidden min-w-0 items-center gap-2 sm:flex\"><span class=\"shrink-0 text-slate-600\" aria-hidden=\"true\">/</span> <button type=\"button\" class=\"max-w-56 truncate text-sm font-medium text-white transition hover:text-brand-300\" title=\"Back to all projects\">${escape_html(builderProject().name)}</button></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> `);\n\t\tif (builderActive()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"mx-3 hidden min-w-0 flex-1 justify-center md:flex\"><label for=\"builder-global-search\" class=\"sr-only\">Search builder</label> <div class=\"relative w-full max-w-md\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"m20 20-3.5-3.5\"></path></svg> <input id=\"builder-global-search\" type=\"search\" placeholder=\"Search...\"${attr(\"value\", builderSearch())} class=\"h-9 w-full rounded-lg border border-slate-700 bg-slate-900/70 py-1.5 pl-9 pr-9 text-sm text-white placeholder:text-slate-500 outline-none transition focus:border-brand-400 focus:ring-2 focus:ring-brand-500/20\"/> `);\n\t\t\tif (builderSearch().trim().length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"absolute right-2 top-1/2 grid h-6 w-6 -translate-y-1/2 place-items-center rounded-md text-slate-500 transition hover:bg-slate-800 hover:text-white\" aria-label=\"Clear builder search\" title=\"Clear search\">×</button>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <div class=\"flex shrink-0 items-center gap-1.5\"><div class=\"relative\"><button type=\"button\" aria-haspopup=\"menu\"${attr(\"aria-expanded\", settingsMenuOpen)} aria-label=\"Open app menu\" title=\"App menu\"${attr_class(`grid h-9 w-9 place-items-center rounded-md transition ${mcpActive() ? dark() ? \"bg-slate-800 text-white\" : \"bg-slate-900 text-white\" : dark() ? \"text-slate-400 hover:bg-slate-800 hover:text-white\" : \"text-slate-600 hover:bg-slate-100 hover:text-slate-950\"}`)}><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=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\"></path></svg></button> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div> <a href=\"/tutorial\" aria-label=\"Help & tutorial\" title=\"Help & tutorial\"${attr_class(`grid h-9 w-9 place-items-center rounded-md transition ${dark() ? \"text-slate-400 hover:bg-slate-800 hover:text-white\" : \"text-slate-600 hover:bg-slate-100 hover:text-slate-950\"}`)}><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"h-5 w-5\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"></circle><path d=\"M9.4 9a2.6 2.6 0 0 1 5 1c0 1.6-2.4 2-2.4 3.4\"></path><line x1=\"12\" y1=\"17.5\" x2=\"12.01\" y2=\"17.5\"></line></svg></a> <div class=\"relative flex items-center gap-1.5\"><button type=\"button\" aria-haspopup=\"menu\"${attr(\"aria-expanded\", identityMenuOpen)}${attr(\"aria-label\", identityStore.name ? `Signed in as ${identityStore.name}. Open identity menu.` : \"Set your display name\")}${attr(\"title\", identityStore.name ? `Signed in as ${identityStore.name}` : \"Set a display name so your edits are recognisable in history\")}${attr_class(`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 ${identityStore.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\"}`)}>`);\n\t\tif (identityStore.name) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span aria-hidden=\"true\">${escape_html(initial())}</span>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<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>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--> <span${attr_class(`absolute -right-0.5 -bottom-0.5 inline-flex h-3 w-3 items-center justify-center rounded-full ring-2 ring-white ${identityStore.name ? \"bg-emerald-500\" : \"bg-amber-400\"}`)} aria-hidden=\"true\"></span></button> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></div></div> `);\n\t\tif (builderActive()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div class=\"mx-auto px-4 pb-3 md:hidden\"><label for=\"builder-global-search-mobile\" class=\"sr-only\">Search builder</label> <div class=\"relative\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"m20 20-3.5-3.5\"></path></svg> <input id=\"builder-global-search-mobile\" type=\"search\" placeholder=\"Search...\"${attr(\"value\", builderSearch())} class=\"h-9 w-full rounded-lg border border-slate-700 bg-slate-900/70 py-1.5 pl-9 pr-9 text-sm text-white placeholder:text-slate-500 outline-none transition focus:border-brand-400 focus:ring-2 focus:ring-brand-500/20\"/> `);\n\t\t\tif (builderSearch().trim().length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"absolute right-2 top-1/2 grid h-6 w-6 -translate-y-1/2 place-items-center rounded-md text-slate-500 transition hover:bg-slate-800 hover:text-white\" aria-label=\"Clear builder search\" title=\"Clear search\">×</button>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></header> <main class=\"flex-1\"><!---->`);\n\t\t$$renderer.push(`<div class=\"motion-reduce:animate-none! motion-reduce:opacity-100!\">`);\n\t\tchildren($$renderer);\n\t\t$$renderer.push(`<!----></div>`);\n\t\t$$renderer.push(`<!----></main></div> `);\n\t\tAppDialog($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tFlyingSpaghettiEasterEgg($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tSyncToast($$renderer, {});\n\t\t$$renderer.push(`<!----> `);\n\t\tTourOverlay($$renderer, {});\n\t\t$$renderer.push(`<!---->`);\n\t});\n}\n//#endregion\nexport { _layout as default };\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_page.svelte-BqSC-1vK.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/builder-mode/_page.svelte.js"],"sourcesContent":["import { G as attr, K as clsx, d as head, l as derived, m as stringify, n as onDestroy, o as attr_class, q as escape_html, s as attr_style, u as ensure_array_like } from \"../../../chunks/index-server.js\";\nimport { Q as tagLabel, Z as tagKey, q as humanizeTagText } from \"../../../chunks/TagPalette.js\";\nimport \"../../../chunks/state.js\";\nimport \"../../../chunks/navigation.js\";\nimport { t as builderModeStore } from \"../../../chunks/builderModeStore.svelte.js\";\n//#region src/features/builder-mode/presentation/components/ClampedDescription.svelte\nfunction ClampedDescription($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { text, class: className = \"\" } = $$props;\n\t\t$$renderer.push(`<div${attr_class(clsx(className), \"svelte-btsgvr\")}><p class=\"clamp-2 text-sm leading-5 text-slate-400 svelte-btsgvr\">${escape_html(text)}</p> `);\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div>`);\n\t});\n}\n//#endregion\n//#region src/features/builder-mode/presentation/components/BuilderTagChips.svelte\nvar nextDatalistSerial = 0;\nfunction BuilderTagChips($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { tags, onToggle, isActive, onAdd, onRemove, onRename, typeOptions = [], class: className = \"\" } = $$props;\n\t\tconst datalistId = `buildertags-types-${++nextDatalistSerial}`;\n\t\tconst SLATE = \"#64748b\";\n\t\tconst chipStyle = (color, active) => {\n\t\t\tconst base = color ?? SLATE;\n\t\t\tconst fill = active ? 42 : 20;\n\t\t\tconst ring = active ? 72 : 42;\n\t\t\treturn [\n\t\t\t\t`background-color: color-mix(in srgb, ${base} ${fill}%, #0b1220)`,\n\t\t\t\t`color: color-mix(in srgb, ${base} 72%, white)`,\n\t\t\t\t`box-shadow: inset 0 0 0 1px color-mix(in srgb, ${base} ${ring}%, transparent)`\n\t\t\t].join(\"; \");\n\t\t};\n\t\tlet editingKey = null;\n\t\tlet editType = \"\";\n\t\tlet editValue = \"\";\n\t\tif (tags.length > 0 || onAdd) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<div${attr_class(clsx(className))}><div class=\"flex flex-wrap items-center gap-1.5\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(tags);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet tag = each_array[$$index];\n\t\t\t\tif (editingKey === tagKey(tag)) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<form class=\"inline-flex items-center gap-1\"><input${attr(\"value\", editType)}${attr(\"list\", typeOptions.length > 0 ? datalistId : void 0)} placeholder=\"Type\" class=\"h-6 w-16 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500\"/> <input${attr(\"value\", editValue)} placeholder=\"Value\" class=\"h-6 w-20 rounded border border-slate-700 bg-slate-900/70 px-1.5 text-[11px] text-slate-200 outline-none focus:border-brand-500\"/> <button type=\"submit\" class=\"text-[11px] font-semibold text-brand-300 hover:text-brand-200\" title=\"Rename everywhere\">✓</button> <button type=\"button\" class=\"text-[11px] text-slate-500 hover:text-slate-300\" title=\"Cancel\">✕</button></form>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\tconst color = builderModeStore.colorForTag(tag);\n\t\t\t\t\tconst active = isActive?.(tag) ?? false;\n\t\t\t\t\t$$renderer.push(`<span class=\"group/chip inline-flex max-w-full items-center gap-1 rounded-full py-0.5 pl-2 pr-1.5 text-[10px] font-medium transition\"${attr_style(chipStyle(color, active))}><span class=\"size-1.5 shrink-0 rounded-full\"${attr_style(`background-color: ${stringify(color ?? SLATE)}`)}></span> `);\n\t\t\t\t\tif (onToggle) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"truncate\"${attr(\"aria-pressed\", active)}${attr(\"title\", `${tagLabel(tag)} — click to filter`)}>${escape_html(humanizeTagText(tag.value))}</button>`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<span class=\"truncate\"${attr(\"title\", tagLabel(tag))}>${escape_html(humanizeTagText(tag.value))}</span>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (onRename) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!\"${attr(\"aria-label\", `Rename ${tagLabel(tag)}`)} title=\"Rename (applies everywhere)\">✎</button>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\t\tif (onRemove) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"shrink-0 opacity-0 transition group-hover/chip:opacity-70 hover:opacity-100!\"${attr(\"aria-label\", `Remove ${tagLabel(tag)}`)} title=\"Remove from this item\">✕</button>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--></span>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (onAdd) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"size-5 items-center justify-center rounded-full border border-dashed border-slate-600 text-[11px] leading-none text-slate-400 transition hover:border-brand-500 hover:text-brand-300 hidden group-hover:inline-flex group-focus-within:inline-flex\" aria-label=\"Add tag\" title=\"Add tag\">+</button>`);\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (typeOptions.length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<datalist${attr(\"id\", datalistId)}><!--[-->`);\n\t\t\t\tconst each_array_1 = ensure_array_like(typeOptions);\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet option = each_array_1[$$index_1];\n\t\t\t\t\t$$renderer.option({ value: option }, ($$renderer) => {});\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></datalist>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div></div>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/features/builder-mode/presentation/components/GameScore.svelte\nfunction GameScore($$renderer, $$props) {\n\tlet { label, value } = $$props;\n\tconst normalized = derived(() => value === null ? 0 : Math.max(0, Math.min(100, value)));\n\tconst displayValue = derived(() => `${normalized()}%`);\n\tconst dash = derived(() => normalized() * .87965);\n\tconst toneClass = derived(() => normalized() >= 80 ? \"is-high\" : normalized() >= 45 ? \"is-mid\" : \"is-low\");\n\t$$renderer.push(`<div${attr_class(`score-meter ${toneClass()}`, \"svelte-tnjw1f\")}><div class=\"score-meter__dial svelte-tnjw1f\"><svg viewBox=\"0 0 36 36\" class=\"score-meter__svg svelte-tnjw1f\" aria-hidden=\"true\"><circle cx=\"18\" cy=\"18\" r=\"16\" fill=\"none\" class=\"score-meter__outer svelte-tnjw1f\" stroke-width=\"1.2\"></circle><circle cx=\"18\" cy=\"18\" r=\"14\" fill=\"none\" class=\"score-meter__track svelte-tnjw1f\" stroke-width=\"2.4\"></circle><circle cx=\"18\" cy=\"18\" r=\"14\" fill=\"none\" class=\"score-meter__arc-glow svelte-tnjw1f\" stroke-width=\"8\"${attr(\"stroke-linecap\", normalized() > 0 ? \"round\" : \"butt\")}${attr(\"stroke-dasharray\", `${dash()} 87.965`)}></circle><circle cx=\"18\" cy=\"18\" r=\"14\" fill=\"none\" class=\"score-meter__arc svelte-tnjw1f\" stroke-width=\"2.4\"${attr(\"stroke-linecap\", normalized() > 0 ? \"round\" : \"butt\")}${attr(\"stroke-dasharray\", `${dash()} 87.965`)}></circle></svg> <span class=\"score-meter__readout svelte-tnjw1f\">${escape_html(displayValue())}</span></div> <span class=\"score-meter__label svelte-tnjw1f\">${escape_html(label)}</span></div>`);\n}\n//#endregion\n//#region src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte\nfunction ActiveTagFilter($$renderer) {\n\tif (builderModeStore.activeTag) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\tconst tag = builderModeStore.activeTag;\n\t\t$$renderer.push(`<button type=\"button\" class=\"inline-flex shrink-0 items-center gap-1.5 rounded-full border border-brand-500/50 bg-brand-500/10 px-2.5 py-1 text-xs font-medium text-brand-200 transition hover:bg-brand-500/20 svelte-xw1ck7\"${attr(\"title\", `Clear tag filter: ${humanizeTagText(tag.type)} · ${humanizeTagText(tag.value)}`)}><span class=\"text-brand-300/70 svelte-xw1ck7\">Tag</span> <span class=\"font-semibold svelte-xw1ck7\">${escape_html(humanizeTagText(tag.value))}</span> <span aria-hidden=\"true\" class=\"svelte-xw1ck7\">✕</span></button>`);\n\t} else $$renderer.push(\"<!--[-1-->\");\n\t$$renderer.push(`<!--]-->`);\n}\nfunction QueuePositionBadge($$renderer, position) {\n\t$$renderer.push(`<span class=\"grid h-4 min-w-4 shrink-0 place-items-center rounded-full bg-white/25 px-1 text-[10px] font-bold leading-none tabular-nums svelte-xw1ck7\"${attr(\"title\", `Build queue position #${position}`)}>${escape_html(position)}</span>`);\n}\nfunction QueueButton($$renderer, featureId, actionId) {\n\tconst position = builderModeStore.queuePositionForAction(featureId, actionId);\n\tconst queued = position !== null;\n\t$$renderer.push(`<button type=\"button\"${attr_class(`relative z-20 inline-flex shrink-0 items-center gap-1 rounded-full border px-2.5 py-1 text-[11px] font-semibold transition ${queued ? \"border-brand-400 bg-brand-500 text-white shadow-sm shadow-brand-500/30\" : \"border-slate-700 bg-slate-800/60 text-slate-300 hover:border-brand-500 hover:text-brand-300\"}`, \"svelte-xw1ck7\")}${attr(\"aria-pressed\", queued)}${attr(\"title\", queued ? `In build queue at position #${position} (click to remove)` : \"Add to build queue\")}>`);\n\tif (position !== null) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\tQueuePositionBadge($$renderer, position);\n\t\t$$renderer.push(`<!----> <span class=\"svelte-xw1ck7\">Queued</span>`);\n\t} else {\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`+ Implement`);\n\t}\n\t$$renderer.push(`<!--]--></button>`);\n}\nfunction QueueFeatureButton($$renderer, featureId) {\n\tconst position = builderModeStore.queuePositionForFeature(featureId);\n\tconst queued = position !== null;\n\t$$renderer.push(`<button type=\"button\"${attr_class(`relative z-20 inline-flex shrink-0 items-center gap-1 rounded-full border px-2.5 py-1 text-[11px] font-semibold transition ${queued ? \"border-brand-400 bg-brand-500 text-white shadow-sm shadow-brand-500/30\" : \"border-slate-700 bg-slate-800/60 text-slate-300 hover:border-brand-500 hover:text-brand-300\"}`, \"svelte-xw1ck7\")}${attr(\"aria-pressed\", queued)}${attr(\"title\", queued ? `Whole feature queued at position #${position} — the build implements whatever is still missing (click to remove)` : \"Queue the whole feature: implement everything still missing\")}>`);\n\tif (position !== null) {\n\t\t$$renderer.push(\"<!--[0-->\");\n\t\tQueuePositionBadge($$renderer, position);\n\t\t$$renderer.push(`<!----> <span class=\"svelte-xw1ck7\">Queued</span>`);\n\t} else {\n\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`+ Implement all`);\n\t}\n\t$$renderer.push(`<!--]--></button>`);\n}\nfunction BuilderModeDashboard($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\ttypeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\t\tlet promptStuck = false;\n\t\tconst skeletonSlots = Array.from({ length: 8 }, (_, i) => i);\n\t\tlet unsubscribeSync = null;\n\t\tonDestroy(() => {\n\t\t\tunsubscribeSync?.();\n\t\t\tunsubscribeSync = null;\n\t\t});\n\t\tfunction projectFeatureCount(project) {\n\t\t\treturn project.coreFeatures.reduce((total, coreFeature) => total + coreFeature.features.length, 0);\n\t\t}\n\t\tfunction suggestionLabel(suggestion) {\n\t\t\treturn suggestion.tone === \"urgent\" ? \"Priority\" : \"Idea\";\n\t\t}\n\t\tconst ghostPill = \"inline-flex items-center gap-1.5 rounded-lg border border-slate-700 bg-slate-900/60 px-3 py-1.5 text-xs font-medium text-slate-300 transition hover:border-brand-500/60 hover:bg-slate-800 hover:text-brand-300\";\n\t\tfunction SuggestionList($$renderer, featureId, suggestions) {\n\t\t\t$$renderer.push(`<ul class=\"space-y-2 svelte-xw1ck7\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(suggestions);\n\t\t\tfor (let i = 0, $$length = each_array.length; i < $$length; i++) {\n\t\t\t\tlet suggestion = each_array[i];\n\t\t\t\t$$renderer.push(`<li class=\"flex items-start gap-2 text-sm leading-5 text-slate-300 svelte-xw1ck7\"><span${attr_class(`mt-0.5 shrink-0 rounded-md px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide ${suggestion.tone === \"urgent\" ? \"bg-rose-500/15 text-rose-300\" : \"bg-violet-500/15 text-violet-300\"}`, \"svelte-xw1ck7\")}>${escape_html(suggestionLabel(suggestion))}</span> <span class=\"min-w-0 flex-1 svelte-xw1ck7\">${escape_html(suggestion.text)}</span> `);\n\t\t\t\tif (builderModeStore.isBusy(suggestion.id)) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<svg class=\"h-4 w-4 shrink-0 animate-spin text-brand-400 svelte-xw1ck7\" viewBox=\"0 0 24 24\" fill=\"none\" aria-label=\"Working\" role=\"status\"><circle class=\"opacity-25 svelte-xw1ck7\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"3\"></circle><path class=\"opacity-90 svelte-xw1ck7\" fill=\"currentColor\" d=\"M12 2a10 10 0 0 1 10 10h-3a7 7 0 0 0-7-7V2z\"></path></svg>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"relative z-20 shrink-0 rounded-full border border-slate-700 bg-slate-800/60 px-2.5 py-1 text-[11px] font-semibold text-slate-300 transition hover:border-brand-500 hover:bg-brand-500 hover:text-white svelte-xw1ck7\" title=\"Accept this idea (turn it into a feature) and add it to the build queue\">+ Implement</button> <button type=\"button\" class=\"shrink-0 rounded-md p-1 text-slate-500 transition hover:bg-slate-700 hover:text-rose-300 svelte-xw1ck7\" aria-label=\"Dismiss suggestion\" title=\"Dismiss this suggestion (the assistant won't suggest it again)\">✕</button>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\tfunction FeatureCard($$renderer, coreFeatureId, feature, index) {\n\t\t\t$$renderer.push(`<article class=\"skeuo-card skeuo-card--interactive skeuo-card--feature p-4 svelte-xw1ck7\"><div class=\"flex items-center gap-2 svelte-xw1ck7\"><h4 class=\"truncate text-base font-semibold text-white svelte-xw1ck7\">${escape_html(feature.name)}</h4> `);\n\t\t\tQueueButton($$renderer, coreFeatureId, feature.id);\n\t\t\t$$renderer.push(`<!----></div> `);\n\t\t\tClampedDescription($$renderer, {\n\t\t\t\ttext: feature.description,\n\t\t\t\tclass: \"mt-1\"\n\t\t\t});\n\t\t\t$$renderer.push(`<!----> <div class=\"mt-3 flex items-center gap-6 border-t border-slate-800 pt-3 svelte-xw1ck7\">`);\n\t\t\tGameScore($$renderer, {\n\t\t\t\tlabel: \"Maturity\",\n\t\t\t\tvalue: feature.maturityPercentage\n\t\t\t});\n\t\t\t$$renderer.push(`<!----> `);\n\t\t\tGameScore($$renderer, {\n\t\t\t\tlabel: \"Built\",\n\t\t\t\tvalue: feature.implementationPercentage\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></div></article>`);\n\t\t}\n\t\tfunction QueueWidget($$renderer) {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<button type=\"button\" class=\"group fixed bottom-5 right-5 z-40 flex items-center gap-2 rounded-full border border-slate-700 bg-slate-900/95 py-2.5 pl-4 pr-3 text-sm font-semibold text-white shadow-2xl shadow-black/40 ring-1 ring-black/20 backdrop-blur transition hover:border-brand-500 hover:shadow-brand-500/20 svelte-xw1ck7\" aria-label=\"Open build queue\" title=\"Build queue\"><span class=\"text-brand-400 transition group-hover:translate-x-0.5 svelte-xw1ck7\" aria-hidden=\"true\">▶</span> Build queue <span class=\"rounded-full bg-brand-500 px-2 py-0.5 text-xs font-bold tabular-nums text-white svelte-xw1ck7\">${escape_html(builderModeStore.queue.length)}</span></button>`);\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<div class=\"min-h-[calc(100vh-4rem)] bg-[radial-gradient(120%_120%_at_50%_-10%,#101a33_0%,#020617_55%)] text-slate-200 svelte-xw1ck7\"><div class=\"mx-auto max-w-7xl px-4 py-8 sm:px-6 lg:px-8 svelte-xw1ck7\"><header class=\"mb-8 border-b border-slate-800 pb-6 svelte-xw1ck7\"><p class=\"text-xs font-semibold uppercase tracking-[0.2em] text-brand-400 svelte-xw1ck7\">Builder</p> <div class=\"mt-2 max-w-3xl svelte-xw1ck7\"><h1 class=\"text-4xl font-semibold tracking-tight text-white svelte-xw1ck7\">Your projects</h1> <p class=\"mt-2 max-w-2xl text-sm leading-6 text-slate-400 svelte-xw1ck7\">Browse your projects and features in a simpler view, and discover ideas to improve each one.</p></div></header> `);\n\t\tif (builderModeStore.loading) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<ul class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 svelte-xw1ck7\" aria-busy=\"true\" aria-live=\"polite\" aria-label=\"Loading projects\"><!--[-->`);\n\t\t\tconst each_array_2 = ensure_array_like(skeletonSlots);\n\t\t\tfor (let $$index = 0, $$length = each_array_2.length; $$index < $$length; $$index++) {\n\t\t\t\tlet slot = each_array_2[$$index];\n\t\t\t\t$$renderer.push(`<li class=\"builder-skeleton__card svelte-xw1ck7\"${attr_style(`--d: ${stringify(slot * 80)}ms`)}><div class=\"flex items-center justify-between gap-3 svelte-xw1ck7\"><span class=\"builder-skeleton__shape h-2.5 w-3/5 rounded-full svelte-xw1ck7\"></span> <span class=\"builder-skeleton__shape h-4 w-14 rounded-full svelte-xw1ck7\"></span></div> <div class=\"flex justify-center gap-10 pt-5 svelte-xw1ck7\"><span class=\"builder-skeleton__shape size-11 rounded-full svelte-xw1ck7\"></span> <span class=\"builder-skeleton__shape size-11 rounded-full svelte-xw1ck7\"></span></div></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t} else if (builderModeStore.error) {\n\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-rose-500/30 bg-rose-500/10 p-4 text-sm text-rose-300 svelte-xw1ck7\">${escape_html(builderModeStore.error)}</div>`);\n\t\t} else if (builderModeStore.dashboard.projects.length === 0) {\n\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-slate-700/60 bg-linear-to-b from-slate-800/50 to-slate-900 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">No projects yet.</div>`);\n\t\t} else if (builderModeStore.searchActive && !builderModeStore.selectedProject && builderModeStore.filteredProjects.length === 0) {\n\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-slate-700/60 bg-linear-to-b from-slate-800/50 to-slate-900 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">No projects, core features, features, or suggestions match your search.</div>`);\n\t\t} else if (builderModeStore.selectedProject) {\n\t\t\t$$renderer.push(\"<!--[4-->\");\n\t\t\tconst selectedProject = builderModeStore.selectedProject;\n\t\t\t$$renderer.push(`<div class=\"space-y-6 svelte-xw1ck7\"><button type=\"button\"${attr_class(clsx(ghostPill), \"svelte-xw1ck7\")}>← All projects (${escape_html(builderModeStore.dashboard.projects.length)})</button> <section class=\"overflow-hidden rounded-2xl border border-slate-700/60 bg-linear-to-b from-slate-800/45 to-slate-900 shadow-xl shadow-black/20 svelte-xw1ck7\"><div class=\"flex flex-col gap-5 p-6 lg:flex-row lg:items-start lg:justify-between svelte-xw1ck7\"><div class=\"min-w-0 svelte-xw1ck7\"><div class=\"flex items-center gap-3 svelte-xw1ck7\"><h2 class=\"truncate text-2xl font-semibold tracking-tight text-white svelte-xw1ck7\">${escape_html(selectedProject.name)}</h2> <span class=\"project-card__count shrink-0 svelte-xw1ck7\">${escape_html(selectedProject.coreFeatures.length)} core / ${escape_html(projectFeatureCount(selectedProject))} feat</span></div> <p class=\"mt-2 max-w-3xl text-sm leading-6 text-slate-400 svelte-xw1ck7\">${escape_html(selectedProject.description)}</p></div> <div class=\"flex shrink-0 items-center gap-6 svelte-xw1ck7\">`);\n\t\t\tGameScore($$renderer, {\n\t\t\t\tlabel: \"Maturity\",\n\t\t\t\tvalue: selectedProject.maturityPercentage\n\t\t\t});\n\t\t\t$$renderer.push(`<!----> `);\n\t\t\tGameScore($$renderer, {\n\t\t\t\tlabel: \"Built\",\n\t\t\t\tvalue: selectedProject.implementationPercentage\n\t\t\t});\n\t\t\t$$renderer.push(`<!----></div></div></section> <div class=\"relative grid scroll-mt-20 items-start gap-5 xl:grid-cols-[minmax(0,0.95fr)_minmax(380px,1.05fr)] svelte-xw1ck7\"><div class=\"pointer-events-none absolute inset-x-0 top-0 h-px svelte-xw1ck7\" aria-hidden=\"true\"></div> <section class=\"flex flex-col gap-3 xl:sticky xl:top-18 xl:self-start svelte-xw1ck7\"><div class=\"flex items-end justify-between gap-3 svelte-xw1ck7\"><div class=\"svelte-xw1ck7\"><h3 class=\"text-sm font-semibold text-white svelte-xw1ck7\">Core features</h3> <p class=\"text-xs text-slate-500 svelte-xw1ck7\">Each core feature contains smaller features.</p></div> <div class=\"flex shrink-0 items-center gap-2 svelte-xw1ck7\">`);\n\t\t\tActiveTagFilter($$renderer);\n\t\t\t$$renderer.push(`<!----> `);\n\t\t\tif (builderModeStore.selectedCoreFeature) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<button type=\"button\"${attr_class(clsx(ghostPill), \"svelte-xw1ck7\")}>← Show all ${escape_html(selectedProject.coreFeatures.length)}</button>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<span class=\"text-xs text-slate-500 svelte-xw1ck7\">${escape_html(builderModeStore.visibleCoreFeatures.length)}${escape_html(builderModeStore.searchActive || builderModeStore.tagActive ? ` of ${selectedProject.coreFeatures.length}` : \"\")}</span>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></div></div> `);\n\t\t\tif (selectedProject.coreFeatures.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-slate-700/60 bg-linear-to-b from-slate-800/50 to-slate-900 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">This project has no core features yet.</div>`);\n\t\t\t} else if (builderModeStore.visibleCoreFeatures.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-dashed border-slate-700 bg-slate-900/40 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">No core features, features, or suggestions match your search.</div>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"space-y-3 svelte-xw1ck7\"><!--[-->`);\n\t\t\t\tconst each_array_3 = ensure_array_like(builderModeStore.visibleCoreFeatures);\n\t\t\t\tfor (let i = 0, $$length = each_array_3.length; i < $$length; i++) {\n\t\t\t\t\tlet coreFeature = each_array_3[i];\n\t\t\t\t\tconst isSelected = builderModeStore.selectedCoreFeature?.id === coreFeature.id;\n\t\t\t\t\t$$renderer.push(`<article${attr_class(`skeuo-card group relative overflow-hidden ${isSelected ? \"skeuo-card--active\" : \"skeuo-card--interactive\"}`, \"svelte-xw1ck7\")}>`);\n\t\t\t\t\tif (!isSelected) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<button type=\"button\" class=\"absolute inset-0 z-10 rounded-xl focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/50 svelte-xw1ck7\"${attr(\"aria-label\", `Open ${coreFeature.name}`)}></button>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--> <div class=\"p-4 svelte-xw1ck7\"><div class=\"flex items-start justify-between gap-3 svelte-xw1ck7\"><div class=\"min-w-0 svelte-xw1ck7\"><div class=\"flex items-center gap-2 svelte-xw1ck7\"><span${attr_class(`min-w-0 flex-1 truncate text-base font-semibold text-white ${isSelected ? \"\" : \"group-hover:text-brand-300\"}`, \"svelte-xw1ck7\")}>${escape_html(coreFeature.name)}</span> <span class=\"project-card__count shrink-0 svelte-xw1ck7\" title=\"Features in this core feature\">${escape_html(coreFeature.features.length)} feat</span> `);\n\t\t\t\t\tQueueFeatureButton($$renderer, coreFeature.id);\n\t\t\t\t\t$$renderer.push(`<!----></div> `);\n\t\t\t\t\tClampedDescription($$renderer, {\n\t\t\t\t\t\ttext: coreFeature.description,\n\t\t\t\t\t\tclass: \"mt-1\"\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!----> `);\n\t\t\t\t\tBuilderTagChips($$renderer, {\n\t\t\t\t\t\ttags: coreFeature.tags,\n\t\t\t\t\t\tonToggle: (tag) => builderModeStore.toggleTag(tag),\n\t\t\t\t\t\tisActive: (tag) => builderModeStore.isActiveTag(tag),\n\t\t\t\t\t\tonAdd: (type, value) => builderModeStore.addCoreFeatureTag(coreFeature.id, {\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tonRemove: (tag) => builderModeStore.removeCoreFeatureTag(coreFeature.id, tag),\n\t\t\t\t\t\tonRename: (from, to) => builderModeStore.renameTag(from, to),\n\t\t\t\t\t\ttypeOptions: builderModeStore.allTagTypes,\n\t\t\t\t\t\tclass: \"relative z-20 mt-2\"\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!----></div> <div class=\"flex shrink-0 items-center gap-4 svelte-xw1ck7\">`);\n\t\t\t\t\tGameScore($$renderer, {\n\t\t\t\t\t\tlabel: \"Maturity\",\n\t\t\t\t\t\tvalue: coreFeature.maturityPercentage\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!----> `);\n\t\t\t\t\tGameScore($$renderer, {\n\t\t\t\t\t\tlabel: \"Built\",\n\t\t\t\t\t\tvalue: coreFeature.implementationPercentage\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!----></div></div></div> `);\n\t\t\t\t\tif (isSelected) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t$$renderer.push(`<div class=\"border-t border-slate-800 bg-slate-950/40 px-4 py-3 svelte-xw1ck7\">`);\n\t\t\t\t\t\tif (coreFeature.suggestions.length > 0) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\tSuggestionList($$renderer, coreFeature.id, coreFeature.suggestions);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<p class=\"text-sm text-slate-500 svelte-xw1ck7\">No suggestions yet. Ask your assistant to propose improvements for this feature.</p>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<!--]--></article>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></section> <section${attr_class(`space-y-3 ${builderModeStore.selectedCoreFeature ? \"\" : \"xl:sticky xl:top-18 xl:flex xl:min-h-[calc(100vh-6rem)] xl:flex-col xl:self-start\"}`, \"svelte-xw1ck7\")}><div class=\"flex items-end justify-between gap-3 svelte-xw1ck7\"><div class=\"svelte-xw1ck7\"><h3 class=\"text-sm font-semibold text-white svelte-xw1ck7\">Features</h3> <p class=\"text-xs text-slate-500 svelte-xw1ck7\">${escape_html(builderModeStore.selectedCoreFeature ? builderModeStore.selectedCoreFeature.name : \"Pick a core feature\")}</p></div> `);\n\t\t\tif (builderModeStore.selectedCoreFeature) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span class=\"text-xs text-slate-500 svelte-xw1ck7\">${escape_html(builderModeStore.visibleSelectedFeatures.length)}${escape_html(builderModeStore.searchActive ? ` of ${builderModeStore.selectedCoreFeature.features.length}` : \"\")}</span>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></div> `);\n\t\t\tif (!builderModeStore.selectedCoreFeature) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div${attr_class(`xl:relative xl:flex-1 xl:rounded-2xl xl:transition-colors xl:duration-500 xl:ease-out xl:motion-reduce:transition-none xl:bg-transparent`, \"svelte-xw1ck7\")}><div${attr_class(`prompt-card rounded-xl border border-dashed border-slate-700 bg-slate-900/40 p-8 text-center text-sm text-slate-400 xl:absolute xl:inset-x-0 xl:mx-auto xl:max-w-sm xl:overflow-hidden xl:transition-[top,transform] xl:duration-500 xl:ease-out xl:motion-reduce:transition-none xl:top-8`, \"svelte-xw1ck7\", { \"is-waiting\": promptStuck })}>Pick a core feature to see its features.</div></div>`);\n\t\t\t} else if (builderModeStore.selectedCoreFeature.features.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-dashed border-slate-700 bg-slate-900/40 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">This core feature has no features yet.</div>`);\n\t\t\t} else if (builderModeStore.visibleSelectedFeatures.length === 0) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<div class=\"rounded-xl border border-dashed border-slate-700 bg-slate-900/40 p-8 text-center text-sm text-slate-400 svelte-xw1ck7\">No features match your search in this core feature.</div>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\tconst coreFeatureId = builderModeStore.selectedCoreFeature.id;\n\t\t\t\t$$renderer.push(`<div class=\"space-y-3 svelte-xw1ck7\"><!--[-->`);\n\t\t\t\tconst each_array_4 = ensure_array_like(builderModeStore.visibleSelectedFeatures);\n\t\t\t\tfor (let i = 0, $$length = each_array_4.length; i < $$length; i++) {\n\t\t\t\t\tlet feature = each_array_4[i];\n\t\t\t\t\tFeatureCard($$renderer, coreFeatureId, feature, i);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></section></div></div>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<section class=\"svelte-xw1ck7\"><div class=\"mb-4 flex items-end justify-between gap-3 svelte-xw1ck7\"><div class=\"svelte-xw1ck7\"><h2 class=\"text-base font-semibold text-white svelte-xw1ck7\">Projects</h2> <p class=\"text-sm text-slate-500 svelte-xw1ck7\">Pick a project to open its build map and queue.</p></div> <div class=\"flex shrink-0 items-center gap-3 svelte-xw1ck7\">`);\n\t\t\tActiveTagFilter($$renderer);\n\t\t\t$$renderer.push(`<!----> <p class=\"text-xs text-slate-500 svelte-xw1ck7\">${escape_html(builderModeStore.filteredProjects.length)}${escape_html(builderModeStore.searchActive || builderModeStore.tagActive ? ` of ${builderModeStore.dashboard.projects.length}` : \" total\")}</p></div></div> <ul class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 svelte-xw1ck7\"><!--[-->`);\n\t\t\tconst each_array_5 = ensure_array_like(builderModeStore.filteredProjects);\n\t\t\tfor (let i = 0, $$length = each_array_5.length; i < $$length; i++) {\n\t\t\t\tlet project = each_array_5[i];\n\t\t\t\t$$renderer.push(`<li class=\"project-card-shell svelte-xw1ck7\"><article class=\"project-card group relative h-full min-h-44 overflow-hidden svelte-xw1ck7\"><button type=\"button\" class=\"absolute inset-0 z-10 rounded-xl focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/50 svelte-xw1ck7\"${attr(\"aria-label\", `Open ${project.name}`)}></button> <div class=\"project-card__button flex h-full w-full flex-col justify-between p-5 text-left svelte-xw1ck7\"><div class=\"project-card__top space-y-2 svelte-xw1ck7\"><div class=\"flex items-start justify-between gap-3 svelte-xw1ck7\"><h3 class=\"min-w-0 truncate text-base font-semibold text-white svelte-xw1ck7\">${escape_html(project.name)}</h3> <span class=\"project-card__count shrink-0 svelte-xw1ck7\">${escape_html(project.coreFeatures.length)} core / ${escape_html(projectFeatureCount(project))} feat</span></div> `);\n\t\t\t\tBuilderTagChips($$renderer, {\n\t\t\t\t\ttags: project.tags,\n\t\t\t\t\tonToggle: (tag) => builderModeStore.toggleTag(tag),\n\t\t\t\t\tisActive: (tag) => builderModeStore.isActiveTag(tag),\n\t\t\t\t\tonAdd: (type, value) => builderModeStore.addProjectTag(project.id, {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}),\n\t\t\t\t\tonRemove: (tag) => builderModeStore.removeProjectTag(project.id, tag),\n\t\t\t\t\tonRename: (from, to) => builderModeStore.renameTag(from, to),\n\t\t\t\t\ttypeOptions: builderModeStore.allTagTypes,\n\t\t\t\t\tclass: \"relative z-20\"\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!----></div> <div class=\"project-card__scores mt-5 flex items-center justify-center gap-10 pt-5 svelte-xw1ck7\">`);\n\t\t\t\tGameScore($$renderer, {\n\t\t\t\t\tlabel: \"Maturity\",\n\t\t\t\t\tvalue: project.maturityPercentage\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!----> `);\n\t\t\t\tGameScore($$renderer, {\n\t\t\t\t\tlabel: \"Built\",\n\t\t\t\t\tvalue: project.implementationPercentage\n\t\t\t\t});\n\t\t\t\t$$renderer.push(`<!----></div></div></article></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul></section>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></div></div> `);\n\t\tif (builderModeStore.selectedProject) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\tQueueWidget($$renderer);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]-->`);\n\t});\n}\n//#endregion\n//#region src/routes/builder-mode/+page.svelte\nfunction _page($$renderer) {\n\thead(\"eir1o2\", $$renderer, ($$renderer) => {\n\t\t$$renderer.title(($$renderer) => {\n\t\t\t$$renderer.push(`<title>Builder Mode / Unspaghettit</title>`);\n\t\t});\n\t});\n\tBuilderModeDashboard($$renderer, {});\n}\n//#endregion\nexport { _page as default };\n"],"names":["clsx"],"mappings":";;;;;;;;;;;;;AAKA;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE;AACjD,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO;AAC/C,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAACA,MAAI,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,mEAAmE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACpK,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,IAAI,kBAAkB,GAAG,CAAC;AAC1B,SAAS,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE;AAC9C,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO;AAChH,EAAE,MAAM,UAAU,GAAG,CAAC,kBAAkB,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAChE,EAAE,MAAM,KAAK,GAAG,SAAS;AACzB,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AACvC,GAAG,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK;AAC9B,GAAG,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE;AAChC,GAAG,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE;AAChC,GAAG,OAAO;AACV,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC;AACrE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,YAAY,CAAC;AACnD,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe;AAClF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,EAAE,IAAI,UAAU,GAAG,IAAI;AACvB,EAAE,IAAI,QAAQ,GAAG,EAAE;AACnB,EAAE,IAAI,SAAS,GAAG,EAAE;AACpB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE;AAChC,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAACA,MAAI,CAAC,SAAS,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC;AAClH,GAAG,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC7C,GAAG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;AACtF,IAAI,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AACjC,IAAI,IAAI,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;AACpC,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,mDAAmD,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,mKAAmK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,6YAA6Y,CAAC,CAAC;AAC7uB,IAAI,CAAC,MAAM;AACX,KAAK,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAClC,KAAK,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC;AACpD,KAAK,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,KAAK;AAC5C,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,qIAAqI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,6CAA6C,EAAE,UAAU,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzT,KAAK,IAAI,QAAQ,EAAE;AACnB,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACxM,KAAK,CAAC,MAAM;AACZ,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACnC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAChI,KAAK;AACL,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,KAAK,IAAI,QAAQ,EAAE;AACnB,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,0GAA0G,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC;AAClO,KAAK,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AACjC,KAAK,IAAI,QAAQ,EAAE;AACnB,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,0GAA0G,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC;AAC5N,KAAK,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AACvC,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/B,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/B,GAAG,IAAI,KAAK,EAAE;AACd,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,gUAAgU,CAAC,CAAC;AACvV,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/B,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/B,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;AAClE,IAAI,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACvD,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,EAAE;AAC/F,KAAK,IAAI,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;AACzC,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;AAC7D,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC1C,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC1C,EAAE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE;AACxC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO;AAC/B,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACzF,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,UAAU,EAAE,GAAG,MAAM,CAAC;AAClD,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,UAAU,EAAE,IAAI,EAAE,GAAG,SAAS,GAAG,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC3G,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,wcAAwc,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,8GAA8G,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,kEAAkE,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,6DAA6D,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC;AACniC;AACA;AACA;AACA,SAAS,eAAe,CAAC,UAAU,EAAE;AACrC,CAAC,IAAI,gBAAgB,CAAC,SAAS,EAAE;AACjC,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,EAAE,MAAM,GAAG,GAAG,gBAAgB,CAAC,SAAS;AACxC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,6NAA6N,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oGAAoG,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,wEAAwE,CAAC,CAAC;AAC1iB,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACrC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5B;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE;AAClD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,sJAAsJ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/P;AACA,SAAS,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE;AACtD,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC9E,CAAC,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI;AACjC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,2HAA2H,EAAE,MAAM,GAAG,wEAAwE,GAAG,6FAA6F,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvgB,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE;AACxB,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,EAAE,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC1C,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAAC;AACtE,CAAC,CAAC,MAAM;AACR,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC;AACD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACrC;AACA,SAAS,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE;AACnD,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,SAAS,CAAC;AACrE,CAAC,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI;AACjC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,2HAA2H,EAAE,MAAM,GAAG,wEAAwE,GAAG,6FAA6F,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,kCAAkC,EAAE,QAAQ,CAAC,mEAAmE,CAAC,GAAG,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC;AACvmB,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE;AACxB,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,EAAE,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC1C,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAAC;AACtE,CAAC,CAAC,MAAM;AACR,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AACpC,CAAC;AACD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACrC;AACA,SAAS,oBAAoB,CAAC,UAAU,EAAE,OAAO,EAAE;AACnD,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO;AAC3I,EAAE,IAAI,WAAW,GAAG,KAAK;AACzB,EAAE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC9D,EAAE,IAAI,eAAe,GAAG,IAAI;AAC5B,EAAE,SAAS,CAAC,MAAM;AAClB,GAAG,eAAe,IAAI;AACtB,GAAG,eAAe,GAAG,IAAI;AACzB,EAAE,CAAC,CAAC;AACJ,EAAE,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACxC,GAAG,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACrG,EAAE;AACF,EAAE,SAAS,eAAe,CAAC,UAAU,EAAE;AACvC,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,GAAG,UAAU,GAAG,MAAM;AAC5D,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,iNAAiN;AACrO,EAAE,SAAS,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE;AAC9D,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,4CAA4C,CAAC,CAAC;AAClE,GAAG,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACpD,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACpE,IAAI,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;AAClC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,uFAAuF,EAAE,UAAU,CAAC,CAAC,2FAA2F,EAAE,UAAU,CAAC,IAAI,KAAK,QAAQ,GAAG,8BAA8B,GAAG,kCAAkC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,mDAAmD,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACtd,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AAChD,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,mXAAmX,CAAC,CAAC;AAC3Y,IAAI,CAAC,MAAM;AACX,KAAK,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAClC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,8kBAA8kB,CAAC,CAAC;AACtmB,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACpC,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACnC,EAAE;AACF,EAAE,SAAS,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE;AAClE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,mNAAmN,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3Q,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC;AACrD,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACpC,GAAG,kBAAkB,CAAC,UAAU,EAAE;AAClC,IAAI,IAAI,EAAE,OAAO,CAAC,WAAW;AAC7B,IAAI,KAAK,EAAE;AACX,IAAI,CAAC;AACL,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,+FAA+F,CAAC,CAAC;AACrH,GAAG,SAAS,CAAC,UAAU,EAAE;AACzB,IAAI,KAAK,EAAE,UAAU;AACrB,IAAI,KAAK,EAAE,OAAO,CAAC;AACnB,IAAI,CAAC;AACL,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9B,GAAG,SAAS,CAAC,UAAU,EAAE;AACzB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO,CAAC;AACnB,IAAI,CAAC;AACL,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,SAAS,WAAW,CAAC,UAAU,EAAE;AACnC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,+lBAA+lB,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAClrB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9B,EAAE;AACF,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,qrBAAqrB,CAAC,CAAC;AAC1sB,EAAE,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAChC,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,wKAAwK,CAAC,CAAC;AAC9L,GAAG,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,CAAC;AACxD,GAAG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;AACxF,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC;AACpC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,gDAAgD,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wdAAwd,CAAC,CAAC;AAC9kB,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;AACnC,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC,KAAK,EAAE;AACrC,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,yGAAyG,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3K,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,4KAA4K,CAAC,CAAC;AAClM,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC,YAAY,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACnI,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,mOAAmO,CAAC,CAAC;AACzP,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC,eAAe,EAAE;AAC/C,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,MAAM,eAAe,GAAG,gBAAgB,CAAC,eAAe;AAC3D,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,0DAA0D,EAAE,UAAU,CAACA,MAAI,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,obAAob,EAAE,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,+DAA+D,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,4FAA4F,EAAE,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,uEAAuE,CAAC,CAAC;AAC9hC,GAAG,SAAS,CAAC,UAAU,EAAE;AACzB,IAAI,KAAK,EAAE,UAAU;AACrB,IAAI,KAAK,EAAE,eAAe,CAAC;AAC3B,IAAI,CAAC;AACL,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9B,GAAG,SAAS,CAAC,UAAU,EAAE;AACzB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,eAAe,CAAC;AAC3B,IAAI,CAAC;AACL,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,mqBAAmqB,CAAC,CAAC;AACzrB,GAAG,eAAe,CAAC,UAAU,CAAC;AAC9B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9B,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,EAAE;AAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAACA,MAAI,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;AACnK,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,mDAAmD,EAAE,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3Q,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC3C,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,kMAAkM,CAAC,CAAC;AACzN,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,sMAAsM,CAAC,CAAC;AAC7N,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,6CAA6C,CAAC,CAAC;AACpE,IAAI,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;AAChF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACvE,KAAK,IAAI,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AACtC,KAAK,MAAM,UAAU,GAAG,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,KAAK,WAAW,CAAC,EAAE;AACnF,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,0CAA0C,EAAE,UAAU,GAAG,oBAAoB,GAAG,yBAAyB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7K,KAAK,IAAI,CAAC,UAAU,EAAE;AACtB,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,oJAAoJ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACxO,KAAK,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,qMAAqM,EAAE,UAAU,CAAC,CAAC,2DAA2D,EAAE,UAAU,GAAG,EAAE,GAAG,4BAA4B,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,uGAAuG,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;AAC3iB,KAAK,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;AACnD,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACtC,KAAK,kBAAkB,CAAC,UAAU,EAAE;AACpC,MAAM,IAAI,EAAE,WAAW,CAAC,WAAW;AACnC,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK,eAAe,CAAC,UAAU,EAAE;AACjC,MAAM,IAAI,EAAE,WAAW,CAAC,IAAI;AAC5B,MAAM,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC;AACxD,MAAM,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1D,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE;AACjF,OAAO,IAAI;AACX,OAAO;AACP,OAAO,CAAC;AACR,MAAM,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC;AACnF,MAAM,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE,MAAM,WAAW,EAAE,gBAAgB,CAAC,WAAW;AAC/C,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,0EAA0E,CAAC,CAAC;AAClG,KAAK,SAAS,CAAC,UAAU,EAAE;AAC3B,MAAM,KAAK,EAAE,UAAU;AACvB,MAAM,KAAK,EAAE,WAAW,CAAC;AACzB,MAAM,CAAC;AACP,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK,SAAS,CAAC,UAAU,EAAE;AAC3B,MAAM,KAAK,EAAE,OAAO;AACpB,MAAM,KAAK,EAAE,WAAW,CAAC;AACzB,MAAM,CAAC;AACP,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAClD,KAAK,IAAI,UAAU,EAAE;AACrB,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,+EAA+E,CAAC,CAAC;AACxG,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AACnC,OAAO,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;AAC1E,MAAM,CAAC,MAAM;AACb,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,oIAAoI,CAAC,CAAC;AAC9J,MAAM;AACN,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACvC,KAAK,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACzC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC1C,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACrC,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,EAAE,GAAG,mFAAmF,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,qNAAqN,EAAE,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC;AACvjB,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,EAAE;AAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,mDAAmD,EAAE,WAAW,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAClQ,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AACrC,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;AAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,wIAAwI,CAAC,EAAE,eAAe,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,0RAA0R,CAAC,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,qDAAqD,CAAC,CAAC;AAC1lB,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,+KAA+K,CAAC,CAAC;AACtM,GAAG,CAAC,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,4LAA4L,CAAC,CAAC;AACnN,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACjC,IAAI,MAAM,aAAa,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,EAAE;AACjE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,6CAA6C,CAAC,CAAC;AACpE,IAAI,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;AACpF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACvE,KAAK,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AAClC,KAAK,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,OAAU,CAAC;AACvD,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AACrC,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC;AACpD,EAAE,CAAC,MAAM;AACT,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,gXAAgX,CAAC,CAAC;AACtY,GAAG,eAAe,CAAC,UAAU,CAAC;AAC9B,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,wDAAwD,EAAE,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,uHAAuH,CAAC,CAAC;AACzY,GAAG,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC5E,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACtE,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,4RAA4R,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4TAA4T,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,+DAA+D,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACz2B,IAAI,eAAe,CAAC,UAAU,EAAE;AAChC,KAAK,IAAI,EAAE,OAAO,CAAC,IAAI;AACvB,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC;AACvD,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC;AACzD,KAAK,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;AACxE,MAAM,IAAI;AACV,MAAM;AACN,MAAM,CAAC;AACP,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC;AAC1E,KAAK,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;AACjE,KAAK,WAAW,EAAE,gBAAgB,CAAC,WAAW;AAC9C,KAAK,KAAK,EAAE;AACZ,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,gHAAgH,CAAC,CAAC;AACvI,IAAI,SAAS,CAAC,UAAU,EAAE;AAC1B,KAAK,KAAK,EAAE,UAAU;AACtB,KAAK,KAAK,EAAE,OAAO,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/B,IAAI,SAAS,CAAC,UAAU,EAAE;AAC1B,KAAK,KAAK,EAAE,OAAO;AACnB,KAAK,KAAK,EAAE,OAAO,CAAC;AACpB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAAC;AACzD,GAAG;AACH,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC1C,EAAE,IAAI,gBAAgB,CAAC,eAAe,EAAE;AACxC,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,GAAG,WAAW,CAAC,UAAU,CAAC;AAC1B,EAAE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,KAAK,CAAC,UAAU,EAAE;AAC3B,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,UAAU,KAAK;AAC5C,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK;AACnC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,0CAA0C,CAAC,CAAC;AAChE,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,CAAC,oBAAoB,CAAC,UAAc,CAAC;AACrC;;;;"}
|