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.
Files changed (270) hide show
  1. package/build/client/_app/immutable/assets/0.DSctqr5I.css +1 -0
  2. package/build/client/_app/immutable/assets/0.DSctqr5I.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.DSctqr5I.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
  5. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
  6. package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
  7. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js +1 -0
  8. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/9nXQ5qrY2.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/B439_FLv.js +1 -0
  11. package/build/client/_app/immutable/chunks/B439_FLv.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/B439_FLv.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/BCEY79Dw.js +1 -0
  14. package/build/client/_app/immutable/chunks/BCEY79Dw.js.br +2 -0
  15. package/build/client/_app/immutable/chunks/BCEY79Dw.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{DBJWcC6Y.js → BYIrIC5L.js} +1 -1
  17. package/build/client/_app/immutable/chunks/BYIrIC5L.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BYIrIC5L.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/B_9TWPrx2.js +1 -0
  20. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/B_9TWPrx2.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BvOhVtZg.js +1 -0
  23. package/build/client/_app/immutable/chunks/BvOhVtZg.js.br +1 -0
  24. package/build/client/_app/immutable/chunks/BvOhVtZg.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/CY3em1ma2.js +1 -0
  26. package/build/client/_app/immutable/chunks/CY3em1ma2.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/CY3em1ma2.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/CgdRZPgI.js +1 -0
  29. package/build/client/_app/immutable/chunks/CgdRZPgI.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/CgdRZPgI.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
  32. package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js +1 -0
  35. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/DkxwAIfJ2.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/{DatGSObE.js → OJscNS3T.js} +1 -1
  38. package/build/client/_app/immutable/chunks/OJscNS3T.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/OJscNS3T.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/U9p9CtKG2.js +2 -0
  41. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/U9p9CtKG2.js.gz +0 -0
  43. package/build/client/_app/immutable/entry/app.Cd4S3giu.js +2 -0
  44. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.br +0 -0
  45. package/build/client/_app/immutable/entry/app.Cd4S3giu.js.gz +0 -0
  46. package/build/client/_app/immutable/entry/start.C3xXQVkq.js +1 -0
  47. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.br +0 -0
  48. package/build/client/_app/immutable/entry/start.C3xXQVkq.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js +4 -0
  50. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/0.dIOlQ-0y.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.Dyte3Ggf.js} +1 -1
  53. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.br +2 -0
  54. package/build/client/_app/immutable/nodes/1.Dyte3Ggf.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/10.ivxAosDg.js +2 -0
  56. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/10.ivxAosDg.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 11.wvMfJKC2.js} +1 -1
  59. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/11.wvMfJKC2.js.gz +0 -0
  61. package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CmPPom9Z.js} +1 -1
  62. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.br +0 -0
  63. package/build/client/_app/immutable/nodes/2.CmPPom9Z.js.gz +0 -0
  64. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js +1 -0
  65. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.br +0 -0
  66. package/build/client/_app/immutable/nodes/3.D-iCGCEx.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/{4.BvMzqBJj.js → 4.DbfAvO8Z.js} +1 -1
  68. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/4.DbfAvO8Z.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js +42 -0
  71. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/5.CC5Q7lVw.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js +1 -0
  74. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/6.CHIjlzpO.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/{6.BOHISqs-.js → 7.Ejs18ZUc.js} +1 -1
  77. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/7.Ejs18ZUc.js.gz +0 -0
  79. package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 8.B-HweAc8.js} +1 -1
  80. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.br +0 -0
  81. package/build/client/_app/immutable/nodes/8.B-HweAc8.js.gz +0 -0
  82. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js +5 -0
  83. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.br +0 -0
  84. package/build/client/_app/immutable/nodes/9.CKPeM6tx.js.gz +0 -0
  85. package/build/client/_app/version.json +1 -1
  86. package/build/client/_app/version.json.br +0 -0
  87. package/build/client/_app/version.json.gz +0 -0
  88. package/build/client/lyriks_logo.svg +148 -0
  89. package/build/client/lyriks_logo.svg.br +0 -0
  90. package/build/client/lyriks_logo.svg.gz +0 -0
  91. package/build/server/chunks/{0-C_o0oz-N.js → 0-Co8kcANG.js} +4 -4
  92. package/build/server/chunks/{0-C_o0oz-N.js.map → 0-Co8kcANG.js.map} +1 -1
  93. package/build/server/chunks/1-BSUItTig.js +9 -0
  94. package/build/server/chunks/{1-DPpKAKXV.js.map → 1-BSUItTig.js.map} +1 -1
  95. package/build/server/chunks/10-BygvxrZp.js +9 -0
  96. package/build/server/chunks/10-BygvxrZp.js.map +1 -0
  97. package/build/server/chunks/11-DRx0tRx2.js +9 -0
  98. package/build/server/chunks/11-DRx0tRx2.js.map +1 -0
  99. package/build/server/chunks/{2-AlfFqtL1.js → 2-BQT3m1vc.js} +3 -3
  100. package/build/server/chunks/{2-AlfFqtL1.js.map → 2-BQT3m1vc.js.map} +1 -1
  101. package/build/server/chunks/{3-vbjUt_51.js → 3-DPZ9BquJ.js} +3 -3
  102. package/build/server/chunks/{3-vbjUt_51.js.map → 3-DPZ9BquJ.js.map} +1 -1
  103. package/build/server/chunks/{4-BNow4x6D.js → 4-DHo47YX6.js} +3 -3
  104. package/build/server/chunks/{4-BNow4x6D.js.map → 4-DHo47YX6.js.map} +1 -1
  105. package/build/server/chunks/5-Cp9evBAG.js +9 -0
  106. package/build/server/chunks/5-Cp9evBAG.js.map +1 -0
  107. package/build/server/chunks/6-DiBq3bOV.js +9 -0
  108. package/build/server/chunks/6-DiBq3bOV.js.map +1 -0
  109. package/build/server/chunks/{6-QQ7r8Rd5.js → 7-C4hmS0dG.js} +3 -3
  110. package/build/server/chunks/{6-QQ7r8Rd5.js.map → 7-C4hmS0dG.js.map} +1 -1
  111. package/build/server/chunks/{7-CbPLGaIG.js → 8-CFFuDzBC.js} +4 -4
  112. package/build/server/chunks/{7-CbPLGaIG.js.map → 8-CFFuDzBC.js.map} +1 -1
  113. package/build/server/chunks/9-nhhKZJrs.js +9 -0
  114. package/build/server/chunks/9-nhhKZJrs.js.map +1 -0
  115. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js +757 -0
  116. package/build/server/chunks/BehaviorGraph-m5kYj5HH.js.map +1 -0
  117. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-CfbXNYe8.js} +2 -2
  118. package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-CfbXNYe8.js.map} +1 -1
  119. package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-DDoQJ_C9.js} +2 -2
  120. package/build/server/chunks/ProgressBar-DDoQJ_C9.js.map +1 -0
  121. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-DUVJ3hyL.js} +2 -2
  122. package/build/server/chunks/{ProjectsIndex-CoDrvRya.js.map → ProjectsIndex-DUVJ3hyL.js.map} +1 -1
  123. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js +271 -0
  124. package/build/server/chunks/TransitionCatalog-B8zHs-2E.js.map +1 -0
  125. package/build/server/chunks/{_layout.svelte-BREws55o.js → _layout.svelte-CLTmk0xU.js} +66 -15
  126. package/build/server/chunks/_layout.svelte-CLTmk0xU.js.map +1 -0
  127. package/build/server/chunks/{_page.svelte-De508ek8.js → _page.svelte-B1nG3PKn.js} +4 -4
  128. package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-B1nG3PKn.js.map} +1 -1
  129. package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-BW_nbAAH.js} +11 -315
  130. package/build/server/chunks/_page.svelte-BW_nbAAH.js.map +1 -0
  131. package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-Caq7J0jU.js} +91 -47
  132. package/build/server/chunks/_page.svelte-Caq7J0jU.js.map +1 -0
  133. package/build/server/chunks/{_page.svelte-B7hT3P8E.js → _page.svelte-Cham-dsM.js} +4 -4
  134. package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-Cham-dsM.js.map} +1 -1
  135. package/build/server/chunks/_page.svelte-Dhwjwph_.js +41 -0
  136. package/build/server/chunks/_page.svelte-Dhwjwph_.js.map +1 -0
  137. package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-DlFVT40-.js} +3 -3
  138. package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-DlFVT40-.js.map} +1 -1
  139. package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-NVT2dzpG.js} +176 -327
  140. package/build/server/chunks/_page.svelte-NVT2dzpG.js.map +1 -0
  141. package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-Oj-W7G5s.js} +5 -5
  142. package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-Oj-W7G5s.js.map} +1 -1
  143. package/build/server/chunks/_page.svelte-Z_kK2lHY.js +68 -0
  144. package/build/server/chunks/_page.svelte-Z_kK2lHY.js.map +1 -0
  145. package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BpRIU_zP.js} +217 -6
  146. package/build/server/chunks/builderModeStore.svelte-BpRIU_zP.js.map +1 -0
  147. package/build/server/chunks/client-DeX3TC3s.js +51 -0
  148. package/build/server/chunks/{client-DfpLcAZ9.js.map → client-DeX3TC3s.js.map} +1 -1
  149. package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-Cdjeq3L2.js} +4 -4
  150. package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-Cdjeq3L2.js.map} +1 -1
  151. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js +161 -0
  152. package/build/server/chunks/featureStore.svelte-DIYgPBVm.js.map +1 -0
  153. package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
  154. package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
  155. package/build/server/chunks/{internal-BPKrFkK1.js → internal-KYK0WpL7.js} +4 -4
  156. package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-KYK0WpL7.js.map} +1 -1
  157. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js +313 -0
  158. package/build/server/chunks/projectFeaturesStore.svelte-2o-72_vr.js.map +1 -0
  159. package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-B5xqb6-s.js} +3 -272
  160. package/build/server/chunks/reconcile-B5xqb6-s.js.map +1 -0
  161. package/build/server/chunks/registry-DqAn_hVE.js +21 -0
  162. package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
  163. package/build/server/chunks/{state-CpLVNZq7.js → state-DBjl9lhV.js} +2 -2
  164. package/build/server/chunks/{state-CpLVNZq7.js.map → state-DBjl9lhV.js.map} +1 -1
  165. package/build/server/index.js +1 -1
  166. package/build/server/index.js.map +1 -1
  167. package/build/server/manifest.js +33 -17
  168. package/build/server/manifest.js.map +1 -1
  169. package/cli/commands/dashboard.ts +14 -0
  170. package/cli/commands/init.ts +26 -0
  171. package/cli/commands/theme.ts +62 -0
  172. package/cli/unspa.ts +38 -2
  173. package/cli/util/context-files.ts +5 -0
  174. package/cli/util/theme.ts +34 -0
  175. package/mcp-server/sync-notifier.ts +88 -35
  176. package/package.json +2 -1
  177. package/src/app.css +187 -0
  178. package/src/app.html +15 -1
  179. package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +531 -0
  180. package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +492 -0
  181. package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +370 -0
  182. package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +13 -5
  183. package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +43 -0
  184. package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
  185. package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
  186. package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
  187. package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
  188. package/src/features/projects/presentation/components/ProjectEditor.svelte +7 -0
  189. package/src/features/simulator/application/use-cases/RunScenarios.ts +15 -1
  190. package/src/hooks.server.ts +11 -1
  191. package/src/lib/theme/registry.ts +77 -0
  192. package/src/lib/theme/themeStore.svelte.ts +64 -0
  193. package/src/routes/+layout.svelte +184 -30
  194. package/src/routes/features/[id]/graph/+page.svelte +34 -0
  195. package/src/routes/projects/[id]/graph/+page.svelte +79 -0
  196. package/src/shared/presentation/components/ProgressBar.svelte +1 -1
  197. package/src/shared/presentation/toast/SyncToast.svelte +14 -3
  198. package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
  199. package/static/lyriks_logo.svg +148 -0
  200. package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
  201. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
  202. package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
  203. package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
  204. package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
  205. package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
  206. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
  207. package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
  208. package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
  209. package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
  210. package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
  211. package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
  212. package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
  213. package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
  214. package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
  215. package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
  216. package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
  217. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
  218. package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
  219. package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
  220. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
  221. package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
  222. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
  223. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
  224. package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
  225. package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
  226. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
  227. package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
  228. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
  229. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
  230. package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
  231. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
  232. package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
  233. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
  234. package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
  235. package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
  236. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
  237. package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
  238. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
  239. package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
  240. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
  241. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
  242. package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
  243. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
  244. package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
  245. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
  246. package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
  247. package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
  248. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
  249. package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
  250. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
  251. package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
  252. package/build/server/chunks/1-DPpKAKXV.js +0 -9
  253. package/build/server/chunks/5-D7OCJpxD.js +0 -9
  254. package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
  255. package/build/server/chunks/8-CVO-E-sf.js +0 -9
  256. package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
  257. package/build/server/chunks/9-DxT1baO5.js +0 -9
  258. package/build/server/chunks/9-DxT1baO5.js.map +0 -1
  259. package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
  260. package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
  261. package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
  262. package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
  263. package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
  264. package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
  265. package/build/server/chunks/client-DfpLcAZ9.js +0 -24
  266. package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
  267. package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
  268. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 11.nv0I59TU.css} +0 -0
  269. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 11.nv0I59TU.css.br} +0 -0
  270. /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.gz → 11.nv0I59TU.css.gz} +0 -0
@@ -0,0 +1 @@
1
+ import"./BPl9BITm.js";import{a as e}from"./OJscNS3T.js";var t=()=>{let t=e;return{page:{subscribe:t.page.subscribe},navigating:{subscribe:t.navigating.subscribe},updated:t.updated}},n={subscribe(e){return t().page.subscribe(e)}};export{n as t};
@@ -1 +1 @@
1
- import{B as e,H as t,V as n,et as r,ot as i,r as a,t as o,tt as s,z as c}from"./BPl9BITm.js";var l=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function te(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ne=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(ae(e)),ne(e,t));var v=new Map;function re(e,t){let n=ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=te(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ie(e,t,n){if(v.size>0){let t=ae(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function ae(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${_(...e)}"]`}return n}var oe=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,se=/^\/\((?:.+)\)$/;function ce(e){let t=[];return{pattern:e===`/`||se.test(e)?/^\/$/:RegExp(`^${ue(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return fe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return fe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=oe.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return fe(e)}).join(``)}).join(``)}/?$`),params:t}}function le(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ue(e){return e.slice(1).split(`/`).filter(le)}function de(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function fe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function pe({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ce(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return de(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function me(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function he(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var y=globalThis.__sveltekit_644wac?.base??``,ge=globalThis.__sveltekit_644wac?.assets??y??``,_e=`1780274074793`,ve=`sveltekit:snapshot`,ye=`sveltekit:scroll`,be=`sveltekit:states`,xe=`sveltekit:pageurl`,b=`sveltekit:history`,x=`sveltekit:navigation`,S={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Se=location.origin;function Ce(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function C(){return{x:pageXOffset,y:pageYOffset}}function w(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var we={...S,"":S.hover};function Te(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ee(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Te(e)}}function De(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||E(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===Se&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function T(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=w(s,`preload-code`)),i===null&&(i=w(s,`preload-data`)),t===null&&(t=w(s,`keepfocus`)),n===null&&(n=w(s,`noscroll`)),a===null&&(a=w(s,`reload`)),o===null&&(o=w(s,`replacestate`)),s=Te(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:we[r??`off`],preload_data:we[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Oe(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var ke={v:g};function Ae(){let{set:e,subscribe:t}=i(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ge}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==_e;return n&&(e(!0),ke.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function E(e,t,n){return e.origin!==Se||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function je(e){}Uint8Array.fromBase64,typeof process==`object`&&process.versions?.node;var Me=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Me,`entries`]);var Ne=new Set([...Me]);new Set([...Ne,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function Pe(e){return e.filter(e=>e!=null)}function D(e,t){return e+`/`+t}function Fe(e){return e instanceof l||e instanceof d?e.status:500}function Ie(e){return e instanceof d?e.text:`Internal Error`}var O,k,Le,Re=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),ze=`a:`;Re?(O={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(ze)},k={current:null},Le={current:!1}):(O=new class{#e=s({});get data(){return c(this.#e)}set data(e){r(this.#e,e)}#t=s(null);get form(){return c(this.#t)}set form(e){r(this.#t,e)}#n=s(null);get error(){return c(this.#n)}set error(e){r(this.#n,e)}#r=s({});get params(){return c(this.#r)}set params(e){r(this.#r,e)}#i=s({id:null});get route(){return c(this.#i)}set route(e){r(this.#i,e)}#a=s({});get state(){return c(this.#a)}set state(e){r(this.#a,e)}#o=s(-1);get status(){return c(this.#o)}set status(e){r(this.#o,e)}#s=s(new URL(ze));get url(){return c(this.#s)}set url(e){r(this.#s,e)}},k=new class{#e=s(null);get current(){return c(this.#e)}set current(e){r(this.#e,e)}},Le=new class{#e=s(!1);get current(){return c(this.#e)}set current(e){r(this.#e,e)}},ke.v=()=>Le.current=!0);function Be(e){Object.assign(O,e)}var Ve={spanContext(){return He},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},He={traceId:``,spanId:``,traceFlags:0},{onMount:Ue,tick:We}=o,Ge=t??(e=>e()),Ke=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),A=null,j=me(`sveltekit:scroll`)??{},M=me(`sveltekit:snapshot`)??{},N={url:Oe({}),page:Oe({}),navigating:i(null),updated:Ae()};function qe(e){j[e]=C()}function Je(e,t){let n=e+1;for(;j[n];)delete j[n],n+=1;for(n=t+1;M[n];)delete M[n],n+=1}function P(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function Ye(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(y||`/`);e&&await e.update()}}var Xe,Ze,F,I,Qe,L,R=[],z=[],B=null;function V(){B?.fork?.then(e=>e?.discard()),B=null}var H=new Map,$e=new Set,et=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},tt=!1,nt=!1,rt=!0,G=!1,K=!1,it=!1,at=!1,ot,q,J,Y,st=new Set,ct=new Map,lt=new Map;async function ut(e,t,n){globalThis.__sveltekit_644wac&&(globalThis.__sveltekit_644wac.query,globalThis.__sveltekit_644wac.prerender),document.URL!==location.href&&(location.href=location.href),L=e,await e.hooks.init?.(),Xe=pe(e),I=document.documentElement,Qe=t,Ze=e.nodes[0],F=e.nodes[1],Ze(),F(),q=history.state?.[b],J=history.state?.[x],q||(q=J=Date.now(),history.replaceState({...history.state,[b]:q,[x]:J},``));let r=j[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await zt(Qe,n)):(await Z({type:`enter`,url:Ce(L.hash?Wt(new URL(location.href)):location.href),replace_state:!0}),i()),Rt()}function dt(){R.length=0,at=!1}function ft(e){z.some(e=>e?.snapshot)&&(M[e]=z.map(e=>e?.snapshot?.capture()))}function pt(e){M[e]?.forEach((e,t)=>{z[t]?.snapshot?.restore(e)})}function mt(){qe(q),he(ye,j),ft(J),he(ve,M)}async function ht(e,t,r,i){let a,o;t.invalidateAll&&V(),await Z({type:`goto`,url:Ce(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:r,nav_token:i,accept:()=>{if(t.invalidateAll){at=!0,a=new Set;for(let[e,t]of ct)for(let n of t.keys())a.add(D(e,n));o=new Set;for(let[e,t]of lt)for(let n of t.keys())o.add(D(e,n))}t.invalidate&&t.invalidate.forEach(It)}}),t.invalidateAll&&n().then(n).then(()=>{for(let[e,t]of ct)for(let[n,{resource:r}]of t)a?.has(D(e,n))&&r.refresh();for(let[e,t]of lt)for(let[n,{resource:r}]of t)o?.has(D(e,n))&&r.reconnect()})}async function gt(e){if(e.id!==B?.id){V();let t={};st.add(t),B={id:e.id,token:t,promise:Et({...e,preload:t}).then(e=>(st.delete(t),e.type===`loaded`&&e.state.error&&V(),e)),fork:null}}return B.promise}async function _t(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function vt(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Be(e.props.page),ot=new L.root({target:t,props:{...e.props,stores:N,components:z},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),pt(J),n){let e={from:null,to:{...r,scroll:j[q]??C()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}nt=!0}async function yt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(y&&(e.pathname===y||e.pathname===y+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Pe(n).map(e=>e.node.component),page:$(O)}};s!==void 0&&(l.props.form=s);let u={},d=!O,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==O.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:O.data}),l}async function bt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o=null,s=!0,c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){function e(...e){for(let t of e){let{href:e}=new URL(t,n);c.dependencies.add(e)}}let u={tracing:{enabled:!1,root:Ve,current:Ve},route:new Proxy(i,{get:(e,t)=>(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},L.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=xt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function xt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:nt?ie(r,i.href,t):re(r,t)}}function St(e,t,n,r,i,a){if(at)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(R.some(t=>t(new URL(e))))return!0;return!1}function Ct(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function wt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function Tt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:$(O),constructors:[]}}}async function Et({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(B?.id===e)return st.delete(B.token),B.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=W.url?e!==jt(W.url):!1,p=W.route?i.id!==W.route.id:!1,ee=wt(W.url,n),m=!1,h=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!St(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,bt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await h[n])?.data);return e},server_data_node:Ct(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of h)e.catch(g);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await h[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(st.has(a))return Tt({error:await Q(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=Fe(t),c;if(t instanceof l)c=t.body;else{if(await N.updated.check())return await Ye(),await P(n);c=await Q(t,{params:r,url:n,route:{id:i.id}})}let d=await Dt(e,_,o);return d?yt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await Nt(n,{id:i.id},c,s)}else _.push(void 0);return yt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Dt(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ot({status:e,error:t,url:n,route:r}){let i={};try{return yt({url:n,params:i,branch:[await bt({loader:Ze,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:Ct(null)}),{node:await F(),loader:F,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof u)return ht(new URL(e.location,location.href),{},0);throw e}}async function kt(e){let t=e.href;if(H.has(t))return H.get(t);let n;try{let r=(async()=>{let t=await L.hooks.reroute({url:new URL(e),fetch:async(t,n)=>xt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);L.hash?n.hash=t:n.pathname=t,t=n}return t})();H.set(t,r),n=await r}catch{H.delete(t);return}return n}async function X(e,t){if(e&&!E(e,y,L.hash)){let n=await kt(e);if(!n)return;let r=At(n);for(let n of Xe){let i=n.exec(r);if(i)return{id:jt(e),invalidating:t,route:n,params:ee(i),url:e}}}}function At(e){return p(L.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(y.length))||`/`}function jt(e){return(L.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Mt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Ut(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||$e.forEach(e=>e(c)),o?null:s}async function Z({type:t,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=g,block:p=g,event:ee}){let m=Y;Y=u;let h=await X(r,!1),_=t===`enter`?Ut(W,h,r,t):Mt({url:r,type:t,delta:i?.delta,intent:h,scroll:i?.scroll,event:ee});if(!_){p(),Y===u&&(Y=m);return}let te=q,ne=J;f(),G=!0,nt&&_.navigation.type!==`enter`&&N.navigating.set(k.current=_.navigation);let v=h&&await Et(h);if(!v){if(E(r,y,L.hash))return await P(r,s);v=await Nt(r,{id:null},await Q(new d(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=h?.url||r,Y!==u)return _.reject(Error(`navigation aborted`)),!1;if(v.type===`redirect`){if(l<20){await Z({type:t,url:new URL(v.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),_.fulfil(void 0);return}v=await Ot({status:500,error:await Q(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}})}else v.props.page.status>=400&&await N.updated.check()&&(await Ye(),await P(r,s));if(dt(),qe(te),ft(ne),v.props.page.url.pathname!==r.pathname&&(r.pathname=v.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[b]:q+=e,[x]:J+=e,[be]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Je(q,J)}let re=h&&B?.id===h.id?B.fork:null;B?.fork&&!re&&V(),B=null,v.props.page.state=c;let ie;if(nt){let t=(await Promise.all(Array.from(et,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{U.delete(e)})}t.push(e),t.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...v.state,nav:{params:n.params,route:n.route,url:n.url}},v.props.page&&(v.props.page.url=r);let i=re&&await re;i?ie=i.commit():(A=null,ot.$set(v.props),A&&Object.assign(v.props.page,A),Be(v.props.page),ie=e?.()),it=!0}else await vt(v,Qe,!1);let{activeElement:ae}=document;if(await ie,await n(),await n(),Y!==u)return _.reject(Error(`navigation aborted`)),!1;v.props.page&&A&&Object.assign(v.props.page,A);let oe=null;if(rt){let e=i?i.scroll:o?C():null;e?scrollTo(e.x,e.y):(oe=r.hash&&document.getElementById(Gt(r)))?oe.scrollIntoView():scrollTo(0,0)}let se=document.activeElement!==ae&&document.activeElement!==document.body;!a&&!se&&Ht(r,!oe),rt=!0,G=!1,t===`popstate`&&pt(J),_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=C()),U.forEach(e=>e(_.navigation)),N.navigating.set(k.current=null)}async function Nt(e,t,n,r,i){return e.origin===Se&&e.pathname===location.pathname&&!tt?await Ot({status:r,error:n,url:e,route:t}):await P(e,i)}function Pt(){let e,t={element:void 0,href:void 0},n;I.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,S.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],S.tap)}I.addEventListener(`mousedown`,r),I.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(_t(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=Ee(e,I),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=De(i,y,L.hash);if(s||c)return;let l=T(i),u=o&&jt(W.url)===jt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=S.tap;let e=await X(o,!1);if(!e)return;gt(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,_t(o))}function o(){i.disconnect();for(let e of I.querySelectorAll(`a`)){let{url:t,external:n,download:r}=De(e,y,L.hash);if(n||r)continue;let a=T(e);a.reload||(a.preload_code===S.viewport&&i.observe(e),a.preload_code===S.eager&&_t(t))}}U.add(o),o()}function Q(e,t){if(e instanceof l)return e.body;let n=Fe(e),r=Ie(e);return L.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ft(e,t={}){return e=new URL(Ce(e)),e.origin===Se?ht(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function It(e){if(typeof e==`function`)R.push(e);else{let{href:t}=new URL(e,location.href);R.push(e=>e.href===t)}}function Lt(e,t){let n={[b]:q,[x]:J,[xe]:O.url.href,[be]:t};history.replaceState(n,``,Ce(e)),O.state=t,ot.$set({page:Ge(()=>$(O))})}function Rt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(mt(),!G){let e=Ut(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};$e.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&mt()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&Pt(),I.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ee(t.composedPath()[0],I);if(!n)return;let{url:r,external:i,target:a,download:o}=De(n,y,L.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=T(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(L.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Mt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,qe(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),I.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(E(r,y,!1))return;let i=e.target,a=T(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Vt)if(t.state?.[`sveltekit:history`]){let n=t.state[b];if(Y={},n===q)return;let r=j[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[x],s=W.url?m(location)===m(W.url):!1;if(o===J&&(it||s)){i!==O.state&&(O.state=i),e(a),j[q]=C(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),L.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[b]:++q,[x]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Ke.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&N.navigating.set(k.current=null)});function e(e){W.url=O.url=e,N.page.set($(O)),N.page.notify()}}async function zt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){tt=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(l,!1)||{}),d=Xe.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Bt(r.uses)),bt({loader:L.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:Ct(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await yt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u){await P(new URL(t.location,location.href));return}f=await Ot({status:Fe(t),error:await Q(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await vt(f,e,p)}function Bt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Vt=!1;function Ht(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Gt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=C();setTimeout(()=>{let a=history.state;Vt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Vt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Ut(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:C()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function $(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Wt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Gt(e){let t;if(L.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{k as a,je as c,N as i,u as l,Lt as n,O as o,ut as r,Le as s,Ft as t};
1
+ import{B as e,H as t,V as n,et as r,ot as i,r as a,t as o,tt as s,z as c}from"./BPl9BITm.js";var l=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(e,t,n,r=!1){let i=new URL(e);Object.defineProperty(i,"searchParams",{value:new Proxy(i.searchParams,{get(e,r){if(r===`get`||r===`getAll`||r===`has`)return(t,...i)=>(n(t),e[r](t,...i));t();let i=Reflect.get(e,r);return typeof i==`function`?i.bind(e):i}}),enumerable:!0,configurable:!0});let a=[`href`,`pathname`,`search`,`toString`,`toJSON`];r&&a.push(`hash`);for(let n of a)Object.defineProperty(i,n,{get(){return t(),e[n]},enumerable:!0,configurable:!0});return i}function g(){}function _(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function te(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ne=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(ae(e)),ne(e,t));var v=new Map;function re(e,t){let n=ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=te(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ie(e,t,n){if(v.size>0){let t=ae(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function ae(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${_(...e)}"]`}return n}var oe=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,se=/^\/\((?:.+)\)$/;function ce(e){let t=[];return{pattern:e===`/`||se.test(e)?/^\/$/:RegExp(`^${ue(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return fe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return fe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=oe.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return fe(e)}).join(``)}).join(``)}/?$`),params:t}}function le(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ue(e){return e.slice(1).split(`/`).filter(le)}function de(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function fe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function pe({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ce(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return de(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function me(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function he(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var y=globalThis.__sveltekit_1o6l84?.base??``,ge=globalThis.__sveltekit_1o6l84?.assets??y??``,_e=`1781735206128`,ve=`sveltekit:snapshot`,ye=`sveltekit:scroll`,be=`sveltekit:states`,xe=`sveltekit:pageurl`,b=`sveltekit:history`,x=`sveltekit:navigation`,S={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Se=location.origin;function Ce(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function C(){return{x:pageXOffset,y:pageYOffset}}function w(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var we={...S,"":S.hover};function Te(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ee(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Te(e)}}function De(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||E(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===Se&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function T(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=w(s,`preload-code`)),i===null&&(i=w(s,`preload-data`)),t===null&&(t=w(s,`keepfocus`)),n===null&&(n=w(s,`noscroll`)),a===null&&(a=w(s,`reload`)),o===null&&(o=w(s,`replacestate`)),s=Te(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:we[r??`off`],preload_data:we[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Oe(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var ke={v:g};function Ae(){let{set:e,subscribe:t}=i(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ge}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==_e;return n&&(e(!0),ke.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function E(e,t,n){return e.origin!==Se||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function je(e){}Uint8Array.fromBase64,typeof process==`object`&&process.versions?.node;var Me=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Me,`entries`]);var Ne=new Set([...Me]);new Set([...Ne,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function Pe(e){return e.filter(e=>e!=null)}function D(e,t){return e+`/`+t}function Fe(e){return e instanceof l||e instanceof d?e.status:500}function Ie(e){return e instanceof d?e.text:`Internal Error`}var O,k,Le,Re=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),ze=`a:`;Re?(O={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(ze)},k={current:null},Le={current:!1}):(O=new class{#e=s({});get data(){return c(this.#e)}set data(e){r(this.#e,e)}#t=s(null);get form(){return c(this.#t)}set form(e){r(this.#t,e)}#n=s(null);get error(){return c(this.#n)}set error(e){r(this.#n,e)}#r=s({});get params(){return c(this.#r)}set params(e){r(this.#r,e)}#i=s({id:null});get route(){return c(this.#i)}set route(e){r(this.#i,e)}#a=s({});get state(){return c(this.#a)}set state(e){r(this.#a,e)}#o=s(-1);get status(){return c(this.#o)}set status(e){r(this.#o,e)}#s=s(new URL(ze));get url(){return c(this.#s)}set url(e){r(this.#s,e)}},k=new class{#e=s(null);get current(){return c(this.#e)}set current(e){r(this.#e,e)}},Le=new class{#e=s(!1);get current(){return c(this.#e)}set current(e){r(this.#e,e)}},ke.v=()=>Le.current=!0);function Be(e){Object.assign(O,e)}var Ve={spanContext(){return He},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},He={traceId:``,spanId:``,traceFlags:0},{onMount:Ue,tick:We}=o,Ge=t??(e=>e()),Ke=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),A=null,j=me(`sveltekit:scroll`)??{},M=me(`sveltekit:snapshot`)??{},N={url:Oe({}),page:Oe({}),navigating:i(null),updated:Ae()};function qe(e){j[e]=C()}function Je(e,t){let n=e+1;for(;j[n];)delete j[n],n+=1;for(n=t+1;M[n];)delete M[n],n+=1}function P(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function Ye(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(y||`/`);e&&await e.update()}}var Xe,Ze,F,I,Qe,L,R=[],z=[],B=null;function V(){B?.fork?.then(e=>e?.discard()),B=null}var H=new Map,$e=new Set,et=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},tt=!1,nt=!1,rt=!0,G=!1,K=!1,it=!1,at=!1,ot,q,J,Y,st=new Set,ct=new Map,lt=new Map;async function ut(e,t,n){globalThis.__sveltekit_1o6l84&&(globalThis.__sveltekit_1o6l84.query,globalThis.__sveltekit_1o6l84.prerender),document.URL!==location.href&&(location.href=location.href),L=e,await e.hooks.init?.(),Xe=pe(e),I=document.documentElement,Qe=t,Ze=e.nodes[0],F=e.nodes[1],Ze(),F(),q=history.state?.[b],J=history.state?.[x],q||(q=J=Date.now(),history.replaceState({...history.state,[b]:q,[x]:J},``));let r=j[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Vt(Qe,n)):(await Z({type:`enter`,url:Ce(L.hash?Kt(new URL(location.href)):location.href),replace_state:!0}),i()),Bt()}function dt(){R.length=0,at=!1}function ft(e){z.some(e=>e?.snapshot)&&(M[e]=z.map(e=>e?.snapshot?.capture()))}function pt(e){M[e]?.forEach((e,t)=>{z[t]?.snapshot?.restore(e)})}function mt(){qe(q),he(ye,j),ft(J),he(ve,M)}async function ht(e,t,r,i){let a,o;t.invalidateAll&&V(),await Z({type:`goto`,url:Ce(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:r,nav_token:i,accept:()=>{if(t.invalidateAll){at=!0,a=new Set;for(let[e,t]of ct)for(let n of t.keys())a.add(D(e,n));o=new Set;for(let[e,t]of lt)for(let n of t.keys())o.add(D(e,n))}t.invalidate&&t.invalidate.forEach(Rt)}}),t.invalidateAll&&n().then(n).then(()=>{for(let[e,t]of ct)for(let[n,{resource:r}]of t)a?.has(D(e,n))&&r.refresh();for(let[e,t]of lt)for(let[n,{resource:r}]of t)o?.has(D(e,n))&&r.reconnect()})}async function gt(e){if(e.id!==B?.id){V();let t={};st.add(t),B={id:e.id,token:t,promise:Et({...e,preload:t}).then(e=>(st.delete(t),e.type===`loaded`&&e.state.error&&V(),e)),fork:null}}return B.promise}async function _t(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function vt(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Be(e.props.page),ot=new L.root({target:t,props:{...e.props,stores:N,components:z},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),pt(J),n){let e={from:null,to:{...r,scroll:j[q]??C()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}nt=!0}async function yt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(y&&(e.pathname===y||e.pathname===y+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Pe(n).map(e=>e.node.component),page:$(O)}};s!==void 0&&(l.props.form=s);let u={},d=!O,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==O.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:O.data}),l}async function bt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o=null,s=!0,c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){function e(...e){for(let t of e){let{href:e}=new URL(t,n);c.dependencies.add(e)}}let u={tracing:{enabled:!1,root:Ve,current:Ve},route:new Proxy(i,{get:(e,t)=>(s&&(c.route=!0),e[t])}),params:new Proxy(r,{get:(e,t)=>(s&&c.params.add(t),e[t])}),data:a?.data??null,url:h(n,()=>{s&&(c.url=!0)},e=>{s&&c.search_params.add(e)},L.hash),async fetch(t,r){t instanceof Request&&(r={body:t.method===`GET`||t.method===`HEAD`?void 0:await t.blob(),cache:t.cache,credentials:t.credentials,headers:[...t.headers].length>0?t?.headers:void 0,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,...r});let{resolved:i,promise:a}=xt(t,r,n);return s&&e(i.href),a},setHeaders:g,depends:e,parent(){return s&&(c.parent=!0),t()},untrack(e){s=!1;try{return e()}finally{s=!0}}};o=await l.universal.load.call(null,u)??null}return{node:l,loader:e,server:a,universal:l.universal?.load?{type:`data`,data:o,uses:c}:null,data:o??a?.data??null,slash:l.universal?.trailingSlash??a?.slash}}function xt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:nt?ie(r,i.href,t):re(r,t)}}function St(e,t,n,r,i,a){if(at)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(R.some(t=>t(new URL(e))))return!0;return!1}function Ct(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function wt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function Tt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:$(O),constructors:[]}}}async function Et({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(B?.id===e)return st.delete(B.token),B.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=W.url?e!==jt(W.url):!1,p=W.route?i.id!==W.route.id:!1,ee=wt(W.url,n),m=!1,h=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!St(m,p,f,ee,a.universal?.uses,r)?a:(m=!0,bt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await h[n])?.data);return e},server_data_node:Ct(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of h)e.catch(g);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await h[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(st.has(a))return Tt({error:await Q(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=Fe(t),c;if(t instanceof l)c=t.body;else{if(await N.updated.check())return await Ye(),await P(n);c=await Q(t,{params:r,url:n,route:{id:i.id}})}let d=await Dt(e,_,o);return d?yt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await Nt(n,{id:i.id},c,s)}else _.push(void 0);return yt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Dt(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ot({status:e,error:t,url:n,route:r}){let i={};try{return yt({url:n,params:i,branch:[await bt({loader:Ze,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:Ct(null)}),{node:await F(),loader:F,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof u)return ht(new URL(e.location,location.href),{},0);throw e}}async function kt(e){let t=e.href;if(H.has(t))return H.get(t);let n;try{let r=(async()=>{let t=await L.hooks.reroute({url:new URL(e),fetch:async(t,n)=>xt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);L.hash?n.hash=t:n.pathname=t,t=n}return t})();H.set(t,r),n=await r}catch{H.delete(t);return}return n}async function X(e,t){if(e&&!E(e,y,L.hash)){let n=await kt(e);if(!n)return;let r=At(n);for(let n of Xe){let i=n.exec(r);if(i)return{id:jt(e),invalidating:t,route:n,params:ee(i),url:e}}}}function At(e){return p(L.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(y.length))||`/`}function jt(e){return(L.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Mt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Gt(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||$e.forEach(e=>e(c)),o?null:s}async function Z({type:t,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=g,block:p=g,event:ee}){let m=Y;Y=u;let h=await X(r,!1),_=t===`enter`?Gt(W,h,r,t):Mt({url:r,type:t,delta:i?.delta,intent:h,scroll:i?.scroll,event:ee});if(!_){p(),Y===u&&(Y=m);return}let te=q,ne=J;f(),G=!0,nt&&_.navigation.type!==`enter`&&N.navigating.set(k.current=_.navigation);let v=h&&await Et(h);if(!v){if(E(r,y,L.hash))return await P(r,s);v=await Nt(r,{id:null},await Q(new d(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=h?.url||r,Y!==u)return _.reject(Error(`navigation aborted`)),!1;if(v.type===`redirect`){if(l<20){await Z({type:t,url:new URL(v.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),_.fulfil(void 0);return}v=await Ot({status:500,error:await Q(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}})}else v.props.page.status>=400&&await N.updated.check()&&(await Ye(),await P(r,s));if(dt(),qe(te),ft(ne),v.props.page.url.pathname!==r.pathname&&(r.pathname=v.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[b]:q+=e,[x]:J+=e,[be]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Je(q,J)}let re=h&&B?.id===h.id?B.fork:null;B?.fork&&!re&&V(),B=null,v.props.page.state=c;let ie;if(nt){let t=(await Promise.all(Array.from(et,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{U.delete(e)})}t.push(e),t.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...v.state,nav:{params:n.params,route:n.route,url:n.url}},v.props.page&&(v.props.page.url=r);let i=re&&await re;i?ie=i.commit():(A=null,ot.$set(v.props),A&&Object.assign(v.props.page,A),Be(v.props.page),ie=e?.()),it=!0}else await vt(v,Qe,!1);let{activeElement:ae}=document;if(await ie,await n(),await n(),Y!==u)return _.reject(Error(`navigation aborted`)),!1;v.props.page&&A&&Object.assign(v.props.page,A);let oe=null;if(rt){let e=i?i.scroll:o?C():null;e?scrollTo(e.x,e.y):(oe=r.hash&&document.getElementById(qt(r)))?oe.scrollIntoView():scrollTo(0,0)}let se=document.activeElement!==ae&&document.activeElement!==document.body;!a&&!se&&Wt(r,!oe),rt=!0,G=!1,t===`popstate`&&pt(J),_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=C()),U.forEach(e=>e(_.navigation)),N.navigating.set(k.current=null)}async function Nt(e,t,n,r,i){return e.origin===Se&&e.pathname===location.pathname&&!tt?await Ot({status:r,error:n,url:e,route:t}):await P(e,i)}function Pt(){let e,t={element:void 0,href:void 0},n;I.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,S.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],S.tap)}I.addEventListener(`mousedown`,r),I.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(_t(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=Ee(e,I),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=De(i,y,L.hash);if(s||c)return;let l=T(i),u=o&&jt(W.url)===jt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=S.tap;let e=await X(o,!1);if(!e)return;gt(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,_t(o))}function o(){i.disconnect();for(let e of I.querySelectorAll(`a`)){let{url:t,external:n,download:r}=De(e,y,L.hash);if(n||r)continue;let a=T(e);a.reload||(a.preload_code===S.viewport&&i.observe(e),a.preload_code===S.eager&&_t(t))}}U.add(o),o()}function Q(e,t){if(e instanceof l)return e.body;let n=Fe(e),r=Ie(e);return L.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ft(e,t){Ue(()=>(e.add(t),()=>{e.delete(t)}))}function It(e){Ft(U,e)}function Lt(e,t={}){return e=new URL(Ce(e)),e.origin===Se?ht(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Rt(e){if(typeof e==`function`)R.push(e);else{let{href:t}=new URL(e,location.href);R.push(e=>e.href===t)}}function zt(e,t){let n={[b]:q,[x]:J,[xe]:O.url.href,[be]:t};history.replaceState(n,``,Ce(e)),O.state=t,ot.$set({page:Ge(()=>$(O))})}function Bt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(mt(),!G){let e=Gt(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};$e.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&mt()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&Pt(),I.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ee(t.composedPath()[0],I);if(!n)return;let{url:r,external:i,target:a,download:o}=De(n,y,L.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=T(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(L.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Mt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,qe(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),I.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(E(r,y,!1))return;let i=e.target,a=T(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Ut)if(t.state?.[`sveltekit:history`]){let n=t.state[b];if(Y={},n===q)return;let r=j[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[x],s=W.url?m(location)===m(W.url):!1;if(o===J&&(it||s)){i!==O.state&&(O.state=i),e(a),j[q]=C(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),L.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[b]:++q,[x]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Ke.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&N.navigating.set(k.current=null)});function e(e){W.url=O.url=e,N.page.set($(O)),N.page.notify()}}async function Vt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){tt=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(l,!1)||{}),d=Xe.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Ht(r.uses)),bt({loader:L.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:Ct(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await yt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u){await P(new URL(t.location,location.href));return}f=await Ot({status:Fe(t),error:await Q(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await vt(f,e,p)}function Ht(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Ut=!1;function Wt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=qt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=C();setTimeout(()=>{let a=history.state;Ut=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Ut=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Gt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:C()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function $(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Kt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(L.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{N as a,Le as c,ut as i,je as l,Lt as n,k as o,zt as r,O as s,It as t,u};
@@ -0,0 +1,2 @@
1
+ import{$ as e,A as t,D as n,E as r,G as i,I as a,L as o,M as s,N as c,Q as l,W as u,X as d,Z as f,_ as p,c as ee,ct as te,et as m,j as h,k as g,l as ne,lt as re,mt as _,n as ie,pt as v,r as ae,rt as y,s as oe,tt as b,u as x,v as se,z as S}from"./BPl9BITm.js";import{t as ce}from"./kNaey6uv.js";import"./xihTtKlq.js";import{j as C,k as w}from"./Bp2_Vghh.js";var le=[`contains`,`reads`,`writes`,`emits`,`transitions`,`asserts`,`uses`,`handles`],ue=[`feature`,`surface`,`action`,`state`,`event`,`parameter`,`rule`,`effect`,`invariant`,`scenario`,`persona`,`resource`,`entity`,`valueSet`],T=e=>{switch(e.type){case`set_state`:return`set ${e.path}`;case`show_message`:return e.tone?`${e.tone} message`:`message`;case`emit_event`:return`emit ${e.event}`;case`block_action`:return`block`;case`allow_action`:return`allow`;case`transition_surface`:return`transition`}},E=e=>{let t=new Set;for(let n of w(e))C(n.left)||t.add(String(n.left));return[...t]},de=(e,t)=>{let n=new Map,r=new Map,i=e=>{n.has(e.id)||n.set(e.id,e)},a=e=>{if(!n.has(e.from)||!n.has(e.to))return;let t=`${e.from}->${e.to}:${e.kind}:${e.label??``}`;r.has(t)||r.set(t,{...e,id:t})},o=(e,t,n)=>{i({id:`feature:${e.id}:state:${t}`,type:`state`,label:t,detail:n,layer:3})},s=(e,t)=>`feature:${e.id}:surface:${t}`,c=(e,t)=>`feature:${e.id}:action:${t}`,l=(e,t)=>`feature:${e.id}:state:${t}`,u=(e,t)=>`feature:${e.id}:valueSet:${t}`,d=(e,t,n,r)=>{let c=`feature:${e.id}:effect:${n.id}`;if(i({id:c,type:`effect`,label:T(n),detail:n.description??n.type,layer:5}),a({from:t,to:c,kind:r}),n.type===`set_state`)o(e,String(n.path)),a({from:c,to:l(e,n.path),kind:`writes`});else if(n.type===`emit_event`){let e=`event:${n.event}`;i({id:e,type:`event`,label:String(n.event),layer:3}),a({from:c,to:e,kind:`emits`})}else n.type===`transition_surface`&&a({from:c,to:s(e,n.target),kind:`transitions`})},f=t?`project:${t.id}`:null;t&&f&&i({id:f,type:`feature`,label:t.name,detail:t.description??`Project`,layer:0});for(let n of e){let e=`feature:${n.id}`;i({id:e,type:`feature`,label:n.name,detail:n.description,layer:+!!t,href:`/features/${n.id}`}),f&&a({from:f,to:e,kind:`contains`});for(let r of n.personas){let o=`feature:${n.id}:persona:${r.id}`;i({id:o,type:`persona`,label:r.name,detail:r.description,layer:t?2:1}),a({from:e,to:o,kind:`contains`})}for(let r of n.resources){let n=`resource:${r.id}`;i({id:n,type:`resource`,label:r.name,detail:r.description??r.kind,layer:t?2:1}),a({from:e,to:n,kind:`contains`})}for(let r of n.entities){let n=`entity:${r.id}`;i({id:n,type:`entity`,label:r.namespace,detail:r.description,layer:t?2:1}),a({from:e,to:n,kind:`contains`}),r.resourceId&&a({from:n,to:`resource:${r.resourceId}`,kind:`uses`})}for(let r of n.valueSets??[]){let o=u(n,r.id);i({id:o,type:`valueSet`,label:r.name,detail:`${r.values.length} values`,layer:t?2:1}),a({from:e,to:o,kind:`contains`})}for(let t of n.events??[]){let n=`event:${t.name}`;i({id:n,type:`event`,label:String(t.name),detail:t.description,layer:3}),a({from:e,to:n,kind:`contains`})}for(let t of n.featureInvariants??[]){let r=`feature:${n.id}:invariant:${t.id}`;i({id:r,type:`invariant`,label:t.name,detail:t.description??t.message,layer:6}),a({from:e,to:r,kind:`contains`});for(let e of E(t.condition))o(n,e),a({from:r,to:l(n,e),kind:`reads`})}for(let r of n.surfaces){let f=s(n,r.id);i({id:f,type:`surface`,label:r.name,detail:r.description??r.type,layer:t?2:1,href:`/features/${n.id}?surface=${r.id}`}),a({from:e,to:f,kind:`contains`}),r.parentSurfaceId&&a({from:s(n,r.parentSurfaceId),to:f,kind:`contains`});for(let e of r.stateDefinitions)o(n,String(e.path),e.description??e.type),a({from:f,to:l(n,e.path),kind:`contains`}),e.valueSetId&&a({from:l(n,e.path),to:u(n,e.valueSetId),kind:`uses`});for(let e of r.transitions){let t=`feature:${n.id}:transition:${e.id}`;i({id:t,type:`effect`,label:e.label??`transition`,detail:e.description,layer:6}),a({from:f,to:t,kind:`contains`}),a({from:t,to:s(n,e.target),kind:`transitions`})}for(let e of r.rules){let t=`feature:${n.id}:rule:${e.id}`;i({id:t,type:`rule`,label:e.category,detail:e.description,layer:6}),a({from:f,to:t,kind:`contains`});for(let r of E(e.condition))o(n,r),a({from:t,to:l(n,r),kind:`reads`});d(n,t,e.effect,`writes`)}for(let e of r.invariants){let t=`feature:${n.id}:invariant:${e.id}`;i({id:t,type:`invariant`,label:e.name,detail:e.description??e.message,layer:6}),a({from:f,to:t,kind:`contains`});for(let r of E(e.condition))o(n,r),a({from:t,to:l(n,r),kind:`reads`})}for(let e of r.actions){let p=c(n,e.id);if(i({id:p,type:`action`,label:e.name,detail:e.intent,layer:t?3:2,href:`/features/${n.id}?surface=${r.id}&panel=actions`}),a({from:f,to:p,kind:`contains`}),e.triggeredByEvent){let t=`event:${e.triggeredByEvent}`;i({id:t,type:`event`,label:String(e.triggeredByEvent),layer:3}),a({from:t,to:p,kind:`handles`})}for(let t of e.requiredStates)o(n,String(t)),a({from:l(n,t),to:p,kind:`reads`});for(let r of e.parameters){let e=`feature:${n.id}:parameter:${r.id}`;i({id:e,type:`parameter`,label:r.name,detail:r.description??r.type,layer:t?5:4}),a({from:p,to:e,kind:`contains`}),r.bindToStatePath&&(o(n,String(r.bindToStatePath)),a({from:e,to:l(n,r.bindToStatePath),kind:`writes`})),r.resourceId&&a({from:e,to:`resource:${r.resourceId}`,kind:`uses`}),r.valueSetId&&a({from:e,to:u(n,r.valueSetId),kind:`uses`})}for(let t of e.rules){let e=`feature:${n.id}:rule:${t.id}`;i({id:e,type:`rule`,label:t.category,detail:t.description,layer:6}),a({from:p,to:e,kind:`contains`});for(let r of E(t.condition))o(n,r),a({from:e,to:l(n,r),kind:`reads`});d(n,e,t.effect,`writes`)}for(let t of e.invariants){let e=`feature:${n.id}:invariant:${t.id}`;i({id:e,type:`invariant`,label:t.name,detail:t.description??t.message,layer:6}),a({from:p,to:e,kind:`contains`});for(let r of E(t.condition))o(n,r),a({from:e,to:l(n,r),kind:`reads`})}for(let t of e.effects)d(n,p,t,`contains`);for(let t of e.onBlockedEffects??[])d(n,p,t,`contains`);for(let t of e.emittedEvents){let e=`event:${t}`;i({id:e,type:`event`,label:String(t),layer:3}),a({from:p,to:e,kind:`emits`})}for(let t of e.transitions){let e=`feature:${n.id}:transition:${t.id}`;i({id:e,type:`effect`,label:t.label??`transition`,detail:t.description,layer:6}),a({from:p,to:e,kind:`contains`}),a({from:e,to:s(n,t.target),kind:`transitions`})}for(let t of e.scenarios??[]){let e=`feature:${n.id}:scenario:${t.id}`;i({id:e,type:`scenario`,label:t.name,detail:t.description??t.expectedStatus,layer:6}),a({from:p,to:e,kind:`asserts`}),t.personaId&&a({from:e,to:`feature:${n.id}:persona:${t.personaId}`,kind:`uses`});for(let r of t.stateOverrides)o(n,String(r.path)),a({from:e,to:l(n,r.path),kind:`writes`});for(let r of t.expectedAssertions??[])o(n,String(r.path)),a({from:e,to:l(n,r.path),kind:`asserts`});t.expectedTransition&&a({from:e,to:s(n,t.expectedTransition),kind:`transitions`})}}}}return{nodes:[...n.values()],edges:[...r.values()]}},fe=e=>{let t=new Map;for(let n of e.nodes)t.set(n.id,0);for(let n of e.edges)t.set(n.from,(t.get(n.from)??0)+1),t.set(n.to,(t.get(n.to)??0)+1);let n=e.nodes.map(e=>({...e,degree:t.get(e.id)??0}));return{nodes:n,edges:e.edges,nodeById:new Map(n.map(e=>[e.id,e]))}},pe=(e,t)=>{let n=t.search.trim().toLowerCase(),r=new Set;if(n){for(let t of e.nodes)`${t.label} ${t.type} ${t.detail??``}`.toLowerCase().includes(n)&&r.add(t.id);for(let t of e.edges)(r.has(t.from)||r.has(t.to))&&(r.add(t.from),r.add(t.to))}let i=e=>!n||r.has(e),a=e.edges.filter(e=>t.enabledKinds[e.kind]&&i(e.from)&&i(e.to)),o=new Set;for(let e of a)o.add(e.from),o.add(e.to);let s=e.nodes.filter(e=>i(e.id)&&(!n||o.has(e.id)||r.has(e.id)));return{nodes:s,edges:a,nodeById:new Map(s.map(e=>[e.id,e]))}},D={feature:{label:`Feature`,fill:`#0f172a`,stroke:`#020617`},surface:{label:`Surface`,fill:`#0e7490`,stroke:`#155e75`},action:{label:`Action`,fill:`#2563eb`,stroke:`#1d4ed8`},state:{label:`State`,fill:`#7c3aed`,stroke:`#6d28d9`},event:{label:`Event`,fill:`#db2777`,stroke:`#be185d`},parameter:{label:`Parameter`,fill:`#0891b2`,stroke:`#0e7490`},rule:{label:`Rule`,fill:`#ea580c`,stroke:`#c2410c`},effect:{label:`Effect`,fill:`#16a34a`,stroke:`#15803d`},invariant:{label:`Invariant`,fill:`#ca8a04`,stroke:`#a16207`},scenario:{label:`Scenario`,fill:`#475569`,stroke:`#334155`},persona:{label:`Persona`,fill:`#0f766e`,stroke:`#115e59`},resource:{label:`Resource`,fill:`#4f46e5`,stroke:`#4338ca`},entity:{label:`Entity`,fill:`#9333ea`,stroke:`#7e22ce`},valueSet:{label:`Value set`,fill:`#64748b`,stroke:`#475569`}},O={contains:{label:`Contains`,color:`#94a3b8`},reads:{label:`Reads`,color:`#7c3aed`},writes:{label:`Writes`,color:`#16a34a`},emits:{label:`Emits`,color:`#db2777`},transitions:{label:`Transitions`,color:`#0891b2`},asserts:{label:`Asserts`,color:`#ca8a04`},uses:{label:`Uses`,color:`#475569`},handles:{label:`Handles`,color:`#2563eb`}},k=new Set([`writes`,`emits`,`transitions`]),A=.14,j=.035,M=e=>Math.max(13,Math.min(38,13+Math.sqrt(e)*6)),N=(e,t)=>{let n=e.replace(`#`,``);return n.length===6?`rgba(${Number.parseInt(n.slice(0,2),16)},${Number.parseInt(n.slice(2,4),16)},${Number.parseInt(n.slice(4,6),16)},${t})`:e},P=e=>{let t=e.replace(`#`,``);if(t.length!==6)return`#000000`;let n=e=>{let t=Number.parseInt(e,16)/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4},r=n(t.slice(0,2)),i=n(t.slice(2,4)),a=n(t.slice(4,6)),o=.2126*r+.7152*i+.0722*a;return(o+.05)/.05>=1.05/(o+.05)?`#000000`:`#ffffff`},F=e=>e>700?220:e>300?280:180,me=e=>e>700?2600:e>300?3200:2400,he=class{runtime;container;callbacks;network=null;nodes=null;edges=null;signature=``;currentInput=null;highlightFrame=null;highlighted={nodes:new Set,edges:new Set};selectionEventsSuppressed=!1;stabilizeTimeout=null;settle=()=>this.freezePhysics();constructor(e,t,n={}){this.runtime=e,this.container=t,this.callbacks=n}render(e){this.currentInput=e;let t=this.signatureFor(e);if(!this.network){this.createNetwork(e,t);return}if(t===this.signature){this.select(e.selectedId,e.selectedEdgeId,!1);return}this.signature=t,this.clearHighlight(),this.nodes?.clear(),this.edges?.clear(),this.nodes?.add(this.toNodes(e)),this.edges?.add(this.toEdges(e)),this.startStabilization(e.graph.nodes.length),this.select(e.selectedId,e.selectedEdgeId,!1)}relayout(e){this.network&&(this.clearHighlight(),this.startStabilization(e))}fit(){this.network?.fit({animation:{duration:220,easingFunction:`easeInOutQuad`}})}zoomBy(e){if(!this.network)return;let t=Math.max(.04,Math.min(5,this.network.getScale()*e));this.network.moveTo({scale:t,animation:{duration:120,easingFunction:`easeInOutQuad`}})}focus(e){this.network?.focus(e,{scale:1.08,animation:{duration:260,easingFunction:`easeInOutQuad`}})}select(e,t=null,n=!0){if(this.network){this.selectionEventsSuppressed=!0;try{this.network.setSelection({nodes:e?[e]:[],edges:!e&&t?[t]:[]},{highlightEdges:!1})}finally{this.selectionEventsSuppressed=!1}if(e){this.highlightNodeNeighborhood(e,n);return}if(t){this.highlightEdgeNeighborhood(t,n);return}this.clearHighlight()}}destroy(){this.clearPendingWork(),this.network?.destroy(),this.network=null,this.nodes=null,this.edges=null}createNetwork(e,t){let n=new this.runtime.DataSet(this.toNodes(e)),r=new this.runtime.DataSet(this.toEdges(e));this.nodes=n,this.edges=r;let i=new this.runtime.Network(this.container,{nodes:n,edges:r},this.options(e.graph.nodes.length));this.network=i,this.signature=t,i.on(`stabilizationProgress`,e=>{if(!e?.total)return;let t=Math.min(100,Math.round(e.iterations/e.total*100));this.callbacks.onStabilizationProgress?.(t),t>=100&&setTimeout(()=>this.freezePhysics(),0)}),i.on(`selectNode`,e=>{if(this.selectionEventsSuppressed)return;let t=e?.nodes?.find(e=>typeof e==`string`)??null;this.callbacks.onSelectedNodeChange?.(t),this.callbacks.onSelectedEdgeChange?.(null),t&&this.highlightNodeNeighborhood(t,!0)}),i.on(`selectEdge`,e=>{if(this.selectionEventsSuppressed)return;let t=e?.edges?.find(e=>typeof e==`string`)??null;this.callbacks.onSelectedNodeChange?.(null),this.callbacks.onSelectedEdgeChange?.(t),t&&this.highlightEdgeNeighborhood(t,!0)}),i.on(`deselectNode`,()=>{this.selectionEventsSuppressed||this.network?.getSelection().edges.length||(this.callbacks.onSelectedNodeChange?.(null),this.clearHighlight())}),i.on(`deselectEdge`,()=>{this.selectionEventsSuppressed||this.network?.getSelection().nodes.length||(this.callbacks.onSelectedEdgeChange?.(null),this.clearHighlight())}),this.startStabilization(e.graph.nodes.length)}startStabilization(e){this.network&&(this.clearStabilizationTimeout(),this.callbacks.onSettledChange?.(!1),this.callbacks.onStabilizationProgress?.(0),this.network.off(`stabilized`,this.settle),this.network.once(`stabilized`,this.settle),this.network.setOptions(this.options(e)),this.network.stabilize(F(e)),this.stabilizeTimeout=setTimeout(()=>this.freezePhysics(),me(e)))}freezePhysics(){this.network&&(this.clearStabilizationTimeout(),this.network.off(`stabilized`,this.settle),this.network.storePositions(),this.network.stopSimulation(),this.network.setOptions({physics:!1}),this.callbacks.onStabilizationProgress?.(100),this.callbacks.onSettledChange?.(!0))}options(e){return{autoResize:!0,interaction:{hover:!1,tooltipDelay:1e6,dragNodes:!0,dragView:!0,zoomView:!0,multiselect:!1,navigationButtons:!1,keyboard:!1},layout:{improvedLayout:e<350},physics:{enabled:!0,solver:`forceAtlas2Based`,stabilization:{enabled:!0,iterations:F(e),updateInterval:40,fit:!0},forceAtlas2Based:{gravitationalConstant:e>500?-34:-48,centralGravity:.014,springLength:e>500?95:120,springConstant:.055,damping:.74,avoidOverlap:e>500?.25:.45},adaptiveTimestep:!0,minVelocity:2.2,maxVelocity:28},nodes:{chosen:!0,scaling:{min:13,max:42},shapeProperties:{borderRadius:4}},edges:{chosen:!1,selectionWidth:1}}}toNodes(e){return e.graph.nodes.map(t=>this.nodeFor(t,e,t.id===e.selectedId?`selected`:`base`))}nodeFor(e,t,n){let r=t.labelsVisible||t.graph.nodes.length<90,i=t.nodeTheme[e.type],a=n===`dimmed`,o=n===`selected`,s=n===`highlighted`||o,c=!a&&(r||e.degree>5||e.type===`feature`||s),l=e.type!==`feature`&&c;return{id:e.id,label:c?e.label:``,title:`${i.label}: ${e.label}${e.detail?`\n${e.detail}`:``}`,value:Math.max(1,e.degree),size:M(e.degree),shape:e.type===`feature`||!c?`dot`:`box`,color:{background:a?N(i.fill,A):i.fill,border:a?N(i.stroke,.2):o?`#020617`:i.stroke,highlight:{background:i.fill,border:`#020617`},hover:{background:i.fill,border:i.stroke}},borderWidth:o?5:s?3.5:1.5,font:{color:l?P(i.fill):`#0f172a`,size:o?16:s?13:12,face:`Inter, ui-sans-serif, system-ui, sans-serif`,strokeWidth:l||a?0:4,strokeColor:`rgba(255,255,255,0.92)`},margin:l?{top:6,right:10,bottom:6,left:10}:void 0,widthConstraint:l?{maximum:220}:void 0,shadow:!a&&(s||e.type===`feature`||e.degree>8)}}toEdges(e){return e.graph.edges.map(t=>this.edgeFor(t,e.edgeTheme,`base`))}edgeFor(e,t,n){let r=k.has(e.kind),i=n===`selected`?.96:n===`highlighted`?.82:n===`dimmed`?j:r?.42:.18;return{id:e.id,from:e.from,to:e.to,title:e.label??t[e.kind].label,color:{color:t[e.kind].color,opacity:i},width:n===`selected`?3:n===`highlighted`?2.2:r?1.5:.7,dashes:e.kind===`contains`,arrows:{to:{enabled:e.kind!==`contains`,scaleFactor:.45}},smooth:!1}}highlightNodeNeighborhood(e,t){!this.network||!this.nodes||!this.edges||(this.highlightFrame!==null&&cancelAnimationFrame(this.highlightFrame),this.highlightFrame=requestAnimationFrame(()=>{let n=this.currentInput;if(!this.network||!this.nodes||!this.edges||!n)return;let r=new Set([e,...this.network.getConnectedNodes(e).filter(e=>typeof e==`string`||typeof e==`number`)]),i=new Set(this.network.getConnectedEdges(e));this.applyFocusMask({selectedNodeId:e,highlightedNodes:r,highlightedEdges:i}),t&&this.fitNeighborhood(r),this.highlighted={nodes:r,edges:i},this.highlightFrame=null}))}highlightEdgeNeighborhood(e,t){!this.network||!this.nodes||!this.edges||(this.highlightFrame!==null&&cancelAnimationFrame(this.highlightFrame),this.highlightFrame=requestAnimationFrame(()=>{let n=this.currentInput;if(!this.network||!this.nodes||!this.edges||!n)return;let r=n.graph.edges.find(t=>t.id===e);if(!r)return;let i=new Set([r.from,r.to]),a=new Set([e]);for(let e of[r.from,r.to]){for(let t of this.network.getConnectedNodes(e))(typeof t==`string`||typeof t==`number`)&&i.add(t);for(let t of this.network.getConnectedEdges(e))a.add(t)}this.applyFocusMask({selectedEdgeId:e,highlightedNodes:i,highlightedEdges:a}),t&&this.fitNeighborhood(i),this.highlighted={nodes:i,edges:a},this.highlightFrame=null}))}applyFocusMask({selectedNodeId:e,selectedEdgeId:t,highlightedNodes:n,highlightedEdges:r}){if(!this.nodes||!this.edges)return;let i=this.currentInput;i&&(this.nodes.update(i.graph.nodes.map(t=>{let r=t.id===e?`selected`:n.has(t.id)?`highlighted`:`dimmed`;return this.nodeFor(t,i,r)})),this.edges.update(i.graph.edges.map(e=>{let n=e.id===t?`selected`:r.has(e.id)?`highlighted`:`dimmed`;return this.edgeFor(e,i.edgeTheme,n)})))}fitNeighborhood(e){!this.network||e.size===0||this.network.fit({nodes:[...e],minZoomLevel:.24,maxZoomLevel:1.18,animation:{duration:320,easingFunction:`easeInOutQuad`}})}clearHighlight(){this.clearPendingHighlight(),this.restoreHighlightBase(),this.highlighted={nodes:new Set,edges:new Set}}restoreHighlightBase(){if(!this.nodes||!this.edges)return;let e=this.currentInput;e&&(this.nodes.update(e.graph.nodes.map(t=>this.nodeFor(t,e,t.id===e.selectedId?`selected`:`base`))),this.edges.update(e.graph.edges.map(t=>this.edgeFor(t,e.edgeTheme,`base`))))}clearPendingWork(){this.clearPendingHighlight(),this.clearStabilizationTimeout()}clearPendingHighlight(){this.highlightFrame!==null&&(cancelAnimationFrame(this.highlightFrame),this.highlightFrame=null)}clearStabilizationTimeout(){this.stabilizeTimeout&&=(clearTimeout(this.stabilizeTimeout),null)}signatureFor(e){return`${e.graph.nodes.map(e=>e.id).join(`|`)}::${e.graph.edges.map(e=>e.id).join(`|`)}::labels=${e.labelsVisible}`}},ge=c(`<button type="button"> </button>`),_e=c(`<div class="pointer-events-none absolute left-1/2 top-3 w-64 -translate-x-1/2 rounded-md border border-slate-200 bg-white/90 p-3 text-xs text-slate-600 shadow-sm backdrop-blur"><div class="flex justify-between font-medium text-slate-800"><span>Stabilizing layout</span> <span> </span></div> <div class="mt-2 h-1.5 overflow-hidden rounded-full bg-slate-200"><div class="h-full rounded-full bg-brand-500 transition-all"></div></div></div>`),ve=c(`<span class="inline-flex items-center gap-1 rounded-full border border-slate-200 bg-white px-2 py-1 text-xs text-slate-700"><span class="h-2 w-2 rounded-full"></span> </span>`),ye=c(`<button type="button" class="w-full rounded-md border border-slate-200 bg-white px-3 py-2 text-left hover:border-brand-300 hover:bg-brand-50"><span class="block truncate text-sm font-medium text-slate-900"> </span> <span class="text-xs text-slate-500"> </span></button>`),be=c(`<p class="mt-2 text-sm leading-6 text-slate-600"> </p>`),xe=c(`<a class="mt-3 inline-flex text-sm font-medium text-brand-700 hover:underline">Open in editor</a>`),Se=c(`<p class="text-xs font-semibold uppercase tracking-wide text-slate-500"> </p> <h3 class="mt-1 text-base font-semibold text-slate-950"> </h3> <!> <p class="mt-2 text-xs text-slate-500"> </p> <!>`,1),Ce=c(`<p class="text-xs font-semibold uppercase tracking-wide text-slate-500"> </p> <h3 class="mt-1 text-base font-semibold text-slate-950"> </h3> <p class="mt-2 text-sm leading-6 text-slate-600"> </p> <p class="mt-2 text-xs text-slate-500">Click another node or edge to move the highlighted neighborhood.</p>`,1),we=c(`<h3 class="text-sm font-semibold text-slate-950">Explore the Map</h3> <p class="mt-2 text-sm leading-6 text-slate-600">Click a node or edge to highlight its linked behavior. Hover highlighting is disabled so
2
+ the canvas stays lighter on slower laptops.</p>`,1),Te=c(`<section class="space-y-4"><div class="overflow-hidden rounded-lg border border-slate-200 bg-white shadow-sm shadow-slate-950/5"><div class="border-b border-slate-200 bg-slate-950 px-4 py-4 text-white"><div class="flex flex-wrap items-start justify-between gap-4"><div class="min-w-0"><p class="text-xs font-semibold uppercase tracking-wide text-cyan-200">Behavior Graph</p> <h2 class="mt-1 truncate text-2xl font-semibold"> </h2> <p class="mt-1 max-w-3xl text-sm leading-6 text-slate-300"> </p></div> <a class="rounded-md border border-white/20 px-3 py-2 text-sm font-medium text-white hover:bg-white/10"> </a></div></div> <div class="grid gap-0 lg:grid-cols-[minmax(0,1fr)_320px]"><div class="min-w-0 border-b border-slate-200 lg:border-b-0 lg:border-r"><div class="flex flex-wrap items-center gap-3 border-b border-slate-200 bg-slate-50 px-4 py-3"><input type="search" placeholder="Search nodes" class="w-full rounded-md border border-slate-300 bg-white px-3 py-2 text-sm outline-none focus:border-brand-700 sm:w-64"/> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Re-layout</button> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Fit</button> <div class="flex rounded-md border border-slate-300 bg-white p-1"><button type="button" class="rounded px-2.5 py-1 text-sm font-semibold text-slate-700 hover:bg-slate-50" aria-label="Zoom out">-</button> <button type="button" class="rounded px-2.5 py-1 text-sm font-semibold text-slate-700 hover:bg-slate-50" aria-label="Zoom in">+</button></div> <button type="button" class="rounded-md border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-white">Reset</button> <button type="button">Labels</button> <div class="flex flex-wrap gap-1"></div></div> <div class="graph-canvas relative svelte-1wx4hks"><div class="h-[76vh] min-h-[720px] w-full"></div> <div class="pointer-events-none absolute bottom-3 left-3 rounded-md border border-slate-200 bg-white/88 px-3 py-2 text-xs text-slate-600 shadow-sm backdrop-blur">ForceAtlas2 settles the graph, then physics stops for smooth panning. Wheel, pinch, or +/- to zoom.</div> <!></div></div> <aside class="space-y-4 p-4"><div><h3 class="text-sm font-semibold text-slate-950">Graph Summary</h3> <div class="mt-3 grid grid-cols-2 gap-2 text-sm"><div class="rounded-md bg-slate-100 p-3"><div class="text-2xl font-semibold text-slate-950"> </div> <div class="text-xs text-slate-500">nodes</div></div> <div class="rounded-md bg-slate-100 p-3"><div class="text-2xl font-semibold text-slate-950"> </div> <div class="text-xs text-slate-500">edges</div></div></div></div> <div><h3 class="text-sm font-semibold text-slate-950">Node Types</h3> <div class="mt-2 flex flex-wrap gap-1.5"></div></div> <div><h3 class="text-sm font-semibold text-slate-950">Central Nodes</h3> <div class="mt-2 space-y-2"></div></div> <div class="rounded-md border border-slate-200 bg-slate-50 p-3"><!></div></aside></div></div></section>`);function Ee(a,c){re(c,!0);let C=b(``),w=b(null),T=b(null),E=b(!1),k=b(!1),A=b(0),j=b(null),M=null,N=b(e({contains:!0,reads:!0,writes:!0,emits:!0,transitions:!0,asserts:!0,uses:!0,handles:!0})),P=y(()=>c.features??(c.feature?[c.feature]:[])),F=y(()=>c.project?.name??c.feature?.name??`Behavior graph`),me=y(()=>c.project?`The whole project behavior map across ${S(P).length} feature${S(P).length===1?``:`s`} from the shared Unspa hub.`:`A connected map of the executable behavior model from the shared Unspa hub.`),Ee=y(()=>c.project?`/projects/${c.project.id}`:c.feature?`/features/${c.feature.id}`:`/projects`),De=y(()=>c.project?`Back to project`:`Back to editor`),Oe=y(()=>de(S(P),c.project)),I=y(()=>fe(S(Oe))),L=y(()=>pe(S(I),{search:S(C),enabledKinds:S(N)})),R=y(()=>S(w)?S(I).nodeById.get(S(w))??null:null),z=y(()=>S(T)?S(L).edges.find(e=>e.id===S(T))??null:null),ke=y(()=>S(z)?S(I).nodeById.get(S(z).from)??null:null),Ae=y(()=>S(z)?S(I).nodeById.get(S(z).to)??null:null),je=y(()=>[...S(I).nodes].sort((e,t)=>t.degree-e.degree).slice(0,6)),Me=y(()=>{let e=new Map;for(let t of S(I).nodes)e.set(t.type,(e.get(t.type)??0)+1);return e}),Ne=()=>{M?.render({graph:S(L),selectedId:S(w),selectedEdgeId:S(T),labelsVisible:S(E),nodeTheme:D,edgeTheme:O})},Pe=e=>{m(N,{...S(N),[e]:!S(N)[e]},!0)},Fe=()=>{m(w,null),m(T,null),m(C,``),M?.fit()},Ie=e=>{m(w,e,!0),m(T,null),M?.select(e,null)};i(()=>{S(L).nodes,S(L).edges,S(E),S(w),S(T),Ne()}),ae(()=>{let e=!1,t=()=>M?.fit();return(async()=>{let n=await ce(()=>import(`./D5speDV82.js`),[],import.meta.url);e||!S(j)||(M=new he(n,S(j),{onSelectedNodeChange:e=>{m(w,e,!0)},onSelectedEdgeChange:e=>{m(T,e,!0)},onStabilizationProgress:e=>{m(A,e,!0)},onSettledChange:e=>{m(k,e,!0)}}),Ne(),window.addEventListener(`resize`,t))})(),()=>{e=!0,window.removeEventListener(`resize`,t)}}),ie(()=>{M?.destroy(),M=null});var B=Te(),Le=d(B),V=d(Le),Re=d(V),H=d(Re),U=l(d(H),2),ze=d(U,!0);_(U);var Be=l(U,2),Ve=d(Be,!0);_(Be),_(H);var W=l(H,2),He=d(W,!0);_(W),_(Re),_(V);var Ue=l(V,2),G=d(Ue),K=d(G),q=d(K);ne(q);var We=l(q,2),Ge=l(We,2),J=l(Ge,2),Ke=d(J),qe=l(Ke,2);_(J);var Je=l(J,2),Y=l(Je,2),Ye=l(Y,2);r(Ye,21,()=>le,n,(e,n)=>{var r=ge(),i=d(r,!0);_(r),u(()=>{se(r,1,`rounded-full border px-2.5 py-1 text-xs font-medium ${S(N)[S(n)]?`border-slate-300 bg-white text-slate-800`:`border-slate-200 bg-slate-100 text-slate-400`}`),t(i,O[S(n)].label)}),o(`click`,r,()=>Pe(S(n))),h(e,r)}),_(Ye),_(K);var Xe=l(K,2),X=d(Xe);oe(X,e=>m(j,e),()=>S(j));var Ze=l(X,4),Qe=e=>{var n=_e(),r=d(n),i=l(d(r),2),a=d(i);_(i),_(r);var o=l(r,2),s=d(o);_(o),_(n),u(()=>{t(a,`${S(A)??``}%`),p(s,`width:${S(A)}%`)}),h(e,n)};g(Ze,e=>{!S(k)&&S(A)<100&&e(Qe)}),_(Xe),_(G);var $e=l(G,2),Z=d($e),et=l(d(Z),2),Q=d(et),tt=d(Q),nt=d(tt,!0);_(tt),v(2),_(Q);var rt=l(Q,2),it=d(rt),at=d(it,!0);_(it),v(2),_(rt),_(et),_(Z);var ot=l(Z,2),st=l(d(ot),2);r(st,21,()=>ue,n,(e,n)=>{var r=s(),i=f(r),a=e=>{var r=ve(),i=d(r),a=l(i);_(r),u(e=>{p(i,`background:${D[S(n)].fill}`),t(a,` ${D[S(n)].label??``} ${e??``}`)},[()=>S(Me).get(S(n))]),h(e,r)},o=y(()=>S(Me).get(S(n)));g(i,e=>{S(o)&&e(a)}),h(e,r)}),_(st),_(ot);var $=l(ot,2),ct=l(d($),2);r(ct,21,()=>S(je),n,(e,n)=>{var r=ye(),i=d(r),a=d(i,!0);_(i);var s=l(i,2),c=d(s);_(s),_(r),u(()=>{t(a,S(n).label),t(c,`${D[S(n).type].label??``} / ${S(n).degree??``} links`)}),o(`click`,r,()=>Ie(S(n).id)),h(e,r)}),_(ct),_($);var lt=l($,2),ut=d(lt),dt=e=>{var n=Se(),r=f(n),i=d(r,!0);_(r);var a=l(r,2),o=d(a,!0);_(a);var s=l(a,2),c=e=>{var n=be(),r=d(n,!0);_(n),u(()=>t(r,S(R).detail)),h(e,n)};g(s,e=>{S(R).detail&&e(c)});var p=l(s,2),ee=d(p);_(p);var te=l(p,2),m=e=>{var t=xe();u(()=>x(t,`href`,S(R).href)),h(e,t)};g(te,e=>{S(R).href&&e(m)}),u(()=>{t(i,D[S(R).type].label),t(o,S(R).label),t(ee,`${S(R).degree??``} graph links`)}),h(e,n)},ft=e=>{var n=Ce(),r=f(n),i=d(r,!0);_(r);var a=l(r,2),o=d(a,!0);_(a);var s=l(a,2),c=d(s);_(s),v(2),u(()=>{t(i,O[S(z).kind].label),t(o,S(z).label??`Behavior link`),t(c,`${S(ke)?.label??S(z).from??``} -> ${S(Ae)?.label??S(z).to??``}`)}),h(e,n)},pt=e=>{var t=we();v(2),h(e,t)};g(ut,e=>{S(R)?e(dt):S(z)?e(ft,1):e(pt,-1)}),_(lt),_($e),_(Ue),_(Le),_(B),u(()=>{t(ze,S(F)),t(Ve,S(me)),x(W,`href`,S(Ee)),t(He,S(De)),se(Y,1,`rounded-md border border-slate-300 px-3 py-2 text-sm font-medium ${S(E)?`bg-slate-900 text-white`:`text-slate-700 hover:bg-white`}`),x(X,`aria-label`,`Interactive behavior graph for ${S(F)}`),t(nt,S(I).nodes.length),t(at,S(I).edges.length)}),ee(q,()=>S(C),e=>m(C,e)),o(`click`,We,()=>M?.relayout(S(L).nodes.length)),o(`click`,Ge,()=>M?.fit()),o(`click`,Ke,()=>M?.zoomBy(.72)),o(`click`,qe,()=>M?.zoomBy(1.38)),o(`click`,Je,Fe),o(`click`,Y,()=>m(E,!S(E))),h(a,B),te()}a([`click`]);export{Ee as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.dIOlQ-0y.js","../chunks/BPl9BITm.js","../chunks/OJscNS3T.js","../chunks/CgdRZPgI.js","../chunks/Bp2_Vghh.js","../chunks/Dg0acPpT.js","../chunks/D8YEa1po.js","../chunks/BOrLmFwJ.js","../chunks/BCEY79Dw.js","../chunks/B439_FLv.js","../chunks/ib21i2T_.js","../chunks/xihTtKlq.js","../chunks/suTxxv1t.js","../chunks/BfMYiIUi.js","../chunks/Cl7Z3e6-.js","../chunks/cMamJTsF.js","../chunks/C8rRKIXT.js","../assets/0.DSctqr5I.css","../nodes/1.Dyte3Ggf.js","../nodes/2.CmPPom9Z.js","../chunks/BYIrIC5L.js","../chunks/DKgYpi6_.js","../chunks/HKLi1Yz3.js","../chunks/D6jhrpTg.js","../chunks/D9dKmajw.js","../chunks/N7PXjlRH.js","../chunks/Dhqg7r_2.js","../chunks/BzLd0mTH.js","../nodes/3.D-iCGCEx.js","../chunks/BvOhVtZg.js","../assets/3.B3akUL9A.css","../nodes/4.DbfAvO8Z.js","../chunks/CxyLMlpt2.js","../chunks/aNMRV4sP2.js","../chunks/BQ9GodWX2.js","../nodes/5.CC5Q7lVw.js","../chunks/DkxwAIfJ2.js","../chunks/B_9TWPrx2.js","../chunks/CJjJLwzv2.js","../chunks/hpWJNn0t2.js","../chunks/Bp8HpEPe2.js","../chunks/9nXQ5qrY2.js","../nodes/6.CHIjlzpO.js","../chunks/U9p9CtKG2.js","../chunks/kNaey6uv.js","../assets/BehaviorGraph.Bk0xQRZk.css","../nodes/7.Ejs18ZUc.js","../nodes/8.B-HweAc8.js","../nodes/9.CKPeM6tx.js","../chunks/CY3em1ma2.js","../nodes/10.ivxAosDg.js","../nodes/11.wvMfJKC2.js","../assets/11.nv0I59TU.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,F as t,G as n,K as r,M as i,N as a,Q as o,V as s,W as c,X as l,Z as u,a as d,ct as f,et as p,i as m,j as h,k as g,lt as _,mt as v,r as y,rt as b,s as x,tt as S,w as C,z as w}from"../chunks/BPl9BITm.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=a(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=a(`<!> <!>`,1);function k(a,m){_(m,!0);let T=d(m,`components`,23,()=>[]),E=d(m,`data_0`,3,null),k=d(m,`data_1`,3,null);r(()=>m.stores.page.set(m.page)),n(()=>{m.stores,m.page,m.constructors,T(),m.form,E(),k(),m.stores.page.notify()});let A=S(!1),j=S(!1),M=S(null);y(()=>{let e=m.stores.page.subscribe(()=>{w(A)&&(p(j,!0),s().then(()=>{p(M,document.title||`untitled page`,!0)}))});return p(A,!0),e});let N=b(()=>m.constructors[1]);var P=O(),F=u(P),I=e=>{let t=b(()=>m.constructors[0]);var n=i();C(u(n),()=>w(t),(e,t)=>{x(t(e,{get data(){return E()},get form(){return m.form},get params(){return m.page.params},children:(e,t)=>{var n=i();C(u(n),()=>w(N),(e,t)=>{x(t(e,{get data(){return k()},get form(){return m.form},get params(){return m.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),h(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),h(e,n)},L=e=>{let t=b(()=>m.constructors[0]);var n=i();C(u(n),()=>w(t),(e,t)=>{x(t(e,{get data(){return E()},get form(){return m.form},get params(){return m.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),h(e,n)};g(F,e=>{m.constructors[1]?e(I):e(L,-1)});var R=o(F,2),z=n=>{var r=D(),i=l(r),a=n=>{var r=t();c(()=>e(r,w(M))),h(n,r)};g(i,e=>{w(j)&&e(a)}),v(r),h(n,r)};g(R,e=>{w(A)&&e(z)}),h(a,P),f()}var A=m(k),j=[()=>T(()=>import(`../nodes/0.dIOlQ-0y.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url),()=>T(()=>import(`../nodes/1.Dyte3Ggf.js`),__vite__mapDeps([18,1,9,2,11]),import.meta.url),()=>T(()=>import(`../nodes/2.CmPPom9Z.js`),__vite__mapDeps([19,1,11,12,20,2,8,4,21,13,14,22,23,24,6,25,26,27,15,7]),import.meta.url),()=>T(()=>import(`../nodes/3.D-iCGCEx.js`),__vite__mapDeps([28,1,2,3,4,5,6,7,29,8,9,10,11,12,30]),import.meta.url),()=>T(()=>import(`../nodes/4.DbfAvO8Z.js`),__vite__mapDeps([31,1,2,29,8,11,4,21,13,14,32,24,6,33,34,23,25]),import.meta.url),()=>T(()=>import(`../nodes/5.CC5Q7lVw.js`),__vite__mapDeps([35,1,2,8,9,36,10,11,12,4,37,5,38,39,40,16,14,41,24,6,26,27,15,33]),import.meta.url),()=>T(()=>import(`../nodes/6.CHIjlzpO.js`),__vite__mapDeps([42,1,36,2,11,12,4,43,44,45,39,40,16,14,41]),import.meta.url),()=>T(()=>import(`../nodes/7.Ejs18ZUc.js`),__vite__mapDeps([46,1,11,4,38,21,13,14]),import.meta.url),()=>T(()=>import(`../nodes/8.B-HweAc8.js`),__vite__mapDeps([47,1,11,12,20,2,8,4,21,13,14,22,23,24,6,25,26,27,15,7]),import.meta.url),()=>T(()=>import(`../nodes/9.CKPeM6tx.js`),__vite__mapDeps([48,1,2,8,36,10,11,12,4,37,21,13,14,32,24,6,33,22,49,40,16,25,26,27,15,7]),import.meta.url),()=>T(()=>import(`../nodes/10.ivxAosDg.js`),__vite__mapDeps([50,1,36,2,11,4,43,44,45,49,40,16,14,7]),import.meta.url),()=>T(()=>import(`../nodes/11.wvMfJKC2.js`),__vite__mapDeps([51,1,2,8,11,4,21,13,14,34,39,40,16,27,15,52]),import.meta.url)],M=[],N={"/":[2],"/builder-mode":[3],"/features":[4],"/features/[id]":[5],"/features/[id]/graph":[6],"/mcp":[7],"/projects":[8],"/projects/[id]":[9],"/projects/[id]/graph":[10],"/tutorial":[11]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
@@ -0,0 +1 @@
1
+ import{i as e,l as t}from"../chunks/OJscNS3T.js";export{t as load_css,e as start};
@@ -0,0 +1,4 @@
1
+ import{$ as e,A as t,C as n,D as r,E as i,G as a,I as o,L as s,M as c,N as l,O as u,P as d,Q as f,R as p,T as m,W as h,X as g,Y as _,Z as v,_ as y,_t as b,c as x,ct as S,d as C,et as w,j as T,k as E,l as D,lt as O,mt as k,nt as ee,o as A,p as j,pt as M,r as N,rt as P,s as F,tt as I,u as L,v as R,y as z,z as B}from"../chunks/BPl9BITm.js";import{n as V}from"../chunks/OJscNS3T.js";import"../chunks/xihTtKlq.js";import{t as H}from"../chunks/B439_FLv.js";import{i as te,n as ne,r as U,t as re}from"../chunks/ib21i2T_.js";import{_t as W,ft as ie,gt as ae,vt as oe}from"../chunks/Bp2_Vghh.js";import"../chunks/suTxxv1t.js";import{t as G}from"../chunks/BOrLmFwJ.js";import{i as K,n as se,o as ce,r as le,t as ue}from"../chunks/CgdRZPgI.js";import"../chunks/BCEY79Dw.js";import{t as q}from"../chunks/cMamJTsF.js";import{t as de}from"../chunks/BfMYiIUi.js";import{t as J}from"../chunks/C8rRKIXT.js";var fe=b({prerender:()=>!1,ssr:()=>!1,trailingSlash:()=>Y}),Y=`never`,pe=l(`<span class="mt-1 block text-xs leading-relaxed opacity-80"> </span>`),X=l(`<li class="flex"><button type="button"><span class="min-w-0 flex-1"><span class="block text-sm"> </span> <!></span> <span aria-hidden="true" class="shrink-0 text-base transition group-hover:translate-x-1">→</span></button></li>`),me=l(`<div class="px-7 pt-2 pb-5"><ul class="flex max-h-80 flex-col gap-3 overflow-y-auto"></ul></div>`),he=l(`<p class="mt-2 text-xs font-medium text-red-700"> </p>`),Z=l(`<div class="px-7 pt-1 pb-4"><label class="block text-xs font-medium text-slate-700"> <input autocorrect="off" autocapitalize="off" spellcheck="false" class="mono mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/></label> <!></div>`),ge=l(`<span class="mt-0.5 block text-xs text-slate-500"> </span>`),_e=l(`<li><label class="flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white"><input type="checkbox"/> <span class="min-w-0 flex-1"><span class="block text-sm font-medium text-slate-900"> </span> <!></span></label></li>`),ve=l(`<div class="border-t border-hairline px-6 py-3"><div class="mb-2 flex items-center justify-between"><span class="text-xs font-medium uppercase tracking-wide text-slate-500"> </span> <div class="flex gap-2 text-xs"><button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select all</button> <span class="text-slate-300">·</span> <button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select none</button></div></div> <ul class="max-h-72 space-y-1.5 overflow-y-auto rounded-lg border border-hairline bg-slate-50 p-2"></ul></div>`),ye=l(`<button type="button"> </button>`),be=l(`<button type="button" class="rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950"> </button>`),xe=l(`<button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm text-slate-700 transition hover:bg-slate-100"> </button> <button type="button"> </button>`,1),Se=l(`<div class="fixed inset-0 z-100 flex items-center justify-center px-4" role="presentation"><button type="button" aria-label="Dismiss" class="absolute inset-0 bg-slate-950/40 backdrop-blur-sm"></button> <div role="dialog" aria-modal="true" aria-labelledby="app-dialog-title" aria-describedby="app-dialog-message"><div class="flex gap-4 px-7 pt-7 pb-5"><div> </div> <div class="min-w-0 flex-1 pt-1"><h2 id="app-dialog-title" class="text-lg leading-tight text-slate-950"> </h2> <p id="app-dialog-message" class="mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600"> </p></div></div> <!> <div class="flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3"><!></div></div></div>`);function Ce(r,o){O(o,!0);let l=P(()=>W.current),u=I(e(new Set)),d=I(``),m=I(null),y=I(null);a(()=>{B(l)?.kind===`checklist`?w(u,new Set(B(l).opts.items.filter(e=>e.defaultChecked).map(e=>e.id)),!0):w(u,new Set,!0),B(l)?.kind===`prompt`?(w(d,B(l).opts.defaultValue??``,!0),w(m,null),queueMicrotask(()=>B(y)?.focus())):(w(d,``),w(m,null))});function b(e){let t=new Set(B(u));t.has(e)?t.delete(e):t.add(e),w(u,t,!0)}function ee(){B(l)?.kind===`checklist`&&w(u,new Set(B(l).opts.items.map(e=>e.id)),!0)}function A(){w(u,new Set,!0)}function j(){B(l)?.kind===`prompt`?W.resolvePrompt(null):W.resolveCurrent(!1)}function N(){if(B(l)?.kind===`checklist`)W.resolveCurrent(!0,Array.from(B(u)));else if(B(l)?.kind===`prompt`){let e=B(d),t=B(l).opts.validate?B(l).opts.validate(e):null;if(t){w(m,t,!0);return}W.resolvePrompt(e)}else W.resolveCurrent(!0)}function z(e){B(l)&&(e.key===`Escape`?(e.preventDefault(),j()):e.key===`Enter`&&B(l).kind!==`checklist`&&(e.preventDefault(),N()))}let V={default:{icon:`?`,iconBg:`bg-slate-100`,iconColor:`text-slate-700`,confirmBtn:`bg-slate-900 hover:bg-slate-800 text-white`,check:`accent-slate-700`},danger:{icon:`!`,iconBg:`bg-rose-50`,iconColor:`text-rose-600`,confirmBtn:`bg-rose-600 hover:bg-rose-500 text-white`,check:`accent-rose-600`},info:{icon:`i`,iconBg:`bg-brand-50`,iconColor:`text-brand-700`,confirmBtn:`bg-brand-700 hover:bg-brand-600 text-white`,check:`accent-brand-700`},success:{icon:`✓`,iconBg:`bg-emerald-50`,iconColor:`text-emerald-600`,confirmBtn:`bg-emerald-600 hover:bg-emerald-500 text-white`,check:`accent-emerald-600`},warning:{icon:`!`,iconBg:`bg-amber-50`,iconColor:`text-amber-600`,confirmBtn:`bg-amber-600 hover:bg-amber-500 text-white`,check:`accent-amber-600`}},H=P(()=>B(l)?.opts.tone??(B(l)?.kind===`alert`?`info`:`default`)),U=P(()=>V[B(H)]);var ie=c();p(`keydown`,_,z);var ae=v(ie),oe=e=>{var r=Se(),a=g(r),o=f(a,2),c=g(o),p=g(c),_=g(p,!0);k(p);var S=f(p,2),O=g(S),P=g(O,!0);k(O);var I=f(O,2),z=g(I,!0);k(I),k(S),k(c);var V=f(c,2),H=e=>{var n=me(),r=g(n);i(r,21,()=>B(l).opts.options,e=>e.id,(e,n)=>{var r=X(),i=g(r),a=g(i),o=g(a),c=g(o,!0);k(o);var l=f(o,2),u=e=>{var r=pe(),i=g(r,!0);k(r),h(()=>t(i,B(n).description)),T(e,r)};E(l,e=>{B(n).description&&e(u)}),k(a),M(2),k(i),k(r),h(()=>{R(i,1,`group flex w-full items-center justify-between gap-4 rounded-xl px-5 py-4 text-left shadow-sm shadow-slate-950/5 transition hover:shadow-md focus:ring-2 focus:ring-offset-2 focus:outline-none ${B(U).confirmBtn}`),t(c,B(n).label)}),s(`click`,i,()=>W.resolveChoice(B(n).id)),T(e,r)}),k(r),k(n),T(e,n)},ie=e=>{var n=Z(),r=g(n),i=g(r),a=f(i);D(a),F(a,e=>w(y,e),()=>B(y)),k(r);var o=f(r,2),c=e=>{var n=he(),r=g(n,!0);k(n),h(()=>t(r,B(m))),T(e,n)};E(o,e=>{B(m)&&e(c)}),k(n),h(()=>{t(i,`${B(l).opts.inputLabel??`Value`??``} `),L(a,`type`,B(l).opts.password?`password`:`text`),L(a,`autocomplete`,B(l).opts.password?`new-password`:`off`),L(a,`placeholder`,B(l).opts.placeholder??``)}),s(`input`,a,()=>w(m,null)),x(a,()=>B(d),e=>w(d,e)),T(e,n)},ae=e=>{var n=ve(),r=g(n),a=g(r),o=g(a);k(a);var c=f(a,2),d=g(c),p=f(d,4);k(c),k(r);var m=f(r,2);i(m,21,()=>B(l).opts.items,e=>e.id,(e,n)=>{var r=_e(),i=g(r),a=g(i);D(a);var o=f(a,2),c=g(o),l=g(c,!0);k(c);var d=f(c,2),p=e=>{var r=ge(),i=g(r,!0);k(r),h(()=>t(i,B(n).description)),T(e,r)};E(d,e=>{B(n).description&&e(p)}),k(o),k(i),k(r),h(e=>{R(a,1,`mt-0.5 h-4 w-4 rounded ${B(U).check}`),C(a,e),t(l,B(n).label)},[()=>B(u).has(B(n).id)]),s(`change`,a,()=>b(B(n).id)),T(e,r)}),k(m),k(n),h(()=>t(o,`${B(u).size??``} of ${B(l).opts.items.length??``} selected`)),s(`click`,d,ee),s(`click`,p,A),T(e,n)};E(V,e=>{B(l).kind===`choice`?e(H):B(l).kind===`prompt`?e(ie,1):B(l).kind===`checklist`&&e(ae,2)});var oe=f(V,2),G=g(oe),K=e=>{var n=ye(),r=g(n,!0);k(n),h(()=>{R(n,1,`rounded-md px-4 py-2 text-sm transition ${B(U).confirmBtn}`),t(r,B(l).opts.buttonLabel??`OK`)}),s(`click`,n,j),T(e,n)},se=e=>{var n=be(),r=g(n,!0);k(n),h(()=>t(r,B(l).opts.cancelLabel??`Close`)),s(`click`,n,j),T(e,n)},ce=e=>{var n=xe(),r=v(n),i=g(r,!0);k(r);var a=f(r,2),o=g(a,!0);k(a),h(()=>{t(i,B(l).opts.cancelLabel??`Cancel`),R(a,1,`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${B(U).confirmBtn}`),t(o,B(l).opts.confirmLabel??`Confirm`)}),s(`click`,r,j),s(`click`,a,N),T(e,n)};E(G,e=>{B(l).kind===`alert`?e(K):B(l).kind===`choice`?e(se,1):e(ce,-1)}),k(oe),k(o),k(r),h(()=>{R(o,1,`relative w-full ${B(l).kind===`checklist`||B(l).kind===`choice`?`max-w-lg`:`max-w-md`} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`),R(p,1,`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${B(U).iconBg} ${B(U).iconColor}`),t(_,B(U).icon),t(P,B(l).opts.title),t(z,B(l).opts.message)}),s(`click`,a,j),n(3,o,()=>te,()=>({duration:140,start:.96,easing:re})),n(3,r,()=>ne,()=>({duration:120,easing:re})),T(e,r)};E(ae,e=>{B(l)&&e(oe)}),T(r,ie),S()}o([`click`,`input`,`change`]);var we=l(`<div class="untangler-sky svelte-dds6m1" aria-hidden="true"><div class="untangler svelte-dds6m1"><svg viewBox="0 0 240 110" role="img" class="svelte-dds6m1"><g class="tangle tangle-outline svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="tangle tangle-fill svelte-dds6m1"><path d="M5 55 C 32 12, 48 95, 72 32 S 116 80, 148 42 S 196 22, 232 62" class="svelte-dds6m1"></path><path d="M5 70 C 28 32, 52 95, 78 22 S 124 72, 156 44 S 200 30, 232 76" class="svelte-dds6m1"></path><path d="M5 40 C 36 82, 60 12, 92 70 S 118 30, 150 52 S 196 70, 230 30" class="svelte-dds6m1"></path><path d="M5 88 C 30 60, 48 100, 80 65 S 130 95, 165 70 S 210 88, 232 60" class="svelte-dds6m1"></path></g><g class="clean clean-outline svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="clean clean-fill svelte-dds6m1"><line x1="5" y1="30" x2="232" y2="30" class="svelte-dds6m1"></line><line x1="5" y1="50" x2="232" y2="50" class="svelte-dds6m1"></line><line x1="5" y1="70" x2="232" y2="70" class="svelte-dds6m1"></line><line x1="5" y1="90" x2="232" y2="90" class="svelte-dds6m1"></line></g><g class="glint svelte-dds6m1"><rect x="-18" y="18" width="14" height="78" rx="3" class="svelte-dds6m1"></rect></g></svg></div></div>`);function Te(e,t){O(t,!0);let n=[`arrowup`,`arrowup`,`arrowdown`,`arrowdown`,`arrowleft`,`arrowright`,`arrowleft`,`arrowright`,`b`,`a`],r=I(!1),i=``,o=0,s=null;function l(e){return e instanceof HTMLElement?e.isContentEditable?!0:!!e.closest(`input, textarea, select, [contenteditable='true']`):!1}function u(){w(r,!1),s&&clearTimeout(s),requestAnimationFrame(()=>{w(r,!0),s=setTimeout(()=>{w(r,!1)},5200)})}function d(e){return e===n[o]?(o+=1,o<n.length?!1:(o=0,!0)):(o=+(e===n[0]),!1)}function f(e){return e.length!==1||(i=(i+e).slice(-9),i!==`spaghetti`)?!1:(i=``,!0)}function m(e){if(l(e.target))return;let t=e.key.toLowerCase();(d(t)||f(t))&&u()}a(()=>()=>{s&&clearTimeout(s)});var h=c();p(`keydown`,_,m);var g=v(h),y=e=>{T(e,we())};E(g,e=>{B(r)&&e(y)}),T(e,h),S()}var Ee=4,De=5e3,Oe=e=>{if(e.op!==`delete`)switch(e.kind){case`feature`:return`/features/${e.id}`;case`project`:return`/projects/${e.id}`;case`implementation-status`:return`/features/${e.id}`}},ke=800,Q=new class{#e=I(e([]));get toasts(){return B(this.#e)}set toasts(e){w(this.#e,e,!0)}nextId=1;subscribed=!1;unsubscribe=null;timers=new Map;recentKeys=new Map;start(){this.subscribed||(this.subscribed=!0,this.unsubscribe=G(e=>this.handle(e)))}dismiss(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.toasts=this.toasts.filter(t=>t.id!==e)}reset(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.toasts=[],this.recentKeys.clear(),this.unsubscribe&&this.unsubscribe(),this.unsubscribe=null,this.subscribed=!1}handle(e){let t=`${e.kind}:${e.id}:${e.op??`save`}`,n=Date.now(),r=this.recentKeys.get(t);if(r!==void 0&&n-r<ke){this.recentKeys.set(t,n);return}this.recentKeys.set(t,n);let i=this.nextId++,a=[{id:i,kind:e.kind,entityId:e.id,name:e.name,projectName:e.projectName,op:e.op??`save`,changeOp:e.changeOp,changePath:e.changePath,previousName:e.previousName,actingFor:e.actingFor,...Oe(e)?{href:Oe(e)}:{}},...this.toasts].slice(0,Ee),o=new Set(a.map(e=>e.id));for(let[e,t]of this.timers)o.has(e)||(clearTimeout(t),this.timers.delete(e));this.toasts=a;let s=setTimeout(()=>this.dismiss(i),De);this.timers.set(i,s)}},Ae=l(`<span class="rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800"> </span>`),je=l(`<span class="shrink-0 text-slate-400" aria-hidden="true">&rsaquo;</span>`),Me=l(`<!> <span> </span>`,1),Ne=l(`<div class="mt-0.5 truncate text-[11px] text-slate-500"> </div>`),Pe=l(`<a class="rounded-md bg-white/70 px-2 py-1 text-xs font-medium text-slate-700 hover:bg-white hover:text-brand-800">View</a>`),Fe=l(`<div><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] font-semibold uppercase tracking-wide"><span class="text-slate-500"> </span> <!></div> <div class="mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900"></div> <!></div> <div class="flex shrink-0 items-center gap-1"><!> <button type="button" class="rounded-md px-1.5 py-1 text-xs text-slate-500 hover:bg-white/70 hover:text-slate-900" aria-label="Dismiss">&times;</button></div></div>`),Ie=l(`<div class="pointer-events-none fixed top-20 right-4 z-50 flex w-full max-w-md flex-col gap-2" role="status" aria-live="polite"></div>`);function Le(e,a){O(a,!1),N(()=>{Q.start()});function o(e){switch(e){case`feature`:return`feature`;case`project`:return`project`;case`implementation-status`:return`status`}}function l(e){switch(e){case`feature`:return`border-cyan-200 bg-cyan-50`;case`project`:return`border-violet-200 bg-violet-50`;case`implementation-status`:return`border-emerald-200 bg-emerald-50`}}function u(e){if(e.op===`delete`)return`deleted`;switch(e.changeOp){case`added`:return`added`;case`removed`:return`removed`;case`renamed`:return`renamed`;case`edited`:return`edited`;case`queued`:return`queued`;case`unqueued`:return`unqueued`;case`created`:return`created`;case`deleted`:return`deleted`;default:return`saved`}}function d(e){let t=[];e.projectName&&t.push(e.projectName);let n=e.changePath?.[0],r=n!==void 0&&(e.name===n||!e.name);if(e.name&&!r&&t.push(e.name),e.changePath&&e.changePath.length>0)for(let n of e.changePath)t.push(n);else e.name&&t[t.length-1]!==e.name&&t.push(e.name);let i=[];for(let e of t)e!==`unknown`&&i[i.length-1]!==e&&i.push(e);return i.length===0&&i.push(e.entityId),i}function p(e){if(e.op!==`delete`)return ce(e.kind,e.entityId)??e.href}A();var m=c(),_=v(m),y=e=>{var a=Ie();i(a,5,()=>Q.toasts,e=>e.id,(e,a)=>{let c=ee(()=>d(B(a))),m=ee(()=>p(B(a)));var _=Fe(),y=g(_),b=g(y),x=g(b),S=g(x);k(x);var C=f(x,2),w=e=>{var n=Ae(),r=g(n);k(n),h(()=>t(r,`for ${B(a).actingFor??``}`)),T(e,n)};E(C,e=>{B(a).actingFor&&e(w)}),k(b);var D=f(b,2);i(D,5,()=>B(c),r,(e,n,r)=>{var i=Me(),a=v(i),o=e=>{T(e,je())};E(a,e=>{r>0&&e(o)});var s=f(a,2),l=g(s,!0);k(s),h(()=>{R(s,1,`truncate ${r===B(c).length-1?`font-semibold`:`text-slate-600`}`),t(l,B(n))}),T(e,i)}),k(D);var O=f(D,2),A=e=>{var n=Ne(),r=g(n);k(n),h(()=>t(r,`was “${B(a).previousName??``}”`)),T(e,n)};E(O,e=>{B(a).changeOp===`renamed`&&B(a).previousName&&e(A)}),k(y);var j=f(y,2),M=g(j),N=e=>{var t=Pe();h(()=>L(t,`href`,B(m))),s(`click`,t,()=>Q.dismiss(B(a).id)),T(e,t)};E(M,e=>{B(m)&&e(N)});var P=f(M,2);k(j),k(_),h((e,n,r)=>{R(_,1,`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${e??``}`),t(S,`MCP · ${n??``} ${r??``}`)},[()=>l(B(a).kind),()=>u(B(a)),()=>o(B(a).kind)]),s(`click`,P,()=>Q.dismiss(B(a).id)),n(1,_,()=>U,()=>({x:24,duration:180,easing:re})),n(2,_,()=>ne,()=>({duration:140})),T(e,_)}),k(a),T(e,a)};E(_,e=>{Q.toasts.length>0&&e(y)}),T(e,m),S()}o([`click`]);var Re=e=>{let t=I(null),n=I(null);if(!e)return{get element(){return B(t)},get rect(){return B(n)},dispose(){}};let r=null,i=e=>{w(n,e?e.getBoundingClientRect():null,!0)},a=()=>{let n=document.querySelector(e);n!==r&&(r=n,w(t,n,!0)),i(n)};a();let o=new MutationObserver(a);o.observe(document.body,{childList:!0,subtree:!0});let s=0,c=()=>{s||=requestAnimationFrame(()=>{s=0,r&&i(r)})},l=new ResizeObserver(c);r&&l.observe(r);let u=new MutationObserver(()=>{l.disconnect(),r&&l.observe(r)});u.observe(document.body,{childList:!0,subtree:!0});let d=()=>c(),f=()=>c();return window.addEventListener(`scroll`,d,!0),window.addEventListener(`resize`,f),{get element(){return B(t)},get rect(){return B(n)},dispose(){s&&cancelAnimationFrame(s),o.disconnect(),u.disconnect(),l.disconnect(),window.removeEventListener(`scroll`,d,!0),window.removeEventListener(`resize`,f)}}},ze=(e,t)=>{let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t,e.dispatchEvent(new Event(`input`,{bubbles:!0})),e.dispatchEvent(new Event(`change`,{bubbles:!0}))},Be=e=>{let t=[];for(let n of e){let e=document.querySelector(n.selector);if(!e){t.push(n);continue}e.value.length===0&&ze(e,n.value)}return t},Ve=e=>{let t=new WeakSet,n=()=>{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()},r=new MutationObserver(r=>{if(!e.matches(`:popover-open`))return;let i=!1;for(let e of r){if(e.type!==`attributes`||e.attributeName!==`open`)continue;let n=e.target;n instanceof HTMLDialogElement&&(n.hasAttribute(`open`)?t.has(n)||(t.add(n),i=!0):t.delete(n))}i&&n()});return r.observe(document.body,{subtree:!0,attributes:!0,attributeFilter:[`open`]}),{dispose(){r.disconnect()}}},He=l(`<div class="mt-3 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-2 text-[11px] text-amber-900"><p class="mb-1.5 font-medium">First, head to the right page.</p> <button type="button" class="rounded-md bg-slate-900 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-slate-800"> </button></div>`),$=l(`<p class="mt-3 text-[10px] italic text-slate-500">Click the highlighted element to continue.</p>`),Ue=l(`<p class="mt-3 text-[10px] italic text-slate-500">Do the action above to continue.</p>`),We=l(`<p class="mt-3 text-[10px] italic text-amber-700">Finish the action above first, then click Next.</p>`),Ge=l(`<aside popover="manual" class="fixed z-1010 m-0 w-80 max-w-[calc(100vw-3rem)] rounded-xl border border-brand-200 bg-white p-4 shadow-2xl shadow-slate-950/20 transition-[top,left,bottom,right] duration-200" aria-label="Interactive tutorial"><header class="mb-2 flex items-start justify-between gap-3"><div class="min-w-0"><p class="text-[10px] font-semibold uppercase tracking-wide text-brand-700"> </p> <h3 class="mt-0.5 text-sm font-semibold text-slate-950"> </h3></div> <button type="button" class="rounded-md px-1.5 py-0.5 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700" aria-label="Exit tutorial" title="Exit tutorial">x</button></header> <p class="whitespace-pre-line text-xs leading-5 text-slate-700"> </p> <!> <footer class="mt-3 flex items-center justify-between gap-2"><button type="button" class="rounded-md p-1 text-slate-500 hover:bg-slate-100 hover:text-slate-800 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Previous step" title="Back">&larr;</button> <button type="button" class="rounded-md border border-slate-300 bg-white px-2.5 py-1 text-[11px] font-medium text-slate-600 hover:bg-slate-50">Exit</button> <button type="button" class="rounded-md bg-brand-700 px-3 py-1 text-[11px] font-semibold text-white hover:bg-brand-800 disabled:cursor-not-allowed disabled:bg-slate-300"> </button></footer></aside>`);function Ke(e,n){O(n,!0);let r=I(null);a(()=>{n.panelEl?.(B(r))});let i=P(()=>n.stepNumber===1),o=P(()=>n.stepNumber===n.totalSteps),c=P(()=>{switch(n.placement.kind){case`bottom-right`:return`bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;`;case`bottom-left`:return`bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;`;case`absolute`:return`top: ${n.placement.top}px; left: ${n.placement.left}px; bottom: auto; right: auto;`}});var l=Ge(),u=g(l),d=g(u),p=g(d),m=g(p);k(p);var _=f(p,2),v=g(_,!0);k(_),k(d);var b=f(d,2);k(u);var x=f(u,2),C=g(x,!0);k(x);var D=f(x,2),ee=e=>{var r=He(),i=f(g(r),2),a=g(i);k(i),k(r),h(()=>t(a,`${n.step.route.label??``} →`)),s(`click`,i,function(...e){n.onGoToRoute?.apply(this,e)}),T(e,r)},A=e=>{T(e,$())},j=e=>{T(e,Ue())},M=e=>{T(e,We())};E(D,e=>{!n.onCorrectRoute&&n.step.route?e(ee):n.step.advance.kind===`click`?e(A,1):n.step.advance.kind===`event`?e(j,2):n.step.advance.kind===`manual`&&!n.nextEnabled&&e(M,3)});var N=f(D,2),R=g(N),z=f(R,2),V=f(z,2),H=g(V);k(V),k(N),k(l),F(l,e=>w(r,e),()=>B(r)),h(()=>{y(l,B(c)),t(m,`Tutorial · step ${n.stepNumber??``} of ${n.totalSteps??``}`),t(v,n.step.title),t(C,n.step.body),R.disabled=B(i),V.disabled=!n.nextEnabled,L(V,`title`,n.nextEnabled?B(o)?`Finish the tour`:`Next step`:`Finish the current action first`),t(H,`${B(o)?`Finish`:`Next`} →`)}),s(`click`,b,function(...e){n.onExit?.apply(this,e)}),s(`click`,R,function(...e){n.onPrev?.apply(this,e)}),s(`click`,z,function(...e){n.onExit?.apply(this,e)}),s(`click`,V,function(...e){n.onNext?.apply(this,e)}),T(e,l),S()}o([`click`]);var qe=l(`<div class="pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent" aria-hidden="true"></div>`),Je=l(`<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">&uarr;</span> <span>Highlight is above &mdash; click to scroll up</span></button>`,1),Ye=l(`<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 &mdash; click to scroll down</span> <span aria-hidden="true">&darr;</span></button>`,1),Xe=l(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div>`);function Ze(e,t){O(t,!0);let n=I(0);a(()=>{let e=()=>{w(n,window.innerHeight,!0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)});let r=P(()=>t.rect?{top:t.rect.top-10,left:t.rect.left-10,width:t.rect.width+20,height:t.rect.height+20}:null),i=P(()=>!t.rect||B(n)===0?null:t.rect.bottom<64?`above`:t.rect.top>B(n)?`below`:`visible`);var o=c(),l=v(o),u=e=>{var t=qe();h(()=>y(t,`top: ${B(r).top??``}px; left: ${B(r).left??``}px; width: ${B(r).width??``}px; height: ${B(r).height??``}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)),T(e,t)},d=e=>{var t=Je();s(`click`,f(v(t),2),()=>window.scrollBy({top:-window.innerHeight*.7,behavior:`smooth`})),T(e,t)},p=e=>{var t=Ye();s(`click`,f(v(t),2),()=>window.scrollBy({top:window.innerHeight*.7,behavior:`smooth`})),T(e,t)},m=e=>{T(e,Xe())};E(l,e=>{B(r)&&B(i)===`visible`?e(u):B(r)&&B(i)===`above`?e(d,1):B(r)&&B(i)===`below`?e(p,2):e(m,-1)}),T(e,o),S()}o([`click`]);var Qe=l(`<!> <!>`,1);function $e(e,t){O(t,!0);let n=P(()=>q.currentStep),r=P(()=>B(n)?.route?H.url?.pathname===B(n).route.pathname:!0),i=I(null);a(()=>{let e=Re(B(r)?B(n)?.target??null:null);return w(i,e,!0),()=>e.dispose()});let o=P(()=>B(i)?.rect??null),s=P(()=>{if(typeof window>`u`)return{kind:`bottom-right`};let e=B(n)?.panelPosition??`bottom-right`;if(e===`avoid-target`)return B(o)&&B(o).left+B(o).width/2>window.innerWidth/2?{kind:`bottom-left`}:{kind:`bottom-right`};if(e===`below-target`&&B(o)){let e=B(o).bottom+16;if(e+220>window.innerHeight-16)return{kind:`bottom-right`};let t=B(o).left+B(o).width/2-320/2;return{kind:`absolute`,top:e,left:Math.max(16,Math.min(t,window.innerWidth-320-16))}}return{kind:`bottom-right`}}),l=P(()=>!B(n)||B(n).advance.kind!==`manual`?!1:B(n).canAdvance?B(n).canAdvance():!0);a(()=>{let e=B(i)?.element;e&&e.scrollIntoView({behavior:`smooth`,block:`center`})}),a(()=>{let e=B(n);if(!e?.focusSelector||!B(r))return;let t=e.focusSelector,i=!1,a=0,o=()=>{if(i||a++>60)return;let e=document.querySelector(t);if(e){e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.select();return}requestAnimationFrame(o)};return requestAnimationFrame(o),()=>{i=!0}}),a(()=>{if(!B(n)?.lockScroll)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}}),a(()=>{if(!B(n)?.target||q.stepIndex===0)return;let e=!1,t=null,r=!1,a=setInterval(()=>{r||(B(i)?.element==null?e&&!t&&(t=setTimeout(()=>q.previous(),500)):(e=!0,t&&=(clearTimeout(t),null)))},150);return()=>{r=!0,clearInterval(a),t&&clearTimeout(t)}}),a(()=>{let e=B(n);if(!e||e.advance.kind!==`click`)return;let t=e.advance.selector,r=e=>{let n=e.target;n instanceof Element&&n.closest(t)&&setTimeout(()=>q.next(),0)};return document.addEventListener(`click`,r,!0),()=>document.removeEventListener(`click`,r,!0)}),a(()=>{let e=B(n);if(!e?.prefill||e.prefill.length===0||!B(r))return;let t=[...e.prefill],i=0,a=!1,o=()=>{a||(t=Be(t),t.length>0&&(i=requestAnimationFrame(o)))};return o(),()=>{a=!0,i&&cancelAnimationFrame(i)}});let u=I(null);a(()=>{B(u)&&(B(n)&&!B(u).matches(`:popover-open`)&&B(u).showPopover(),!B(n)&&B(u).matches(`:popover-open`)&&B(u).hidePopover())}),a(()=>{if(!B(u))return;let e=Ve(B(u));return()=>e.dispose()});function d(){B(n)?.route&&V(B(n).route.pathname)}var p=c(),m=v(p),h=e=>{var t=Qe(),i=v(t),a=e=>{Ze(e,{get rect(){return B(o)}})};E(i,e=>{B(r)&&e(a)});var c=f(i,2);{let e=P(()=>q.stepIndex+1);Ke(c,{get step(){return B(n)},get stepNumber(){return B(e)},get totalSteps(){return q.totalSteps},get onCorrectRoute(){return B(r)},get placement(){return B(s)},get nextEnabled(){return B(l)},panelEl:e=>w(u,e,!0),onGoToRoute:d,onPrev:()=>q.previous(),onNext:()=>q.next(),onExit:()=>q.cancel()})}T(e,t)};E(m,e=>{B(n)&&e(h)}),T(e,p),S()}var et={id:`default`,label:`Default`,description:`The standard Unspaghettit look — teal/cyan brand on a soft canvas.`,swatch:`linear-gradient(135deg,#22d3ee,#06b6d4,#0e7490)`},tt={lyriks:{id:`lyriks`,label:`Lyriks`,description:`Lyriks.io brand skin — a violet→fuchsia gradient header over a cool canvas.`,swatch:`linear-gradient(90deg,#6d28d9,#a21caf,#db2777)`}},nt=[et,...Object.values(tt)],rt=e=>{let t=(e??``).trim().toLowerCase();return t in tt?t:`default`},it=`unspa.theme`,at=new class{#e=I(e(rt(le.PUBLIC_UNSPA_THEME)));get current(){return B(this.#e)}set current(e){w(this.#e,e,!0)}initialized=!1;init(){this.initialized||(this.initialized=!0,!(typeof document>`u`)&&(this.current=rt(document.documentElement.dataset.theme)))}setTheme(e){let t=rt(e);this.current=t,typeof document<`u`&&(document.documentElement.dataset.theme=t),!(typeof localStorage>`u`)&&(t===`default`?localStorage.removeItem(it):localStorage.setItem(it,t))}get isLyriks(){return this.current===`lyriks`}},ot=l(`<span class="hidden flex-col items-start leading-none sm:flex"><span>Lyriks.io</span> <span>Community Edition</span></span>`),st=l(`<span>Unspaghettit <span>by Lyriks.io</span></span>`),ct=l(`<a> </a>`),lt=l(`<div role="group" aria-label="View mode"></div>`),ut=l(`<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"> </button></div>`),dt=l(`<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>`),ft=l(`<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..." 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"/> <!></div></div>`),pt=d(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 shrink-0 text-brand-600" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg>`),mt=l(`<button type="button" role="menuitemradio"><span class="h-5 w-5 shrink-0 rounded-full ring-1 ring-slate-950/10" aria-hidden="true"></span> <span class="min-w-0 flex-1"><span class="block font-medium"> </span> <span class="block text-[11px] text-slate-500"> </span></span> <!></button>`),ht=l(`<div role="menu" class="absolute right-0 top-12 z-40 w-64 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><p class="px-3 pt-2 pb-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400">Theme</p> <!></div>`),gt=l(`<div role="menu" class="absolute right-0 top-12 z-40 w-60 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><a href="/mcp" role="menuitem"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-slate-400" aria-hidden="true"><path d="M12 3v18"></path><path d="M3 12h18"></path><path d="M5 5l14 14"></path><path d="M19 5L5 19"></path></svg> <span class="min-w-0 flex-1"><span class="block font-medium">MCP</span> <span class="block text-[11px] text-slate-500">Tools, setup, and integration help.</span></span></a> <div class="my-1 h-px bg-slate-100"></div> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-rose-700 hover:bg-rose-50 hover:text-rose-800"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-rose-500" aria-hidden="true"><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg> <span class="min-w-0 flex-1"><span class="block font-semibold">Reset local data</span> <span class="block text-[11px] text-rose-600/80">Wipes display name + browser settings. Projects on disk are
2
+ kept.</span></span></button></div>`),_t=l(`<span aria-hidden="true"> </span>`),vt=d(`<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>`),yt=l(`<p class="px-3 pt-2 pb-1 text-[10px] font-semibold uppercase tracking-wide text-slate-400">Signed in as</p> <p class="truncate px-3 pb-2 text-sm font-medium text-slate-800"> </p> <div class="my-1 h-px bg-slate-100"></div>`,1),bt=l(`<div role="menu" class="absolute right-0 top-12 z-40 w-60 overflow-hidden rounded-lg border border-slate-200 bg-white p-1 shadow-lg shadow-slate-950/10"><!> <button type="button" role="menuitem" class="flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm text-slate-700 hover:bg-slate-50"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="mt-0.5 h-4 w-4 shrink-0 text-slate-400" aria-hidden="true"><path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 1 1 3 3L7 19l-4 1 1-4 12.5-12.5z"></path></svg> <span class="min-w-0 flex-1"><span class="block font-medium"> </span> <span class="block text-[11px] text-slate-500">Shown on every history entry you create.</span></span></button></div>`),xt=l(`<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>`),St=l(`<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..." 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"/> <!></div></div>`),Ct=l(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!"><!></div>`),wt=l(`<div><header><div><div class="flex min-w-0 items-center gap-3"><a href="/" class="flex shrink-0 items-center gap-2.5"><img/> <!></a> <!> <!></div> <!> <div class="flex shrink-0 items-center gap-1.5"><div class="relative"><button type="button" aria-haspopup="menu" aria-label="Switch dashboard theme" title="Switch theme"><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="13.5" cy="6.5" r="2.5"></circle><circle cx="17.5" cy="10.5" r="2.5"></circle><circle cx="8.5" cy="7.5" r="2.5"></circle><path d="M12 21a9 9 0 1 1 0-18c4.97 0 9 3.58 9 8 0 2.5-2 3.5-3.5 3.5H15a2 2 0 0 0-1.4 3.42A1.5 1.5 0 0 1 12 21z"></path></svg></button> <!></div> <div class="relative"><button type="button" aria-haspopup="menu" aria-label="Open app menu" title="App menu"><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> <!></div> <a href="/tutorial" aria-label="Help &amp; tutorial" title="Help &amp; tutorial"><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"><!> <span aria-hidden="true"></span></button> <!></div></div></div> <!></header> <main class="flex-1"><!></main></div> <!> <!> <!> <!>`,1);function Tt(e,r){O(r,!0),N(async()=>{J.init(),at.init(),ie.init(),!J.name&&!J.hasBeenAsked&&(J.markAsked(),queueMicrotask(()=>{a()}));try{await de.reconcileOrphanFeatures()}catch(e){console.warn(`Orphan reconciliation failed:`,e)}});async function a(){let e=await oe({title:`Your display name`,message:`Shown on every history entry you create. Stored locally in this browser — never sent off-machine. Leave empty to stay anonymous.`,inputLabel:`Display name`,defaultValue:J.name,placeholder:`e.g. John`,confirmLabel:`Save`,tone:`info`});e!==null&&J.setName(e)}let o=P(()=>J.name.trim().charAt(0).toUpperCase()),c=I(!1),l=I(null),d=I(!1),b=I(null),x=I(!1),C=I(null);function ee(e){let t=e.target;B(c)&&B(l)&&!B(l).contains(t)&&w(c,!1),B(d)&&B(b)&&!B(b).contains(t)&&w(d,!1),B(x)&&B(C)&&!B(C).contains(t)&&w(x,!1)}async function A(){w(c,!1),await a()}async function V(){w(d,!1),await te()}async function te(){if(await ae({title:`Reset local browser data?`,message:`Clears your display name, the dashboard's local preferences, and any cached per-tab state in this browser. Your projects, features, history, and queue stay on disk untouched. The page will reload to apply a fresh state.`,confirmLabel:`Reset everything`,cancelLabel:`Cancel`,tone:`danger`})){try{localStorage.clear()}catch{}try{sessionStorage.clear()}catch{}location.reload()}}let U=P(ue),W=P(()=>B(U).length>1&&!at.isLyriks),G=P(()=>se(`builder`)&&H.url.pathname.startsWith(`/builder-mode`)),ce=P(()=>H.url.pathname.startsWith(`/mcp`)),le=P(()=>H.url.pathname.startsWith(`/features/`)),q=P(()=>at.isLyriks),fe=nt,Y=P(()=>B(G)||B(q)),pe=P(()=>B(G)?K.selectedProject:null),X=P(()=>K.search),me=P(()=>H.url.pathname);var he=wt();p(`mousedown`,_,ee),p(`keydown`,_,e=>{e.key===`Escape`&&(w(c,!1),w(d,!1),w(x,!1))});var Z=v(he),ge=g(Z),_e=g(ge),ve=g(_e),ye=g(ve),be=g(ye),xe=f(be,2),Se=e=>{var t=ot(),n=g(t),r=f(n,2);k(t),h(()=>{R(n,1,`font-brand text-2xl font-bold tracking-tight ${B(Y)?`text-white`:`text-slate-950`}`),R(r,1,`mt-1 pl-px text-[9px] font-semibold uppercase tracking-[0.18em] ${B(Y)?`text-white/75`:`text-slate-500`}`)}),T(e,t)},we=e=>{var t=st(),n=f(g(t));k(t),h(()=>{R(t,1,`relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block ${B(Y)?`text-white`:`text-slate-950`}`),R(n,1,`font-grotesk absolute right-0 -bottom-2 text-[10px] font-medium tracking-wide ${B(Y)?`text-white/70`:`text-slate-500`}`)}),T(e,t)};E(xe,e=>{B(q)?e(Se):e(we,-1)}),k(ye);var Ee=f(ye,2),De=e=>{var n=lt();i(n,21,()=>B(U),e=>e.id,(e,n)=>{let r=P(()=>B(n).matches(H.url.pathname));var i=ct(),a=g(i,!0);k(i),h(()=>{L(i,`href`,B(n).href),R(i,1,`rounded-full px-2.5 py-0.5 transition ${B(r)?B(Y)?`bg-slate-700 text-white shadow-sm shadow-black/20`:`bg-white text-slate-900 shadow-sm shadow-slate-950/10`:B(Y)?`text-slate-400 hover:text-slate-200`:`text-slate-500 hover:text-slate-800`}`),L(i,`aria-current`,B(r)?`page`:void 0),t(a,B(n).label)}),T(e,i)}),k(n),h(()=>R(n,1,`flex shrink-0 items-center rounded-full border p-0.5 text-[11px] font-medium ${B(Y)?`border-slate-700/70 bg-slate-800/60`:`border-slate-200 bg-slate-100`}`)),T(e,n)};E(Ee,e=>{B(W)&&e(De)});var Oe=f(Ee,2),ke=e=>{var n=ut(),r=f(g(n),2),i=g(r,!0);k(r),k(n),h(()=>t(i,B(pe).name)),s(`click`,r,()=>K.deselectProject()),T(e,n)};E(Oe,e=>{B(pe)&&e(ke)}),k(ve);var Q=f(ve,2),Ae=e=>{var t=ft(),n=f(g(t),2),r=f(g(n),2);D(r);var i=f(r,2),a=e=>{var t=dt();s(`click`,t,()=>K.clearSearch()),T(e,t)},o=P(()=>B(X).trim().length>0);E(i,e=>{B(o)&&e(a)}),k(n),k(t),h(()=>j(r,B(X))),s(`input`,r,e=>K.setSearch(e.target.value)),T(e,t)};E(Q,e=>{B(G)&&e(Ae)});var je=f(Q,2),Me=g(je),Ne=g(Me),Pe=f(Ne,2),Fe=e=>{var n=ht();i(f(g(n),2),17,()=>fe,e=>e.id,(e,n)=>{let r=P(()=>at.current===B(n).id);var i=mt(),a=g(i),o=f(a,2),c=g(o),l=g(c,!0);k(c);var u=f(c,2),d=g(u,!0);k(u),k(o);var p=f(o,2),m=e=>{T(e,pt())};E(p,e=>{B(r)&&e(m)}),k(i),h(()=>{L(i,`aria-checked`,B(r)),R(i,1,`flex w-full items-center gap-3 rounded-md px-3 py-2 text-left text-sm ${B(r)?`bg-slate-100 text-slate-950`:`text-slate-700 hover:bg-slate-50`}`),y(a,`background: ${B(n).swatch??``}`),t(l,B(n).label),t(d,B(n).description)}),s(`click`,i,()=>{at.setTheme(B(n).id),w(x,!1)}),T(e,i)}),k(n),T(e,n)};E(Pe,e=>{B(x)&&e(Fe)}),k(Me),F(Me,e=>w(C,e),()=>B(C));var Ie=f(Me,2),Re=g(Ie),ze=f(Re,2),Be=e=>{var t=gt(),n=g(t),r=f(n,4);k(t),h(()=>R(n,1,`flex w-full items-start gap-3 rounded-md px-3 py-2 text-left text-sm ${B(ce)?`bg-slate-100 text-slate-950`:`text-slate-700 hover:bg-slate-50`}`)),s(`click`,n,()=>w(d,!1)),s(`click`,r,V),T(e,t)};E(ze,e=>{B(d)&&e(Be)}),k(Ie),F(Ie,e=>w(b,e),()=>B(b));var Ve=f(Ie,2),He=f(Ve,2),$=g(He),Ue=g($),We=e=>{var n=_t(),r=g(n,!0);k(n),h(()=>t(r,B(o))),T(e,n)},Ge=e=>{T(e,vt())};E(Ue,e=>{J.name?e(We):e(Ge,-1)});var Ke=f(Ue,2);k($);var qe=f($,2),Je=e=>{var n=bt(),r=g(n),i=e=>{var n=yt(),r=f(v(n),2),i=g(r,!0);k(r),M(2),h(()=>t(i,J.name)),T(e,n)};E(r,e=>{J.name&&e(i)});var a=f(r,2),o=f(g(a),2),c=g(o),l=g(c,!0);k(c),M(2),k(o),k(a),k(n),h(()=>t(l,J.name?`Change display name`:`Set display name`)),s(`click`,a,A),T(e,n)};E(qe,e=>{B(c)&&e(Je)}),k(He),F(He,e=>w(l,e),()=>B(l)),k(je),k(_e);var Ye=f(_e,2),Xe=e=>{var t=St(),n=f(g(t),2),r=f(g(n),2);D(r);var i=f(r,2),a=e=>{var t=xt();s(`click`,t,()=>K.clearSearch()),T(e,t)},o=P(()=>B(X).trim().length>0);E(i,e=>{B(o)&&e(a)}),k(n),k(t),h(()=>j(r,B(X))),s(`input`,r,e=>K.setSearch(e.target.value)),T(e,t)};E(Ye,e=>{B(G)&&e(Xe)}),k(ge);var Ze=f(ge,2);u(g(Ze),()=>B(me),e=>{var t=Ct();m(g(t),()=>r.children),k(t),n(1,t,()=>ne,()=>({duration:160,easing:re})),T(e,t)}),k(Ze),k(Z);var Qe=f(Z,2);Ce(Qe,{});var et=f(Qe,2);Te(et,{});var tt=f(et,2);Le(tt,{}),$e(f(tt,2),{}),h(()=>{R(Z,1,`flex min-h-full flex-col text-ink ${B(q)?`bg-[linear-gradient(180deg,#e6ddfa_0%,#eeeafb_220px,#eeeafb_100%)]`:`bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)]`}`),R(ge,1,`sticky top-0 z-30 border-b backdrop-blur transition-colors ${B(q)?`border-transparent bg-[linear-gradient(90deg,#6d28d9_0%,#a21caf_55%,#db2777_100%)]`:B(Y)?`border-slate-800 bg-slate-950/90`:`border-slate-200 bg-white/95`}`),R(_e,1,`mx-auto flex h-16 items-center justify-between px-4 sm:px-6 ${B(le)?`max-w-400`:`max-w-7xl`}`),L(be,`src`,B(q)?`/lyriks_logo.svg`:`/unspaghettit_logo.png`),L(be,`alt`,B(q)?`Lyriks`:`Unspaghettit`),R(be,1,z(B(q)?`h-9 w-9 shrink-0`:`h-12 w-auto`)),L(Ne,`aria-expanded`,B(x)),R(Ne,1,`grid h-9 w-9 place-items-center rounded-md transition ${B(x)?B(q)?`bg-white/30 text-white`:B(Y)?`bg-slate-800 text-white`:`bg-slate-900 text-white`:B(q)?`bg-white/15 text-white hover:bg-white/25`:B(Y)?`text-slate-300 hover:bg-white/10 hover:text-white`:`text-slate-600 hover:bg-slate-100 hover:text-slate-950`}`),L(Re,`aria-expanded`,B(d)),R(Re,1,`grid h-9 w-9 place-items-center rounded-md transition ${B(d)||B(ce)?B(q)?`bg-white/30 text-white`:B(Y)?`bg-slate-800 text-white`:`bg-slate-900 text-white`:B(q)?`bg-white/15 text-white hover:bg-white/25`:B(Y)?`text-slate-400 hover:bg-slate-800 hover:text-white`:`text-slate-600 hover:bg-slate-100 hover:text-slate-950`}`),R(Ve,1,`grid h-9 w-9 place-items-center rounded-md transition ${B(q)?`bg-white/15 text-white hover:bg-white/25`:B(Y)?`text-slate-400 hover:bg-slate-800 hover:text-white`:`text-slate-600 hover:bg-slate-100 hover:text-slate-950`}`),L($,`aria-expanded`,B(c)),L($,`aria-label`,J.name?`Signed in as ${J.name}. Open identity menu.`:`Set your display name`),L($,`title`,J.name?`Signed in as ${J.name}`:`Set a display name so your edits are recognisable in history`),R($,1,`group relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-sm font-semibold shadow-sm shadow-slate-950/5 ring-1 ring-transparent transition focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-300
3
+ ${J.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`}`),R(Ke,1,`absolute -right-0.5 -bottom-0.5 inline-flex h-3 w-3 items-center justify-center rounded-full ring-2 ring-white
4
+ ${J.name?`bg-emerald-500`:`bg-amber-400`}`)}),s(`click`,Ne,()=>{w(x,!B(x)),w(d,!1),w(c,!1)}),s(`click`,Re,()=>{w(d,!B(d)),w(c,!1)}),s(`click`,$,()=>{w(c,!B(c)),w(d,!1)}),T(e,he),S()}o([`click`,`input`]);export{Tt as component,fe as universal};
@@ -1 +1 @@
1
- import{A as e,N as t,Q as n,W as r,X as i,Z as a,ct as o,j as s,lt as c,mt as l}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/iQu0D9Ux.js";var d=t(`<h1> </h1> <p> </p>`,1);function f(t,f){c(f,!0);var p=d(),m=a(p),h=i(m,!0);l(m);var g=n(m,2),_=i(g,!0);l(g),r(()=>{e(h,u.status),e(_,u.error?.message)}),s(t,p),o()}export{f as component};
1
+ import{A as e,N as t,Q as n,W as r,X as i,Z as a,ct as o,j as s,lt as c,mt as l}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{t as u}from"../chunks/B439_FLv.js";var d=t(`<h1> </h1> <p> </p>`,1);function f(t,f){c(f,!0);var p=d(),m=a(p),h=i(m,!0);l(m);var g=n(m,2),_=i(g,!0);l(g),r(()=>{e(h,u.status),e(_,u.error?.message)}),s(t,p),o()}export{f as component};
@@ -0,0 +1,2 @@
1
+ w`�4u�2��Q{�C7�&��|��Q�6�ۣ8�eee7{x!?dMnj>��oT�޵%J A'�qC[��)�B8c'�84s�8�{��M&�|�N��9V9xc��Ѵ���f۲���4$�_�}u��{ǩ�ýO�
2
+ M~�2`v�%4�L`e���+��;� ���p .�q N����t��:8XOt��1V�~]3nD }���2A�1R2�`��&P��ϸ���8�����*ڴ��
@@ -0,0 +1,2 @@
1
+ import{A as e,J as t,M as n,N as r,Q as i,U as a,W as o,X as s,Z as c,at as l,ct as u,et as d,it as f,j as p,k as m,lt as h,mt as g,n as _,r as v,tt as y,x as b,z as x}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import{H as S,a as C}from"../chunks/Bp2_Vghh.js";import{t as w}from"../chunks/BOrLmFwJ.js";import{t as T}from"../chunks/DkxwAIfJ2.js";import{t as E}from"../chunks/U9p9CtKG2.js";import{n as D,t as O}from"../chunks/CY3em1ma2.js";var k=r(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading project...</p>`),A=r(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </p>`),j=r(`<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>`),M=r(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-neutral-500">Loading project features...</p>`),N=r(`<p class="mx-auto max-w-7xl px-4 py-10 text-sm text-red-600"> </p>`),P=r(`<div class="mx-auto max-w-7xl px-4 py-10"><p class="text-sm font-medium text-slate-900">No feature snapshots loaded for this project.</p> <p class="mt-2 text-sm text-slate-600"> </p></div>`),F=r(`<main class="mx-auto max-w-[1800px] px-4 py-6"><!></main>`);function I(r,I){h(I,!0);let L=()=>l(T,`$page`,R),[R,z]=f(),B=null,V=y(!1);v(async()=>{let e=L().params.id;if(!e)return;d(V,!1);let t=C(e);await D.load(t),await O.loadAllSummaries(),D.project&&await O.load(D.project.featureIds),d(V,!0),B=w(async e=>{D.project&&(e.kind===`project`&&e.id===String(t)?(d(V,!1),await O.syncWith(D.project.featureIds),d(V,!0)):e.kind===`feature`&&(D.project.featureIds.some(t=>String(t)===e.id)?await O.refetchOne(S(e.id)):await O.loadAllSummaries()))})}),_(()=>{B?.(),B=null,d(V,!1),D.reset(),O.reset()});var H=n();b(`106h624`,e=>{a(()=>{t.title=`Project Graph / Unspaghettit`})});var U=c(H),W=e=>{p(e,k())},G=t=>{var n=A(),r=s(n,!0);g(n),o(()=>e(r,D.error)),p(t,n)},K=e=>{p(e,j())},q=e=>{p(e,M())},J=t=>{var n=N(),r=s(n,!0);g(n),o(()=>e(r,O.error)),p(t,n)},Y=t=>{var n=P(),r=i(s(n),2),a=s(r);g(r),g(n),o(()=>e(a,`The project lists ${D.project.featureIds.length??``} feature${D.project.featureIds.length===1?``:`s`},
2
+ but the graph could not load their behavior models from the shared hub.`)),p(t,n)},X=e=>{var t=F();E(s(t),{get project(){return D.project},get features(){return O.features}}),g(t),p(e,t)};m(U,e=>{D.loading?e(W):D.error?e(G,1):D.project?O.loading||!x(V)?e(q,3):O.error?e(J,4):D.project.featureIds.length>0&&O.features.length===0?e(Y,5):e(X,-1):e(K,2)}),p(r,H),u(),z()}export{I as component};
@@ -1,4 +1,4 @@
1
- import{A as e,D as t,E as n,F as r,I as i,L as a,N as o,Q as s,T as c,W as l,X as u,Z as d,a as f,ct as p,et as m,j as h,k as g,lt as ee,mt as _,pt as v,rt as y,tt as te,u as b,v as x,z as S}from"../chunks/BPl9BITm.js";import{t as C}from"../chunks/DatGSObE.js";import"../chunks/xihTtKlq.js";import{ht as ne,j as w,pt as T}from"../chunks/Bp2_Vghh.js";import"../chunks/DHoA038D.js";import{t as re}from"../chunks/cMamJTsF.js";import{t as ie}from"../chunks/DKgYpi6_.js";import{t as E}from"../chunks/BzLd0mTH.js";import{t as D}from"../chunks/BQ9GodWX2.js";import{t as O}from"../chunks/hpWJNn0t2.js";var k=o(`<section class="scroll-mt-24 space-y-3 border-b border-hairline pb-8 last:border-b-0"><h2 class="text-xl font-semibold tracking-tight"><a class="text-slate-950 hover:text-brand-700"> </a></h2> <div class="space-y-3 text-sm leading-7 text-slate-700"><!></div></section>`);function A(t,n){var r=k(),i=u(r),a=u(i),o=u(a,!0);_(a),_(i);var d=s(i,2);c(u(d),()=>n.children),_(d),_(r),l(()=>{b(r,`id`,n.id),b(a,`href`,`#${n.id}`),e(o,n.title)}),h(t,r)}var j=o(`<pre class="mono overflow-x-auto rounded-lg border border-slate-800 bg-slate-950 p-4 text-[12px] leading-relaxed text-slate-100"><code> </code></pre>`);function M(t,n){let r=f(n,`language`,3,`text`);var i=j(),a=u(i),o=u(a,!0);_(a),_(i),l(()=>{b(i,`data-lang`,r()),e(o,n.code)}),h(t,i)}var N=o(`<p class="mb-1 font-semibold"> </p>`),P=o(`<div><!> <div class="leading-6"><!></div></div>`);function F(t,n){let r=f(n,`tone`,3,`info`),i=y(()=>r()===`warning`?`bg-amber-50 border-amber-200 text-amber-900`:r()===`success`?`bg-emerald-50 border-emerald-200 text-emerald-900`:`bg-brand-50 border-brand-200 text-brand-900`);var a=P(),o=u(a),d=t=>{var r=N(),i=u(r,!0);_(r),l(()=>e(i,n.title)),h(t,r)};g(o,e=>{n.title&&e(d)});var p=s(o,2);c(u(p),()=>n.children),_(p),_(a),l(()=>x(a,1,`rounded-md border p-3 text-sm ${S(i)??``}`)),h(t,a)}var I=e=>t=>typeof t?.name==`string`&&E(t.name,e),L=()=>{let e=O.feature;if(!e)return null;for(let t=e.surfaces.length-1;t>=0;t--){let n=e.surfaces[t];if(n&&n.actions.length!==0)return n.actions[n.actions.length-1]??null}return null},R=()=>{let e=L();return e?e.parameters.some(e=>E(e.name,`politely`)&&e.type===`boolean`):!1},z=()=>{let e=L();return e?e.rules.filter(e=>!e.condition||`kind`in e.condition?!1:w(e.condition.left)&&e.effect.type===`show_message`).length:0},ae={id:`first-feature`,name:`Build your first feature, end to end`,summary:`Walks you from an empty app to a Feature with one Action you run in the simulator. About 3 minutes. Uses fixed names so the experience is the same for everyone.`,steps:[{id:`welcome`,title:`Welcome`,body:`We'll build a tiny Feature together and run it in the simulator. We'll use fixed names so the rest of the tutorial reads the same way for you as for anyone else. Click Next when you're ready.`,advance:{kind:`manual`}},{id:`new-project`,title:`Create a project`,body:`Click 'New project'. A Project groups Features that belong to the same product or codebase.`,target:`[data-tour="new-project-button"]`,route:{pathname:`/projects`,label:`Go to Projects`},advance:{kind:`click`,selector:`[data-tour="new-project-button"]`}},{id:`fill-project`,title:`Name the project`,body:`Type exactly 'Hello World' in the Name field, then click 'New project'. The description is pre-filled - keep it as-is or tweak if you want.`,target:`[data-tour="new-project-form"]`,focusSelector:`[data-tour="new-project-form"] input[type="text"]`,prefill:[{selector:`[data-tour="new-project-description"]`,value:`A first project to learn Unspaghettit.`}],requireExact:{formId:`new-project`,value:`Hello World`},advance:{kind:`event`,event:`project.created`,match:I(`Hello World`)}},{id:`new-feature`,title:`Create a feature`,body:`Inside your project, click 'New feature'. A Feature is one coherent slice of behavior. Keep it small.`,target:`[data-tour="new-feature-button"]`,advance:{kind:`click`,selector:`[data-tour="new-feature-button"]`}},{id:`fill-feature`,title:`Name the feature`,body:`Type 'Greeting' in the Name field, then click 'Create feature'. The description is pre-filled.`,target:`[data-tour="new-feature-form"]`,focusSelector:`[data-tour="new-feature-form"] input[type="text"]`,prefill:[{selector:`[data-tour="new-feature-description"]`,value:`User opens the app and is welcomed.`}],requireExact:{formId:`new-feature`,value:`Greeting`},advance:{kind:`event`,event:`feature.created`,match:I(`Greeting`)}},{id:`add-surface`,title:`Add a surface`,body:`Click 'Add surface'. A Surface is one context where actions happen (a screen, a terminal, a workflow).`,target:`[data-tour="add-surface-button"]`,advance:{kind:`click`,selector:`[data-tour="add-surface-button"]`}},{id:`chooser-create-new`,title:`Pick "Create new"`,body:`We're starting from scratch, so click the 'Create new' card.`,target:`[data-tour="chooser-create-new"]`,advance:{kind:`click`,selector:`[data-tour="chooser-create-new"]`}},{id:`fill-surface`,title:`Name the surface`,body:`Surface name: type exactly 'Welcome Screen'. Keep the type on Screen. Click 'Create surface' to submit.`,target:`[data-tour="blank-surface-form"]`,focusSelector:`[data-tour="blank-surface-form"] input[type="text"]`,requireExact:{formId:`blank-surface`,value:`Welcome Screen`},advance:{kind:`event`,event:`editor.surface.added`,match:I(`Welcome Screen`)}},{id:`add-action`,title:`Add an action`,body:`Type exactly 'Say Hello' in the action form, then click 'Add action' (or press Enter). An Action is something the user or system can do on this surface.`,target:`[data-tour="add-action-form"]`,focusSelector:`[data-tour="add-action-form"] input[type="text"]`,requireExact:{formId:`add-action`,value:`Say Hello`},advance:{kind:`event`,event:`editor.action.added`,match:I(`Say Hello`)}},{id:`add-parameter`,title:`Give the action a parameter`,body:`The Say Hello editor just opened. In the Parameters section, click '+ Parameter'. The name field will focus automatically. Then:
1
+ import{A as e,D as t,E as n,F as r,I as i,L as a,N as o,Q as s,T as c,W as l,X as u,Z as d,a as f,ct as p,et as m,j as h,k as g,lt as ee,mt as _,pt as v,rt as y,tt as te,u as b,v as x,z as S}from"../chunks/BPl9BITm.js";import{n as C}from"../chunks/OJscNS3T.js";import"../chunks/xihTtKlq.js";import{ht as ne,j as w,pt as T}from"../chunks/Bp2_Vghh.js";import"../chunks/BCEY79Dw.js";import{t as re}from"../chunks/cMamJTsF.js";import{t as ie}from"../chunks/DKgYpi6_.js";import{t as E}from"../chunks/BzLd0mTH.js";import{t as D}from"../chunks/BQ9GodWX2.js";import{t as O}from"../chunks/hpWJNn0t2.js";var k=o(`<section class="scroll-mt-24 space-y-3 border-b border-hairline pb-8 last:border-b-0"><h2 class="text-xl font-semibold tracking-tight"><a class="text-slate-950 hover:text-brand-700"> </a></h2> <div class="space-y-3 text-sm leading-7 text-slate-700"><!></div></section>`);function A(t,n){var r=k(),i=u(r),a=u(i),o=u(a,!0);_(a),_(i);var d=s(i,2);c(u(d),()=>n.children),_(d),_(r),l(()=>{b(r,`id`,n.id),b(a,`href`,`#${n.id}`),e(o,n.title)}),h(t,r)}var j=o(`<pre class="mono overflow-x-auto rounded-lg border border-slate-800 bg-slate-950 p-4 text-[12px] leading-relaxed text-slate-100"><code> </code></pre>`);function M(t,n){let r=f(n,`language`,3,`text`);var i=j(),a=u(i),o=u(a,!0);_(a),_(i),l(()=>{b(i,`data-lang`,r()),e(o,n.code)}),h(t,i)}var N=o(`<p class="mb-1 font-semibold"> </p>`),P=o(`<div><!> <div class="leading-6"><!></div></div>`);function F(t,n){let r=f(n,`tone`,3,`info`),i=y(()=>r()===`warning`?`bg-amber-50 border-amber-200 text-amber-900`:r()===`success`?`bg-emerald-50 border-emerald-200 text-emerald-900`:`bg-brand-50 border-brand-200 text-brand-900`);var a=P(),o=u(a),d=t=>{var r=N(),i=u(r,!0);_(r),l(()=>e(i,n.title)),h(t,r)};g(o,e=>{n.title&&e(d)});var p=s(o,2);c(u(p),()=>n.children),_(p),_(a),l(()=>x(a,1,`rounded-md border p-3 text-sm ${S(i)??``}`)),h(t,a)}var I=e=>t=>typeof t?.name==`string`&&E(t.name,e),L=()=>{let e=O.feature;if(!e)return null;for(let t=e.surfaces.length-1;t>=0;t--){let n=e.surfaces[t];if(n&&n.actions.length!==0)return n.actions[n.actions.length-1]??null}return null},R=()=>{let e=L();return e?e.parameters.some(e=>E(e.name,`politely`)&&e.type===`boolean`):!1},z=()=>{let e=L();return e?e.rules.filter(e=>!e.condition||`kind`in e.condition?!1:w(e.condition.left)&&e.effect.type===`show_message`).length:0},ae={id:`first-feature`,name:`Build your first feature, end to end`,summary:`Walks you from an empty app to a Feature with one Action you run in the simulator. About 3 minutes. Uses fixed names so the experience is the same for everyone.`,steps:[{id:`welcome`,title:`Welcome`,body:`We'll build a tiny Feature together and run it in the simulator. We'll use fixed names so the rest of the tutorial reads the same way for you as for anyone else. Click Next when you're ready.`,advance:{kind:`manual`}},{id:`new-project`,title:`Create a project`,body:`Click 'New project'. A Project groups Features that belong to the same product or codebase.`,target:`[data-tour="new-project-button"]`,route:{pathname:`/projects`,label:`Go to Projects`},advance:{kind:`click`,selector:`[data-tour="new-project-button"]`}},{id:`fill-project`,title:`Name the project`,body:`Type exactly 'Hello World' in the Name field, then click 'New project'. The description is pre-filled - keep it as-is or tweak if you want.`,target:`[data-tour="new-project-form"]`,focusSelector:`[data-tour="new-project-form"] input[type="text"]`,prefill:[{selector:`[data-tour="new-project-description"]`,value:`A first project to learn Unspaghettit.`}],requireExact:{formId:`new-project`,value:`Hello World`},advance:{kind:`event`,event:`project.created`,match:I(`Hello World`)}},{id:`new-feature`,title:`Create a feature`,body:`Inside your project, click 'New feature'. A Feature is one coherent slice of behavior. Keep it small.`,target:`[data-tour="new-feature-button"]`,advance:{kind:`click`,selector:`[data-tour="new-feature-button"]`}},{id:`fill-feature`,title:`Name the feature`,body:`Type 'Greeting' in the Name field, then click 'Create feature'. The description is pre-filled.`,target:`[data-tour="new-feature-form"]`,focusSelector:`[data-tour="new-feature-form"] input[type="text"]`,prefill:[{selector:`[data-tour="new-feature-description"]`,value:`User opens the app and is welcomed.`}],requireExact:{formId:`new-feature`,value:`Greeting`},advance:{kind:`event`,event:`feature.created`,match:I(`Greeting`)}},{id:`add-surface`,title:`Add a surface`,body:`Click 'Add surface'. A Surface is one context where actions happen (a screen, a terminal, a workflow).`,target:`[data-tour="add-surface-button"]`,advance:{kind:`click`,selector:`[data-tour="add-surface-button"]`}},{id:`chooser-create-new`,title:`Pick "Create new"`,body:`We're starting from scratch, so click the 'Create new' card.`,target:`[data-tour="chooser-create-new"]`,advance:{kind:`click`,selector:`[data-tour="chooser-create-new"]`}},{id:`fill-surface`,title:`Name the surface`,body:`Surface name: type exactly 'Welcome Screen'. Keep the type on Screen. Click 'Create surface' to submit.`,target:`[data-tour="blank-surface-form"]`,focusSelector:`[data-tour="blank-surface-form"] input[type="text"]`,requireExact:{formId:`blank-surface`,value:`Welcome Screen`},advance:{kind:`event`,event:`editor.surface.added`,match:I(`Welcome Screen`)}},{id:`add-action`,title:`Add an action`,body:`Type exactly 'Say Hello' in the action form, then click 'Add action' (or press Enter). An Action is something the user or system can do on this surface.`,target:`[data-tour="add-action-form"]`,focusSelector:`[data-tour="add-action-form"] input[type="text"]`,requireExact:{formId:`add-action`,value:`Say Hello`},advance:{kind:`event`,event:`editor.action.added`,match:I(`Say Hello`)}},{id:`add-parameter`,title:`Give the action a parameter`,body:`The Say Hello editor just opened. In the Parameters section, click '+ Parameter'. The name field will focus automatically. Then:
2
2
  1. type 'politely' for the Name
3
3
  2. change Type to 'boolean'
4
4
  Next unlocks once a 'politely' boolean parameter exists on Say Hello.`,target:`[data-tour="action-parameters-section"]`,advance:{kind:`manual`},canAdvance:R},{id:`add-rule-not-polite`,title:`Rule 1: the casual hello`,body:`We want the action to say 'Hi.' only when politely is NO. Add the first rule:
@@ -1 +1 @@
1
- import{J as e,U as t,x as n}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import"../chunks/suTxxv1t.js";import{t as r}from"../chunks/DBJWcC6Y.js";function i(i){n(`1uha8ag`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};
1
+ import{J as e,U as t,x as n}from"../chunks/BPl9BITm.js";import"../chunks/xihTtKlq.js";import"../chunks/suTxxv1t.js";import{t as r}from"../chunks/BYIrIC5L.js";function i(i){n(`1uha8ag`,n=>{t(()=>{e.title=`Projects / Unspaghettit`})}),r(i,{})}export{i as component};