@protoyard/player 1.1.1 → 1.1.3

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 (329) hide show
  1. package/dist/app/.vite/manifest.json +1326 -1326
  2. package/dist/app/assets/AgendaView-C6w6ZT_K.js +1 -0
  3. package/dist/app/assets/AgendaView-DotykHlk.css +1 -0
  4. package/dist/app/assets/AlertDialog-BQiaFNpC.css +1 -0
  5. package/dist/app/assets/AlertDialog-D4xfnP_j.js +1 -0
  6. package/dist/app/assets/{AlertDialog-Dz9nkXWl.js → AlertDialog-xNScr9YX.js} +1 -1
  7. package/dist/app/assets/{AnalyticsDashboard-Dl7vfTc-.css → AnalyticsDashboard-CkvB_440.css} +1 -1
  8. package/dist/app/assets/{AnalyticsDashboard-B2ehbJfC.js → AnalyticsDashboard-DQiN6UG3.js} +1 -1
  9. package/dist/app/assets/{AppNav-Cqh-81ZK.js → AppNav-BRXGQQEK.js} +2 -2
  10. package/dist/app/assets/{AppNavDrawer-CraL8gep.js → AppNavDrawer-BxET9CtN.js} +1 -1
  11. package/dist/app/assets/{BigStat-5Dlwgi6p.js → BigStat-BZEw5hyF.js} +1 -1
  12. package/dist/app/assets/{BigStat-Bk9Diq8w.css → BigStat-Bu91TAuT.css} +1 -1
  13. package/dist/app/assets/{BlockHost-BVn3KygM.js → BlockHost-CkwGMWqD.js} +2 -2
  14. package/dist/app/assets/{BlockRenderer-D8RTz2Ra.js → BlockRenderer-DHrhpEMA.js} +1 -1
  15. package/dist/app/assets/{BlockRenderer-DJQc-O2d.js → BlockRenderer-UJ9Aycts.js} +1 -1
  16. package/dist/app/assets/CalendarMoveMenu-CsFHWtCe.js +1 -0
  17. package/dist/app/assets/CalendarMoveMenu-DGkN8dDW.css +1 -0
  18. package/dist/app/assets/{ChartAnswer-zNYESHaD.js → ChartAnswer-rS2i2Iv4.js} +2 -2
  19. package/dist/app/assets/{ChartSlide-C_HN8BJy.js → ChartSlide-BU0_G-fD.js} +1 -1
  20. package/dist/app/assets/ChartSlide-ccLOJ4wd.css +1 -0
  21. package/dist/app/assets/{ChromeIcon-CE_UXRfl.js → ChromeIcon-BHq_oSFf.js} +1 -1
  22. package/dist/app/assets/ChromeIcon-BWKp5BN6.css +1 -0
  23. package/dist/app/assets/ChromeTooltip-1Z2z_xM5.js +1 -0
  24. package/dist/app/assets/ChromeTooltip-T5ANYUt-.css +1 -0
  25. package/dist/app/assets/{Close-COceBUJV.js → Close-DIlHWGHY.js} +1 -1
  26. package/dist/app/assets/ClosingCta-BxQx9e4a.js +1 -0
  27. package/dist/app/assets/ClosingCta-vauQa3ck.css +1 -0
  28. package/dist/app/assets/CodeWithCallout-BFmmvAst.css +1 -0
  29. package/dist/app/assets/CodeWithCallout-CX1CAPIv.js +1 -0
  30. package/dist/app/assets/ComparisonTable-BGIwxPgn.js +1 -0
  31. package/dist/app/assets/ComparisonTable-BGeG3hQ8.css +1 -0
  32. package/dist/app/assets/{Content-B9dQiA5c.js → Content-3R1Ku555.js} +1 -1
  33. package/dist/app/assets/DataBlockView-PHnbGrKN.js +2 -0
  34. package/dist/app/assets/DataBlockView-cCXcAbAD.css +1 -0
  35. package/dist/app/assets/{DeckPrintPages-CfsHNafR.js → DeckPrintPages-BSORs_kY.js} +2 -2
  36. package/dist/app/assets/DeckPrintPages-Bji3BG8Y.css +1 -0
  37. package/dist/app/assets/{DeckSlidePreview-CSk2TAJf.css → DeckSlidePreview-C1EJSQWU.css} +1 -1
  38. package/dist/app/assets/{DeckSlidePreview-NgmyCnLI.js → DeckSlidePreview-CYTWEeuK.js} +1 -1
  39. package/dist/app/assets/{Description-B0VtOkN1.js → Description-s56uqh40.js} +1 -1
  40. package/dist/app/assets/{Dialog-DQs7mloK.js → Dialog-bf5WhLLo.js} +1 -1
  41. package/dist/app/assets/{DocEditor-DU1WoXfI.js → DocEditor-8-QzRMxZ.js} +3 -3
  42. package/dist/app/assets/DocEditor-D3KBf8b4.css +1 -0
  43. package/dist/app/assets/{DualSidebarLayout-ArUd2K3r.js → DualSidebarLayout-rtSBS-2T.js} +1 -1
  44. package/dist/app/assets/EmbedBlockView-Cp4R99Cp.css +1 -0
  45. package/dist/app/assets/EmbedBlockView-kgt6lqXE.js +1 -0
  46. package/dist/app/assets/{EntityDetail-BsYPvHiO.js → EntityDetail-BF-CdxUJ.js} +2 -2
  47. package/dist/app/assets/{EntityForm-BcVXXsPy.js → EntityForm-C9GHqbuY.js} +2 -2
  48. package/dist/app/assets/{EntityList-DUF_f21S.js → EntityList-Ce4PALkZ.js} +1 -1
  49. package/dist/app/assets/EventButton-B7TGtt_P.css +1 -0
  50. package/dist/app/assets/EventButton-Dt2M-uRe.js +1 -0
  51. package/dist/app/assets/{FirstRunHint-Cznbatyp.css → FirstRunHint-DGkY4ixi.css} +1 -1
  52. package/dist/app/assets/{FirstRunHint-BU_etcjO.js → FirstRunHint-DUGKeW3G.js} +1 -1
  53. package/dist/app/assets/{FreeSlide-C4gb14Pb.js → FreeSlide-YWohLeeZ.js} +1 -1
  54. package/dist/app/assets/{FullscreenOverlay-WRO4spsA.js → FullscreenOverlay-D4ofx6z5.js} +1 -1
  55. package/dist/app/assets/{FullscreenOverlay-DhVdxMK5.css → FullscreenOverlay-DGWLpQTT.css} +1 -1
  56. package/dist/app/assets/Image-BcXH3hHw.css +1 -0
  57. package/dist/app/assets/Image-zowVQvP_.js +1 -0
  58. package/dist/app/assets/ImageFullBleed-BRO5mw3P.css +1 -0
  59. package/dist/app/assets/ImageFullBleed-BmnIxhGg.js +1 -0
  60. package/dist/app/assets/{Inbox-DxNeTx40.js → Inbox-D9zTyvov.js} +1 -1
  61. package/dist/app/assets/KeyboardHelp-D61klQTu.js +1 -0
  62. package/dist/app/assets/KeyboardHelp-D6D3l7YD.css +1 -0
  63. package/dist/app/assets/{KpiTile-Bt5U5Udm.js → KpiTile-Dfr9pdUm.js} +1 -1
  64. package/dist/app/assets/LaserPointer-FSFyPE5b.css +1 -0
  65. package/dist/app/assets/{LaserPointer-DbFgkMGg.js → LaserPointer-wwD0ZP5-.js} +1 -1
  66. package/dist/app/assets/{LayoutImage-CckWKV6C.js → LayoutImage-CMm64giP.js} +1 -1
  67. package/dist/app/assets/LayoutImage-CiNqPbrH.css +1 -0
  68. package/dist/app/assets/LayoutVideo-D14d4fWs.css +1 -0
  69. package/dist/app/assets/LayoutVideo-D7zo1dwi.js +2 -0
  70. package/dist/app/assets/MapBlockView-Bi-CFmk8.js +1 -0
  71. package/dist/app/assets/MapBlockView-CySyzG7q.css +1 -0
  72. package/dist/app/assets/{MediaBlockView-BQs_QISd.js → MediaBlockView-BypfIVHP.js} +1 -1
  73. package/dist/app/assets/MediaBlockView-z4UGwxXu.css +1 -0
  74. package/dist/app/assets/{MediaCentered-Bv5FQEBG.js → MediaCentered-B75qq3Bc.js} +1 -1
  75. package/dist/app/assets/MediaCentered-tBB7Vhwc.css +1 -0
  76. package/dist/app/assets/MediaSide-BB9aLg_b.js +1 -0
  77. package/dist/app/assets/MediaSide-D5UGDsxK.css +1 -0
  78. package/dist/app/assets/{MobileDrawerLayout-b8EsVHmM.js → MobileDrawerLayout-8kc3FskJ.js} +1 -1
  79. package/dist/app/assets/{MobileTabsLayout-iucCasKY.js → MobileTabsLayout-CEnP_03X.js} +1 -1
  80. package/dist/app/assets/MonthView-BeReGiV7.css +1 -0
  81. package/dist/app/assets/MonthView-IplaJozK.js +1 -0
  82. package/dist/app/assets/{MoreMenu-CkIrG5F9.css → MoreMenu-C7iy7e0f.css} +1 -1
  83. package/dist/app/assets/{MoreMenu-BLH-5Gvp.js → MoreMenu-XRjTNcbp.js} +1 -1
  84. package/dist/app/assets/{Onboarding-DRlA5bwT.js → Onboarding-CsMTe2Gd.js} +1 -1
  85. package/dist/app/assets/{OverlayOutlet-CRs5G14T.js → OverlayOutlet-DyeTUaPQ.js} +1 -1
  86. package/dist/app/assets/{Portal-DAmplzko.js → Portal-DgTVJS1B.js} +1 -1
  87. package/dist/app/assets/PresenterStatus-BSG5OpTs.css +1 -0
  88. package/dist/app/assets/PresenterStatus-Bs4vkYbc.js +1 -0
  89. package/dist/app/assets/{PresenterUpNext-BD84Svjl.js → PresenterUpNext-CX5nAjk0.js} +1 -1
  90. package/dist/app/assets/PresenterUpNext-Cbds-p7B.css +1 -0
  91. package/dist/app/assets/{ProcessSteps-Bzu0rGe6.js → ProcessSteps-CEiF21xj.js} +1 -1
  92. package/dist/app/assets/{ProcessSteps-DvGQTSov.css → ProcessSteps-DcclRQ_a.css} +1 -1
  93. package/dist/app/assets/Quote-6kL9yU2c.js +1 -0
  94. package/dist/app/assets/Quote-VPuF012a.css +1 -0
  95. package/dist/app/assets/{RelatedPanel-Zx46LYFQ.js → RelatedPanel-Cxova1eA.js} +1 -1
  96. package/dist/app/assets/{ReviewPanel-IctKGAYF.js → ReviewPanel-DxgUNOHw.js} +1 -1
  97. package/dist/app/assets/{ReviewSession-BvoB_ZV5.js → ReviewSession-DKa1rSEW.js} +2 -2
  98. package/dist/app/assets/RichText-B4FPHkBg.css +1 -0
  99. package/dist/app/assets/{RichText-D1v-HxaQ.js → RichText-CoJTjE0C.js} +1 -1
  100. package/dist/app/assets/SectionDivider-CN5kYi0D.css +1 -0
  101. package/dist/app/assets/SectionDivider-DHLunLtL.js +1 -0
  102. package/dist/app/assets/{Settings-C_QQITJ0.js → Settings-lxTjSN8u.js} +1 -1
  103. package/dist/app/assets/{SheetContent-Di33iVo2.js → SheetContent-CaQ4u-Vp.js} +1 -1
  104. package/dist/app/assets/{SidebarLayout-CizAF8JU.js → SidebarLayout-C_0kwSwN.js} +1 -1
  105. package/dist/app/assets/{SlashMenu-sLWmQqE1.js → SlashMenu-DSs50dm9.js} +1 -1
  106. package/dist/app/assets/{SlideJumpList-D9zOhZ-J.js → SlideJumpList-BtDBSbg0.js} +1 -1
  107. package/dist/app/assets/{SlideJumpList-CNMdgNU7.css → SlideJumpList-a7Vef6id.css} +1 -1
  108. package/dist/app/assets/{StructureFamily-Pp8Qr664.js → StructureFamily-DNYt_8i_.js} +2 -2
  109. package/dist/app/assets/{TeamAvatars-C0e-j-DR.js → TeamAvatars-BE6l8iK7.js} +1 -1
  110. package/dist/app/assets/{TeamAvatars-DBAggLCb.css → TeamAvatars-BedJ129k.css} +1 -1
  111. package/dist/app/assets/TextBlockView-DHasbAWC.css +1 -0
  112. package/dist/app/assets/{TextBlockView-DRlzMSVn.js → TextBlockView-xLNr-O0o.js} +1 -1
  113. package/dist/app/assets/{ThreeColumnCards-BPLqtN6W.js → ThreeColumnCards-BswpaTbm.js} +1 -1
  114. package/dist/app/assets/ThreeColumnCards-DknEclLh.css +1 -0
  115. package/dist/app/assets/TimeGridView-Bd1W5qxr.js +1 -0
  116. package/dist/app/assets/TimeGridView-DO8CWHDA.css +1 -0
  117. package/dist/app/assets/Timeline-BHDcIBIe.js +1 -0
  118. package/dist/app/assets/Timeline-BQ9L52M1.css +1 -0
  119. package/dist/app/assets/Title-CxrJeDY7.css +1 -0
  120. package/dist/app/assets/{Title-BoCID0Xq.js → Title-DRV13bea.js} +1 -1
  121. package/dist/app/assets/TitleHero-BaXQPfSj.css +1 -0
  122. package/dist/app/assets/TitleHero-Ce-3EkV1.js +1 -0
  123. package/dist/app/assets/{Trigger-8w9c0DhN.js → Trigger-BM4oOqwG.js} +1 -1
  124. package/dist/app/assets/TwoColumnSplit-C-w5bzYv.css +1 -0
  125. package/dist/app/assets/{TwoColumnSplit-DYBoT_R_.js → TwoColumnSplit-Cg1KSh34.js} +1 -1
  126. package/dist/app/assets/{Viewport-YaG8BTV_.js → Viewport-GO73k3ky.js} +1 -1
  127. package/dist/app/assets/Viewport-qyYC6Ewo.css +1 -0
  128. package/dist/app/assets/{analytics-BPxBOuv8.js → analytics-C-qixT-r.js} +2 -2
  129. package/dist/app/assets/{analytics-WBIZqtP8.js → analytics-wa7Azj1A.js} +2 -2
  130. package/dist/app/assets/{app-kiFTTAun.js → app-Bg5BmkN4.js} +2 -2
  131. package/dist/app/assets/app-CnfGCdYJ.css +1 -0
  132. package/dist/app/assets/app-D-FIW7OT.js +2 -0
  133. package/dist/app/assets/board-DAj8Qkx_.css +1 -0
  134. package/dist/app/assets/{board-0q6Fdnjz.js → board-DYc1Gil5.js} +1 -1
  135. package/dist/app/assets/{boot-B1w609xS.js → boot-CRp0P35e.js} +2 -2
  136. package/dist/app/assets/{boot-kind-luWYepUM.js → boot-kind-C_VNnX_G.js} +1 -1
  137. package/dist/app/assets/{builtin-D-08NJJ_.js → builtin-l7fH9hUL.js} +1 -1
  138. package/dist/app/assets/calendar-DJo7AdOL.css +1 -0
  139. package/dist/app/assets/calendar-DWGFXzbc.css +1 -0
  140. package/dist/app/assets/calendar-Dg3AKBGf.js +1 -0
  141. package/dist/app/assets/calendar-Jo1BvGw1.js +2 -0
  142. package/dist/app/assets/canvas-C2bI68lC.js +1 -0
  143. package/dist/app/assets/canvas-DlpAG-wj.css +1 -0
  144. package/dist/app/assets/{cartesian-D2AhdEIV.js → cartesian-B2oW8VM5.js} +1 -1
  145. package/dist/app/assets/{cartesian-CoBPstQd.js → cartesian-CGcezjA0.js} +1 -1
  146. package/dist/app/assets/cartesian-DHo3uaYF.css +1 -0
  147. package/dist/app/assets/{compact-7mkiGE8N.js → compact-B0x0uQXE.js} +1 -1
  148. package/dist/app/assets/compact-BrCILHd8.css +1 -0
  149. package/dist/app/assets/{compact-D4ch775J.js → compact-C3AqgcZf.js} +1 -1
  150. package/dist/app/assets/{conversational-C0P36SMt.js → conversational-D_GXMeUc.js} +2 -2
  151. package/dist/app/assets/{core-DisCXK86.js → core-CW4d3kjr.js} +2 -2
  152. package/dist/app/assets/{dashboard-vjiRJ-2a.js → dashboard-CxwVSJsl.js} +2 -2
  153. package/dist/app/assets/data-CdDi8LNC.js +1 -0
  154. package/dist/app/assets/{data-DYs_X2a6.js → data-CwV8xv4f.js} +2 -2
  155. package/dist/app/assets/deck-BaBX8s9P.js +1 -0
  156. package/dist/app/assets/{doc-D7QlyhMQ.js → doc-DC7-Hp2v.js} +2 -2
  157. package/dist/app/assets/doc-DjtgI7Pt.js +1 -0
  158. package/dist/app/assets/{embed-7IfIjInk.js → embed-B2v6aQhu.js} +1 -1
  159. package/dist/app/assets/{embed-BjxhIu1D.js → embed-BdTolWz_.js} +2 -2
  160. package/dist/app/assets/{extras-D-yEXOuq.css → extras-DX30w9lm.css} +1 -1
  161. package/dist/app/assets/{extras--tBwws6r.js → extras-dqHIe0IO.js} +2 -2
  162. package/dist/app/assets/{family-Bw7g3nle.js → family-BKC-spLp.js} +2 -2
  163. package/dist/app/assets/{family-Djp18LqC.js → family-C1Xxy0k0.js} +2 -2
  164. package/dist/app/assets/{family-DjA1hVK3.js → family-CgnQO_Vq.js} +2 -2
  165. package/dist/app/assets/{family-zSZ3st7P.js → family-wuWqPS3i.js} +2 -2
  166. package/dist/app/assets/flow-B79w1_8F.css +1 -0
  167. package/dist/app/assets/flow-CaiNwXJ6.js +1 -0
  168. package/dist/app/assets/{free-prefetch-CQtOUoO_.js → free-prefetch-BreDuF6k.js} +1 -1
  169. package/dist/app/assets/geo-CCrSqB8T.js +1 -0
  170. package/dist/app/assets/geo-Du_Tl0O-.css +1 -0
  171. package/dist/app/assets/histogram-CBzC6aQV.js +1 -0
  172. package/dist/app/assets/histogram-hGGTBCO-.css +1 -0
  173. package/dist/app/assets/{index-BmZaQzLA.js → index-DQM4L7fg.js} +2 -2
  174. package/dist/app/assets/{interactive-B8_XXgu9.js → interactive-BEcFYdu9.js} +3 -3
  175. package/dist/app/assets/{kind-boot-BlKFHtYr.js → kind-boot-Da62-Pwy.js} +2 -2
  176. package/dist/app/assets/{map-BBq86YoI.js → map-B5Up1dsM.js} +2 -2
  177. package/dist/app/assets/{map-CT94tmB0.js → map-Bga8KSxh.js} +2 -2
  178. package/dist/app/assets/{map-BvsdIhqc.js → map-Dvt77jsJ.js} +1 -1
  179. package/dist/app/assets/map-W306H8Q7.css +1 -0
  180. package/dist/app/assets/{map-DqX3aYqC.js → map-gKoek0Cz.js} +1 -1
  181. package/dist/app/assets/{matrix-DGsEk8w3.js → matrix-BbxOpu46.js} +2 -2
  182. package/dist/app/assets/matrix-ZMOv6DXc.css +1 -0
  183. package/dist/app/assets/{media-BUKoXNHc.js → media-C-J3b2h4.js} +1 -1
  184. package/dist/app/assets/media-bm2HtFou.js +1 -0
  185. package/dist/app/assets/model-BZQ94BoJ.css +1 -0
  186. package/dist/app/assets/{model-BmpSCB4_.js → model-DsclFye2.js} +1 -1
  187. package/dist/app/assets/{mount-8dOQyqXG.js → mount-N9_FnJSf.js} +2 -2
  188. package/dist/app/assets/pack-DwxWlhym.css +1 -0
  189. package/dist/app/assets/{pack-DzF58nZc.js → pack-G3lebN-J.js} +1 -1
  190. package/dist/app/assets/page-BY0KCQHn.js +1 -0
  191. package/dist/app/assets/{page-DkK906Sn.js → page-DbRjvUdJ.js} +1 -1
  192. package/dist/app/assets/{paint-BdZUBGOz.js → paint-Cm6YaTkT.js} +2 -2
  193. package/dist/app/assets/part-whole-BSFZYmWn.css +1 -0
  194. package/dist/app/assets/part-whole-BcUCvLws.js +1 -0
  195. package/dist/app/assets/{part-whole-JgLPIqtJ.js → part-whole-DSaFFOEz.js} +1 -1
  196. package/dist/app/assets/popup-BIJD1FQY.js +1 -0
  197. package/dist/app/assets/popup-BTRdOgWG.css +1 -0
  198. package/dist/app/assets/{print-paint-BQYY7n_n.js → print-paint-CXqryehw.js} +1 -1
  199. package/dist/app/assets/{registry-B7w9AKsi.js → registry-yZX79g72.js} +2 -2
  200. package/dist/app/assets/{renderer-deck-CjT2ONB5.js → renderer-deck-DYeu2Tqr.js} +2 -2
  201. package/dist/app/assets/{renderer-doc-CL21_nmz.js → renderer-doc-BrSxmjgI.js} +2 -2
  202. package/dist/app/assets/{renderer-page-Dub8qzwD.js → renderer-page-BMK0phxH.js} +2 -2
  203. package/dist/app/assets/renderers-C43-EICL.js +1 -0
  204. package/dist/app/assets/{run-kind-BDhjcKJl.js → run-kind-BRS9-oal.js} +1 -1
  205. package/dist/app/assets/{saas-DhbGb-OK.js → saas-lTYc9Loi.js} +2 -2
  206. package/dist/app/assets/{settings-D9B7v99L.js → settings-fTpy40cB.js} +1 -1
  207. package/dist/app/assets/{sheet-DCuu075w.js → sheet-DwVBlvWC.js} +1 -1
  208. package/dist/app/assets/sparkline-lite-CmrUoZUL.js +1 -0
  209. package/dist/app/assets/sparkline-lite-Dcm7nqS9.css +1 -0
  210. package/dist/app/assets/src-5_lm8PMs.css +1 -0
  211. package/dist/app/assets/src-klPtPdn9.js +2 -0
  212. package/dist/app/assets/{steps-Bzi6Yd9e.js → steps-Bnx95vCB.js} +1 -1
  213. package/dist/app/assets/{steps-CHC3yyeH.css → steps-CAyh-2WG.css} +1 -1
  214. package/dist/app/assets/{storage-CW0L1wSF.js → storage-D9Y6iyV4.js} +2 -2
  215. package/dist/app/assets/structure-B1_rr5n6.js +1 -0
  216. package/dist/app/assets/{structure-BoiNh_D7.js → structure-BfREpAB9.js} +2 -2
  217. package/dist/app/assets/{style-B4rREfL0.js → style-DspZwwN1.js} +1 -1
  218. package/dist/app/assets/text-DWMJDyVZ.js +1 -0
  219. package/dist/app/assets/{text-DeZb_mYn.js → text-QO1MdO8Q.js} +1 -1
  220. package/dist/app/assets/{thumbnails-3t8t55Yv.js → thumbnails-JIDQ0hBv.js} +1 -1
  221. package/dist/app/assets/timeline-BfJDu0Q0.js +1 -0
  222. package/dist/app/assets/timeline-COn2GuGe.css +1 -0
  223. package/dist/app/deck.html +4 -4
  224. package/dist/app/doc.html +4 -4
  225. package/dist/app/index.html +5 -5
  226. package/dist/app/page.html +4 -4
  227. package/dist/app/protoyard-player-assets.json +616 -616
  228. package/dist/app/sw.js +1 -1
  229. package/package.json +21 -21
  230. package/dist/app/assets/AgendaView-BoJCiSNv.css +0 -1
  231. package/dist/app/assets/AgendaView-C_birR0h.js +0 -1
  232. package/dist/app/assets/AlertDialog-Haq7IhWm.js +0 -1
  233. package/dist/app/assets/AlertDialog-nZ-QMI_Q.css +0 -1
  234. package/dist/app/assets/CalendarMoveMenu-Cr1Keu3y.css +0 -1
  235. package/dist/app/assets/CalendarMoveMenu-ZVPWd0K3.js +0 -1
  236. package/dist/app/assets/ChartSlide-BdCjq_zK.css +0 -1
  237. package/dist/app/assets/ChromeIcon-DktINEqy.css +0 -1
  238. package/dist/app/assets/ChromeTooltip-Cj4JqYq1.css +0 -1
  239. package/dist/app/assets/ChromeTooltip-DQfokD5S.js +0 -1
  240. package/dist/app/assets/ClosingCta-BnEawssQ.js +0 -1
  241. package/dist/app/assets/ClosingCta-CKgLaqve.css +0 -1
  242. package/dist/app/assets/CodeWithCallout-AxtGHMWp.js +0 -1
  243. package/dist/app/assets/CodeWithCallout-Pccn1G4N.css +0 -1
  244. package/dist/app/assets/ComparisonTable-D2hhz7N3.css +0 -1
  245. package/dist/app/assets/ComparisonTable-DrRE2HJs.js +0 -1
  246. package/dist/app/assets/DataBlockView-CN7uuQkq.css +0 -1
  247. package/dist/app/assets/DataBlockView-CxxPN79x.js +0 -2
  248. package/dist/app/assets/DeckPrintPages-BRhPtDTj.css +0 -1
  249. package/dist/app/assets/DocEditor-BViZqV0C.css +0 -1
  250. package/dist/app/assets/EmbedBlockView-DL29RLMk.js +0 -1
  251. package/dist/app/assets/EmbedBlockView-DbLGZ0Zk.css +0 -1
  252. package/dist/app/assets/EventButton-CMlhcc11.css +0 -1
  253. package/dist/app/assets/EventButton-D1j4ayNL.js +0 -1
  254. package/dist/app/assets/Image-BH2P4wNC.js +0 -1
  255. package/dist/app/assets/Image-BqPB6TMh.css +0 -1
  256. package/dist/app/assets/ImageFullBleed-CMruFy_r.css +0 -1
  257. package/dist/app/assets/ImageFullBleed-DrqoYgYe.js +0 -1
  258. package/dist/app/assets/KeyboardHelp-D3nZstlH.css +0 -1
  259. package/dist/app/assets/KeyboardHelp-cvDZwmkT.js +0 -1
  260. package/dist/app/assets/LaserPointer-BtSKWTuX.css +0 -1
  261. package/dist/app/assets/LayoutImage-DYaBBBD7.css +0 -1
  262. package/dist/app/assets/LayoutVideo-BuJ_rxqB.css +0 -1
  263. package/dist/app/assets/LayoutVideo-CT5hgZXC.js +0 -2
  264. package/dist/app/assets/MapBlockView-CATTVnRf.css +0 -1
  265. package/dist/app/assets/MapBlockView-CQPWuDWt.js +0 -1
  266. package/dist/app/assets/MediaBlockView-2Z9UujRP.css +0 -1
  267. package/dist/app/assets/MediaCentered-D1jAraam.css +0 -1
  268. package/dist/app/assets/MediaSide-DPvF8q9o.js +0 -1
  269. package/dist/app/assets/MediaSide-DzvDKntG.css +0 -1
  270. package/dist/app/assets/MonthView-BSClld3Q.css +0 -1
  271. package/dist/app/assets/MonthView-D82M_gw6.js +0 -1
  272. package/dist/app/assets/PresenterStatus-BG4uEwkH.js +0 -1
  273. package/dist/app/assets/PresenterStatus-Dh5bOtYL.css +0 -1
  274. package/dist/app/assets/PresenterUpNext-D-Xx2UBn.css +0 -1
  275. package/dist/app/assets/Quote-BoZfPzZH.css +0 -1
  276. package/dist/app/assets/Quote-CnGV45E9.js +0 -1
  277. package/dist/app/assets/RichText-BCfjyl-x.css +0 -1
  278. package/dist/app/assets/SectionDivider-CCrbcyNE.js +0 -1
  279. package/dist/app/assets/SectionDivider-ChSFRraf.css +0 -1
  280. package/dist/app/assets/TextBlockView-BHOo0GRP.css +0 -1
  281. package/dist/app/assets/ThreeColumnCards-ChTpCcz8.css +0 -1
  282. package/dist/app/assets/TimeGridView-BLvWNnEy.css +0 -1
  283. package/dist/app/assets/TimeGridView-C78bCMzf.js +0 -1
  284. package/dist/app/assets/Timeline-2GhKlfmd.css +0 -1
  285. package/dist/app/assets/Timeline-66X3nU-w.js +0 -1
  286. package/dist/app/assets/Title-DZQyv1Uw.css +0 -1
  287. package/dist/app/assets/TitleHero-BqOmWwID.js +0 -1
  288. package/dist/app/assets/TitleHero-DMDxz18F.css +0 -1
  289. package/dist/app/assets/TwoColumnSplit-Y6JkObVm.css +0 -1
  290. package/dist/app/assets/Viewport-DWfYShxg.css +0 -1
  291. package/dist/app/assets/app-B2_KfZ06.js +0 -2
  292. package/dist/app/assets/app-BB5CNOCm.css +0 -1
  293. package/dist/app/assets/board-Ct1Niyhg.css +0 -1
  294. package/dist/app/assets/calendar-CC-XH4BQ.css +0 -1
  295. package/dist/app/assets/calendar-D3xaSsit.js +0 -2
  296. package/dist/app/assets/calendar-DdWo8l-F.js +0 -1
  297. package/dist/app/assets/calendar-DeXlGkQg.css +0 -1
  298. package/dist/app/assets/canvas-Bg4JmNxQ.js +0 -1
  299. package/dist/app/assets/canvas-CdpPrdGz.css +0 -1
  300. package/dist/app/assets/cartesian-CzV-Cyc1.css +0 -1
  301. package/dist/app/assets/compact-5pMdWyMw.css +0 -1
  302. package/dist/app/assets/data-BT9r5CfS.js +0 -1
  303. package/dist/app/assets/deck-CPwPSgE3.js +0 -1
  304. package/dist/app/assets/doc-BthZSDuE.js +0 -1
  305. package/dist/app/assets/flow-CjzYxj3T.css +0 -1
  306. package/dist/app/assets/flow-Dse75s3k.js +0 -1
  307. package/dist/app/assets/geo-BUoHwLMI.css +0 -1
  308. package/dist/app/assets/geo-Badu06LW.js +0 -1
  309. package/dist/app/assets/histogram-Bxs2w5Qg.js +0 -1
  310. package/dist/app/assets/histogram-CaF8L-uN.css +0 -1
  311. package/dist/app/assets/map-CsZfhGqK.css +0 -1
  312. package/dist/app/assets/matrix-DFjJIxow.css +0 -1
  313. package/dist/app/assets/media-CTs3Ucym.js +0 -1
  314. package/dist/app/assets/model-D-DRw_p6.css +0 -1
  315. package/dist/app/assets/pack-CBHejNSf.css +0 -1
  316. package/dist/app/assets/page-I-0RZem6.js +0 -1
  317. package/dist/app/assets/part-whole-B2gsi6CR.css +0 -1
  318. package/dist/app/assets/part-whole-lCSLwC5U.js +0 -1
  319. package/dist/app/assets/popup-B-0xjgYx.js +0 -1
  320. package/dist/app/assets/popup-CHgoACQq.css +0 -1
  321. package/dist/app/assets/renderers-CM6H1JjM.js +0 -1
  322. package/dist/app/assets/sparkline-lite-Dbg5FeZK.css +0 -1
  323. package/dist/app/assets/sparkline-lite-HVucD2kL.js +0 -1
  324. package/dist/app/assets/src-CSsYWR7m.js +0 -2
  325. package/dist/app/assets/src-Dak84v00.css +0 -1
  326. package/dist/app/assets/structure-Br3Nb4YD.js +0 -1
  327. package/dist/app/assets/text-Be7wymXC.js +0 -1
  328. package/dist/app/assets/timeline-CQMPn0NA.js +0 -1
  329. package/dist/app/assets/timeline-WobC-yTK.css +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./style-presets-CzynjwRw.js","./style-presets-NvFQjCjA.js","./fonts-CyzGCo-s.js","./StaleWorldNotice-BQqYS-Lw.js","./index-client-BJ7uZa7c.js","./disclose-version-xihTtKlq.js","./Button-_rgUrOXL.js","./safe-href-Ca6kZWby.js","./trust-DZxM74pz.js","./cx-BNZ52w-j.js","./variants-CqLUuoxu.js","./design-defaults-DAxTKvKt.js","./Button-5BamLyf0.css","./messages-BQTlK_mM.js","./Icon-Dp7XOf8B.js","./MessageText-BBXy3k9_.js","./library-X49Tko4M.js","./rolldown-runtime-XKyaHtl9.js","./ids-BFXF9Z_4.js","./registry-exXUF-5L.js","./preload-helper-CRzLMJPS.js","./from-texuli-F7aPl70I.js","./theme-gO6KESO1.js","./schemas-Cd-wWAs4.js","./registry-BZiqneBm.js","./metadata-BpPlGhv5.js","./records-uXFbdI0w.js","./types-B0IEHQCD.js","./mount-8dOQyqXG.js","./LucideIcon-DSpLZVOH.js","./Icon-CRpKDuC7.js","./Icon-CxE9sx-Y.css","./message-square-n_qADYKq.js","./Icon-DhNPWeWS.js","./panel-state.svelte-CO6Zoy9K.js","./src-_ograGmM.js","./devices-B2GmUWdq.js","./environment-qEbacsJ-.js","./random--LplQdQC.js","./manifest-0Q1tYlhS.js","./storage-Bxp2oaxI.js","./prototype-BEkp3Df8.js","./apply-CT-2ixg7.js","./contrast-s6qwb-S-.js","./presets-yYeapXmM.js","./apply-CvJWBke_.js","./validate-6AAyBgB0.js","./types-BiUdY2U5.js","./semantic-BZOGW1yM.js","./durations-DOq5QZxl.js","./texuli-27exlwkX.js","./dexie-DCNEq46v.js","./names-_PDy7Bq8.js","./scenario-DfCy7uDa.js","./Avatar-CqXbF4uK.js","./safe-image-src-DQWk9Hmw.js","./safe-image-srcset-CV9HT60O.js","./context-Cvg_Jb8K.js","./child-BNsqGBSq.js","./state-Di2Pzrl0.js","./Avatar-B328P5yQ.css","./no-flash-Dj4XzHOU.js","./FileInput-DfbaFJjK.js","./seed-C9w8QDA_.js","./oklch-DhPyiYB2.js","./FileUpload-C58M1WUA.js","./i18n-C1FxoBbJ.js","./use-messages-69sBkkeA.js","./index-client-ncr-aJHg.js","./events-CgGVkmNN.js","./use-messages-BEfUIgrO.js","./handlers-CkNHDF5y.js","./control-props-OVgLyhvo.js","./FileUpload-CUDnO_wv.css","./SelectValue-dQDYClnM.js","./handlers-ByGe01Fz.js","./core-X3vERPZ1.js","./env-guq4m6_s.js","./presence-zf-tyTu4.js","./typeahead-BP48qCAc.js","./keys-P79j73dU.js","./position-floating-DVYNUqB9.js","./form-bridge-BFV-h8qv.js","./SelectValue-Nfj3YFHu.css","./Badge-CRhJ8sWH.js","./variants-C-9Fb7C7.js","./variants-CHGzXb-Y.css","./Textarea-B2NFoybO.js","./Input-D-wg5ud0.js","./Input-B5IDQk3l.css","./Checkbox-D5lHY5ZQ.js","./variants-BSgG2nVA.js","./variants-BoB1dKDA.css","./RadioGroup-zYTPVu8Q.js","./radio-group-CHua9Z13.js","./roving-CztmB2zQ.js","./dir-locale-Bp4_WmZL.js","./Switch-8QZM_9mj.js","./Alert-BxM9whyb.js","./AlertSurface-B-Z7YWCM.js","./AlertSurface-BDie0P7w.css","./users-CHDp9Ej9.js","./copy-BRPalUx6.js","./upload-DTXE5Ssx.js","./palette-BKs1Lqh5.js","./presentation-BcQDlabb.js","./refresh-cw-CyWpDKzd.js","./share-2-CWdppD0U.js","./Slider-eo7lM48l.js","./Slider-D5WUpT4E.css","./Segmented-BJe49U8y.js","./Card-BrCr7hZi.js","./Card-DkeUHZOp.css","./Spinner-DFzF63dS.js","./variants-DOyT6BC2.js","./variants-CjnNSDuw.css","./src-BFXdMRyG.css","./avatars-CA9KfGtD.js","./session-Qh0_5nJW.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./style-presets-CzynjwRw.js","./style-presets-NvFQjCjA.js","./fonts-CyzGCo-s.js","./StaleWorldNotice-BQqYS-Lw.js","./index-client-BJ7uZa7c.js","./disclose-version-xihTtKlq.js","./Button-_rgUrOXL.js","./safe-href-Ca6kZWby.js","./trust-DZxM74pz.js","./cx-BNZ52w-j.js","./variants-CqLUuoxu.js","./design-defaults-DAxTKvKt.js","./Button-5BamLyf0.css","./messages-BQTlK_mM.js","./Icon-Dp7XOf8B.js","./MessageText-BBXy3k9_.js","./library-X49Tko4M.js","./rolldown-runtime-XKyaHtl9.js","./ids-BFXF9Z_4.js","./registry-exXUF-5L.js","./preload-helper-CRzLMJPS.js","./from-texuli-F7aPl70I.js","./theme-gO6KESO1.js","./schemas-Cd-wWAs4.js","./registry-BZiqneBm.js","./metadata-BpPlGhv5.js","./records-uXFbdI0w.js","./types-B0IEHQCD.js","./mount-N9_FnJSf.js","./LucideIcon-DSpLZVOH.js","./Icon-CRpKDuC7.js","./Icon-CxE9sx-Y.css","./message-square-n_qADYKq.js","./Icon-DhNPWeWS.js","./panel-state.svelte-CO6Zoy9K.js","./src-_ograGmM.js","./devices-B2GmUWdq.js","./environment-qEbacsJ-.js","./random--LplQdQC.js","./manifest-0Q1tYlhS.js","./storage-Bxp2oaxI.js","./prototype-BEkp3Df8.js","./apply-CT-2ixg7.js","./contrast-s6qwb-S-.js","./presets-yYeapXmM.js","./apply-CvJWBke_.js","./validate-6AAyBgB0.js","./types-BiUdY2U5.js","./semantic-BZOGW1yM.js","./durations-DOq5QZxl.js","./texuli-27exlwkX.js","./dexie-DCNEq46v.js","./names-_PDy7Bq8.js","./scenario-DfCy7uDa.js","./Avatar-CqXbF4uK.js","./safe-image-src-DQWk9Hmw.js","./safe-image-srcset-CV9HT60O.js","./context-Cvg_Jb8K.js","./child-BNsqGBSq.js","./state-Di2Pzrl0.js","./Avatar-B328P5yQ.css","./no-flash-Dj4XzHOU.js","./FileInput-DfbaFJjK.js","./seed-C9w8QDA_.js","./oklch-DhPyiYB2.js","./FileUpload-C58M1WUA.js","./i18n-C1FxoBbJ.js","./use-messages-69sBkkeA.js","./index-client-ncr-aJHg.js","./events-CgGVkmNN.js","./use-messages-BEfUIgrO.js","./handlers-CkNHDF5y.js","./control-props-OVgLyhvo.js","./FileUpload-CUDnO_wv.css","./SelectValue-dQDYClnM.js","./handlers-ByGe01Fz.js","./core-X3vERPZ1.js","./env-guq4m6_s.js","./presence-zf-tyTu4.js","./typeahead-BP48qCAc.js","./keys-P79j73dU.js","./position-floating-DVYNUqB9.js","./form-bridge-BFV-h8qv.js","./SelectValue-Nfj3YFHu.css","./Badge-CRhJ8sWH.js","./variants-C-9Fb7C7.js","./variants-CHGzXb-Y.css","./Textarea-B2NFoybO.js","./Input-D-wg5ud0.js","./Input-B5IDQk3l.css","./Checkbox-D5lHY5ZQ.js","./variants-BSgG2nVA.js","./variants-BoB1dKDA.css","./RadioGroup-zYTPVu8Q.js","./radio-group-CHua9Z13.js","./roving-CztmB2zQ.js","./dir-locale-Bp4_WmZL.js","./Switch-8QZM_9mj.js","./Alert-BxM9whyb.js","./AlertSurface-B-Z7YWCM.js","./AlertSurface-BDie0P7w.css","./users-CHDp9Ej9.js","./copy-BRPalUx6.js","./upload-DTXE5Ssx.js","./palette-BKs1Lqh5.js","./presentation-BcQDlabb.js","./refresh-cw-CyWpDKzd.js","./share-2-CWdppD0U.js","./Slider-eo7lM48l.js","./Slider-D5WUpT4E.css","./Segmented-BJe49U8y.js","./Card-BrCr7hZi.js","./Card-DkeUHZOp.css","./Spinner-DFzF63dS.js","./variants-DOyT6BC2.js","./variants-CjnNSDuw.css","./src-BFXdMRyG.css","./avatars-CA9KfGtD.js","./session-Qh0_5nJW.js"])))=>i.map(i=>d[i]);
2
2
  import{a as e,i as t,n}from"./src-Bpgs1rH6.js";import{a as r,c as i,i as a,s as o}from"./devices-B2GmUWdq.js";import{r as s}from"./random--LplQdQC.js";import{o as c,t as l}from"./environment-qEbacsJ-.js";import{c as u,f as d,i as f,l as p,r as m}from"./manifest-0Q1tYlhS.js";import{o as h,r as g}from"./theme-gO6KESO1.js";import{a as _,c as v,i as y,l as b,o as x,r as S,t as C,u as w}from"./storage-Bxp2oaxI.js";import{t as T}from"./prototype-BEkp3Df8.js";import{i as E,n as D,r as O,t as ee}from"./runtime-A0jTJCh8.js";import{i as te,o as k,r as ne}from"./scenario-DfCy7uDa.js";import{i as re,l as ie,n as ae,o as oe,r as se,s as ce,t as le}from"./session-Qh0_5nJW.js";import{n as ue,t as de}from"./validation-CMBKmHTL.js";import{t as fe}from"./preload-helper-CRzLMJPS.js";import{t as pe}from"./presets-yYeapXmM.js";import{a as me,o as he,t as ge}from"./apply-CT-2ixg7.js";import{n as _e,t as ve}from"./no-flash-Dj4XzHOU.js";import{$ as ye,B as A,C as be,D as xe,F as j,I as Se,M,N as Ce,O as we,Ot as Te,P as Ee,Q as De,S as Oe,Tt as N,U as ke,V as P,W as Ae,Z as F,_t as je,a as Me,at as I,bt as L,ct as Ne,et as R,f as Pe,h as Fe,i as Ie,it as z,k as Le,l as B,lt as V,mt as H,n as Re,nt as ze,ot as U,p as Be,r as W,s as Ve,st as G,t as He,tt as K,ut as q,wt as Ue,x as We,xt as Ge,yt as J,z as Y}from"./index-client-BJ7uZa7c.js";import"./disclose-version-xihTtKlq.js";import{t as Ke}from"./cx-BNZ52w-j.js";import{t as qe}from"./variants-CqLUuoxu.js";import{t as Je}from"./use-messages-69sBkkeA.js";import{t as X}from"./Button-_rgUrOXL.js";import{t as Ye}from"./env-guq4m6_s.js";import{n as Xe,t as Ze}from"./handlers-ByGe01Fz.js";import{t as Qe}from"./use-messages-BEfUIgrO.js";import{t as $e}from"./state-Di2Pzrl0.js";import{_ as et,h as tt,i as nt,n as rt,o as it}from"./seam-CFtr05Bk.js";import{t as at}from"./handlers-CkNHDF5y.js";import{n as ot}from"./inert-CX0JFWuY.js";import{r as st,t as ct}from"./backdrop-Be1Do1pV.js";import{n as lt,t as ut}from"./use-overlay-portal.svelte-7FKpygVS.js";import{t as dt}from"./Checkbox-D5lHY5ZQ.js";import{t as ft}from"./Progress-bNTXPebc.js";import{t as pt}from"./announcer-C9Q-PqE3.js";import{n as mt,r as ht,t as gt}from"./toast-store-DLJO-Udw.js";import{n as _t}from"./motion-DTTALmY8.js";import{t as vt}from"./dexie-DCNEq46v.js";import{i as yt,r as bt}from"./context-DTcuz85x.js";import{o as xt,r as St}from"./bindings.svelte-DcC1eEn4.js";import{i as Ct,n as wt,t as Tt}from"./messages-BQTlK_mM.js";import{c as Et}from"./names-_PDy7Bq8.js";import{t as Dt}from"./Icon-Dp7XOf8B.js";import{t as Ot}from"./MessageText-BBXy3k9_.js";import{a as kt,i as At,n as jt,o as Mt,r as Nt,s as Pt,t as Ft}from"./registry-v2IddHqe.js";function It(e={}){let t=e.onError??(e=>{console.error(`[protoyard/pending]`,e)}),n=[],r=1,i=new Set,a=()=>{for(let e of[...i])try{e(n)}catch(e){t(e)}},o=e=>{let t={id:r++,kind:e.kind??`other`,label:e.label};n=[...n,t],a();let i=!1;return()=>{i||(i=!0,n=n.filter(e=>e.id!==t.id),a())}};return{list:()=>n,count:()=>n.length,begin:o,async track(e,t){let n=o(e);try{return await t()}finally{n()}},subscribe(e){return i.add(e),()=>{i.delete(e)}}}}var Lt=new Set([`__proto__`,`constructor`,`prototype`]);function Rt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function zt(e,...t){let n=Rt(e)?{...e}:e;for(let e of t){if(e===void 0)continue;if(!Rt(n)||!Rt(e)){n=Rt(e)?zt({},e):e;continue}let t={...n};for(let[n,r]of Object.entries(e)){if(r===void 0||Lt.has(n))continue;let e=t[n];t[n]=Rt(e)&&Rt(r)?zt(e,r):r}n=t}return n}var Bt=class extends Error{constructor(e){super(e),this.name=`ScenarioDefinitionError`}};function Vt(e,t){return`Scenario "${e}" is invalid:\n${t.issues.map(e=>` • ${e.path.map(String).join(`.`)||`root`}: ${e.message}`).join(`
3
3
  `)}`}function Ht(e){let t=te.safeParse(e);if(!t.success)throw new Bt(Vt(Rt(e)&&typeof e.id==`string`?e.id:`(no id)`,t.error));return t.data}function Ut(e,t={}){let n=new Map;for(let t of e){let e=t.id;if(typeof e!=`string`||e.length===0)throw new Bt(`Every scenario needs a string "id".`);if(n.has(e))throw new Bt(`Duplicate scenario id "${e}".`);n.set(e,t)}let r=(e,i,a)=>{let o=e.extends;if(!o)return e;let s=e.id??`(anonymous)`,c=!a&&o!==s?n.get(o):void 0,l=c??t[o];if(!l)throw new Bt(`Scenario "${s}" extends unknown scenario or preset "${o}".`);let u=`${c?`own`:`preset`}:${o}`;if(i.includes(u))throw new Bt(`Scenario "extends" cycle: ${[...i,u].map(e=>e.slice(e.indexOf(`:`)+1)).join(` → `)}.`);let{extends:d,...f}=r(l,[...i,u],!c);return zt({},f,e)};return e.map(e=>Ht(r(e,[`own:${e.id}`],!1)))}var Wt={py_organizations:e=>e.organizations,py_personas:e=>e.personas,py_memberships:e=>e.memberships,py_events:e=>e.events??[]};function Gt(e,t){let n=Wt[t];return n?n(e):e.tables?.[t]}function Kt(e){if(e instanceof Date)return e.getTime();if(typeof e==`string`||typeof e==`number`){let t=typeof e==`number`?e:Date.parse(e);return Number.isNaN(t)?void 0:t}}function qt(e,t={}){let n=[],r=t.referenceTime?Date.parse(t.referenceTime):void 0,i=(e,t,r,i)=>{n.push({table:e,rowId:typeof t.id==`string`?t.id:String(t.id),...i?{field:i}:{},message:r})},a=new Map,o=[...Object.keys(Wt),...Object.keys(e.tables??{})];for(let t of o){let n=new Set;for(let r of Gt(e,t)??[])typeof r.id!=`string`||r.id.length===0?i(t,r,`row has no string "id"`,`id`):(n.has(r.id)&&i(t,r,`duplicate id "${r.id}"`,`id`),n.add(r.id));a.set(t,n)}let s=new Map;for(let t of e.organizations){let e=Kt(t.createdAt);e===void 0?i(`py_organizations`,t,`createdAt is not a date`,`createdAt`):(s.set(t.id,e),r!==void 0&&e>r&&i(`py_organizations`,t,`organization is created after the reference time`,`createdAt`))}let c=s.size?Math.min(...s.values()):void 0;for(let t of e.personas){let e=Kt(t.joinedAt);e===void 0?i(`py_personas`,t,`joinedAt is not a date`,`joinedAt`):r!==void 0&&e>r&&i(`py_personas`,t,`persona joins after the reference time`,`joinedAt`)}let l=a.get(`py_personas`)??new Set,u=a.get(`py_organizations`)??new Set;for(let t of e.memberships){l.has(t.personaId)||i(`py_memberships`,t,`unknown persona "${t.personaId}"`,`personaId`),u.has(t.organizationId)||i(`py_memberships`,t,`unknown organization "${t.organizationId}"`,`organizationId`);let e=Kt(t.joinedAt),n=s.get(t.organizationId);e!==void 0&&n!==void 0&&e<n&&i(`py_memberships`,t,`member joined before the organization existed`,`joinedAt`)}for(let[r,o]of Object.entries(t.relations??{})){let t=Gt(e,r);if(t)for(let[e,s]of Object.entries(o)){let o=a.get(s);if(!o)n.push({table:r,rowId:`*`,field:e,message:`relation target table "${s}" is not in the seed`});else for(let n of t){let t=n[e];if(t==null)continue;let a=Array.isArray(t)?t:[t];for(let t of a)(typeof t!=`string`||!o.has(t))&&i(r,n,`${e} → "${String(t)}" does not exist in ${s}`,e)}}}for(let[n,a]of Object.entries(t.timestamps??{}))for(let t of Gt(e,n)??[]){let e=typeof t.organizationId==`string`?t.organizationId:void 0,o=(e?s.get(e):void 0)??c;for(let e of a){let a=t[e];if(a==null)continue;let s=Kt(a);s===void 0?i(n,t,`${e} is not a date`,e):(r!==void 0&&s>r&&i(n,t,`${e} is after the reference time`,e),o!==void 0&&s<o&&i(n,t,`${e} is before the organization was created`,e))}}return n}var Jt=class extends Error{scenarioId;violations;constructor(e,t){let n=t.slice(0,10).map(e=>` • ${e.table}#${e.rowId}${e.field?`.${e.field}`:``}: ${e.message}`).join(`
4
- `),r=t.length>10?`\n …and ${t.length-10} more`:``;super(`Generator for scenario "${e}" produced ${t.length} integrity violation(s):\n${n}${r}`),this.name=`WorldIntegrityError`,this.scenarioId=e,this.violations=t}},Yt=`2026-03-02T09:00:00.000Z`,Xt=20260302,Z={density:e=>({density:e}),activity:e=>({activity:{level:e}}),role:e=>({actor:{role:e}}),tenure:e=>({actor:{joinedDaysAgo:e}}),organizationAge:e=>({organization:{ageDays:e}}),organizationSize:e=>({organization:{size:e}}),accountAge:e=>({organization:{ageDays:e},actor:{joinedDaysAgo:e}}),onboarding:e=>({actor:{onboardingComplete:e>=1,onboardingProgress:e}}),subscription:e=>({organization:{subscription:e}}),network:(e,t=0)=>({environment:{network:e,latencyMs:t}}),featureFlags:e=>({organization:{featureFlags:e}}),appearance:e=>({appearance:e}),tags:(...e)=>({tags:e}),history:e=>({organization:{ageDays:e},generators:{series:{historyDays:e}}}),seasonality:e=>({generators:{series:{seasonality:e}}}),spike:(e,t,n=3)=>({generators:{series:{spikes:[{daysAgo:e,factor:t,decayDays:n}]}}}),occupancy:e=>({generators:{schedule:{occupancy:e}}})},Zt=`org_0001`,Qt=`user_0001`;function $t(e,t,n,r,i,...a){let o=`journey-${e}`,s=zt({},{id:o,name:t,group:`Journeys`,description:n,seed:Xt,referenceTime:Yt,organization:{id:Zt},actor:{id:Qt,role:i.actor.role}},Z.organizationSize(i.people.min),Z.organizationAge(i.organizationAgeDays),Z.tenure(i.actor.tenureDays),Z.onboarding(+!!i.actor.onboardingComplete),...a,Z.tags(`journey`,e));return{stage:e,presetId:o,name:t,description:n,persona:r,time:{referenceTime:Yt,organizationAgeDays:i.organizationAgeDays,actorTenureDays:i.actor.tenureDays},scenario:s,expect:i}}var en=[$t(`signup`,`Journey: just signed up`,`The account was created a minute ago: one person, an empty workspace, onboarding not started.`,{role:`owner`,summary:`The person who just registered and owns the new workspace.`},{people:{min:1,max:1},actor:{role:`owner`,tenureDays:0,onboardingComplete:!1},organizationAgeDays:0,joinedBeforeActor:0},Z.density(`empty`),Z.activity(`none`)),$t(`invited`,`Journey: invited to a team`,`Accepted an invitation today into a team that has worked here for three months.`,{role:`member`,summary:`A new member who has not finished onboarding yet.`},{people:{min:6,max:6},actor:{role:`member`,tenureDays:0,onboardingComplete:!1},organizationAgeDays:90,joinedBeforeActor:1},Z.density(`normal`),Z.activity(`normal`)),$t(`first-week`,`Journey: first week`,`Seven days after signing up: onboarding done, a small team, the first real records.`,{role:`owner`,summary:`The owner, a week in, still learning the product.`},{people:{min:3,max:3},actor:{role:`owner`,tenureDays:7,onboardingComplete:!0},organizationAgeDays:7,joinedBeforeActor:0},Z.history(7),Z.density(`sparse`),Z.activity(`normal`)),$t(`established`,`Journey: established team`,`Three months of regular use by a team of eight, with a weekly rhythm in its history.`,{role:`owner`,summary:`The owner of a team that uses the product every week.`},{people:{min:8,max:8},actor:{role:`owner`,tenureDays:90,onboardingComplete:!0},organizationAgeDays:90,joinedBeforeActor:0},Z.history(90),Z.seasonality(`weekly`),Z.density(`normal`),Z.activity(`normal`))],tn=Object.fromEntries(en.map(e=>[e.presetId,e.scenario])),nn={seed:Xt,referenceTime:Yt};function Q(e,t,n,r,...i){return zt({},nn,{id:e,name:t,group:n,description:r},...i)}var rn={"brand-new-signup":Q(`brand-new-signup`,`Brand-new signup`,`Lifecycle`,`Signed up a minute ago: empty workspace, onboarding not started.`,Z.accountAge(0),Z.onboarding(0),Z.density(`empty`),Z.activity(`none`),Z.tags(`lifecycle`,`empty-state`)),"onboarding-in-progress":Q(`onboarding-in-progress`,`Onboarding halfway`,`Lifecycle`,`Started onboarding yesterday and stopped halfway through.`,Z.accountAge(1),Z.onboarding(.5),Z.density(`sparse`),Z.activity(`low`),Z.tags(`lifecycle`,`onboarding`)),"first-week":Q(`first-week`,`First week`,`Lifecycle`,`Seven days in: a few records, still learning the product.`,Z.accountAge(7),Z.organizationSize(3),Z.density(`sparse`),Z.activity(`normal`),Z.tags(`lifecycle`)),"active-month":Q(`active-month`,`Day-30 active user`,`Lifecycle`,`A month of regular use by a small team.`,Z.accountAge(30),Z.organizationSize(5),Z.density(`normal`),Z.activity(`normal`),Z.tags(`lifecycle`)),"six-month-new-member":Q(`six-month-new-member`,`New member in a 6-month-old team`,`Lifecycle`,`The organization has six months of history; the actor was invited today.`,Z.organizationAge(180),Z.organizationSize(12),Z.tenure(0),Z.role(`member`),Z.onboarding(0),Z.density(`normal`),Z.activity(`normal`),Z.tags(`lifecycle`,`invited`)),"power-user-year-one":Q(`power-user-year-one`,`Year-one power user`,`Lifecycle`,`A year of intense daily use: lots of data and history.`,Z.accountAge(365),Z.organizationSize(20),Z.density(`dense`),Z.activity(`intense`),Z.tags(`lifecycle`,`power-user`)),"dormant-account":Q(`dormant-account`,`Dormant account`,`Lifecycle`,`Active once, untouched for months: stale data everywhere.`,Z.accountAge(240),Z.organizationSize(4),Z.density(`sparse`),Z.activity(`dormant`),Z.tags(`lifecycle`,`stale`)),"read-only-viewer":Q(`read-only-viewer`,`Read-only viewer`,`Roles`,`Can see everything, change nothing.`,Z.organizationAge(60),Z.tenure(14),Z.organizationSize(8),Z.role(`viewer`),Z.tags(`roles`)),"workspace-admin":Q(`workspace-admin`,`Workspace admin`,`Roles`,`Manages people and settings, but not billing.`,Z.organizationAge(90),Z.tenure(60),Z.organizationSize(8),Z.role(`admin`),Z.tags(`roles`)),"workspace-owner":Q(`workspace-owner`,`Workspace owner`,`Roles`,`Created the workspace and can do everything, including billing.`,Z.accountAge(90),Z.organizationSize(8),Z.role(`owner`),Z.tags(`roles`)),"subscription-free":Q(`subscription-free`,`Free plan`,`Billing`,`On the free plan: paid features are locked.`,Z.accountAge(30),Z.subscription(`free`),Z.tags(`billing`)),"subscription-pro":Q(`subscription-pro`,`Pro plan`,`Billing`,`Paying customer with every paid feature unlocked.`,Z.accountAge(30),Z.subscription(`pro`),Z.tags(`billing`)),"subscription-expired":Q(`subscription-expired`,`Expired subscription`,`Billing`,`The paid plan lapsed: data is still there, upgrades are prompted.`,Z.accountAge(400),Z.subscription(`expired`),Z.activity(`low`),Z.tags(`billing`)),offline:Q(`offline`,`Offline`,`Conditions`,`No connection: services routed through the environment fail with an offline error.`,Z.accountAge(30),Z.network(`offline`),Z.tags(`conditions`,`network`)),"slow-network":Q(`slow-network`,`Slow network`,`Conditions`,`Every simulated request takes noticeably longer.`,Z.accountAge(30),Z.network(`slow`,400),Z.tags(`conditions`,`network`)),"large-organization":Q(`large-organization`,`Large organization`,`Scale`,`A 250-person organization with massive data volume.`,Z.accountAge(400),Z.organizationSize(250),Z.density(`massive`),Z.activity(`intense`),Z.subscription(`enterprise`),Z.tags(`scale`)),"quarter-of-history":Q(`quarter-of-history`,`Quarter of history`,`Data`,`Ninety days of steady use with a weekly rhythm: full charts and analytics.`,Z.accountAge(90),Z.history(90),Z.seasonality(`weekly`),Z.organizationSize(10),Z.density(`normal`),Z.activity(`normal`),Z.tags(`data`,`series`)),"launch-spike":Q(`launch-spike`,`Launch spike`,`Data`,`A launch three days ago multiplied traffic by five; it is still settling.`,Z.accountAge(45),Z.history(45),Z.seasonality(`weekly`),Z.spike(3,5,4),Z.organizationSize(10),Z.density(`dense`),Z.activity(`intense`),Z.tags(`data`,`series`,`spike`)),"busy-week":Q(`busy-week`,`Busy week`,`Data`,`Calendars are nearly full this week: few free slots, many conflicts to avoid.`,Z.accountAge(60),Z.history(60),Z.occupancy(.9),Z.organizationSize(12),Z.density(`dense`),Z.activity(`intense`),Z.tags(`data`,`schedule`)),...tn};Object.keys(rn);var an=`[data-py-bottom-nav], [data-tx-bottom-nav], [data-tx-mobile-tabs]`,on=Symbol(`texuli-toast-provider`),sn=Symbol(`texuli-toast-item`),cn=Symbol(`texuli-toast-viewport`);function ln(e){Ge(on,e)}function un(){let e=je(on);if(!e)throw Error(`Toast parts must be used inside Toast.Provider`);return e}function dn(e){Ge(sn,e)}function fn(){let e=je(sn);if(!e)throw Error(`Toast.Title/Description/Action/Close require Toast.Root`);return e}function pn(e){Ge(cn,e)}var mn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`altText`,`children`,`onclick`,`type`,`ref`]),hn=P(`<button><!></button>`);function gn(e,t){L(t,!0);let n=W(t,`type`,3,`button`),r=W(t,`ref`,15,null),i=Ie(t,mn),a=fn();function o(e){t.onclick?.(e),e.defaultPrevented||a.dismiss()}var s=hn();Be(s,()=>({...i,type:n(),class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-action":!0,"aria-label":t.altText,onclick:o}));var c=z(s);we(c,()=>t.children??Te),N(s),B(s,e=>r(e),()=>r()),Y(e,s),J()}var _n=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`onclick`,`type`,`ref`]),vn=P(`<button><!></button>`);function yn(e,t){L(t,!0);let n=W(t,`type`,3,`button`),r=W(t,`ref`,15,null),i=Ie(t,_n),a=Qe(),o=fn();function s(e){t.onclick?.(e),e.defaultPrevented||o.dismiss()}var c=vn();Be(c,e=>({...i,type:n(),class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-close":!0,"aria-label":e,onclick:s}),[()=>i[`aria-label`]??a(`primitives.toast.close.dismiss-notification`,`Dismiss notification`)]);var l=z(c),u=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},d=e=>{var t=Ae(`×`);Y(e,t)};M(l,e=>{t.children?e(u):e(d,-1)}),N(c),B(c,e=>r(e),()=>r()),Y(e,c),J()}var bn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`ref`]),xn=P(`<div><!></div>`);function Sn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,bn),i=fn();var a=xn();Be(a,()=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-description":!0}));var o=z(a),s=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},c=e=>{var t=Ae();R(()=>j(t,i.toast.description)),Y(e,t)};M(o,e=>{t.children?e(s):e(c,-1)}),N(a),B(a,e=>n(e),()=>n()),Y(e,a),J()}function Cn(e,t){L(t,!0);let n=W(t,`label`,3,`Notifications`),r=W(t,`hotkey`,3,`F6`),i=ye(()=>t.manager)??ht(),a=new Set,o=!1,s=null;function c(){if(!o){o=!0;for(let e of a)e(!0)}}function l(){if(o){o=!1;for(let e of a)e(!1)}}let u={manager:i,get label(){return n()},get hotkey(){return r()},pauseAll:c,resumeAll:l,isPaused:()=>o,registerPauser(e){return a.add(e),e(o),()=>{a.delete(e)}},focusRegion(){s?.()},setFocusHandler(e){s=e}};ln(u);let d=0;K(()=>i.subscribe(e=>{let t=[...e].sort((e,t)=>t.createdAt-e.createdAt)[0];if(!(!t||t.createdAt<=d)){d=t.createdAt;try{let e=Ye(typeof document<`u`?document.body:null);if(!e)return;let n=pt(e),r=[t.title,t.description].filter(Boolean).join(`. `);if(!r)return;n.announce(r,{politeness:t.tone===`foreground`?`assertive`:`polite`,immediate:!0})}catch{}}})),K(()=>{let e=Ye(typeof document<`u`?document.body:null);if(!e)return;let t=r(),n=e=>{(e.key===t||e.code===t)&&(t!==`F6`||e.key===`F6`)&&(e.defaultPrevented||(e.preventDefault(),u.focusRegion()))};return e.addEventListener(`keydown`,n,!0),()=>e.removeEventListener(`keydown`,n,!0)}),He(()=>{a.clear(),s=null});var f=A(),p=I(f);we(p,()=>t.children??Te),Y(e,f),J()}var wn=new Set([`$$slots`,`$$events`,`$$legacy`,`toast`,`class`,`children`,`ref`,`onpointerdown`,`onpointermove`,`onpointerup`,`onpointercancel`]),Tn=P(`<li><!></li>`);function En(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,wn),i=un(),a=q(null);K(()=>{n(F(a)??null)});let o=q(0),s=q(!1),c=q(!1);ze(()=>{F(s)||(V(o,t.toast.duration,!0),V(s,!0))});let l=0,u,d=0,f=!1,p=q(0);function m(){u!==void 0&&clearTimeout(u),u=void 0}function h(){m(),i.manager.dismiss(t.toast.id)}dn({get toast(){return t.toast},dismiss:h});function g(){m(),!(F(o)<=0||!Number.isFinite(F(o)))&&(i.isPaused()||(V(c,!0),l=Date.now(),u=setTimeout(()=>{u=void 0,V(c,!1),h()},F(o))))}function _(){F(c)&&(m(),V(o,Math.max(0,F(o)-(Date.now()-l)),!0),V(c,!1))}K(()=>{let e=i.registerPauser(e=>{e?_():g()});return g(),()=>{e(),m()}});function v(e){if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target;t instanceof Element&&t.closest(`button, a, input, textarea, select`)||(f=!0,d=e.clientX,V(p,0),F(a)?.setPointerCapture?.(e.pointerId),_())}function y(e){f&&(V(p,e.clientX-d),F(a)&&F(a).style.setProperty(`translate`,`${F(p)}px 0`))}function b(e){f&&(f=!1,F(a)?.releasePointerCapture?.(e.pointerId),Math.abs(F(p))>64?h():(V(p,0),F(a)&&F(a).style.removeProperty(`translate`),i.isPaused()||g()))}var x=Tn();Be(x,(e,n,i,a,o)=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-root":!0,"data-toast-id":t.toast.id,"data-priority":t.toast.priority,"data-tone":t.toast.tone,...e,onpointerdown:n,onpointermove:i,onpointerup:a,onpointercancel:o}),[()=>$e(`open`),()=>Xe(t.onpointerdown,v),()=>Ze(t.onpointermove,y),()=>Ze(t.onpointerup,b),()=>Ze(t.onpointercancel,b)]);var S=z(x);we(S,()=>t.children??Te),N(x),B(x,e=>V(a,e),()=>F(a)),Y(e,x),J()}var Dn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`ref`]),On=P(`<div><!></div>`);function kn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,Dn),i=fn();var a=On();Be(a,()=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-title":!0}));var o=z(a),s=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},c=e=>{var t=Ae();R(()=>j(t,i.toast.title)),Y(e,t)};M(o,e=>{t.children?e(s):e(c,-1)}),N(a),B(a,e=>n(e),()=>n()),Y(e,a),J()}var An=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`hotkeyLabel`,`children`,`mode`,`container`,`positioned`,`active`,`ref`,`onpointerenter`,`onpointerleave`,`onfocusin`,`onfocusout`]),jn=P(`<span data-tx-toast-hotkey-hint="" class="tx-toast-hotkey-hint"> </span>`),Mn=P(`<section><!> <!></section>`);function Nn(e,t){L(t,!0);let n=W(t,`mode`,3,`top-layer`),r=W(t,`container`,3,null),i=W(t,`positioned`,3,!1),a=W(t,`active`,3,!0),o=W(t,`ref`,15,null),s=Ie(t,An),c=un(),l=q(null);K(()=>{o(F(l)??null)}),pn({element:()=>F(l)}),K(()=>{let e=F(l);if(!e)return;let t=null;try{t=ot().exempt({element:e,label:`toast-region`})}catch{t=null}return c.setFocusHandler(()=>{e.querySelector(`button:not([disabled]), [href], input:not([disabled]), [tabindex]:not([tabindex="-1"])`)?.focus()}),()=>{c.setFocusHandler(null),t?.release()}}),K(()=>{let e=F(l),t=r();if(!e||n()!==`contained`||!t)return;let a=st(e,{target:t}),o=()=>{},s=()=>{};if(!i()){let e=t.ownerDocument.defaultView,n=()=>{s=()=>{},o=ct(t)};if(e&&typeof e.requestAnimationFrame==`function`){let t=e.requestAnimationFrame(n);s=()=>e.cancelAnimationFrame(t)}else{let e=setTimeout(n,0);s=()=>clearTimeout(e)}}return()=>{s(),a.destroy(),o()}}),K(()=>{let e=F(l);if(!e||n()!==`top-layer`||!a())return;try{typeof e.showPopover==`function`&&!e.matches(`:popover-open`)&&e.showPopover()}catch{}let t=e.ownerDocument,r=t=>{let n=t.target;if(n!==e&&n instanceof Element&&!n.hasAttribute(`data-tx-toast-viewport`)&&t.newState===`open`)try{if(!e.matches(`:popover-open`))return;e.hidePopover(),e.showPopover()}catch{}};return t.addEventListener(`toggle`,r,!0),()=>{t.removeEventListener(`toggle`,r,!0);try{typeof e.hidePopover==`function`&&e.matches(`:popover-open`)&&e.hidePopover()}catch{}}});function u(){c.pauseAll()}function d(e){let t=F(l),n=e.relatedTarget;t&&n instanceof Node&&t.contains(n)||c.resumeAll()}function f(){c.pauseAll()}function p(e){let t=F(l),n=e.relatedTarget;t&&n instanceof Node&&t.contains(n)||c.resumeAll()}var m=Mn();Be(m,(e,r,i,a,o)=>({...s,class:typeof t.class==`string`?t.class:void 0,popover:n()===`top-layer`?`manual`:void 0,"data-mode":n(),role:`region`,"aria-label":c.label,"data-tx-toast-viewport":!0,"data-state":e,tabindex:`-1`,onpointerenter:r,onpointerleave:i,onfocusin:a,onfocusout:o}),[()=>c.manager.list().length>0?`visible`:`empty`,()=>Ze(t.onpointerenter,u),()=>Ze(t.onpointerleave,d),()=>Ze(t.onfocusin,f),()=>Ze(t.onfocusout,p)]);var h=z(m),g=e=>{var n=jn(),r=U(n,!0);R(()=>j(r,t.hotkeyLabel)),Y(e,n)};M(h,e=>{t.hotkeyLabel&&e(g)});var _=G(h,2);we(_,()=>t.children??Te),N(m),B(m,e=>V(l,e),()=>F(l)),Y(e,m),J()}var Pn=qe({base:`tx-toast`,variants:{kind:{success:`tx-toast--success`,error:`tx-toast--error`,info:`tx-toast--info`,warning:`tx-toast--warning`}},defaultVariants:{kind:`info`}}),Fn=qe({base:`tx-toaster`,variants:{},defaultVariants:{}}),In=new Set([`$$slots`,`$$events`,`$$legacy`,`label`,`position`,`offset`,`store`,`dismissLabel`,`class`,`mode`,`container`,`positioned`,`onpointerenter`,`onpointerleave`,`onfocusin`,`onfocusout`,`motion`,`ref`]),Ln=P(`<p class="tx-toast__error" role="alert"> </p>`),Rn=P(`<span aria-hidden="true">×</span>`),zn=P(`<span class="tx-toast__icon" aria-hidden="true"> </span> <div class="tx-toast__body"><!> <!> <!> <!></div> <!>`,1),Bn=P(`<ol class="tx-toaster__list" data-tx-toast-list=""></ol>`),Vn=P(`<div><!></div>`);function Hn(e,t){let n=ke();L(t,!0);let r=W(t,`position`,3,`bottom-end`),i=W(t,`mode`,3,`top-layer`),a=W(t,`container`,3,null),o=W(t,`positioned`,3,!1),s=W(t,`ref`,15,null),c=Ie(t,In),l=Je(),u=H(()=>t.label??l(`texuli.toaster.label`,`Notifications`)),d=H(()=>t.dismissLabel??l(`texuli.toaster.dismiss-label`,`Dismiss notification`)),f=ye(()=>t.store)??gt(),p=`toaster:${n}`,m=!1,h=!1;function g(){m||h?f.pause(p):f.resume(p)}function _(){m=!0,g()}function v(){m=!1,g()}function y(){h=!0,g()}function b(e){let t=e.currentTarget,n=e.relatedTarget;t instanceof Node&&n instanceof Node&&t.contains(n)||(h=!1,g())}let x={enter:`rise`,exit:`fade`,layout:!0,duration:`base`},S=q(Ne(f.items().map(e=>({item:e,leaving:!1})))),C=new Map,w=q(null),T=et(),E=nt({motion:()=>t.motion,defaults:x}),D=rt({motion:()=>t.motion,defaults:x,items:()=>Array.from(F(w)?.querySelectorAll(`:scope > [data-toast-id]`)??[],e=>[e.getAttribute(`data-toast-id`)??``,e]),enter:()=>tt(t.motion,x).enter===!1?!1:r().startsWith(`top`)?`block-start`:`block-end`});function O(){return typeof T.reducedMotion==`boolean`?T.reducedMotion:typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches}function ee(){return!O()&&T.level!==`none`&&tt(t.motion,x).exit!==!1}function te(e){let t=C.get(e);t!==void 0&&clearTimeout(t),C.delete(e),V(S,F(S).filter(t=>!(t.leaving&&t.item.id===e)),!0)}function k(e){it().then(()=>{if(!C.has(e))return;let t=F(w)?.querySelector(`:scope > [data-toast-id="${CSS.escape(e)}"]`),n=t?E.exit(t):null;n?n.finished.then(()=>{C.has(e)&&te(e)}):te(e)})}function ne(e){let t=new Set(e.map(e=>e.id)),n=e.map(e=>({item:e,leaving:!1})),r=[];ee()&&F(S).forEach((e,i)=>{if(!t.has(e.item.id)&&(n.splice(Math.min(i,n.length),0,{item:e.item,leaving:!0}),!C.has(e.item.id))){let t=e.item.id;C.set(t,setTimeout(()=>te(t),1200)),r.push(t)}});for(let e of n){if(e.leaving)continue;let t=C.get(e.item.id);t!==void 0&&(clearTimeout(t),C.delete(e.item.id))}V(S,n,!0);for(let e of r)k(e);n.length===0&&(m||h)&&(m=!1,h=!1,g())}K(()=>{let e=f.subscribe(e=>ye(()=>ne(e)));return()=>{e(),f.resume(p);for(let e of C.values())clearTimeout(e);C.clear()}}),ze(()=>{F(S),ye(()=>D.measure())}),K(()=>{F(S),ye(()=>D.play())});let re=H(()=>t.offset===void 0?void 0:typeof t.offset==`number`?`${t.offset}px`:t.offset),ie=H(()=>Ke(Fn(),t.class)),ae={success:`✓`,error:`!`,info:`i`,warning:`!`};function oe(e){f.action(e.id)}Cn(e,{get manager(){return f.manager},get label(){return F(u)},children:(e,n)=>{var l=Vn();Be(l,(e,t,n,r)=>({...c,class:F(ie),"data-tx-toaster":``,onpointerenter:e,onpointerleave:t,onfocusin:n,onfocusout:r,[Pe]:{"--tx-toast-offset":F(re)}}),[()=>at(t.onpointerenter,_),()=>at(t.onpointerleave,v),()=>at(t.onfocusin,y),()=>at(t.onfocusout,b)]);var u=z(l);{let e=H(()=>F(S).length>0);Nn(u,{class:`tx-toaster__viewport`,get"data-position"(){return r()},get mode(){return i()},get container(){return a()},get positioned(){return o()},get active(){return F(e)},children:(e,t)=>{var n=A(),r=I(n),i=e=>{var t=Bn();Le(t,21,()=>F(S),({item:e,leaving:t})=>e.id,(e,t)=>{let n=()=>F(t).item,r=()=>F(t).leaving;{let t=H(()=>({id:n().id,title:n().title,description:n().description??``,duration:0,priority:n().priority,tone:n().tone,createdAt:n().createdAt})),i=H(()=>Pn({kind:n().kind})),a=H(()=>n().pending?`true`:void 0),o=H(()=>n().error?`true`:void 0),s=H(()=>r()?`true`:void 0),c=H(()=>r()?`true`:void 0);En(e,{get toast(){return F(t)},get class(){return F(i)},get"data-kind"(){return n().kind},get"data-pending"(){return F(a)},get"data-error"(){return F(o)},get"data-leaving"(){return F(s)},get"aria-hidden"(){return F(c)},get inert(){return r()},children:(e,t)=>{var r=zn(),i=I(r),a=U(i,!0),o=G(i,2),s=z(o);kn(s,{class:`tx-toast__title`});var c=G(s,2),l=e=>{Sn(e,{class:`tx-toast__description`})};M(c,e=>{n().description&&e(l)});var u=G(c,2),f=e=>{var t=Ln(),r=U(t,!0);R(()=>j(r,n().error)),Y(e,t)};M(u,e=>{n().error&&e(f)});var p=G(u,2),m=e=>{gn(e,{class:`tx-toast__action`,onclick:e=>{e.preventDefault(),oe(n())},children:(e,t)=>{Ue();var r=Ae();R(()=>j(r,n().action.label)),Y(e,r)},$$slots:{default:!0}})};M(p,e=>{n().action&&e(m)}),N(o);var h=G(o,2);{let e=H(()=>`${F(d)}: ${n().title}`);yn(h,{class:`tx-toast__close`,get"aria-label"(){return F(e)},children:(e,t)=>{var n=Rn();Y(e,n)},$$slots:{default:!0}})}R(()=>j(a,ae[n().kind])),Y(e,r)},$$slots:{default:!0}})}}),N(t),B(t,e=>V(w,e),()=>F(w)),Y(e,t)};M(r,e=>{F(S).length>0&&e(i)}),Y(e,n)},$$slots:{default:!0}})}N(l),B(l,e=>s(e),()=>s()),Y(e,l)},$$slots:{default:!0}}),J()}var Un=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`]);function Wn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,Un),i=ut(),a=H(()=>i.mode===`contained`&&t.container===void 0);Hn(e,Me({get mode(){return i.mode},get container(){return i.container},get positioned(){return F(a)}},()=>r,{get ref(){return n()},set ref(e){n(e)}})),J()}function Gn(e){let t={};for(let n of g){let r=e[n]?.value;r&&(t[n]=r)}return Object.keys(t).length?t:null}function Kn(e,t,n=document.documentElement){let r=e.manifest.storage.namespace,i,a=!1,o=!1,s=()=>{let c=e.theme.appearance(),l=e.theme.themes(),u=me(c.theme.value,l.length?l:t),d=Gn(c);if(d&&i===void 0){a||(a=!0,fe(()=>import(`./style-presets-CzynjwRw.js`).then(e=>{i=e},e=>{console.error(`[protoyard/renderer]`,e),i=null}),__vite__mapDeps([0,1,2]),import.meta.url).then(()=>{o||s()}));return}if(d&&i)try{u=i.styledTheme(u,d)}catch(e){console.error(`[protoyard/renderer]`,e)}let f=ge(n,{theme:u,resolvedMode:c.resolvedMode,reducedMotion:c.reducedMotion.value,...c.density?{density:c.density.value}:{}}),p=c.viewport.value;p===`desktop`||p===`custom`?delete n.dataset.pyViewport:n.dataset.pyViewport=p,ve(r,f)};_([n]),s();let c=e.theme.subscribe(()=>{s()});return()=>{o=!0,c()}}var qn={id:`protoyard.player`,slug:`player`,version:`1.0.0`,namespace:`player`,builtAt:`2026-11-02T12:52:54.444Z`,mode:`build`,offline:!0,frameWhenEmbedded:!1},Jn=1e3;async function Yn(e){let t=e.allTables;try{return await e.transaction(`r`,[...t],async()=>{let n=[];for(let r of t)n.push({name:r,rows:await e.table(r).toArray()});return n})}catch(e){throw y(e)}}async function Xn(e,t,n={}){let r=new Set(n.knownTables??e.allTables),i=[],a=[],o=new Map;for(let n of t)r.has(n.name)&&e.hasTable(n.name)?o.set(n.name,[...o.get(n.name)??[],...n.rows]):a.push(n.name);let s=e.allTables.filter(e=>r.has(e));try{await e.transaction(`rw`,s,async()=>{for(let t of s){let n=e.table(t);await n.clear();let r=o.get(t);if(r?.length){for(let e=0;e<r.length;e+=Jn)await n.bulkAdd(r.slice(e,e+Jn));i.push(t)}}})}catch(e){throw y(e)}return{restored:i,skipped:a}}async function Zn(e){let t=e.allTables;try{return await e.transaction(`r`,[...t],async()=>{let n={};for(let r of t)n[r]=await e.table(r).count();return n})}catch(e){throw y(e)}}var Qn=class extends Error{code=`invalid-identity`;issues;constructor(e,t){super(`Invalid ${e}: ${Object.values(t).join(`; `)||`unknown error`}.`),this.name=`IdentityValidationError`,this.issues=t}},$n=[`py_personas`,`py_organizations`,`py_memberships`];function er(e,t,n){let r=t.safeParse(n);if(r.success)return r.data;let i={};for(let t of r.error.issues){let n=t.path.map(String).join(`.`)||e;i[n]??=t.message}throw new Qn(e,i)}function tr(e){let t=()=>e.clock.now().toISOString(),n=()=>e.db.table(`py_personas`),r=()=>e.db.table(`py_organizations`),i=()=>e.db.table(`py_memberships`),a={async putPersona(e){let r=er(`persona`,oe,{...e,id:e.id??s(`user`),joinedAt:e.joinedAt??t()});return await n().put(r),r},async putOrganization(e){let n=er(`organization`,se,{...e,id:e.id??s(`org`),createdAt:e.createdAt??t()});return await r().put(n),n},async putMembership(e){let a=er(`membership`,ae,{...e,id:e.id??s(`mem`),joinedAt:e.joinedAt??t()}),o={};if(await n().get(a.personaId)||(o.personaId=`Unknown persona "${a.personaId}"`),await r().get(a.organizationId)?(await i().where(`personaId`).equals(a.personaId).toArray()).some(e=>e.organizationId===a.organizationId&&e.id!==a.id)&&(o.organizationId=`This persona already belongs to that organization`):o.organizationId=`Unknown organization "${a.organizationId}"`,Object.keys(o).length)throw new Qn(`membership`,o);return await i().put(a),a},getPersona:e=>n().get(e),getOrganization:e=>r().get(e),getMembership:e=>i().get(e),listMemberships(e={}){return(e.personaId===void 0?e.organizationId===void 0?i().toCollection():i().where(`organizationId`).equals(e.organizationId):i().where(`personaId`).equals(e.personaId)).toArray().then(t=>t.filter(t=>(e.personaId===void 0||t.personaId===e.personaId)&&(e.organizationId===void 0||t.organizationId===e.organizationId)).sort((e,t)=>e.joinedAt.localeCompare(t.joinedAt)||e.id.localeCompare(t.id)))},removeMembership:e=>i().delete(e)};return{async write(t,n={}){let r=[...new Set([...$n,...n.tables??[]])];for(let t of r)if(!e.db.hasTable(t))throw Error(`Unknown table "${t}".`);let i=await e.db.transaction(`rw`,r,async()=>t(a));return await e.reloadIdentity(),e.refreshDerived(),i}}}function nr(e){let t=new Set;return{emit(n){for(let r of[...t])try{r(n)}catch(t){e(t)}},subscribe(e){return t.add(e),()=>{t.delete(e)}},clear:()=>t.clear()}}function rr(){let e=Promise.resolve();return function(t){let n=e.then(t,t);return e=n.catch(()=>void 0),n}}var ir=class extends Error{constructor(e){super(e),this.name=`InvalidOverrideError`}};function $(e,t){let n=ar(t);return e.overrides=n,e.refreshDerived(),e.events.overrides.emit(n),e.writeControl({overrides:Object.keys(n).length?n:null})}function ar(e){let t=b.safeParse(e);if(!t.success){let e=t.error.issues[0];throw new ir(`Invalid override${e?` ${e.path.join(`.`)}: ${e.message}`:``}.`)}return or(t.data,e)}function or(e,t){let n={},r=new Set(Object.keys(t.environment??{}));for(let[t,i]of Object.entries(e))if(i!==void 0){if(t===`environment`){let e=Object.fromEntries(Object.entries(i).filter(([e,t])=>t!==void 0&&r.has(e)));if(Object.keys(e).length===0)continue;n[t]=e}else n[t]=i}return n}function sr(e,t){let n={...e};for(let[r,i]of Object.entries(t))i===void 0?delete n[r]:r===`environment`?n.environment={...e.environment,...i}:n[r]=i;return n}function cr(e){return{get:()=>e.overrides,set:async t=>$(e,sr(e.overrides,t)),async clear(t){if(!t)return $(e,{});let n={...e.overrides};for(let e of t)delete n[e];return $(e,n)},subscribe:t=>e.events.overrides.subscribe(t)}}function lr(e){return{get:()=>e.env.get(),set(t){let n={...e.overrides.environment,...t};$(e,{...e.overrides,environment:n}).catch(e.report)},reset(){let{environment:t,...n}=e.overrides;$(e,n).catch(e.report)},isFeatureEnabled:(t,n)=>e.env.isFeatureEnabled(t,n),run:(t,n)=>e.env.run(t,n),subscribe:t=>e.env.subscribe(t)}}var ur=`customThemes`,dr=65536,fr=`protoyard-theme/v1`;function pr(e,t,n){let r=new Set;if(e==null)return r;if(!Array.isArray(e))return n(Error(`Ignoring stored custom themes: expected a list.`)),r;for(let i of e.slice(0,24)){let e=h.safeParse(i);e.success?t.some(t=>t.id===e.data.id)?n(Error(`Ignoring custom theme "${e.data.id}": that id is already in use.`)):(t.push(e.data),r.add(e.data.id)):n(Error(`Ignoring an invalid stored custom theme: ${e.error.message}`))}return r}function mr(e){let t=e.themes,n=()=>t.filter(t=>e.customThemeIds.has(t.id)),r=()=>e.control.setState(ur,n()),i=()=>{e.refreshDerived(),e.events.appearance.emit(e.appearance)},a=async n=>{let a=ue(h,n);if(t.some(e=>e.id===a.id)&&!e.customThemeIds.has(a.id))throw new de({id:`"${a.id}" is a built-in or prototype theme. Pick another id.`});let o=t.findIndex(e=>e.id===a.id);if(o<0&&e.customThemeIds.size>=24)throw new de({form:`You can keep up to 24 custom themes. Delete one first.`});let s=o<0?void 0:t[o];o<0?t.push(a):t[o]=a,e.customThemeIds.add(a.id);try{await r()}catch(n){throw s?t[o]=s:(t.splice(t.indexOf(a),1),e.customThemeIds.delete(a.id)),n}return i(),a};return{ensure:t=>e.ensureTheme(t),isLibrary:t=>e.libraryThemeIds.has(t),customThemes:n,isCustom:t=>e.customThemeIds.has(t),saveCustom:e=>a(e),async removeCustom(n){if(!e.customThemeIds.has(n))throw Error(`"${n}" is not a custom theme.`);let a=t.findIndex(e=>e.id===n),[o]=t.splice(a,1);e.customThemeIds.delete(n);try{await r()}catch(r){throw o&&t.splice(a,0,o),e.customThemeIds.add(n),r}i()},exportTheme(e){let r=n().find(t=>t.id===e)??t.find(t=>t.id===e);if(!r)throw Error(`Unknown theme "${e}".`);return JSON.stringify({format:fr,theme:r},null,2)},async importTheme(e){if(e.length>65536)throw new de({form:`That file is too large for a theme (limit ${dr/1024} KB).`});let t;try{t=JSON.parse(e)}catch{throw new de({form:`That is not valid JSON.`})}let n=typeof t==`object`&&!!t&&t.format===`protoyard-theme/v1`;return a(n?t.theme:t)}}}var hr=e=>e?JSON.stringify([e.persona,e.organization?.id,e.membership?.id,e.role,[...e.capabilities].sort()]):`null`;function gr(){let e=globalThis.matchMedia;return typeof e==`function`?t=>e.call(globalThis,t):void 0}async function _r(e,n,r){let i=r.onError??(e=>{console.error(`[protoyard/runtime]`,e)}),a=r.now??(()=>Date.now()),{db:o,control:s}=n,l=[...r.themes??[]];for(let t of e.themes??[])l.some(e=>e.id===t.id)||l.push(t);let u=await s.readState(),d=pr(u.customThemes,l,i),f={};try{f=ar(u.overrides??{})}catch(e){i(e)}let p={referenceTime:u.activeScenario?.scenario.referenceTime??new Date(a()).toISOString()},m;try{m=t(u.clock??p),m.now().toISOString()}catch(e){i(e),m=t(p)}let g=r.matchMedia??gr(),_=g?.(`(prefers-color-scheme: dark)`),v=g?.(`(prefers-reduced-motion: reduce)`),y=``,b=``,x=``,S=!1,C=It({onError:i}),w=c(r.sleep?{sleep:r.sleep}:{}),T={...w,run:(e,t)=>C.track({kind:`service`,label:e},()=>w.run(e,t))},E=new Set,D=new Map,O=new Set,ee=async e=>{try{let t=await r.resolveTheme(e);if(t){let n=h.parse(t);if(n.id!==e)throw Error(`Theme resolver: got "${n.id}" for "${e}".`);return l.some(t=>t.id===e)||(l.push(n),E.add(e)),l.find(t=>t.id===e)}}catch(e){i(e)}O.add(e)},te,k={definition:e,db:o,control:s,status:n.status,backend:n.backend,options:r,scenarios:Ut(e.scenarios,rn),themes:l,customThemeIds:d,libraryThemeIds:E,policy:ce(e.policy??le),clock:m,env:T,pending:C,now:a,serial:rr(),report:i,active:u.activeScenario??null,overrides:f,actorId:u.actorId??null,organizationId:u.organizationId??null,signedOut:u.signedOut??(!u.activeScenario&&vr(e)),personas:[],organizations:[],memberships:[],preferences:new Map((await s.listPreferences()).map(e=>[e.personaId,e])),principal:null,appearance:void 0,events:{scenario:nr(i),session:nr(i),overrides:nr(i),appearance:nr(i)},async reloadIdentity(){let[e,t,n]=await o.transaction(`r`,[`py_personas`,`py_organizations`,`py_memberships`],()=>Promise.all([o.table(`py_personas`).toArray(),o.table(`py_organizations`).toArray(),o.table(`py_memberships`).toArray()]));k.personas=e,k.organizations=t,k.memberships=n},async ensureTheme(e){let t=l.find(t=>t.id===e);if(t||!r.resolveTheme)return t;let n=D.get(e);return n||(n=C.track({kind:`other`,label:`Loading theme “${e}”…`},()=>ee(e)).finally(()=>D.delete(e)),D.set(e,n)),n},refreshDerived(){k.principal=yr(k);let e=hr(k.principal),t=e!==y;y=e;let n=br(k),a=JSON.stringify(n);a!==x&&(x=a,k.env.set(n)),k.appearance=Cr(k,{prefersDark:_?.matches??!1,prefersReducedMotion:v?.matches??!1});let o=JSON.stringify(k.appearance),s=o!==b;b=o,t&&k.events.session.emit(k.principal),s&&k.events.appearance.emit(k.appearance);let c=Sr(k).value;r.resolveTheme&&!O.has(c)&&!l.some(e=>e.id===c)&&(te=k.ensureTheme(c).then(e=>{e&&k.refreshDerived()}).catch(i))},writeControl:e=>s.writeState(e),setClockSilently(e){S=!0;try{m.setState(e)}finally{S=!1}},dispose(){ne(),_?.removeEventListener(`change`,re),v?.removeEventListener(`change`,re);for(let e of Object.values(k.events))e.clear()}},ne=m.subscribe(e=>{S||s.setState(`clock`,e).catch(i)}),re=()=>k.refreshDerived();return _?.addEventListener(`change`,re),v?.addEventListener(`change`,re),await k.reloadIdentity(),k.refreshDerived(),await te,k}function vr(e){return T.parse(e.auth??{}).signedOutByDefault}function yr(e){if(e.personas.length===0||e.signedOut&&e.overrides.actorId===void 0)return null;let t=e.active?.scenario.actor.id,n=e.overrides.actorId??e.actorId??t,r=e.personas.find(e=>e.id===n)??e.personas.find(e=>e.id===t)??e.personas[0],i=e.memberships.filter(e=>e.personaId===r.id),a=e.overrides.organizationId??e.organizationId??e.active?.scenario.organization.id,o=i.find(e=>e.organizationId===a)??null,s=null;return o?s=e.organizations.find(e=>e.id===o?.organizationId)??null:e.overrides.organizationId?s=e.organizations.find(t=>t.id===e.overrides.organizationId)??null:(o=i[0]??null,s=o?e.organizations.find(e=>e.id===o?.organizationId)??null:null),ie(r,s,o,e.policy,e.overrides.role??null)}function br(e){let t=e.active?.scenario,n=t?.environment??{},r=e.overrides.environment??{},i=e.principal?.organization??null,a=r.subscription??n.subscription??t?.organization.subscription,o={...l,...n,...r,featureFlags:{...t?.organization.featureFlags,...i?.featureFlags,...n.featureFlags,...r.featureFlags}};return a?o.subscription=a:delete o.subscription,o}function xr(e){let t=e.principal?.persona,n=t?e.preferences.get(t.id):void 0;return{...t?.preferences,...n}}function Sr(e){let t=xr(e);return w({override:e.overrides.themeId,preference:t.themeId,scenario:e.active?.scenario.appearance?.themeId},e.definition.manifest.defaultTheme)}function Cr(e,t){let n=e.definition.manifest,r=e.active?.scenario.appearance??{},i=xr(e),a=e.overrides,o=Sr(e);e.themes.length>0&&!e.themes.some(e=>e.id===o.value)&&(o={value:e.themes.some(e=>e.id===n.defaultTheme)?n.defaultTheme:e.themes[0].id,source:`default`});let s=w({override:a.mode,preference:i.mode,scenario:r.mode},n.defaultMode);return{theme:o,mode:s,resolvedMode:s.value===`system`?t.prefersDark?`dark`:`light`:s.value,reducedMotion:w({override:a.reducedMotion,preference:i.reducedMotion,scenario:r.reducedMotion},t.prefersReducedMotion),density:w({override:a.density},e.themes.find(e=>e.id===o.value)?.density??1),...wr(r,a),viewport:w({override:a.viewport,scenario:r.viewport},n.preview.viewport),...Er(n,r,a),layout:Tr(n,r,a)}}function wr(e,t){return Object.fromEntries(g.map(n=>[n,w({override:t[n],scenario:e[n]},null)]))}function Tr(e,t,n){let r=e.preview.layout,i=r?.id??`custom`,a=w({override:n.layout,scenario:t.layout},i);return d(r).includes(a.value)?a:{value:i,source:`default`}}function Er(e,t,n){let i=e.preview,s=w({override:n.shell,scenario:t.shell},i.shell??`auto`),c={value:u(s.value,e.platform),source:s.source},l=i.device&&r(i.device,c.value)?i.device:a(c.value,i.viewport),d=w({override:n.device,scenario:t.device},l);r(d.value,c.value)||(d={value:l,source:`default`});let f=o(d.value),p=w({override:n.orientation,scenario:t.orientation},i.orientation??f.orientation);return!f.rotatable&&p.value!==f.orientation&&(p={value:f.orientation,source:`default`}),{shell:c,device:d,orientation:p}}function Dr(e){return new Qn(`member`,e)}function Or(e){return`${e.normalize(`NFKD`).toLowerCase().replace(/[^a-z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)||`member`}@example.com`}function kr(e,t,n){return e.listMemberships({organizationId:t}).then(e=>e.filter(e=>e.role===`owner`&&e.id!==n).length)}var Ar=`An organization needs at least one owner. Transfer ownership first.`;function jr(e,t){let n=()=>Object.keys(e.policy.definition.roles),r=e=>{if(!n().includes(e))throw Dr({role:`Unknown role "${e}". Roles: ${n().join(`, `)}`})},i=(t,n)=>e.policy.assert(e.principal,t,n);async function a(t){let n=await e.db.table(`py_memberships`).get(t);if(!n)throw Error(`Membership "${t}" was not found.`);return n}function o(e,t){return e.getMembership(t).then(e=>{if(!e)throw Error(`Membership "${t}" was not found.`);return e})}let s=(t,n)=>{let r=e.principal;if(!r?.organization||r.organization.id!==t)throw new re(n,r?.role??null)};return{list(t){let n=t??e.principal?.organization?.id;if(!n)return[];let r=new Map(e.personas.map(e=>[e.id,e]));return e.memberships.filter(e=>e.organizationId===n&&r.has(e.personaId)).sort((e,t)=>e.joinedAt.localeCompare(t.joinedAt)||e.id.localeCompare(t.id)).map(e=>({membership:e,persona:r.get(e.personaId)}))},async invite(n){let a=n.organizationId??e.principal?.organization?.id;a&&s(a,D.invite),i(D.invite,{organizationId:a,role:n.role}),n.role===`owner`&&i(D.transfer,{organizationId:a});let o=ee.safeParse(n);if(!o.success){let e={};for(let t of o.error.issues)e[t.path.map(String).join(`.`)||`member`]??=t.message;throw Dr(e)}let c=o.data;if(r(c.role),!a)throw Dr({organizationId:`No active organization to invite to`});let l=c.email??Or(c.name);if(!E(l))throw Dr({email:`Use a fictional address at example.com`});return e.env.run(`members.invite`,()=>t.write(async t=>{if(!await t.getOrganization(a))throw Dr({organizationId:`Unknown organization "${a}"`});s(a,D.invite);let n=(await e.db.table(`py_personas`).toArray()).find(e=>e.email?.toLowerCase()===l);if(n&&(await t.listMemberships({personaId:n.id,organizationId:a})).length)throw Dr({email:`${l} is already a member`});let r=n??await t.putPersona({name:c.name,email:l,...c.title?{title:c.title}:{},onboardingComplete:!1,summary:`${c.title??`Invited member`}, invited`});return{persona:r,membership:await t.putMembership({personaId:r.id,organizationId:a,role:c.role})}}))},async changeRole(n,c){let l=await a(n);return s(l.organizationId,D.update),i(D.update,{membership:l,role:c}),(c===`owner`||l.role===`owner`)&&i(D.transfer,{membership:l,role:c}),r(c),e.env.run(`members.changeRole`,()=>t.write(async e=>{let t=await o(e,n);if(s(t.organizationId,D.update),t.role===`owner`&&c!==`owner`&&await kr(e,t.organizationId,t.id)===0)throw Dr({role:Ar});return e.putMembership({...t,role:c})}))},async remove(n){let r=await a(n);s(r.organizationId,D.remove),i(D.remove,{membership:r}),r.role===`owner`&&i(D.transfer,{membership:r}),await e.env.run(`members.remove`,()=>t.write(async e=>{let t=await o(e,n);if(s(t.organizationId,D.remove),t.role===`owner`&&await kr(e,t.organizationId,t.id)===0)throw Dr({membership:Ar});await e.removeMembership(t.id)}))},async transferOwnership(n,s={}){let c=await a(n);i(D.transfer,{membership:c});let l=e.principal,u=l?.membership;if(!l||!u||l.role!==`owner`||u.organizationId!==c.organizationId)throw new re(D.transfer,l?.role??null);if(u.id===c.id)throw Dr({membership:`You already own this organization`});let d=s.formerOwnerRole??`admin`;r(d),await e.env.run(`members.transferOwnership`,()=>t.write(async e=>{let t=await o(e,c.id),n=await o(e,u.id);await e.putMembership({...t,role:O}),await e.putMembership({...n,role:d})}))}}}function Mr(e){let t={};for(let n of g)e[n]!==void 0&&Object.assign(t,{[n]:e[n]});return t}var Nr=class extends Error{scenarioId;constructor(e){super(`Unknown scenario "${e}". Check src/scenarios/index.ts and protoyard.json.`),this.name=`UnknownScenarioError`,this.scenarioId=e}},Pr=()=>new Promise(e=>setTimeout(e,0));function Fr(e){let t=e.definition.generatorVersion;return{generatorVersion:3,...t===void 0?{}:{prototypeGeneratorVersion:t}}}function Ir(e,t){return e.generatorVersion!==t.generatorVersion||e.prototypeGeneratorVersion!==t.prototypeGeneratorVersion}function Lr(e){return e.prototypeGeneratorVersion===void 0?`SDK v${e.generatorVersion}`:`SDK v${e.generatorVersion}, prototype v${e.prototypeGeneratorVersion}`}function Rr(e){if(e&&typeof e==`object`&&`id`in e&&typeof e.id==`string`)return e.id}function zr(e,t){return t===e.seed?e:{...e,seed:t}}function Br(e,t,n){let r=[];for(let n of Object.keys(t.tables))e.db.domainTables.includes(n)||r.push({table:n,rowId:`*`,message:`table "${n}" is not declared in database/schema.ts`});let i=e.options.integrity??e.definition.integrity??{};return[...r,...qt(t,{...i,referenceTime:n.referenceTime})]}function Vr(t,r){let i=null,a=null,o=!!(t.options.link?.sandbox&&ne.test(t.options.link.sandbox)),s=null,c=e=>t.scenarios.find(t=>t.id===e),l=null,u=nr(t.report);function f(e,n){if(l=e,e&&n)try{n(e)}catch(e){t.report(e)}u.emit(e)}async function p(e,t,n={}){let r=(t,r,i)=>f({scenarioId:e.id,phase:t,done:r,total:i},n.onProgress);try{await m(e,t,r,n.writeChunkSize)}finally{f(null)}}async function m(e,r,i,a){let o=zr(e,r),c={generateMs:0,validateMs:0,writeMs:0,rows:0};i(`generate`,0,1),await Pr();let l=performance.now(),{generateWorld:u}=t.definition,d=u?await u.call(t.definition,o):await t.definition.generate(await n(o));c.generateMs=performance.now()-l,i(`generate`,1,1),i(`validate`,0,1),await Pr(),l=performance.now();let f=Br(t,d,o);c.validateMs=performance.now()-l;let p=t.options.validation??`throw`;if(f.length&&p!==`off`){let t=new Jt(e.id,f);if(p===`throw`)throw t;console.warn(t.message)}i(`validate`,1,1);let m=t.db,h=[[`py_organizations`,d.organizations],[`py_personas`,d.personas],[`py_memberships`,d.memberships],[`py_events`,(d.events??[]).map(e=>({...e,source:e.source??`seed`}))],...Object.entries(d.tables).filter(([e])=>m.domainTables.includes(e))],g=h.reduce((e,[,t])=>e+t.length,0),_=Math.max(1,a??t.options.writeChunkSize??1e3);c.rows=g,i(`write`,0,g),await Pr(),l=performance.now(),await m.transaction(`rw`,[...m.allTables],async()=>{for(let e of m.allTables)await m.table(e).clear();let e=0;for(let[t,n]of h)for(let r=0;r<n.length;r+=_){let a=n.slice(r,r+_);await m.table(t).bulkAdd(a),e+=a.length,i(`write`,e,g)}}),c.writeMs=performance.now()-l,s={scenarioId:e.id,...c},i(`done`,g,g);let v={scenario:e,seed:r,...Fr(t),loadedAt:new Date(t.now()).toISOString()},y={referenceTime:e.referenceTime,committedOffsetMs:0,previewOffsetMs:0,running:!1},b=vr(t.definition);await t.writeControl({activeScenario:v,clock:y,overrides:null,actorId:e.actor.id,organizationId:e.organization.id,signedOut:b?!0:null,timelineCheckpoint:{committedOffsetMs:0,at:new Date(Date.parse(e.referenceTime)).toISOString()}}),t.active=v,t.overrides={},t.actorId=e.actor.id,t.organizationId=e.organization.id,t.signedOut=b,t.setClockSilently(y),await t.reloadIdentity(),e.appearance.themeId&&await t.ensureTheme(e.appearance.themeId),t.refreshDerived(),t.events.overrides.emit(t.overrides),t.events.scenario.emit(v)}async function h(e,n={}){let a=c(e);if(!a)throw new Nr(e);n.snapshotFirst&&t.active&&await r(`Before loading ${a.name}`),await p(a,n.seed??a.seed,n),i=null}async function _(e){let n=Fr(t),i={generatorVersion:e.generatorVersion,...e.prototypeGeneratorVersion===void 0?{}:{prototypeGeneratorVersion:e.prototypeGeneratorVersion}};if(!Ir(i,n))return;let s={scenario:e.scenario.id,seed:e.seed,stored:i,current:n},l;if(!o)try{l=Rr(await r(`Before refreshing ${e.scenario.name}`))}catch(e){t.report(e),a={...s,status:`kept`,reason:`This data was generated by ${Lr(i)}, the prototype now uses ${Lr(n)}, and a safety snapshot could not be saved, so the data was kept. Reset the scenario to rebuild it.`};return}await p(c(e.scenario.id)??e.scenario,e.seed),a={...s,status:`reseeded`,...l===void 0?{}:{snapshotId:l},reason:`This data was generated by ${Lr(i)} and the prototype now uses ${Lr(n)}, so the scenario was rebuilt${l===void 0?`.`:`. Your previous data is in a safety snapshot.`}`}}return{list:()=>t.scenarios,get:c,active:()=>t.active,pendingLink:()=>i,staleWorld:()=>a,ensureSeeded:()=>t.serial(async()=>{let e=t.options.link??{};if(t.active&&await _(t.active),!t.active){let n=await t.db.table(`py_personas`).count(),r=(e.scenario?c(e.scenario):void 0)??(t.definition.manifest.defaultScenario?c(t.definition.manifest.defaultScenario):void 0)??t.scenarios[0];if(!r)throw Error(`This prototype declares no scenarios; add one in src/scenarios/index.ts.`);if(n>0){let e={scenario:r,seed:r.seed,...Fr(t),loadedAt:new Date(t.now()).toISOString()};await t.writeControl({activeScenario:e}),t.active=e,t.refreshDerived(),t.events.scenario.emit(e)}else{let t=e.scenario===r.id?e.seed:void 0;await h(r.id,t===void 0?{}:{seed:t})}}else if(e.scenario){let n=e.scenario!==t.active.scenario.id||e.seed!==void 0&&e.seed!==t.active.seed;n&&o&&c(e.scenario)&&await h(e.scenario,e.seed===void 0?{}:{seed:e.seed}),i=n&&!(o&&c(e.scenario))?{scenario:e.scenario,...e.seed===void 0?{}:{seed:e.seed},reason:c(e.scenario)?`This browser already has edits for another scenario. Load the linked scenario to replace them.`:`The link points to unknown scenario "${e.scenario}".`}:null}e.actor&&e.actor!==t.principal?.persona.id&&t.personas.some(t=>t.id===e.actor)&&(t.actorId=e.actor,await t.writeControl({actorId:e.actor}),t.refreshDerived());let n=e.theme?await t.ensureTheme(e.theme)!==void 0:!1,r=e.layout&&d(t.definition.manifest.preview.layout).includes(e.layout);(n&&e.theme!==t.overrides.themeId||e.mode&&e.mode!==t.overrides.mode||e.shell&&e.shell!==t.overrides.shell||r&&e.layout!==t.overrides.layout||g.some(n=>e[n]&&e[n]!==t.overrides[n]))&&await $(t,{...t.overrides,...n?{themeId:e.theme}:{},...e.mode?{mode:e.mode}:{},...e.shell?{shell:e.shell}:{},...r?{layout:e.layout}:{},...Mr(e)})}),load:(e,n)=>t.pending.track({kind:`scenario`,label:`Loading scenario “${c(e)?.name??e}”…`},()=>t.serial(()=>h(e,n))),reset:(e={})=>t.pending.track({kind:`scenario`,label:`Resetting scenario…`},()=>t.serial(async()=>{let n=t.active;if(!n)throw Error(`No active scenario to reset. Load one first.`);e.snapshotFirst&&await r(`Before resetting ${n.scenario.name}`),await p(c(n.scenario.id)??n.scenario,n.seed,e)})),advance:r=>t.pending.track({kind:`time`,label:`Advancing time…`},()=>t.serial(async()=>{let i=t.active;if(!i)throw Error(`No active scenario. Load one before advancing time.`);let a=e(r);if(!(a>0))throw RangeError(`advance(): duration must be positive`);let o=t.clock.committed().getTime(),s=new Date(o),c=new Date(o+a),l=0,u=0,d=t.definition.timeline;if(d){let e=await d({...await n(zr(i.scenario,i.seed)),from:s,to:c,read:e=>t.db.rows(e).toArray()}),r=new Map;for(let t of e)r.has(t.id)||r.set(t.id,t);let a=[...r.values()],o=t.db;await o.transaction(`rw`,[...o.allTables],async()=>{let e=await o.table(`py_events`).bulkGet(a.map(e=>e.id)),n=a.filter((t,n)=>e[n]===void 0);u=a.length-n.length;let r=t.definition.applyEvent,i={put:async(e,t)=>{await o.rows(e).put(t)},get:(e,t)=>o.rows(e).get(t),remove:(e,t)=>o.rows(e).delete(t)};n.sort((e,t)=>e.at.localeCompare(t.at)||e.id.localeCompare(t.id));for(let e of n)r&&await r(e,i),await o.table(`py_events`).add({...e,source:e.source??`timeline`});l=n.length})}t.setClockSilently({...t.clock.getState(),committedOffsetMs:t.clock.getState().committedOffsetMs+a});let f=t.clock.getState();return await t.writeControl({clock:f,timelineCheckpoint:{committedOffsetMs:f.committedOffsetMs,at:c.toISOString()}}),l>0&&(await t.reloadIdentity(),t.refreshDerived()),{applied:l,skipped:u}})),subscribe:e=>t.events.scenario.subscribe(e),progress:()=>l,subscribeProgress:e=>u.subscribe(e),lastLoadTimings:()=>s}}function Hr(e){async function t(t=Promise.resolve()){if(e.overrides.actorId!==void 0){let{actorId:n,...r}=e.overrides;await Promise.all([t,$(e,r)])}else e.refreshDerived(),await t}async function n(n,r){if(!e.personas.some(e=>e.id===n))throw Error(`Unknown persona "${n}".`);e.actorId=n,e.signedOut=r;let i=e.memberships.filter(e=>e.personaId===n);i.length&&!i.some(t=>t.organizationId===e.organizationId)&&(e.organizationId=i[0]?.organizationId??e.organizationId),await t(e.writeControl({actorId:n,...e.organizationId?{organizationId:e.organizationId}:{},signedOut:r?!0:null}))}return{principal:()=>e.principal,personas:()=>e.personas,organizations:()=>e.organizations,memberships:()=>e.memberships,switchActor:t=>e.pending.track({kind:`session`,label:`Switching persona…`},()=>n(t,e.signedOut)),signIn:t=>e.pending.track({kind:`session`,label:`Signing in…`},()=>n(t,!1)),signOut:()=>e.pending.track({kind:`session`,label:`Signing out…`},async()=>{e.signedOut=!0,await t(e.writeControl({signedOut:!0}))}),isSignedIn:()=>e.principal!==null,authState:()=>e.principal?`signed-in`:`signed-out`,switchOrganization:t=>e.pending.track({kind:`session`,label:`Switching organization…`},async()=>{if(!e.organizations.some(e=>e.id===t))throw Error(`Unknown organization "${t}".`);e.organizationId=t;let n=e.writeControl({organizationId:t});if(e.overrides.organizationId!==void 0){let{organizationId:t,...r}=e.overrides;await Promise.all([n,$(e,r)])}else e.refreshDerived(),await n}),can:(t,n)=>e.policy.can(e.principal,t,n),assert:(t,n)=>e.policy.assert(e.principal,t,n),async refresh(){await e.reloadIdentity(),e.refreshDerived()},subscribe:t=>e.events.session.subscribe(t)}}function Ur(e){return{themes:()=>e.themes,get:t=>e.themes.find(e=>e.id===t),appearance:()=>e.appearance,async setPreference(t){let n=e.principal?.persona;if(!n)throw Error(`No active persona: load a scenario before saving preferences.`);t.themeId!==void 0&&await e.ensureTheme(t.themeId);let r=await e.control.setPreference(n.id,t);e.preferences.set(n.id,r),e.refreshDerived()},async setOverride(t){t.themeId!==void 0&&await e.ensureTheme(t.themeId);let n={...e.overrides};for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=r;await $(e,n)},async clearOverride(){let{themeId:t,mode:n,reducedMotion:r,density:i,viewport:a,shell:o,device:s,orientation:c,layout:l,...u}=e.overrides;for(let e of g)delete u[e];await $(e,u)},subscribe:t=>e.events.appearance.subscribe(t)}}var Wr=class extends Error{constructor(e){super(e),this.name=`SnapshotImportError`}};function Gr(e){let{tables:t,...n}=e;return n}var Kr=25e4,qr=864e13;function Jr(e){return new Wr(`${e} Nothing was changed.`)}function Yr(e){let t=0;for(let n of e.tables){if(t+=n.rows.length,t>25e4)throw Jr(`Snapshot has more than ${Kr.toLocaleString(`en-US`)} rows.`);n.rows.forEach((e,t)=>{let r=e.id;if(!(typeof r==`string`&&r.length>0&&r.length<=512||typeof r==`number`&&Number.isFinite(r)))throw Jr(`Row ${t+1} of table "${n.name}" has no valid id.`)})}}function Xr(e){let t=Date.parse(e.referenceTime),n=t+e.committedOffsetMs,r=n+e.previewOffsetMs;if(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||Math.abs(n)>qr||Math.abs(r)>qr||e.runningSince!==void 0&&!Number.isFinite(e.runningSince))throw Jr(`Snapshot clock is not a valid point in time.`);return{committedOffsetMs:e.committedOffsetMs,at:new Date(n).toISOString()}}function Zr(e,t,n){return`${e}-${p(t)||`snapshot`}-${n.slice(0,10)}.protoyard.json`}function Qr(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof Blob<`u`&&e instanceof Blob}function $r(e){let t=0;return{tables:e.map(e=>({...e,rows:e.rows.map(e=>{if(!e||typeof e!=`object`)return e;let n=null;for(let[r,i]of Object.entries(e))Qr(i)&&(n??={...e},n[r]=null,t+=1);return n??e})})),excluded:t}}var ei=[`simulatedPassword`];function ti(e,t=ei){let n=0;return{tables:e.map(e=>({...e,rows:e.rows.map(e=>{if(!e||typeof e!=`object`)return e;let r=null;for(let i of t)e[i]!=null&&(r??={...e},r[i]=null,n+=1);return r??e})})),redacted:n}}function ni(e){let t=e.definition.manifest,n=()=>({prototypeId:t.id,schemaVersion:e.db.schemaVersion,tables:e.db.allTables}),r=[];async function i(n={name:`Current world`}){let[r,i]=await Promise.all([Yn(e.db),Zn(e.db)]),{tables:a}=$r(r),o=e.active,c=e.appearance;return{format:x,formatVersion:1,id:s(`snap`),name:n.name.trim().slice(0,120)||`Snapshot`,notes:(n.notes??``).slice(0,2e3),prototypeId:t.id,prototypeVersion:t.version,schemaVersion:e.db.schemaVersion,scenarioId:o?.scenario.id??null,scenarioVersion:o?.scenario.version??null,seed:o?.seed??null,referenceTime:o?.scenario.referenceTime??null,createdAt:new Date(e.now()).toISOString(),actorId:e.principal?.persona.id??e.actorId,organizationId:e.principal?.organization?.id??e.organizationId,...e.signedOut?{signedOut:!0}:{},clock:e.clock.getState(),environment:e.env.get(),overrides:{...e.overrides},appearance:{themeId:c.theme.value,mode:c.mode.value},tables:a,stats:i}}async function a(t,n={tablesRestored:!1}){let i=[];Yr(t);let a=t.scenarioId?e.scenarios.find(e=>e.id===t.scenarioId):void 0;t.scenarioId&&!a&&i.push(`Scenario "${t.scenarioId}" no longer exists; records were restored without it.`);let o=a?{scenario:a,seed:t.seed??a.seed,...Fr(e),loadedAt:t.createdAt}:null,s={};try{s=ar(t.overrides)}catch{i.push(`Snapshot overrides were invalid and were ignored.`)}let c=t.referenceTime??o?.scenario.referenceTime,l=t.clock?{...t.clock,...t.clock.running?{runningSince:e.now()}:{}}:c?{referenceTime:c,committedOffsetMs:0,previewOffsetMs:0,running:!1}:null,u=l?Xr(l):null,d=await Xn(e.db,t.tables,{knownTables:e.db.allTables});n.tablesRestored=!0;for(let e of d.skipped)i.push(`Unknown table "${e}" was skipped.`);t.schemaVersion<e.db.schemaVersion&&i.push(`Snapshot rows use schema v${t.schemaVersion}; they were restored as-is into v${e.db.schemaVersion}.`),await e.writeControl({activeScenario:o,overrides:Object.keys(s).length?s:null,actorId:t.actorId,organizationId:t.organizationId,signedOut:t.signedOut?!0:null,clock:l,timelineCheckpoint:u}),e.active=o,e.overrides=s,e.actorId=t.actorId,e.organizationId=t.organizationId,e.signedOut=t.signedOut===!0,l&&e.setClockSilently(l),await e.reloadIdentity(),e.refreshDerived();let f=t.appearance,p={};return f.themeId&&f.themeId!==e.appearance.theme.value&&(await e.ensureTheme(f.themeId)?p.themeId=f.themeId:i.push(`Theme "${f.themeId}" is not available here; kept the current theme.`)),f.mode&&f.mode!==e.appearance.mode.value&&(p.mode=f.mode),Object.keys(p).length?await $(e,{...e.overrides,...p}):e.events.overrides.emit(e.overrides),e.events.scenario.emit(o),r=i,i}async function o(t){let n=await i(t);return await e.control.putSnapshot(n),Gr(n)}function c(e){let t=v(e,n());if(!t.ok)throw new Wr(t.error);return Yr(t.snapshot),t.snapshot.clock&&Xr(t.snapshot.clock),t}return{list:()=>e.control.listSnapshots(),save:o,build:()=>i(),lastWarnings:()=>r,restore:t=>e.pending.track({kind:`snapshot`,label:`Restoring snapshot…`},()=>e.serial(async()=>{let n=await e.control.getSnapshot(t);if(!n)throw Error(`Snapshot "${t}" was not found.`);await a(n)})),remove:t=>e.control.deleteSnapshot(t),async exportJson(n){let r=n?await e.control.getSnapshot(n):await i();if(!r)throw Error(`Snapshot "${n}" was not found.`);let a={...r,tables:ti(r.tables).tables};return{filename:Zr(t.slug,r.name,r.createdAt),json:`${JSON.stringify(a,null,2)}\n`}},async previewImport(e){let{snapshot:t,warnings:n}=c(e),r={};for(let e of t.tables)r[e.name]=(r[e.name]??0)+e.rows.length;return{snapshot:Gr(t),warnings:n,rowCounts:r}},importJson:(t,n={})=>e.pending.track({kind:`snapshot`,label:n.restore?`Restoring snapshot…`:`Importing snapshot…`},()=>e.serial(async()=>{let{snapshot:i,warnings:o}=c(t),l={...i,id:s(`snap`)};if(await e.control.putSnapshot(l),n.restore){let t={tablesRestored:!1};try{let e=await a(l,t);r=[...new Set([...o,...e])]}catch(n){throw t.tablesRestored||await e.control.deleteSnapshot(l.id).catch(e.report),n}}else r=o;return Gr(l)}))}}function ri(e){return{tables:()=>e.db.allTables,counts:()=>Zn(e.db),async rows(t,n={}){let r=Math.min(Math.max(1,Math.floor(n.limit??50)),500),i=Math.max(0,Math.floor(n.offset??0));return e.db.rows(t).offset(i).limit(r).toArray()}}}async function ii(e,t={}){let n=t.link?.sandbox&&ne.test(t.link.sandbox)?t.link.sandbox:void 0,r=n?Et(e.manifest.storage.namespace,n):e.manifest.storage.namespace,i={manifest:{storage:{...e.manifest.storage,namespace:r}},database:e.database},a=await S(i,{...t.indexedDB?{indexedDB:t.indexedDB}:{},...t.IDBKeyRange?{IDBKeyRange:t.IDBKeyRange}:{},...t.allowMemoryFallback===void 0?{}:{allowMemoryFallback:t.allowMemoryFallback}}),o;try{o=await _r(e,a,t)}catch(e){throw a.db.close(),a.control.close(),e}let s=ni(o),c=Vr(o,e=>s.save({name:e,notes:`Saved automatically before replacing the world.`})),l=tr(o),u=!1,d=()=>{u||(u=!0,o.dispose(),o.db.close(),o.control.close())},f={prototypeId:e.manifest.id,...n?{sandbox:n}:{},manifest:e.manifest,definition:e,db:o.db,scenarios:c,session:Hr(o),identity:l,members:jr(o,l),clock:o.clock,theme:{...Ur(o),...mr(o)},environment:lr(o),snapshots:s,overrides:cr(o),policy:o.policy,data:ri(o),pending:o.pending,storage:()=>({...o.status}),environmentState:()=>o.env.get(),get closed(){return u},async destroy(){await o.serial(async()=>void 0),d(),await C(r,o.backend)},async discardSandbox(){if(!n)throw Error(`This runtime is not running in a sandbox.`);await f.destroy()},close:d};return f}var ai=/^[a-z][a-z0-9-]*$/,oi=/^[A-Za-z0-9_-]{1,64}$/,si=/^[a-z][a-z0-9-]*$/;function ci(e,t){if(!e.startsWith(`#`))return null;let n=e.slice(1).split(`--`);if(n.length<1||n.length>3)return null;let r=n[0];if(!r||!ai.test(r)||!t.scenarios.includes(r))return null;let i=new URLSearchParams({scenario:r}),a=n[1],o=n[2],s,c;return a!==void 0&&(t.personas?.includes(a)&&oi.test(a)?s=a:t.themes?.includes(a)&&si.test(a)&&(c=a)),o!==void 0&&t.themes?.includes(o)&&si.test(o)&&(c=o),s&&i.set(`actor`,s),c&&i.set(`theme`,c),`?${i.toString()}`}function li(e){if(typeof location>`u`)return;let t=ci(location.hash,e);if(t)return history.replaceState(history.state,``,`${location.pathname}${location.search}#/`),t}var ui=P(`<p class="font-mono text-xs text-muted-foreground"> </p>`),di=P(`<p class="mt-3 text-sm text-destructive" role="alert"> </p>`),fi=P(`<!> `,1),pi=P(`<!> <!>`,1),mi=P(`<main class="flex min-h-dvh items-center justify-center bg-background px-4 py-10 text-foreground"><section class="w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-float" aria-labelledby="py-boot-error-title"><div class="flex items-center gap-3"><span class="inline-flex size-10 items-center justify-center rounded-lg bg-destructive/10 text-destructive"><!></span> <div><h1 id="py-boot-error-title" class="text-lg font-semibold"> </h1> <!></div></div> <p class="mt-4 text-sm text-surface-foreground"> </p> <p class="mt-2 text-sm text-muted-foreground"> </p> <!> <div class="mt-6 flex flex-wrap gap-2"><!> <!></div></section></main>`);function hi(e,t){L(t,!0);let n=H(()=>t.error instanceof Error?t.error.message:String(t.error)),r=H(()=>t.error?.code),i=q(!1),a=q(!1),o=q(null);function s(e){return new Promise((t,n)=>{let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??Error(`Could not delete ${e}`)),r.onblocked=()=>n(Error(Tt().boot.otherTab))})}async function c(){if(t.namespace){V(a,!0),V(o,null);try{await s(`protoyard.${t.namespace}.data`),await s(`protoyard.${t.namespace}.control`),await s(`protoyard.${t.namespace}.validation`),location.reload()}catch(e){V(o,e instanceof Error?e.message:String(e),!0),V(a,!1)}}}let l=Tt().boot;var u=mi(),d=z(u),f=z(d),p=z(f),m=z(p);Dt(m,{name:`alert`,class:`size-5`}),N(p);var h=G(p,2),g=z(h),_=U(g,!0),v=G(g,2),y=e=>{var t=ui(),n=U(t,!0);R(()=>j(n,F(r))),Y(e,t)};M(v,e=>{typeof F(r)==`string`&&e(y)}),N(h),N(f);var b=G(f,2),x=U(b,!0),S=G(b,2),C=U(S,!0),w=G(S,2),T=e=>{var t=di(),n=U(t,!0);R(()=>j(n,F(o))),Y(e,t)};M(w,e=>{F(o)&&e(T)});var E=G(w,2),D=z(E);X(D,{type:`button`,size:`sm`,class:`inline-flex min-h-touch items-center gap-2 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground hover:bg-primary-hover sm:min-h-9`,onclick:()=>location.reload(),children:(e,t)=>{var n=fi(),r=I(n);Dt(r,{name:`refresh`});var i=G(r);R(()=>j(i,` ${l.reload??``}`)),Y(e,n)},$$slots:{default:!0}});var O=G(D,2),ee=e=>{var t=A(),n=I(t),r=e=>{var t=pi(),n=I(t);X(n,{type:`button`,variant:`destructive`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md bg-destructive px-4 text-sm font-medium text-destructive-foreground hover:bg-destructive-hover disabled:opacity-60 sm:min-h-9`,get disabled(){return F(a)},get"aria-busy"(){return F(a)},onclick:c,children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,F(a)?l.resetting:l.confirmReset)),Y(e,n)},$$slots:{default:!0}});var r=G(n,2);X(r,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border px-4 text-sm font-medium hover:bg-muted sm:min-h-9`,get disabled(){return F(a)},onclick:()=>V(i,!1),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,l.cancel)),Y(e,n)},$$slots:{default:!0}}),Y(e,t)},o=e=>{X(e,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border px-4 text-sm font-medium hover:bg-muted sm:min-h-9`,onclick:()=>V(i,!0),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,l.reset)),Y(e,n)},$$slots:{default:!0}})};M(n,e=>{F(i)?e(r):e(o,-1)}),Y(e,t)};M(O,e=>{t.namespace&&e(ee)}),N(E),N(d),N(u),R(e=>{j(_,e),j(x,F(n)),j(C,l.explanation)},[()=>wt(l.title,{name:t.name})]),Y(e,u),J()}var gi=[`bottom-left`,`bottom-right`,`top-left`,`top-right`];function _i(e,t,n,r=12){return{left:e.endsWith(`left`)?t.left+r:t.left+t.width-r-n.width,top:e.startsWith(`top`)?t.top+r:t.top+t.height-r-n.height,width:n.width,height:n.height}}function vi(e,t=16){let n=Math.max(2,Math.ceil(e.width/t)+1),r=Math.max(2,Math.ceil(e.height/t)+1),i=[];for(let t=0;t<r;t++)for(let a=0;a<n;a++)i.push([e.left+1+(e.width-2)*a/(n-1),e.top+1+(e.height-2)*t/(r-1)]);return i}function yi(e){let t=gi[0],n=1/0;for(let r of gi){let i=e(r);if(i===0)return r;i<n&&(t=r,n=i)}return t}var bi=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`label`,`[contenteditable]:not([contenteditable="false"])`,`[tabindex]:not([tabindex="-1"])`,`[role="button"]`,`[role="link"]`,`[role="tab"]`,`[role="menuitem"]`,`[role="checkbox"]`,`[role="radio"]`,`[role="switch"]`,`[role="option"]`,`[role="slider"]`,`[role="textbox"]`,`[role="combobox"]`].join(`,`);function xi(e,t,n){for(let r of e.childNodes){if(r.nodeType!==3||!r.textContent?.trim())continue;let i=e.ownerDocument.createRange();if(i.selectNodeContents(r),typeof i.getClientRects!=`function`)return!0;let a=i.getClientRects();if(a.length===0)return!0;for(let e of a)if(t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom)return!0}return!1}function Si(e,t,n){return yi(r=>Ci(_i(r,e,t),n))}function Ci(e,t,n=16){let r=0;for(let[i,a]of vi(e,n)){let e=t(i,a);e&&(e.closest(bi)?r+=100:xi(e,i,a)&&(r+=1))}return r}function wi(e,t,n){return gi.every(r=>Ci(_i(r,e,t),n)>=100)}function Ti(e,t=8){let n={width:20,height:20},r=gi.map(t=>_i(t,e,n,4)),i=e.left+4,a=e.left+e.width-4-20;for(let o of[e.top+e.height-4-20,e.top+4])for(let e=i+t;e<a;e+=t)r.push({left:e,top:o,...n});return r}function Ei(e,t){let n,r=1/0;for(let i of Ti(e)){let e=Ci(i,t,6);if(e===0)return i;e<r&&(n=i,r=e)}return n}var Di=`protoyard:floating`,Oi=[`bottom-right`,`top-right`,`bottom-left`,`top-left`];function ki(e,t,n=8,r=12){let i=Oi.map(n=>_i(n,e,t,r)),a=e.left+r,o=e.left+e.width-r-t.width;for(let s of[e.top+e.height-r-t.height,e.top+r])for(let e=o-n;e>a;e-=n)i.push({left:e,top:s,...t});return i}var Ai=(e,t)=>e.left<t.left+t.width&&t.left<e.left+e.width&&e.top<t.top+t.height&&t.top<e.top+e.height;function ji(e,t,n,r=[]){let i,a=1/0;for(let o of ki(e,t)){let e=Ci(o,n,8)+r.filter(e=>Ai(o,e)).length*100*100;if(e===0)return o;e<a&&(i=o,a=e)}return i}function Mi(e=window){let t=e.innerWidth,n=e.innerHeight,r=e.visualViewport;return{left:r?.offsetLeft??0,top:r?.offsetTop??0,width:r?.width??t,height:r?.height??n}}function Ni(e,t=window){return e?{container:e,origin:{left:e.left,top:e.top}}:{container:Mi(t),origin:{left:0,top:0}}}var Pi=`--py-fixed-right-edge`;function Fi(e=window){let t=e.visualViewport;return t?Math.max(0,Math.round(e.innerWidth-(t.offsetLeft+t.width))):0}function Ii(e=document.documentElement,t=window){let n=``,r=()=>{let r=`${Fi(t)}px`;r!==n&&(n=r,e.style.setProperty(Pi,r))};r();let i=t.visualViewport;return t.addEventListener(`resize`,r),i?.addEventListener(`resize`,r),i?.addEventListener(`scroll`,r),()=>{t.removeEventListener(`resize`,r),i?.removeEventListener(`resize`,r),i?.removeEventListener(`scroll`,r),e.style.removeProperty(Pi)}}function Li(e,t={}){let n,r=``,i,a,o,s=()=>{if(!e.isConnected||typeof document.elementFromPoint!=`function`)return;let n=(t.handle?.()??e).getBoundingClientRect();if(!n.width||!n.height)return;let s=e.getBoundingClientRect(),c=window.innerWidth,l=window.innerHeight,u=Mi(window),d=document.querySelector(`[data-py-demo-badge]`),f=[];if(d){let e=d.getBoundingClientRect();e.width&&e.height&&f.push({left:e.left,top:e.top,width:e.width,height:e.height})}if(u.width<=767){let e=document.querySelector(an);if(e){let t=e.getBoundingClientRect();t.width&&t.height&&f.push({left:t.left,top:t.top,width:t.width,height:t.height})}}let p=document.querySelector(`[data-py-review-overlay]`),m=e.closest(`[data-py-review-root]`),h=(t,n)=>(typeof document.elementsFromPoint==`function`?document.elementsFromPoint(t,n):[document.elementFromPoint(t,n)]).find(t=>t&&!e.contains(t)&&!d?.contains(t)&&!p?.contains(t)&&!m?.contains(t))??null,g={width:Math.min(Math.max(n.width,s.width),u.width-24),height:Math.max(n.height,s.height)},_=e.style.visibility;e.style.visibility=`hidden`;let v;try{v=ji(u,g,h,f)}finally{e.style.visibility=_}if(i&&a&&o){let e={left:a===`right`?u.left+u.width-12-g.width:i.left,top:o===`bottom`?u.top+u.height-12-g.height:i.top,...g},t=e.left>=u.left+12&&e.top>=u.top+12&&e.left+e.width<=u.left+u.width-12&&e.top+e.height<=u.top+u.height-12,n=Ci(e,h,8)+f.filter(t=>Ai(e,t)).length*100*100;t&&n===0&&(v=e)}let y=v.left+v.width/2>u.left+u.width/2,b=v.top+v.height/2>u.top+u.height/2,x=e.style,S=u.width<c||u.height<l||u.left!==0||u.top!==0,C=S&&s.width>n.width+1,w=S||!y?`${Math.round(C?u.left+12:v.left)}px`:`auto`,T=S||!y?`auto`:`${Math.round(u.left+u.width-v.left-v.width)}px`,E=S||!b?`${Math.round(v.top)}px`:`auto`,D=S||!b?`auto`:`${Math.round(u.top+u.height-v.top-v.height)}px`,O=C||S?`left`:y?`right`:`left`,ee=b?`bottom`:`top`,te=S?`top`:ee,k=`${w}|${T}|${E}|${D}|${O}|${ee}`;k!==r&&(r=k,x.position=`fixed`,x.setProperty(`transition`,`none`,`important`),x.left=w,x.right=T,x.top=E,x.bottom=D,e.dataset.pyFloatX=O,e.dataset.pyFloatY=ee,i={left:w===`auto`?u.left+u.width-Number.parseFloat(T)-g.width:Number.parseFloat(w),top:E===`auto`?u.top+u.height-Number.parseFloat(D)-g.height:Number.parseFloat(E),...g},a=O,o=te,window.dispatchEvent(new Event(Di)))},c=e=>typeof requestIdleCallback==`function`?requestIdleCallback(e,{timeout:1e3}):e(),l=()=>{clearTimeout(n),n=setTimeout(()=>c(s),150)};e.style.position=`fixed`,e.style.right=`12px`,e.style.bottom=`12px`,s(),l();let u=typeof MutationObserver>`u`?void 0:new MutationObserver(t=>{t.some(({target:t})=>!e.contains(t))&&l()});u?.observe(document.getElementById(`app`)??document.body,{childList:!0,subtree:!0}),u?.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-py-shell`,`data-py-viewport`]}),window.addEventListener(`resize`,l),window.addEventListener(`hashchange`,l),window.addEventListener(Di,l);let d=window.visualViewport;return d?.addEventListener(`resize`,l),d?.addEventListener(`scroll`,l),{update(){clearTimeout(n),s()},destroy(){clearTimeout(n),u?.disconnect(),window.removeEventListener(`resize`,l),window.removeEventListener(`hashchange`,l),window.removeEventListener(Di,l),d?.removeEventListener(`resize`,l),d?.removeEventListener(`scroll`,l)}}}var Ri=P(`<span class="size-1.5 rounded-full bg-primary" aria-hidden="true"></span>`),zi=P(`<span role="status"> </span>`),Bi=P(`<aside data-py-demo-badge="compact" class="pointer-events-none fixed z-30 flex size-5 select-none"><!> <!></aside>`),Vi=P(`<aside><span class="mr-1 inline-block size-1.5 rounded-full bg-primary align-middle" aria-hidden="true"></span> </aside>`);function Hi(e,t){L(t,!0);let n=q(`bottom-left`),r=q(null),i=q(!1),a=q(void 0),o={width:0,height:0};function s(){let e=F(a)?.closest(`#app`);if(e&&getComputedStyle(e).transform!==`none`){let t=e.getBoundingClientRect();return Ni({left:t.left,top:t.top,width:t.width,height:t.height})}return Ni(null)}function c(){let e=document.documentElement;if(!F(a))return;if(e.hasAttribute(`data-py-shell`)){V(r,null);return}if(F(r)||(o={width:F(a).offsetWidth,height:F(a).offsetHeight}),!o.width||typeof document.elementFromPoint!=`function`)return;let{container:t,origin:c}=s(),l=(e,t)=>{let n=document.elementFromPoint(e,t);return n&&F(a)?.contains(n)?null:n};if(!wi(t,o,l)){V(r,null),V(i,!1),V(n,Si(t,o,l),!0);return}let u=Ei(t,l);V(r,{left:u.left-c.left,top:u.top-c.top,right:u.left-t.left>t.width/2,bottom:u.top-t.top>t.height/2},!0)}Re(()=>{let e,t=e=>typeof requestIdleCallback==`function`?requestIdleCallback(e,{timeout:1e3}):e(),n=()=>{clearTimeout(e),e=setTimeout(()=>t(c),150)};n();let r=new MutationObserver(n);r.observe(document.getElementById(`app`)??document.body,{childList:!0,subtree:!0}),r.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-py-shell`,`data-py-viewport`]});let a=()=>V(i,!1),o=e=>{e.key===`Escape`&&a()};return window.addEventListener(`resize`,n),window.addEventListener(Di,n),window.addEventListener(`hashchange`,n),window.addEventListener(`hashchange`,a),window.addEventListener(`keydown`,o),()=>{window.removeEventListener(`hashchange`,a),window.removeEventListener(`keydown`,o),clearTimeout(e),r.disconnect(),window.removeEventListener(`resize`,n),window.removeEventListener(Di,n),window.removeEventListener(`hashchange`,n)}});let l=Tt().badge;var u=A(),d=I(u),f=e=>{var n=Bi();let o;var s=z(n);{let e=H(()=>wt(l.title,{name:t.name}));X(s,{variant:`ghost`,size:`icon`,type:`button`,class:`pointer-events-auto inline-flex size-5 items-center justify-center rounded-full border border-border bg-elevated/90 shadow-soft backdrop-blur focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,get"aria-expanded"(){return F(i)},get"aria-label"(){return l.text},get title(){return F(e)},onclick:()=>V(i,!F(i)),children:(e,t)=>{var n=Ri();Y(e,n)},$$slots:{default:!0}})}var c=G(s,2),u=e=>{var t=zi(),n=U(t,!0);R(()=>{Oe(t,1,be([`absolute whitespace-nowrap rounded-full border border-border bg-elevated px-2.5 py-1 text-[11px] font-medium text-muted-foreground shadow-soft`,F(r).bottom?`bottom-full mb-1`:`top-full mt-1`,F(r).right?`right-0`:`left-0`])),j(n,l.text)}),Y(e,t)};M(c,e=>{F(i)&&e(u)}),N(n),B(n,e=>V(a,e),()=>F(a)),R(()=>{Fe(n,`aria-label`,l.label),o=We(n,``,o,{left:`${F(r).left??``}px`,top:`${F(r).top??``}px`})}),Y(e,n)},p=e=>{var r=Vi(),i=G(z(r));N(r),B(r,e=>V(a,e),()=>F(a)),R((e,t)=>{Fe(r,`aria-label`,l.label),Fe(r,`data-py-demo-badge`,F(n)),Oe(r,1,e),Fe(r,`title`,t),j(i,` ${l.text??``}`)},[()=>be([`pointer-events-none fixed z-30 select-none whitespace-nowrap rounded-full border border-border bg-elevated px-2.5 py-1 text-[11px] font-medium text-muted-foreground shadow-soft`,F(n).startsWith(`top`)?`top-3`:`bottom-3 pb-safe`,F(n).endsWith(`left`)?`left-3`:`right-[calc(0.75rem+var(--py-fixed-right-edge,0px))]`]),()=>wt(l.title,{name:t.name})]),Y(e,r)};M(d,e=>{F(r)?e(f):e(p,-1)}),Y(e,u),J()}function Ui(e){switch(e.phase){case`generate`:return{label:`Generating the world…`,fraction:null};case`validate`:return{label:`Checking integrity…`,fraction:null};case`write`:{let t=e=>e.toLocaleString(`en-US`);return e.total>0?{label:`Writing ${t(e.done)} of ${t(e.total)} rows…`,fraction:e.done/e.total}:{label:`Writing rows…`,fraction:null}}default:return{label:`Scenario loaded.`,fraction:1}}}var Wi=P(`<!> <p class="sr-only" aria-live="polite" aria-atomic="true" data-py-pending-status=""> </p>`,1);function Gi(e,t){L(t,!0);let n=W(t,`delayMs`,3,150),r=W(t,`announceAfterMs`,3,1e3),i=xt(t.runtime),a=q(t.runtime.scenarios.progress?.()??null);K(()=>t.runtime.scenarios.subscribeProgress?.(e=>V(a,e)));let o=H(()=>i.active||F(a)!==null),s=q(!1),c=q(!1);K(()=>{if(!F(o)){V(s,!1),V(c,!1);return}let e=setTimeout(()=>V(s,!0),n()),t=setTimeout(()=>V(c,!0),r());return()=>{clearTimeout(e),clearTimeout(t)}});let l=H(()=>F(a)?Ui(F(a)):null),u=H(()=>F(l)?.fraction??null),d=H(()=>{if(F(l))return F(l).label;let e=i.operations[0];return e&&e.kind!==`service`?e.label:Tt().pending.working});var f=Wi(),p=I(f),m=e=>{{let t=H(()=>F(u)===null?null:Math.round(F(u)*100));ft(e,{class:`py-pending-bar`,"data-py-pending-bar":!0,size:`sm`,get value(){return F(t)},get ariaLabel(){return F(d)}})}};M(p,e=>{F(s)&&e(m)});var h=G(p,2),g=U(h,!0);R(()=>j(g,F(c)?F(d):``)),Y(e,f),J()}var Ki=P(`<p class="mt-1 text-xs font-medium text-destructive" role="alert"> </p>`),qi=P(`<div role="region" class="relative z-40 border-b border-border bg-accent px-4 py-3 text-sm text-accent-foreground"><div class="mx-auto flex max-w-5xl flex-col gap-3 sm:flex-row sm:items-center"><!> <div class="min-w-0 flex-1"><p><!></p> <p class="text-xs opacity-80"> </p> <!></div> <label class="inline-flex min-h-touch items-center gap-2 text-xs sm:min-h-0"><!> </label> <div class="flex gap-2"><!> <!></div></div></div>`);function Ji(e,t){L(t,!0);function n(){let e=t.runtime.scenarios;return typeof e.pendingLink==`function`?e.pendingLink():null}let r=q(Ne(n())),i=q(!0),a=Tt().linkedScenario,o=Tt().pending.loading,s=q(!1),c=q(null),l=H(()=>F(r)?t.runtime.scenarios.get(F(r).scenario)?.name??F(r).scenario:``);async function u(){if(F(r)){V(s,!0),V(c,null);try{await t.runtime.scenarios.load(F(r).scenario,{...F(r).seed===void 0?{}:{seed:F(r).seed},snapshotFirst:F(i)}),V(r,null)}catch(e){V(c,e instanceof Error?e.message:String(e),!0)}finally{V(s,!1)}}}var d=A(),f=I(d),p=e=>{var t=qi(),n=z(t),d=z(n);Dt(d,{name:`link`,class:`hidden size-4 shrink-0 sm:block`});var f=G(d,2),p=z(f),m=z(p);{let e=H(()=>F(r).seed===void 0?a.body:a.bodyWithSeed),t=H(()=>({scenario:F(l),...F(r).seed===void 0?{}:{seed:F(r).seed}}));Ot(m,{get template(){return F(e)},get values(){return F(t)},strong:[`scenario`]})}N(p);var h=G(p,2),g=U(h,!0),_=G(h,2),v=e=>{var t=Ki(),n=U(t,!0);R(()=>j(n,F(c))),Y(e,t)};M(_,e=>{F(c)&&e(v)}),N(f);var y=G(f,2),b=z(y);dt(b,{get checked(){return F(i)},onCheckedChange:e=>V(i,e===!0)});var x=G(b);N(y);var S=G(y,2),C=z(S);X(C,{type:`button`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md bg-primary px-3 text-sm font-medium text-primary-foreground hover:bg-primary-hover disabled:opacity-60 sm:min-h-8`,get disabled(){return F(s)},get"aria-busy"(){return F(s)},onclick:u,children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,F(s)?o:a.load)),Y(e,n)},$$slots:{default:!0}});var w=G(C,2);X(w,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border bg-surface px-3 text-sm font-medium text-surface-foreground hover:bg-muted sm:min-h-8`,get disabled(){return F(s)},onclick:()=>V(r,null),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,a.keep)),Y(e,n)},$$slots:{default:!0}}),N(S),N(n),N(t),R(()=>{Fe(t,`aria-label`,a.label),j(g,F(r).reason),j(x,` ${a.snapshotFirst??``}`)}),Y(e,t)};M(f,e=>{F(r)&&e(p)}),Y(e,d),J()}var Yi=`default`;function Xi(e){return`protoyard.${e}.frame-return`}function Zi(e,t,n=_e()){try{n?.setItem(Xi(e),t??Yi)}catch{}}function Qi(e,t=_e()){try{let n=t?.getItem(Xi(e)),r=f.safeParse(n);return r.success&&r.data!==`none`?r.data:void 0}catch{return}}function $i(e,t=_e()){try{t?.removeItem(Xi(e))}catch{}}function ea(e){let t=new URL(e,`http://protoyard.local`);return t.searchParams.get(`frame`)===`none`&&t.searchParams.delete(`frame`),t.searchParams.get(`shell`)===`none`&&t.searchParams.delete(`shell`),/^https?:\/\//.test(e)?t.toString():`${t.pathname}${t.search}${t.hash}`}var ta=[`[role="dialog"]`,`[role="alertdialog"]`,`[role="menu"]`,`[role="listbox"]`,`[aria-modal="true"]`,`dialog[open]`].join(`,`);function na(e){if(!(e instanceof Element))return!1;if(e.closest(`input, textarea, select`))return!0;let t=e.closest(`[contenteditable]`);return t!==null&&t.getAttribute(`contenteditable`)!==`false`}function ra(e,t=document){return e.key!==`Escape`||e.defaultPrevented||e.isComposing||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||na(e.target)?!1:![...t.querySelectorAll(ta)].some(e=>e.closest(`[inert], [aria-hidden="true"], [hidden]`)===null)}function ia(e){return e.overrides.get().shell??e.scenarios.active()?.scenario.appearance?.shell??e.manifest.preview.shell??`auto`}function aa(e){return e.manifest.build.frameWhenEmbedded&&ia(e)!==`auto`}function oa(e,t){let{shell:n}=e.theme.appearance();if(n.value!==`none`||n.source!==`override`)return;let s=e.manifest,c=Qi(s.storage.namespace)??e.scenarios.active()?.scenario.appearance?.shell??s.preview.shell??`auto`,l=u(c,s.platform);if(l===`none`)return;let d=s.preview,f=d.device&&r(d.device,l)?d.device:a(l,d.viewport),p=o(f),m=p?i(p,d.orientation??p.orientation):void 0;return jt({shell:l,spec:m,...t})===`none`?void 0:l}async function sa(e,t={}){Zi(e.manifest.storage.namespace,e.overrides.get().shell),t.browser&&document.documentElement.requestFullscreen?.().catch(()=>{}),await e.theme.setOverride({shell:`none`})}async function ca(e){let t=e.manifest.storage.namespace,n=Qi(t);if($i(t),typeof document<`u`&&document.fullscreenElement&&document.exitFullscreen?.().catch(()=>{}),typeof location<`u`){let e=ea(location.href);e!==location.href&&history.replaceState(history.state,``,e)}n?await e.theme.setOverride({shell:n}):await e.overrides.clear([`shell`])}var la=P(`<p data-py-frame-hint="" role="status" class="pointer-events-none fixed top-3 left-1/2 z-[70] -translate-x-1/2 rounded-full bg-zinc-900/85 px-3 py-1 text-xs text-white shadow-sm"> </p>`),ua=P(`<!> <!>`,1);function da(e,t){L(t,!0);let n=q(!0);Re(()=>{let e=setTimeout(()=>V(n,!1),4e3),r=e=>{ra(e)&&(e.preventDefault(),t.onexit())},i=!!document.fullscreenElement,a=()=>{let e=!!document.fullscreenElement;i&&!e&&t.onexit(),i=e};return window.addEventListener(`keydown`,r),document.addEventListener(`fullscreenchange`,a),()=>{clearTimeout(e),window.removeEventListener(`keydown`,r),document.removeEventListener(`fullscreenchange`,a)}});let r=Tt().frame;var i=ua(),a=I(i);X(a,{type:`button`,variant:`ghost`,size:`icon`,"data-py-frame-toggle":!0,get"aria-label"(){return r.exit},"aria-pressed":`true`,get title(){return r.exitHint},class:`pointer-events-none fixed top-2 right-2 z-[70] flex size-8 items-center justify-center rounded-full border border-white/20 bg-zinc-800/90 text-white opacity-0 shadow-sm focus-visible:pointer-events-auto focus-visible:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring dark:bg-zinc-950/90`,get onclick(){return t.onexit},children:(e,t)=>{Dt(e,{name:`shrink`,class:`size-4`})},$$slots:{default:!0}});var o=G(a,2),s=e=>{var t=la(),n=U(t,!0);R(()=>j(n,r.fullScreenNotice)),Y(e,t)};M(o,e=>{F(n)&&e(s)}),Y(e,i),J()}var fa=P(`<!> <span aria-hidden="true"> </span>`,1);function pa(e,t){L(t,!0);let n=W(t,`offset`,3,0),r=Tt().frame;{let i=H(()=>`bottom: calc(100% + ${n()+8}px); right: ${-n()}px`);X(e,{type:`button`,variant:`ghost`,size:`sm`,"data-py-frame-toggle":!0,get"aria-label"(){return r.enter},"aria-pressed":`false`,get title(){return r.enterHint},get style(){return F(i)},class:`pointer-events-auto absolute z-[35] inline-flex h-8 items-center gap-1.5 whitespace-nowrap rounded-full border border-white/20 bg-zinc-800/85 px-3 text-xs font-medium text-white shadow-sm hover:bg-zinc-700/90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring dark:bg-zinc-950/85`,onclick:e=>t.onenter({browser:e.shiftKey}),children:(e,t)=>{var n=fa(),i=I(n);Dt(i,{name:`expand`,class:`size-3.5`});var a=G(i,2),o=U(a,!0);R(()=>j(o,r.enterShort)),Y(e,n)},$$slots:{default:!0}})}J()}var ma=P(`<!> <div data-py-shell-part="stage"><div data-py-shell-part="sizer"><div data-py-shell-part="device"><div data-py-shell-part="screen"><!></div> <!> <!></div></div></div>`,1);function ha(e,t){L(t,!0);let n=St(t.runtime),r=typeof window<`u`&&kt(),a=H(()=>(n.current,r&&!aa(t.runtime))),s=typeof document<`u`&&At(),c=!1,l=q(Ne(typeof window>`u`?0:window.innerWidth)),u=q(void 0),d=q(Ne({width:0,height:0})),f=H(()=>{let e=o(n.current.device.value);return e?i(e,n.current.orientation.value):void 0}),p=H(()=>jt({shell:n.current.shell.value,spec:F(f),windowWidth:F(l),embedded:F(a),cssReady:s})),m=H(()=>F(p)===`none`?void 0:Ft[F(p)]),h=H(()=>F(p)!==`none`&&F(f)!==void 0&&F(m)!==void 0),g=H(()=>F(f)?Pt(F(f),F(m)):void 0),_=H(()=>F(g)?.inset??Mt(F(m))),v=H(()=>F(g)?.safe),y=[`widget-host`,`side-panel`,`extension-popup`],b=H(()=>!y.includes(F(p))),x=q(!1),S=q(!1);K(()=>{F(p),V(x,!1),V(S,!1)});let C=H(()=>F(h)&&F(f)&&F(m)?Nt(F(d),F(f),F(m),F(x)):void 0),w=H(()=>(n.current,oa(t.runtime,{windowWidth:F(l),embedded:F(a),cssReady:s}))),T=H(()=>{if(!F(C))return;let e=(e,t)=>e===0&&t===0?F(C).radius:0;return`${e(F(_).top,F(_).left)}px ${e(F(_).top,F(_).right)}px ${e(F(_).bottom,F(_).right)}px ${e(F(_).bottom,F(_).left)}px`}),E=q(null),D=q(void 0);K(()=>{let e=F(m);if(V(E,null),!e)return;let t=!1;return e.load().then(e=>{t||V(E,e.default)},e=>{console.error(`[protoyard] shell frame failed to load`,e)}),()=>{t=!0}}),K(()=>(F(h)&&F(D)?lt(F(D)):lt(null),()=>lt(null))),K(()=>{s||c||n.current.shell.value===`none`||(c=!0,console.warn(`[protoyard] The "${n.current.shell.value}" shell needs the renderer stylesheet, so the app renders full-bleed. Add \`@import '@protoyard/renderer-svelte/app.css';\` to this prototype's src/app.css.`))}),K(()=>{let e=document.documentElement;return F(h)?e.dataset.pyShell=F(p):delete e.dataset.pyShell,()=>{delete e.dataset.pyShell}}),K(()=>{if(!F(u)||typeof ResizeObserver>`u`)return;let e=new ResizeObserver(([e])=>{e&&V(d,{width:e.contentRect.width,height:e.contentRect.height},!0)});return e.observe(F(u)),()=>e.disconnect()});var O=ma(),ee=I(O),te=e=>{da(e,{onexit:()=>void ca(t.runtime).catch(console.error)})};M(ee,e=>{F(w)&&e(te)});var k=G(ee,2),ne=z(k);let re;var ie=z(ne);let ae;var oe=z(ie);let se;var ce=z(oe);{let e=H(()=>n.current.reducedMotion.value?!0:void 0);_t(ce,{get reducedMotion(){return F(e)},children:(e,n)=>{var r=A(),i=I(r);we(i,()=>t.children),Y(e,r)},$$slots:{default:!0}})}N(oe),B(oe,e=>V(D,e),()=>F(D));var le=G(oe,2),ue=e=>{var n=A(),r=I(n);{let e=H(()=>({name:t.runtime.manifest.name,icon:t.runtime.manifest.icon}));xe(r,()=>F(E),(n,r)=>{r(n,{get spec(){return F(f)},get shell(){return F(p)},get chrome(){return t.runtime.manifest.preview.chrome},get app(){return F(e)},get maximized(){return F(x)},setMaximized:e=>V(x,e,!0),setScreenHidden:e=>V(S,e,!0)})})}Y(e,n)};M(le,e=>{F(C)&&F(E)&&F(f)&&e(ue)});var de=G(le,2),fe=e=>{{let n=H(()=>F(m).bezel??0);pa(e,{get offset(){return F(n)},onenter:e=>void sa(t.runtime,e).catch(console.error)})}};M(de,e=>{F(C)&&F(m)&&!F(x)&&e(fe)}),N(ie),N(ne),N(k),B(k,e=>V(u,e),()=>F(u)),R(()=>{re=We(ne,``,re,{width:F(C)?`${F(C).width*F(C).scale}px`:void 0,height:F(C)?`${F(C).height*F(C).scale}px`:void 0}),Fe(ie,`data-py-maximized`,F(C)&&F(x)?``:void 0),ae=We(ie,``,ae,{"--py-device-radius":F(C)?`${F(C).radius}px`:void 0,width:F(C)?`${F(C).width}px`:void 0,height:F(C)?`${F(C).height}px`:void 0,transform:F(C)&&F(C).scale<1?`scale(${F(C).scale})`:void 0}),Fe(oe,`data-py-portal-root`,F(h)?``:void 0),Fe(oe,`aria-hidden`,F(C)&&F(S)?`true`:void 0),se=We(oe,``,se,{inset:F(C)&&F(b)?`${F(_).top}px ${F(_).right}px ${F(_).bottom}px ${F(_).left}px`:void 0,visibility:F(C)&&F(S)?`hidden`:void 0,"border-radius":F(b)?F(T):void 0,"--py-app-height":F(C)&&F(b)?`${F(C).height-F(_).top-F(_).bottom}px`:void 0,"--py-safe-top":F(C)&&F(v)&&F(b)?`${F(v).top}px`:void 0,"--py-safe-right":F(C)&&F(v)&&F(b)?`${F(v).right}px`:void 0,"--py-safe-bottom":F(C)&&F(v)&&F(b)?`${F(v).bottom}px`:void 0,"--py-safe-left":F(C)&&F(v)&&F(b)?`${F(v).left}px`:void 0,"--tx-safe-top":F(C)&&F(v)&&F(b)?`${F(v).top}px`:void 0,"--tx-safe-right":F(C)&&F(v)&&F(b)?`${F(v).right}px`:void 0,"--tx-safe-bottom":F(C)&&F(v)&&F(b)?`${F(v).bottom}px`:void 0,"--tx-safe-left":F(C)&&F(v)&&F(b)?`${F(v).left}px`:void 0})}),Ve(`innerWidth`,e=>V(l,e,!0)),Y(e,O),J()}var ga=P(`<div role="status" class="relative z-40 flex items-start gap-3 border-b border-border bg-warning px-4 py-2.5 pt-safe text-sm text-warning-foreground"><!> <p class="min-w-0 flex-1"><strong class="font-semibold"> </strong> </p> <!></div>`);function _a(e,t){L(t,!0);let n=q(!1),r=Tt().storage;var i=A(),a=I(i),o=e=>{var i=ga(),a=z(i);Dt(a,{name:`alert`,class:`mt-0.5 size-4 shrink-0`});var o=G(a,2),s=z(o),c=U(s,!0),l=G(s);N(o);var u=G(o,2);X(u,{type:`button`,variant:`ghost`,size:`icon`,class:`-m-1 inline-flex size-11 shrink-0 items-center justify-center rounded-md hover:bg-black/10 sm:size-7`,get"aria-label"(){return r.dismiss},onclick:()=>V(n,!0),children:(e,t)=>{Dt(e,{name:`close`})},$$slots:{default:!0}}),N(i),R(()=>{j(c,r.title),j(l,` ${t.storage.warning??r.body??``}`)}),Y(e,i)};M(a,e=>{F(n)||e(o)}),Y(e,i),J()}var va=P(`<!> <div data-py-scroll-root=""><!></div> <!>`,1),ya=P(`<!> <!> <!> <!> <!>`,1);function ba(e,t){L(t,!0);let n=W(t,`demoBadge`,3,!1),r=W(t,`devtools`,3,!1);bt(t.runtime);let i=t.runtime.storage(),a=xt(t.runtime),o=t.runtime.scenarios,s=typeof o.staleWorld==`function`?o.staleWorld():null;var c=ya(),l=I(c),u=e=>{_a(e,{get storage(){return i}})};M(l,e=>{i.persistent||e(u)});var d=G(l,2);Ji(d,{get runtime(){return t.runtime}});var f=G(d,2),p=e=>{var n=A(),i=I(n);Ce(i,()=>fe(()=>import(`./StaleWorldNotice-BQqYS-Lw.js`),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),null,(e,n)=>{var i=H(()=>{var{default:e}=F(n);return{StaleWorldNotice:e}}),a=H(()=>F(i).StaleWorldNotice),o=A(),c=I(o);xe(c,()=>F(a),(e,n)=>{n(e,{get runtime(){return t.runtime},get stale(){return s},get devtools(){return r()}})}),Y(e,o)}),Y(e,n)};M(f,e=>{s&&e(p)});var m=G(f,2);ha(m,{get runtime(){return t.runtime},children:(e,n)=>{var r=va(),i=I(r);Gi(i,{get runtime(){return t.runtime}});var o=G(i,2),s=z(o);xe(s,()=>t.App,(e,t)=>{t(e,{})}),N(o),Wn(G(o,2),{}),R(()=>Fe(o,`aria-busy`,a.active||void 0)),Y(e,r)},$$slots:{default:!0}});var h=G(m,2),g=e=>{Hi(e,{get name(){return t.runtime.manifest.name}})};M(h,e=>{n()&&e(g)}),Y(e,c),J()}async function xa(e){let{findLibraryThemeMeta:t,loadLibraryTheme:n}=await fe(async()=>{let{findLibraryThemeMeta:e,loadLibraryTheme:t}=await import(`./library-X49Tko4M.js`).then(e=>e.t);return{findLibraryThemeMeta:e,loadLibraryTheme:t}},__vite__mapDeps([16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url);return await t(e)?n(e):void 0}function Sa(e,t){let n=e.manifest,r=t?.namespace&&t.namespace!==n.storage.namespace?t.namespace:void 0,i=t?.frameWhenEmbedded===!0&&!n.build.frameWhenEmbedded;return!r&&!i?e:{...e,manifest:{...n,...r?{storage:{...n.storage,namespace:r}}:{},...i?{build:{...n.build,frameWhenEmbedded:!0}}:{}}}}function Ca(e,t){let n=e.manifest,r=t?.namespace!==void 0&&t.namespace!==n.storage.namespace?m.parse(t.namespace):void 0,i=t?.frameWhenEmbedded!==void 0&&t.frameWhenEmbedded!==n.build.frameWhenEmbedded?t.frameWhenEmbedded:void 0;return r===void 0&&i===void 0?e:{...e,manifest:{...n,...r?{storage:{...n.storage,namespace:r}}:{},...i===void 0?{}:{build:{...n.build,frameWhenEmbedded:i}}}}}async function wa(e){let{App:t,target:n,build:r}=e;try{Ct(e.messages)}catch(t){return Ct(),Ta(e.definition,n,t)}let i;try{i=Ca(Sa(e.definition,qn),r)}catch(t){return Ta(e.definition,n,t)}let a=he(pe,i.themes),o=e.search===void 0?li({scenarios:i.scenarios.map(e=>e.id),personas:i.scenarios.flatMap(e=>e.actor?.id?[e.actor.id]:[]),themes:a.map(e=>e.id)}):void 0,s=new URLSearchParams(e.search??location.search);if(o)for(let[e,t]of new URLSearchParams(o))s.set(e,t);let c=k(s.toString()),l=document.documentElement;delete l.dataset.protoyardReady;let u=[],d=e=>Ta(i,n,e),f=null;try{f=await(e.createRuntime??ii)(i,{themes:a,link:c,resolveTheme:xa});let t=!1,n=f.scenarios.subscribeProgress(e=>{e?.phase===`generate`&&(t=!0)});try{await f.scenarios.ensureSeeded()}finally{n()}performance.mark(`protoyard:world-ready`,{detail:{seeded:t}})}catch(e){return f?.close(),d(e)}let p=f;yt(p),window.__protoyard=p,u.push(Kn(p,a,l)),u.push(Ii());let m=r?.devtools??e.devtools??c.devtools!==!1;n.replaceChildren();let h;try{h=Ee(ba,{target:n,props:{runtime:p,App:t,demoBadge:r?.demoBadge??e.demoBadge??!0,devtools:m}})}catch(e){for(let e of u.reverse())await e();return yt(null),window.__protoyard===p&&delete window.__protoyard,p.close(),d(e)}u.push(()=>Se(h)),await De(),l.dataset.protoyardReady=`1`,performance.mark(`protoyard:ready`);let g;if(m&&new URLSearchParams(e.search??location.search).get(`comments`)===`1`)try{let{mountReview:e}=await fe(async()=>{let{mountReview:e}=await import(`./mount-8dOQyqXG.js`);return{mountReview:e}},__vite__mapDeps([28,20,4,5,29,11,30,10,9,31,32,33,34]),import.meta.url),t=await e({definition:i,runtime:p,root:n,place:Li,devtools:m});g=t.devtoolsTab,u.push(()=>t.destroy())}catch(e){console.error(`[protoyard] review comments failed to load`,e)}if(m)try{let[{mountDevtools:t},{avatarImage:n}]=await Promise.all([fe(()=>import(`./src-_ograGmM.js`),__vite__mapDeps([35,36,23,37,38,39,22,40,41,20,42,43,44,17,45,46,47,48,49,50,21,51,52,53,54,55,8,7,56,4,5,10,9,11,57,58,59,60,18,19,24,25,26,27,61,62,2,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,1,84,85,86,30,31,33,87,88,89,90,91,92,93,94,95,96,97,29,98,99,6,12,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116]),import.meta.url),fe(()=>import(`./avatars-CA9KfGtD.js`).then(e=>e.i),__vite__mapDeps([117,17,118,23,39,36]),import.meta.url)]),r=t({runtime:p,themes:a,avatarImage:n,...e.devtoolsTabs?.length||g?{extraTabs:[...e.devtoolsTabs??[],...g?[g]:[]]}:{}});u.push(()=>r.destroy())}catch(e){console.error(`[protoyard] DevTools failed to load`,e)}return Ea(p),u.push(Da()),l.dataset.pyReady=`true`,{runtime:p,error:null,async destroy(){for(let e of u.reverse())await e();yt(null),window.__protoyard===p&&delete window.__protoyard,delete l.dataset.pyReady,delete l.dataset.protoyardReady,p.close()}}}function Ta(e,t,n){console.error(`[protoyard] boot failed`,n),t.replaceChildren();let r=Ee(hi,{target:t,props:{error:n,namespace:e.manifest.storage.namespace,name:e.manifest.name}});return document.documentElement.dataset.pyReady=`error`,{runtime:null,error:n,destroy:async()=>{await Se(r)}}}async function Ea(e){if(e.storage().backend===`indexeddb`)try{let e=typeof navigator<`u`?navigator.storage:void 0;return e?.persist?await e.persisted?.()?!0:await e.persist():void 0}catch{return}}function Da(){let e=()=>{mt.info(`Update available`,{id:`protoyard-offline-update`,description:`A newer version of this prototype is ready. Your data is kept.`,duration:0,action:{label:`Reload`,onClick:()=>window.__protoyardOffline?.applyUpdate()}})};return window.__protoyardOffline?.updateAvailable&&e(),window.addEventListener(`protoyard:offline-update`,e),()=>window.removeEventListener(`protoyard:offline-update`,e)}var Oa=`/api/comments`,ka=`protoyard.player.index`,Aa=`protoyard.player.active-namespace`,ja=80,Ma=class extends vt{explorations;constructor(e){super(ka,e?{indexedDB:e}:void 0),this.version(1).stores({explorations:`namespace,lastOpened`})}};function Na(e){return e??globalThis.indexedDB}async function Pa(){let e=globalThis.navigator?.storage;if(e?.estimate)try{let t=await e.estimate();return typeof t.usage==`number`?t.usage:void 0}catch{return}}function Fa(e){let t=e.trim(),n=[...t].some(e=>{let t=e.charCodeAt(0);return t<32||t===127});if(!t||t.length>ja||n)throw Error(`keep name must be 1-${ja} printable characters`);return t}function Ia(e){let t=new URLSearchParams(e).get(`keep`);return t===null||t.trim()===``?null:Fa(t)}async function La(e){let t=Fa(e).normalize(`NFKC`).toLowerCase(),n=globalThis.crypto?.subtle;if(!n)throw Error(`keep mode needs Web Crypto (crypto.subtle)`);let r=new Uint8Array(await n.digest(`SHA-256`,new TextEncoder().encode(`protoyard.keep\u0000${t}`)));return`keep-${Array.from(r,e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,26)}`}async function Ra(e,t,n=``){let r=Ia(n);return{identity:t,namespace:r?await La(r):t.namespace,name:r??e.name,keepName:r}}async function za(e){if(!Na(e))throw Error(`IndexedDB is unavailable for the player index`);let t=new Ma(e);return await t.open(),{async list(){return(await t.explorations.orderBy(`lastOpened`).reverse().toArray()).map(e=>({...e,sizeEstimateBytes:e.sizeEstimateBytes??null}))},async put(e){await t.explorations.put(e)},async remove(e){await t.explorations.delete(e)},close(){t.close()}}}async function Ba(e,t){if(!Na(t))return!1;let n=await za(t);try{let t=await Pa();return await n.put({namespace:e.namespace,name:e.name,identitySha256:e.identity.sha256,lastOpened:new Date().toISOString(),...t===void 0?{}:{sizeEstimateBytes:t}}),!0}finally{n.close()}}function Va(e,t=(()=>{try{return globalThis.localStorage}catch{return}})()){try{return t?.setItem(Aa,e),!!t}catch{return!1}}export{wa as a,Oa as i,Ba as n,Ra as r,Va as t};
4
+ `),r=t.length>10?`\n …and ${t.length-10} more`:``;super(`Generator for scenario "${e}" produced ${t.length} integrity violation(s):\n${n}${r}`),this.name=`WorldIntegrityError`,this.scenarioId=e,this.violations=t}},Yt=`2026-03-02T09:00:00.000Z`,Xt=20260302,Z={density:e=>({density:e}),activity:e=>({activity:{level:e}}),role:e=>({actor:{role:e}}),tenure:e=>({actor:{joinedDaysAgo:e}}),organizationAge:e=>({organization:{ageDays:e}}),organizationSize:e=>({organization:{size:e}}),accountAge:e=>({organization:{ageDays:e},actor:{joinedDaysAgo:e}}),onboarding:e=>({actor:{onboardingComplete:e>=1,onboardingProgress:e}}),subscription:e=>({organization:{subscription:e}}),network:(e,t=0)=>({environment:{network:e,latencyMs:t}}),featureFlags:e=>({organization:{featureFlags:e}}),appearance:e=>({appearance:e}),tags:(...e)=>({tags:e}),history:e=>({organization:{ageDays:e},generators:{series:{historyDays:e}}}),seasonality:e=>({generators:{series:{seasonality:e}}}),spike:(e,t,n=3)=>({generators:{series:{spikes:[{daysAgo:e,factor:t,decayDays:n}]}}}),occupancy:e=>({generators:{schedule:{occupancy:e}}})},Zt=`org_0001`,Qt=`user_0001`;function $t(e,t,n,r,i,...a){let o=`journey-${e}`,s=zt({},{id:o,name:t,group:`Journeys`,description:n,seed:Xt,referenceTime:Yt,organization:{id:Zt},actor:{id:Qt,role:i.actor.role}},Z.organizationSize(i.people.min),Z.organizationAge(i.organizationAgeDays),Z.tenure(i.actor.tenureDays),Z.onboarding(+!!i.actor.onboardingComplete),...a,Z.tags(`journey`,e));return{stage:e,presetId:o,name:t,description:n,persona:r,time:{referenceTime:Yt,organizationAgeDays:i.organizationAgeDays,actorTenureDays:i.actor.tenureDays},scenario:s,expect:i}}var en=[$t(`signup`,`Journey: just signed up`,`The account was created a minute ago: one person, an empty workspace, onboarding not started.`,{role:`owner`,summary:`The person who just registered and owns the new workspace.`},{people:{min:1,max:1},actor:{role:`owner`,tenureDays:0,onboardingComplete:!1},organizationAgeDays:0,joinedBeforeActor:0},Z.density(`empty`),Z.activity(`none`)),$t(`invited`,`Journey: invited to a team`,`Accepted an invitation today into a team that has worked here for three months.`,{role:`member`,summary:`A new member who has not finished onboarding yet.`},{people:{min:6,max:6},actor:{role:`member`,tenureDays:0,onboardingComplete:!1},organizationAgeDays:90,joinedBeforeActor:1},Z.density(`normal`),Z.activity(`normal`)),$t(`first-week`,`Journey: first week`,`Seven days after signing up: onboarding done, a small team, the first real records.`,{role:`owner`,summary:`The owner, a week in, still learning the product.`},{people:{min:3,max:3},actor:{role:`owner`,tenureDays:7,onboardingComplete:!0},organizationAgeDays:7,joinedBeforeActor:0},Z.history(7),Z.density(`sparse`),Z.activity(`normal`)),$t(`established`,`Journey: established team`,`Three months of regular use by a team of eight, with a weekly rhythm in its history.`,{role:`owner`,summary:`The owner of a team that uses the product every week.`},{people:{min:8,max:8},actor:{role:`owner`,tenureDays:90,onboardingComplete:!0},organizationAgeDays:90,joinedBeforeActor:0},Z.history(90),Z.seasonality(`weekly`),Z.density(`normal`),Z.activity(`normal`))],tn=Object.fromEntries(en.map(e=>[e.presetId,e.scenario])),nn={seed:Xt,referenceTime:Yt};function Q(e,t,n,r,...i){return zt({},nn,{id:e,name:t,group:n,description:r},...i)}var rn={"brand-new-signup":Q(`brand-new-signup`,`Brand-new signup`,`Lifecycle`,`Signed up a minute ago: empty workspace, onboarding not started.`,Z.accountAge(0),Z.onboarding(0),Z.density(`empty`),Z.activity(`none`),Z.tags(`lifecycle`,`empty-state`)),"onboarding-in-progress":Q(`onboarding-in-progress`,`Onboarding halfway`,`Lifecycle`,`Started onboarding yesterday and stopped halfway through.`,Z.accountAge(1),Z.onboarding(.5),Z.density(`sparse`),Z.activity(`low`),Z.tags(`lifecycle`,`onboarding`)),"first-week":Q(`first-week`,`First week`,`Lifecycle`,`Seven days in: a few records, still learning the product.`,Z.accountAge(7),Z.organizationSize(3),Z.density(`sparse`),Z.activity(`normal`),Z.tags(`lifecycle`)),"active-month":Q(`active-month`,`Day-30 active user`,`Lifecycle`,`A month of regular use by a small team.`,Z.accountAge(30),Z.organizationSize(5),Z.density(`normal`),Z.activity(`normal`),Z.tags(`lifecycle`)),"six-month-new-member":Q(`six-month-new-member`,`New member in a 6-month-old team`,`Lifecycle`,`The organization has six months of history; the actor was invited today.`,Z.organizationAge(180),Z.organizationSize(12),Z.tenure(0),Z.role(`member`),Z.onboarding(0),Z.density(`normal`),Z.activity(`normal`),Z.tags(`lifecycle`,`invited`)),"power-user-year-one":Q(`power-user-year-one`,`Year-one power user`,`Lifecycle`,`A year of intense daily use: lots of data and history.`,Z.accountAge(365),Z.organizationSize(20),Z.density(`dense`),Z.activity(`intense`),Z.tags(`lifecycle`,`power-user`)),"dormant-account":Q(`dormant-account`,`Dormant account`,`Lifecycle`,`Active once, untouched for months: stale data everywhere.`,Z.accountAge(240),Z.organizationSize(4),Z.density(`sparse`),Z.activity(`dormant`),Z.tags(`lifecycle`,`stale`)),"read-only-viewer":Q(`read-only-viewer`,`Read-only viewer`,`Roles`,`Can see everything, change nothing.`,Z.organizationAge(60),Z.tenure(14),Z.organizationSize(8),Z.role(`viewer`),Z.tags(`roles`)),"workspace-admin":Q(`workspace-admin`,`Workspace admin`,`Roles`,`Manages people and settings, but not billing.`,Z.organizationAge(90),Z.tenure(60),Z.organizationSize(8),Z.role(`admin`),Z.tags(`roles`)),"workspace-owner":Q(`workspace-owner`,`Workspace owner`,`Roles`,`Created the workspace and can do everything, including billing.`,Z.accountAge(90),Z.organizationSize(8),Z.role(`owner`),Z.tags(`roles`)),"subscription-free":Q(`subscription-free`,`Free plan`,`Billing`,`On the free plan: paid features are locked.`,Z.accountAge(30),Z.subscription(`free`),Z.tags(`billing`)),"subscription-pro":Q(`subscription-pro`,`Pro plan`,`Billing`,`Paying customer with every paid feature unlocked.`,Z.accountAge(30),Z.subscription(`pro`),Z.tags(`billing`)),"subscription-expired":Q(`subscription-expired`,`Expired subscription`,`Billing`,`The paid plan lapsed: data is still there, upgrades are prompted.`,Z.accountAge(400),Z.subscription(`expired`),Z.activity(`low`),Z.tags(`billing`)),offline:Q(`offline`,`Offline`,`Conditions`,`No connection: services routed through the environment fail with an offline error.`,Z.accountAge(30),Z.network(`offline`),Z.tags(`conditions`,`network`)),"slow-network":Q(`slow-network`,`Slow network`,`Conditions`,`Every simulated request takes noticeably longer.`,Z.accountAge(30),Z.network(`slow`,400),Z.tags(`conditions`,`network`)),"large-organization":Q(`large-organization`,`Large organization`,`Scale`,`A 250-person organization with massive data volume.`,Z.accountAge(400),Z.organizationSize(250),Z.density(`massive`),Z.activity(`intense`),Z.subscription(`enterprise`),Z.tags(`scale`)),"quarter-of-history":Q(`quarter-of-history`,`Quarter of history`,`Data`,`Ninety days of steady use with a weekly rhythm: full charts and analytics.`,Z.accountAge(90),Z.history(90),Z.seasonality(`weekly`),Z.organizationSize(10),Z.density(`normal`),Z.activity(`normal`),Z.tags(`data`,`series`)),"launch-spike":Q(`launch-spike`,`Launch spike`,`Data`,`A launch three days ago multiplied traffic by five; it is still settling.`,Z.accountAge(45),Z.history(45),Z.seasonality(`weekly`),Z.spike(3,5,4),Z.organizationSize(10),Z.density(`dense`),Z.activity(`intense`),Z.tags(`data`,`series`,`spike`)),"busy-week":Q(`busy-week`,`Busy week`,`Data`,`Calendars are nearly full this week: few free slots, many conflicts to avoid.`,Z.accountAge(60),Z.history(60),Z.occupancy(.9),Z.organizationSize(12),Z.density(`dense`),Z.activity(`intense`),Z.tags(`data`,`schedule`)),...tn};Object.keys(rn);var an=`[data-py-bottom-nav], [data-tx-bottom-nav], [data-tx-mobile-tabs]`,on=Symbol(`texuli-toast-provider`),sn=Symbol(`texuli-toast-item`),cn=Symbol(`texuli-toast-viewport`);function ln(e){Ge(on,e)}function un(){let e=je(on);if(!e)throw Error(`Toast parts must be used inside Toast.Provider`);return e}function dn(e){Ge(sn,e)}function fn(){let e=je(sn);if(!e)throw Error(`Toast.Title/Description/Action/Close require Toast.Root`);return e}function pn(e){Ge(cn,e)}var mn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`altText`,`children`,`onclick`,`type`,`ref`]),hn=P(`<button><!></button>`);function gn(e,t){L(t,!0);let n=W(t,`type`,3,`button`),r=W(t,`ref`,15,null),i=Ie(t,mn),a=fn();function o(e){t.onclick?.(e),e.defaultPrevented||a.dismiss()}var s=hn();Be(s,()=>({...i,type:n(),class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-action":!0,"aria-label":t.altText,onclick:o}));var c=z(s);we(c,()=>t.children??Te),N(s),B(s,e=>r(e),()=>r()),Y(e,s),J()}var _n=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`onclick`,`type`,`ref`]),vn=P(`<button><!></button>`);function yn(e,t){L(t,!0);let n=W(t,`type`,3,`button`),r=W(t,`ref`,15,null),i=Ie(t,_n),a=Qe(),o=fn();function s(e){t.onclick?.(e),e.defaultPrevented||o.dismiss()}var c=vn();Be(c,e=>({...i,type:n(),class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-close":!0,"aria-label":e,onclick:s}),[()=>i[`aria-label`]??a(`primitives.toast.close.dismiss-notification`,`Dismiss notification`)]);var l=z(c),u=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},d=e=>{var t=Ae(`×`);Y(e,t)};M(l,e=>{t.children?e(u):e(d,-1)}),N(c),B(c,e=>r(e),()=>r()),Y(e,c),J()}var bn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`ref`]),xn=P(`<div><!></div>`);function Sn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,bn),i=fn();var a=xn();Be(a,()=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-description":!0}));var o=z(a),s=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},c=e=>{var t=Ae();R(()=>j(t,i.toast.description)),Y(e,t)};M(o,e=>{t.children?e(s):e(c,-1)}),N(a),B(a,e=>n(e),()=>n()),Y(e,a),J()}function Cn(e,t){L(t,!0);let n=W(t,`label`,3,`Notifications`),r=W(t,`hotkey`,3,`F6`),i=ye(()=>t.manager)??ht(),a=new Set,o=!1,s=null;function c(){if(!o){o=!0;for(let e of a)e(!0)}}function l(){if(o){o=!1;for(let e of a)e(!1)}}let u={manager:i,get label(){return n()},get hotkey(){return r()},pauseAll:c,resumeAll:l,isPaused:()=>o,registerPauser(e){return a.add(e),e(o),()=>{a.delete(e)}},focusRegion(){s?.()},setFocusHandler(e){s=e}};ln(u);let d=0;K(()=>i.subscribe(e=>{let t=[...e].sort((e,t)=>t.createdAt-e.createdAt)[0];if(!(!t||t.createdAt<=d)){d=t.createdAt;try{let e=Ye(typeof document<`u`?document.body:null);if(!e)return;let n=pt(e),r=[t.title,t.description].filter(Boolean).join(`. `);if(!r)return;n.announce(r,{politeness:t.tone===`foreground`?`assertive`:`polite`,immediate:!0})}catch{}}})),K(()=>{let e=Ye(typeof document<`u`?document.body:null);if(!e)return;let t=r(),n=e=>{(e.key===t||e.code===t)&&(t!==`F6`||e.key===`F6`)&&(e.defaultPrevented||(e.preventDefault(),u.focusRegion()))};return e.addEventListener(`keydown`,n,!0),()=>e.removeEventListener(`keydown`,n,!0)}),He(()=>{a.clear(),s=null});var f=A(),p=I(f);we(p,()=>t.children??Te),Y(e,f),J()}var wn=new Set([`$$slots`,`$$events`,`$$legacy`,`toast`,`class`,`children`,`ref`,`onpointerdown`,`onpointermove`,`onpointerup`,`onpointercancel`]),Tn=P(`<li><!></li>`);function En(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,wn),i=un(),a=q(null);K(()=>{n(F(a)??null)});let o=q(0),s=q(!1),c=q(!1);ze(()=>{F(s)||(V(o,t.toast.duration,!0),V(s,!0))});let l=0,u,d=0,f=!1,p=q(0);function m(){u!==void 0&&clearTimeout(u),u=void 0}function h(){m(),i.manager.dismiss(t.toast.id)}dn({get toast(){return t.toast},dismiss:h});function g(){m(),!(F(o)<=0||!Number.isFinite(F(o)))&&(i.isPaused()||(V(c,!0),l=Date.now(),u=setTimeout(()=>{u=void 0,V(c,!1),h()},F(o))))}function _(){F(c)&&(m(),V(o,Math.max(0,F(o)-(Date.now()-l)),!0),V(c,!1))}K(()=>{let e=i.registerPauser(e=>{e?_():g()});return g(),()=>{e(),m()}});function v(e){if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target;t instanceof Element&&t.closest(`button, a, input, textarea, select`)||(f=!0,d=e.clientX,V(p,0),F(a)?.setPointerCapture?.(e.pointerId),_())}function y(e){f&&(V(p,e.clientX-d),F(a)&&F(a).style.setProperty(`translate`,`${F(p)}px 0`))}function b(e){f&&(f=!1,F(a)?.releasePointerCapture?.(e.pointerId),Math.abs(F(p))>64?h():(V(p,0),F(a)&&F(a).style.removeProperty(`translate`),i.isPaused()||g()))}var x=Tn();Be(x,(e,n,i,a,o)=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-root":!0,"data-toast-id":t.toast.id,"data-priority":t.toast.priority,"data-tone":t.toast.tone,...e,onpointerdown:n,onpointermove:i,onpointerup:a,onpointercancel:o}),[()=>$e(`open`),()=>Xe(t.onpointerdown,v),()=>Ze(t.onpointermove,y),()=>Ze(t.onpointerup,b),()=>Ze(t.onpointercancel,b)]);var S=z(x);we(S,()=>t.children??Te),N(x),B(x,e=>V(a,e),()=>F(a)),Y(e,x),J()}var Dn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`children`,`ref`]),On=P(`<div><!></div>`);function kn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,Dn),i=fn();var a=On();Be(a,()=>({...r,class:typeof t.class==`string`?t.class:void 0,"data-tx-toast-title":!0}));var o=z(a),s=e=>{var n=A(),r=I(n);we(r,()=>t.children),Y(e,n)},c=e=>{var t=Ae();R(()=>j(t,i.toast.title)),Y(e,t)};M(o,e=>{t.children?e(s):e(c,-1)}),N(a),B(a,e=>n(e),()=>n()),Y(e,a),J()}var An=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`hotkeyLabel`,`children`,`mode`,`container`,`positioned`,`active`,`ref`,`onpointerenter`,`onpointerleave`,`onfocusin`,`onfocusout`]),jn=P(`<span data-tx-toast-hotkey-hint="" class="tx-toast-hotkey-hint"> </span>`),Mn=P(`<section><!> <!></section>`);function Nn(e,t){L(t,!0);let n=W(t,`mode`,3,`top-layer`),r=W(t,`container`,3,null),i=W(t,`positioned`,3,!1),a=W(t,`active`,3,!0),o=W(t,`ref`,15,null),s=Ie(t,An),c=un(),l=q(null);K(()=>{o(F(l)??null)}),pn({element:()=>F(l)}),K(()=>{let e=F(l);if(!e)return;let t=null;try{t=ot().exempt({element:e,label:`toast-region`})}catch{t=null}return c.setFocusHandler(()=>{e.querySelector(`button:not([disabled]), [href], input:not([disabled]), [tabindex]:not([tabindex="-1"])`)?.focus()}),()=>{c.setFocusHandler(null),t?.release()}}),K(()=>{let e=F(l),t=r();if(!e||n()!==`contained`||!t)return;let a=st(e,{target:t}),o=()=>{},s=()=>{};if(!i()){let e=t.ownerDocument.defaultView,n=()=>{s=()=>{},o=ct(t)};if(e&&typeof e.requestAnimationFrame==`function`){let t=e.requestAnimationFrame(n);s=()=>e.cancelAnimationFrame(t)}else{let e=setTimeout(n,0);s=()=>clearTimeout(e)}}return()=>{s(),a.destroy(),o()}}),K(()=>{let e=F(l);if(!e||n()!==`top-layer`||!a())return;try{typeof e.showPopover==`function`&&!e.matches(`:popover-open`)&&e.showPopover()}catch{}let t=e.ownerDocument,r=t=>{let n=t.target;if(n!==e&&n instanceof Element&&!n.hasAttribute(`data-tx-toast-viewport`)&&t.newState===`open`)try{if(!e.matches(`:popover-open`))return;e.hidePopover(),e.showPopover()}catch{}};return t.addEventListener(`toggle`,r,!0),()=>{t.removeEventListener(`toggle`,r,!0);try{typeof e.hidePopover==`function`&&e.matches(`:popover-open`)&&e.hidePopover()}catch{}}});function u(){c.pauseAll()}function d(e){let t=F(l),n=e.relatedTarget;t&&n instanceof Node&&t.contains(n)||c.resumeAll()}function f(){c.pauseAll()}function p(e){let t=F(l),n=e.relatedTarget;t&&n instanceof Node&&t.contains(n)||c.resumeAll()}var m=Mn();Be(m,(e,r,i,a,o)=>({...s,class:typeof t.class==`string`?t.class:void 0,popover:n()===`top-layer`?`manual`:void 0,"data-mode":n(),role:`region`,"aria-label":c.label,"data-tx-toast-viewport":!0,"data-state":e,tabindex:`-1`,onpointerenter:r,onpointerleave:i,onfocusin:a,onfocusout:o}),[()=>c.manager.list().length>0?`visible`:`empty`,()=>Ze(t.onpointerenter,u),()=>Ze(t.onpointerleave,d),()=>Ze(t.onfocusin,f),()=>Ze(t.onfocusout,p)]);var h=z(m),g=e=>{var n=jn(),r=U(n,!0);R(()=>j(r,t.hotkeyLabel)),Y(e,n)};M(h,e=>{t.hotkeyLabel&&e(g)});var _=G(h,2);we(_,()=>t.children??Te),N(m),B(m,e=>V(l,e),()=>F(l)),Y(e,m),J()}var Pn=qe({base:`tx-toast`,variants:{kind:{success:`tx-toast--success`,error:`tx-toast--error`,info:`tx-toast--info`,warning:`tx-toast--warning`}},defaultVariants:{kind:`info`}}),Fn=qe({base:`tx-toaster`,variants:{},defaultVariants:{}}),In=new Set([`$$slots`,`$$events`,`$$legacy`,`label`,`position`,`offset`,`store`,`dismissLabel`,`class`,`mode`,`container`,`positioned`,`onpointerenter`,`onpointerleave`,`onfocusin`,`onfocusout`,`motion`,`ref`]),Ln=P(`<p class="tx-toast__error" role="alert"> </p>`),Rn=P(`<span aria-hidden="true">×</span>`),zn=P(`<span class="tx-toast__icon" aria-hidden="true"> </span> <div class="tx-toast__body"><!> <!> <!> <!></div> <!>`,1),Bn=P(`<ol class="tx-toaster__list" data-tx-toast-list=""></ol>`),Vn=P(`<div><!></div>`);function Hn(e,t){let n=ke();L(t,!0);let r=W(t,`position`,3,`bottom-end`),i=W(t,`mode`,3,`top-layer`),a=W(t,`container`,3,null),o=W(t,`positioned`,3,!1),s=W(t,`ref`,15,null),c=Ie(t,In),l=Je(),u=H(()=>t.label??l(`texuli.toaster.label`,`Notifications`)),d=H(()=>t.dismissLabel??l(`texuli.toaster.dismiss-label`,`Dismiss notification`)),f=ye(()=>t.store)??gt(),p=`toaster:${n}`,m=!1,h=!1;function g(){m||h?f.pause(p):f.resume(p)}function _(){m=!0,g()}function v(){m=!1,g()}function y(){h=!0,g()}function b(e){let t=e.currentTarget,n=e.relatedTarget;t instanceof Node&&n instanceof Node&&t.contains(n)||(h=!1,g())}let x={enter:`rise`,exit:`fade`,layout:!0,duration:`base`},S=q(Ne(f.items().map(e=>({item:e,leaving:!1})))),C=new Map,w=q(null),T=et(),E=nt({motion:()=>t.motion,defaults:x}),D=rt({motion:()=>t.motion,defaults:x,items:()=>Array.from(F(w)?.querySelectorAll(`:scope > [data-toast-id]`)??[],e=>[e.getAttribute(`data-toast-id`)??``,e]),enter:()=>tt(t.motion,x).enter===!1?!1:r().startsWith(`top`)?`block-start`:`block-end`});function O(){return typeof T.reducedMotion==`boolean`?T.reducedMotion:typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches}function ee(){return!O()&&T.level!==`none`&&tt(t.motion,x).exit!==!1}function te(e){let t=C.get(e);t!==void 0&&clearTimeout(t),C.delete(e),V(S,F(S).filter(t=>!(t.leaving&&t.item.id===e)),!0)}function k(e){it().then(()=>{if(!C.has(e))return;let t=F(w)?.querySelector(`:scope > [data-toast-id="${CSS.escape(e)}"]`),n=t?E.exit(t):null;n?n.finished.then(()=>{C.has(e)&&te(e)}):te(e)})}function ne(e){let t=new Set(e.map(e=>e.id)),n=e.map(e=>({item:e,leaving:!1})),r=[];ee()&&F(S).forEach((e,i)=>{if(!t.has(e.item.id)&&(n.splice(Math.min(i,n.length),0,{item:e.item,leaving:!0}),!C.has(e.item.id))){let t=e.item.id;C.set(t,setTimeout(()=>te(t),1200)),r.push(t)}});for(let e of n){if(e.leaving)continue;let t=C.get(e.item.id);t!==void 0&&(clearTimeout(t),C.delete(e.item.id))}V(S,n,!0);for(let e of r)k(e);n.length===0&&(m||h)&&(m=!1,h=!1,g())}K(()=>{let e=f.subscribe(e=>ye(()=>ne(e)));return()=>{e(),f.resume(p);for(let e of C.values())clearTimeout(e);C.clear()}}),ze(()=>{F(S),ye(()=>D.measure())}),K(()=>{F(S),ye(()=>D.play())});let re=H(()=>t.offset===void 0?void 0:typeof t.offset==`number`?`${t.offset}px`:t.offset),ie=H(()=>Ke(Fn(),t.class)),ae={success:`✓`,error:`!`,info:`i`,warning:`!`};function oe(e){f.action(e.id)}Cn(e,{get manager(){return f.manager},get label(){return F(u)},children:(e,n)=>{var l=Vn();Be(l,(e,t,n,r)=>({...c,class:F(ie),"data-tx-toaster":``,onpointerenter:e,onpointerleave:t,onfocusin:n,onfocusout:r,[Pe]:{"--tx-toast-offset":F(re)}}),[()=>at(t.onpointerenter,_),()=>at(t.onpointerleave,v),()=>at(t.onfocusin,y),()=>at(t.onfocusout,b)]);var u=z(l);{let e=H(()=>F(S).length>0);Nn(u,{class:`tx-toaster__viewport`,get"data-position"(){return r()},get mode(){return i()},get container(){return a()},get positioned(){return o()},get active(){return F(e)},children:(e,t)=>{var n=A(),r=I(n),i=e=>{var t=Bn();Le(t,21,()=>F(S),({item:e,leaving:t})=>e.id,(e,t)=>{let n=()=>F(t).item,r=()=>F(t).leaving;{let t=H(()=>({id:n().id,title:n().title,description:n().description??``,duration:0,priority:n().priority,tone:n().tone,createdAt:n().createdAt})),i=H(()=>Pn({kind:n().kind})),a=H(()=>n().pending?`true`:void 0),o=H(()=>n().error?`true`:void 0),s=H(()=>r()?`true`:void 0),c=H(()=>r()?`true`:void 0);En(e,{get toast(){return F(t)},get class(){return F(i)},get"data-kind"(){return n().kind},get"data-pending"(){return F(a)},get"data-error"(){return F(o)},get"data-leaving"(){return F(s)},get"aria-hidden"(){return F(c)},get inert(){return r()},children:(e,t)=>{var r=zn(),i=I(r),a=U(i,!0),o=G(i,2),s=z(o);kn(s,{class:`tx-toast__title`});var c=G(s,2),l=e=>{Sn(e,{class:`tx-toast__description`})};M(c,e=>{n().description&&e(l)});var u=G(c,2),f=e=>{var t=Ln(),r=U(t,!0);R(()=>j(r,n().error)),Y(e,t)};M(u,e=>{n().error&&e(f)});var p=G(u,2),m=e=>{gn(e,{class:`tx-toast__action`,onclick:e=>{e.preventDefault(),oe(n())},children:(e,t)=>{Ue();var r=Ae();R(()=>j(r,n().action.label)),Y(e,r)},$$slots:{default:!0}})};M(p,e=>{n().action&&e(m)}),N(o);var h=G(o,2);{let e=H(()=>`${F(d)}: ${n().title}`);yn(h,{class:`tx-toast__close`,get"aria-label"(){return F(e)},children:(e,t)=>{var n=Rn();Y(e,n)},$$slots:{default:!0}})}R(()=>j(a,ae[n().kind])),Y(e,r)},$$slots:{default:!0}})}}),N(t),B(t,e=>V(w,e),()=>F(w)),Y(e,t)};M(r,e=>{F(S).length>0&&e(i)}),Y(e,n)},$$slots:{default:!0}})}N(l),B(l,e=>s(e),()=>s()),Y(e,l)},$$slots:{default:!0}}),J()}var Un=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`]);function Wn(e,t){L(t,!0);let n=W(t,`ref`,15,null),r=Ie(t,Un),i=ut(),a=H(()=>i.mode===`contained`&&t.container===void 0);Hn(e,Me({get mode(){return i.mode},get container(){return i.container},get positioned(){return F(a)}},()=>r,{get ref(){return n()},set ref(e){n(e)}})),J()}function Gn(e){let t={};for(let n of g){let r=e[n]?.value;r&&(t[n]=r)}return Object.keys(t).length?t:null}function Kn(e,t,n=document.documentElement){let r=e.manifest.storage.namespace,i,a=!1,o=!1,s=()=>{let c=e.theme.appearance(),l=e.theme.themes(),u=me(c.theme.value,l.length?l:t),d=Gn(c);if(d&&i===void 0){a||(a=!0,fe(()=>import(`./style-presets-CzynjwRw.js`).then(e=>{i=e},e=>{console.error(`[protoyard/renderer]`,e),i=null}),__vite__mapDeps([0,1,2]),import.meta.url).then(()=>{o||s()}));return}if(d&&i)try{u=i.styledTheme(u,d)}catch(e){console.error(`[protoyard/renderer]`,e)}let f=ge(n,{theme:u,resolvedMode:c.resolvedMode,reducedMotion:c.reducedMotion.value,...c.density?{density:c.density.value}:{}}),p=c.viewport.value;p===`desktop`||p===`custom`?delete n.dataset.pyViewport:n.dataset.pyViewport=p,ve(r,f)};_([n]),s();let c=e.theme.subscribe(()=>{s()});return()=>{o=!0,c()}}var qn={id:`protoyard.player`,slug:`player`,version:`1.0.0`,namespace:`player`,builtAt:`2026-11-04T01:51:40.437Z`,mode:`build`,offline:!0,frameWhenEmbedded:!1},Jn=1e3;async function Yn(e){let t=e.allTables;try{return await e.transaction(`r`,[...t],async()=>{let n=[];for(let r of t)n.push({name:r,rows:await e.table(r).toArray()});return n})}catch(e){throw y(e)}}async function Xn(e,t,n={}){let r=new Set(n.knownTables??e.allTables),i=[],a=[],o=new Map;for(let n of t)r.has(n.name)&&e.hasTable(n.name)?o.set(n.name,[...o.get(n.name)??[],...n.rows]):a.push(n.name);let s=e.allTables.filter(e=>r.has(e));try{await e.transaction(`rw`,s,async()=>{for(let t of s){let n=e.table(t);await n.clear();let r=o.get(t);if(r?.length){for(let e=0;e<r.length;e+=Jn)await n.bulkAdd(r.slice(e,e+Jn));i.push(t)}}})}catch(e){throw y(e)}return{restored:i,skipped:a}}async function Zn(e){let t=e.allTables;try{return await e.transaction(`r`,[...t],async()=>{let n={};for(let r of t)n[r]=await e.table(r).count();return n})}catch(e){throw y(e)}}var Qn=class extends Error{code=`invalid-identity`;issues;constructor(e,t){super(`Invalid ${e}: ${Object.values(t).join(`; `)||`unknown error`}.`),this.name=`IdentityValidationError`,this.issues=t}},$n=[`py_personas`,`py_organizations`,`py_memberships`];function er(e,t,n){let r=t.safeParse(n);if(r.success)return r.data;let i={};for(let t of r.error.issues){let n=t.path.map(String).join(`.`)||e;i[n]??=t.message}throw new Qn(e,i)}function tr(e){let t=()=>e.clock.now().toISOString(),n=()=>e.db.table(`py_personas`),r=()=>e.db.table(`py_organizations`),i=()=>e.db.table(`py_memberships`),a={async putPersona(e){let r=er(`persona`,oe,{...e,id:e.id??s(`user`),joinedAt:e.joinedAt??t()});return await n().put(r),r},async putOrganization(e){let n=er(`organization`,se,{...e,id:e.id??s(`org`),createdAt:e.createdAt??t()});return await r().put(n),n},async putMembership(e){let a=er(`membership`,ae,{...e,id:e.id??s(`mem`),joinedAt:e.joinedAt??t()}),o={};if(await n().get(a.personaId)||(o.personaId=`Unknown persona "${a.personaId}"`),await r().get(a.organizationId)?(await i().where(`personaId`).equals(a.personaId).toArray()).some(e=>e.organizationId===a.organizationId&&e.id!==a.id)&&(o.organizationId=`This persona already belongs to that organization`):o.organizationId=`Unknown organization "${a.organizationId}"`,Object.keys(o).length)throw new Qn(`membership`,o);return await i().put(a),a},getPersona:e=>n().get(e),getOrganization:e=>r().get(e),getMembership:e=>i().get(e),listMemberships(e={}){return(e.personaId===void 0?e.organizationId===void 0?i().toCollection():i().where(`organizationId`).equals(e.organizationId):i().where(`personaId`).equals(e.personaId)).toArray().then(t=>t.filter(t=>(e.personaId===void 0||t.personaId===e.personaId)&&(e.organizationId===void 0||t.organizationId===e.organizationId)).sort((e,t)=>e.joinedAt.localeCompare(t.joinedAt)||e.id.localeCompare(t.id)))},removeMembership:e=>i().delete(e)};return{async write(t,n={}){let r=[...new Set([...$n,...n.tables??[]])];for(let t of r)if(!e.db.hasTable(t))throw Error(`Unknown table "${t}".`);let i=await e.db.transaction(`rw`,r,async()=>t(a));return await e.reloadIdentity(),e.refreshDerived(),i}}}function nr(e){let t=new Set;return{emit(n){for(let r of[...t])try{r(n)}catch(t){e(t)}},subscribe(e){return t.add(e),()=>{t.delete(e)}},clear:()=>t.clear()}}function rr(){let e=Promise.resolve();return function(t){let n=e.then(t,t);return e=n.catch(()=>void 0),n}}var ir=class extends Error{constructor(e){super(e),this.name=`InvalidOverrideError`}};function $(e,t){let n=ar(t);return e.overrides=n,e.refreshDerived(),e.events.overrides.emit(n),e.writeControl({overrides:Object.keys(n).length?n:null})}function ar(e){let t=b.safeParse(e);if(!t.success){let e=t.error.issues[0];throw new ir(`Invalid override${e?` ${e.path.join(`.`)}: ${e.message}`:``}.`)}return or(t.data,e)}function or(e,t){let n={},r=new Set(Object.keys(t.environment??{}));for(let[t,i]of Object.entries(e))if(i!==void 0){if(t===`environment`){let e=Object.fromEntries(Object.entries(i).filter(([e,t])=>t!==void 0&&r.has(e)));if(Object.keys(e).length===0)continue;n[t]=e}else n[t]=i}return n}function sr(e,t){let n={...e};for(let[r,i]of Object.entries(t))i===void 0?delete n[r]:r===`environment`?n.environment={...e.environment,...i}:n[r]=i;return n}function cr(e){return{get:()=>e.overrides,set:async t=>$(e,sr(e.overrides,t)),async clear(t){if(!t)return $(e,{});let n={...e.overrides};for(let e of t)delete n[e];return $(e,n)},subscribe:t=>e.events.overrides.subscribe(t)}}function lr(e){return{get:()=>e.env.get(),set(t){let n={...e.overrides.environment,...t};$(e,{...e.overrides,environment:n}).catch(e.report)},reset(){let{environment:t,...n}=e.overrides;$(e,n).catch(e.report)},isFeatureEnabled:(t,n)=>e.env.isFeatureEnabled(t,n),run:(t,n)=>e.env.run(t,n),subscribe:t=>e.env.subscribe(t)}}var ur=`customThemes`,dr=65536,fr=`protoyard-theme/v1`;function pr(e,t,n){let r=new Set;if(e==null)return r;if(!Array.isArray(e))return n(Error(`Ignoring stored custom themes: expected a list.`)),r;for(let i of e.slice(0,24)){let e=h.safeParse(i);e.success?t.some(t=>t.id===e.data.id)?n(Error(`Ignoring custom theme "${e.data.id}": that id is already in use.`)):(t.push(e.data),r.add(e.data.id)):n(Error(`Ignoring an invalid stored custom theme: ${e.error.message}`))}return r}function mr(e){let t=e.themes,n=()=>t.filter(t=>e.customThemeIds.has(t.id)),r=()=>e.control.setState(ur,n()),i=()=>{e.refreshDerived(),e.events.appearance.emit(e.appearance)},a=async n=>{let a=ue(h,n);if(t.some(e=>e.id===a.id)&&!e.customThemeIds.has(a.id))throw new de({id:`"${a.id}" is a built-in or prototype theme. Pick another id.`});let o=t.findIndex(e=>e.id===a.id);if(o<0&&e.customThemeIds.size>=24)throw new de({form:`You can keep up to 24 custom themes. Delete one first.`});let s=o<0?void 0:t[o];o<0?t.push(a):t[o]=a,e.customThemeIds.add(a.id);try{await r()}catch(n){throw s?t[o]=s:(t.splice(t.indexOf(a),1),e.customThemeIds.delete(a.id)),n}return i(),a};return{ensure:t=>e.ensureTheme(t),isLibrary:t=>e.libraryThemeIds.has(t),customThemes:n,isCustom:t=>e.customThemeIds.has(t),saveCustom:e=>a(e),async removeCustom(n){if(!e.customThemeIds.has(n))throw Error(`"${n}" is not a custom theme.`);let a=t.findIndex(e=>e.id===n),[o]=t.splice(a,1);e.customThemeIds.delete(n);try{await r()}catch(r){throw o&&t.splice(a,0,o),e.customThemeIds.add(n),r}i()},exportTheme(e){let r=n().find(t=>t.id===e)??t.find(t=>t.id===e);if(!r)throw Error(`Unknown theme "${e}".`);return JSON.stringify({format:fr,theme:r},null,2)},async importTheme(e){if(e.length>65536)throw new de({form:`That file is too large for a theme (limit ${dr/1024} KB).`});let t;try{t=JSON.parse(e)}catch{throw new de({form:`That is not valid JSON.`})}let n=typeof t==`object`&&!!t&&t.format===`protoyard-theme/v1`;return a(n?t.theme:t)}}}var hr=e=>e?JSON.stringify([e.persona,e.organization?.id,e.membership?.id,e.role,[...e.capabilities].sort()]):`null`;function gr(){let e=globalThis.matchMedia;return typeof e==`function`?t=>e.call(globalThis,t):void 0}async function _r(e,n,r){let i=r.onError??(e=>{console.error(`[protoyard/runtime]`,e)}),a=r.now??(()=>Date.now()),{db:o,control:s}=n,l=[...r.themes??[]];for(let t of e.themes??[])l.some(e=>e.id===t.id)||l.push(t);let u=await s.readState(),d=pr(u.customThemes,l,i),f={};try{f=ar(u.overrides??{})}catch(e){i(e)}let p={referenceTime:u.activeScenario?.scenario.referenceTime??new Date(a()).toISOString()},m;try{m=t(u.clock??p),m.now().toISOString()}catch(e){i(e),m=t(p)}let g=r.matchMedia??gr(),_=g?.(`(prefers-color-scheme: dark)`),v=g?.(`(prefers-reduced-motion: reduce)`),y=``,b=``,x=``,S=!1,C=It({onError:i}),w=c(r.sleep?{sleep:r.sleep}:{}),T={...w,run:(e,t)=>C.track({kind:`service`,label:e},()=>w.run(e,t))},E=new Set,D=new Map,O=new Set,ee=async e=>{try{let t=await r.resolveTheme(e);if(t){let n=h.parse(t);if(n.id!==e)throw Error(`Theme resolver: got "${n.id}" for "${e}".`);return l.some(t=>t.id===e)||(l.push(n),E.add(e)),l.find(t=>t.id===e)}}catch(e){i(e)}O.add(e)},te,k={definition:e,db:o,control:s,status:n.status,backend:n.backend,options:r,scenarios:Ut(e.scenarios,rn),themes:l,customThemeIds:d,libraryThemeIds:E,policy:ce(e.policy??le),clock:m,env:T,pending:C,now:a,serial:rr(),report:i,active:u.activeScenario??null,overrides:f,actorId:u.actorId??null,organizationId:u.organizationId??null,signedOut:u.signedOut??(!u.activeScenario&&vr(e)),personas:[],organizations:[],memberships:[],preferences:new Map((await s.listPreferences()).map(e=>[e.personaId,e])),principal:null,appearance:void 0,events:{scenario:nr(i),session:nr(i),overrides:nr(i),appearance:nr(i)},async reloadIdentity(){let[e,t,n]=await o.transaction(`r`,[`py_personas`,`py_organizations`,`py_memberships`],()=>Promise.all([o.table(`py_personas`).toArray(),o.table(`py_organizations`).toArray(),o.table(`py_memberships`).toArray()]));k.personas=e,k.organizations=t,k.memberships=n},async ensureTheme(e){let t=l.find(t=>t.id===e);if(t||!r.resolveTheme)return t;let n=D.get(e);return n||(n=C.track({kind:`other`,label:`Loading theme “${e}”…`},()=>ee(e)).finally(()=>D.delete(e)),D.set(e,n)),n},refreshDerived(){k.principal=yr(k);let e=hr(k.principal),t=e!==y;y=e;let n=br(k),a=JSON.stringify(n);a!==x&&(x=a,k.env.set(n)),k.appearance=Cr(k,{prefersDark:_?.matches??!1,prefersReducedMotion:v?.matches??!1});let o=JSON.stringify(k.appearance),s=o!==b;b=o,t&&k.events.session.emit(k.principal),s&&k.events.appearance.emit(k.appearance);let c=Sr(k).value;r.resolveTheme&&!O.has(c)&&!l.some(e=>e.id===c)&&(te=k.ensureTheme(c).then(e=>{e&&k.refreshDerived()}).catch(i))},writeControl:e=>s.writeState(e),setClockSilently(e){S=!0;try{m.setState(e)}finally{S=!1}},dispose(){ne(),_?.removeEventListener(`change`,re),v?.removeEventListener(`change`,re);for(let e of Object.values(k.events))e.clear()}},ne=m.subscribe(e=>{S||s.setState(`clock`,e).catch(i)}),re=()=>k.refreshDerived();return _?.addEventListener(`change`,re),v?.addEventListener(`change`,re),await k.reloadIdentity(),k.refreshDerived(),await te,k}function vr(e){return T.parse(e.auth??{}).signedOutByDefault}function yr(e){if(e.personas.length===0||e.signedOut&&e.overrides.actorId===void 0)return null;let t=e.active?.scenario.actor.id,n=e.overrides.actorId??e.actorId??t,r=e.personas.find(e=>e.id===n)??e.personas.find(e=>e.id===t)??e.personas[0],i=e.memberships.filter(e=>e.personaId===r.id),a=e.overrides.organizationId??e.organizationId??e.active?.scenario.organization.id,o=i.find(e=>e.organizationId===a)??null,s=null;return o?s=e.organizations.find(e=>e.id===o?.organizationId)??null:e.overrides.organizationId?s=e.organizations.find(t=>t.id===e.overrides.organizationId)??null:(o=i[0]??null,s=o?e.organizations.find(e=>e.id===o?.organizationId)??null:null),ie(r,s,o,e.policy,e.overrides.role??null)}function br(e){let t=e.active?.scenario,n=t?.environment??{},r=e.overrides.environment??{},i=e.principal?.organization??null,a=r.subscription??n.subscription??t?.organization.subscription,o={...l,...n,...r,featureFlags:{...t?.organization.featureFlags,...i?.featureFlags,...n.featureFlags,...r.featureFlags}};return a?o.subscription=a:delete o.subscription,o}function xr(e){let t=e.principal?.persona,n=t?e.preferences.get(t.id):void 0;return{...t?.preferences,...n}}function Sr(e){let t=xr(e);return w({override:e.overrides.themeId,preference:t.themeId,scenario:e.active?.scenario.appearance?.themeId},e.definition.manifest.defaultTheme)}function Cr(e,t){let n=e.definition.manifest,r=e.active?.scenario.appearance??{},i=xr(e),a=e.overrides,o=Sr(e);e.themes.length>0&&!e.themes.some(e=>e.id===o.value)&&(o={value:e.themes.some(e=>e.id===n.defaultTheme)?n.defaultTheme:e.themes[0].id,source:`default`});let s=w({override:a.mode,preference:i.mode,scenario:r.mode},n.defaultMode);return{theme:o,mode:s,resolvedMode:s.value===`system`?t.prefersDark?`dark`:`light`:s.value,reducedMotion:w({override:a.reducedMotion,preference:i.reducedMotion,scenario:r.reducedMotion},t.prefersReducedMotion),density:w({override:a.density},e.themes.find(e=>e.id===o.value)?.density??1),...wr(r,a),viewport:w({override:a.viewport,scenario:r.viewport},n.preview.viewport),...Er(n,r,a),layout:Tr(n,r,a)}}function wr(e,t){return Object.fromEntries(g.map(n=>[n,w({override:t[n],scenario:e[n]},null)]))}function Tr(e,t,n){let r=e.preview.layout,i=r?.id??`custom`,a=w({override:n.layout,scenario:t.layout},i);return d(r).includes(a.value)?a:{value:i,source:`default`}}function Er(e,t,n){let i=e.preview,s=w({override:n.shell,scenario:t.shell},i.shell??`auto`),c={value:u(s.value,e.platform),source:s.source},l=i.device&&r(i.device,c.value)?i.device:a(c.value,i.viewport),d=w({override:n.device,scenario:t.device},l);r(d.value,c.value)||(d={value:l,source:`default`});let f=o(d.value),p=w({override:n.orientation,scenario:t.orientation},i.orientation??f.orientation);return!f.rotatable&&p.value!==f.orientation&&(p={value:f.orientation,source:`default`}),{shell:c,device:d,orientation:p}}function Dr(e){return new Qn(`member`,e)}function Or(e){return`${e.normalize(`NFKD`).toLowerCase().replace(/[^a-z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)||`member`}@example.com`}function kr(e,t,n){return e.listMemberships({organizationId:t}).then(e=>e.filter(e=>e.role===`owner`&&e.id!==n).length)}var Ar=`An organization needs at least one owner. Transfer ownership first.`;function jr(e,t){let n=()=>Object.keys(e.policy.definition.roles),r=e=>{if(!n().includes(e))throw Dr({role:`Unknown role "${e}". Roles: ${n().join(`, `)}`})},i=(t,n)=>e.policy.assert(e.principal,t,n);async function a(t){let n=await e.db.table(`py_memberships`).get(t);if(!n)throw Error(`Membership "${t}" was not found.`);return n}function o(e,t){return e.getMembership(t).then(e=>{if(!e)throw Error(`Membership "${t}" was not found.`);return e})}let s=(t,n)=>{let r=e.principal;if(!r?.organization||r.organization.id!==t)throw new re(n,r?.role??null)};return{list(t){let n=t??e.principal?.organization?.id;if(!n)return[];let r=new Map(e.personas.map(e=>[e.id,e]));return e.memberships.filter(e=>e.organizationId===n&&r.has(e.personaId)).sort((e,t)=>e.joinedAt.localeCompare(t.joinedAt)||e.id.localeCompare(t.id)).map(e=>({membership:e,persona:r.get(e.personaId)}))},async invite(n){let a=n.organizationId??e.principal?.organization?.id;a&&s(a,D.invite),i(D.invite,{organizationId:a,role:n.role}),n.role===`owner`&&i(D.transfer,{organizationId:a});let o=ee.safeParse(n);if(!o.success){let e={};for(let t of o.error.issues)e[t.path.map(String).join(`.`)||`member`]??=t.message;throw Dr(e)}let c=o.data;if(r(c.role),!a)throw Dr({organizationId:`No active organization to invite to`});let l=c.email??Or(c.name);if(!E(l))throw Dr({email:`Use a fictional address at example.com`});return e.env.run(`members.invite`,()=>t.write(async t=>{if(!await t.getOrganization(a))throw Dr({organizationId:`Unknown organization "${a}"`});s(a,D.invite);let n=(await e.db.table(`py_personas`).toArray()).find(e=>e.email?.toLowerCase()===l);if(n&&(await t.listMemberships({personaId:n.id,organizationId:a})).length)throw Dr({email:`${l} is already a member`});let r=n??await t.putPersona({name:c.name,email:l,...c.title?{title:c.title}:{},onboardingComplete:!1,summary:`${c.title??`Invited member`}, invited`});return{persona:r,membership:await t.putMembership({personaId:r.id,organizationId:a,role:c.role})}}))},async changeRole(n,c){let l=await a(n);return s(l.organizationId,D.update),i(D.update,{membership:l,role:c}),(c===`owner`||l.role===`owner`)&&i(D.transfer,{membership:l,role:c}),r(c),e.env.run(`members.changeRole`,()=>t.write(async e=>{let t=await o(e,n);if(s(t.organizationId,D.update),t.role===`owner`&&c!==`owner`&&await kr(e,t.organizationId,t.id)===0)throw Dr({role:Ar});return e.putMembership({...t,role:c})}))},async remove(n){let r=await a(n);s(r.organizationId,D.remove),i(D.remove,{membership:r}),r.role===`owner`&&i(D.transfer,{membership:r}),await e.env.run(`members.remove`,()=>t.write(async e=>{let t=await o(e,n);if(s(t.organizationId,D.remove),t.role===`owner`&&await kr(e,t.organizationId,t.id)===0)throw Dr({membership:Ar});await e.removeMembership(t.id)}))},async transferOwnership(n,s={}){let c=await a(n);i(D.transfer,{membership:c});let l=e.principal,u=l?.membership;if(!l||!u||l.role!==`owner`||u.organizationId!==c.organizationId)throw new re(D.transfer,l?.role??null);if(u.id===c.id)throw Dr({membership:`You already own this organization`});let d=s.formerOwnerRole??`admin`;r(d),await e.env.run(`members.transferOwnership`,()=>t.write(async e=>{let t=await o(e,c.id),n=await o(e,u.id);await e.putMembership({...t,role:O}),await e.putMembership({...n,role:d})}))}}}function Mr(e){let t={};for(let n of g)e[n]!==void 0&&Object.assign(t,{[n]:e[n]});return t}var Nr=class extends Error{scenarioId;constructor(e){super(`Unknown scenario "${e}". Check src/scenarios/index.ts and protoyard.json.`),this.name=`UnknownScenarioError`,this.scenarioId=e}},Pr=()=>new Promise(e=>setTimeout(e,0));function Fr(e){let t=e.definition.generatorVersion;return{generatorVersion:3,...t===void 0?{}:{prototypeGeneratorVersion:t}}}function Ir(e,t){return e.generatorVersion!==t.generatorVersion||e.prototypeGeneratorVersion!==t.prototypeGeneratorVersion}function Lr(e){return e.prototypeGeneratorVersion===void 0?`SDK v${e.generatorVersion}`:`SDK v${e.generatorVersion}, prototype v${e.prototypeGeneratorVersion}`}function Rr(e){if(e&&typeof e==`object`&&`id`in e&&typeof e.id==`string`)return e.id}function zr(e,t){return t===e.seed?e:{...e,seed:t}}function Br(e,t,n){let r=[];for(let n of Object.keys(t.tables))e.db.domainTables.includes(n)||r.push({table:n,rowId:`*`,message:`table "${n}" is not declared in database/schema.ts`});let i=e.options.integrity??e.definition.integrity??{};return[...r,...qt(t,{...i,referenceTime:n.referenceTime})]}function Vr(t,r){let i=null,a=null,o=!!(t.options.link?.sandbox&&ne.test(t.options.link.sandbox)),s=null,c=e=>t.scenarios.find(t=>t.id===e),l=null,u=nr(t.report);function f(e,n){if(l=e,e&&n)try{n(e)}catch(e){t.report(e)}u.emit(e)}async function p(e,t,n={}){let r=(t,r,i)=>f({scenarioId:e.id,phase:t,done:r,total:i},n.onProgress);try{await m(e,t,r,n.writeChunkSize)}finally{f(null)}}async function m(e,r,i,a){let o=zr(e,r),c={generateMs:0,validateMs:0,writeMs:0,rows:0};i(`generate`,0,1),await Pr();let l=performance.now(),{generateWorld:u}=t.definition,d=u?await u.call(t.definition,o):await t.definition.generate(await n(o));c.generateMs=performance.now()-l,i(`generate`,1,1),i(`validate`,0,1),await Pr(),l=performance.now();let f=Br(t,d,o);c.validateMs=performance.now()-l;let p=t.options.validation??`throw`;if(f.length&&p!==`off`){let t=new Jt(e.id,f);if(p===`throw`)throw t;console.warn(t.message)}i(`validate`,1,1);let m=t.db,h=[[`py_organizations`,d.organizations],[`py_personas`,d.personas],[`py_memberships`,d.memberships],[`py_events`,(d.events??[]).map(e=>({...e,source:e.source??`seed`}))],...Object.entries(d.tables).filter(([e])=>m.domainTables.includes(e))],g=h.reduce((e,[,t])=>e+t.length,0),_=Math.max(1,a??t.options.writeChunkSize??1e3);c.rows=g,i(`write`,0,g),await Pr(),l=performance.now(),await m.transaction(`rw`,[...m.allTables],async()=>{for(let e of m.allTables)await m.table(e).clear();let e=0;for(let[t,n]of h)for(let r=0;r<n.length;r+=_){let a=n.slice(r,r+_);await m.table(t).bulkAdd(a),e+=a.length,i(`write`,e,g)}}),c.writeMs=performance.now()-l,s={scenarioId:e.id,...c},i(`done`,g,g);let v={scenario:e,seed:r,...Fr(t),loadedAt:new Date(t.now()).toISOString()},y={referenceTime:e.referenceTime,committedOffsetMs:0,previewOffsetMs:0,running:!1},b=vr(t.definition);await t.writeControl({activeScenario:v,clock:y,overrides:null,actorId:e.actor.id,organizationId:e.organization.id,signedOut:b?!0:null,timelineCheckpoint:{committedOffsetMs:0,at:new Date(Date.parse(e.referenceTime)).toISOString()}}),t.active=v,t.overrides={},t.actorId=e.actor.id,t.organizationId=e.organization.id,t.signedOut=b,t.setClockSilently(y),await t.reloadIdentity(),e.appearance.themeId&&await t.ensureTheme(e.appearance.themeId),t.refreshDerived(),t.events.overrides.emit(t.overrides),t.events.scenario.emit(v)}async function h(e,n={}){let a=c(e);if(!a)throw new Nr(e);n.snapshotFirst&&t.active&&await r(`Before loading ${a.name}`),await p(a,n.seed??a.seed,n),i=null}async function _(e){let n=Fr(t),i={generatorVersion:e.generatorVersion,...e.prototypeGeneratorVersion===void 0?{}:{prototypeGeneratorVersion:e.prototypeGeneratorVersion}};if(!Ir(i,n))return;let s={scenario:e.scenario.id,seed:e.seed,stored:i,current:n},l;if(!o)try{l=Rr(await r(`Before refreshing ${e.scenario.name}`))}catch(e){t.report(e),a={...s,status:`kept`,reason:`This data was generated by ${Lr(i)}, the prototype now uses ${Lr(n)}, and a safety snapshot could not be saved, so the data was kept. Reset the scenario to rebuild it.`};return}await p(c(e.scenario.id)??e.scenario,e.seed),a={...s,status:`reseeded`,...l===void 0?{}:{snapshotId:l},reason:`This data was generated by ${Lr(i)} and the prototype now uses ${Lr(n)}, so the scenario was rebuilt${l===void 0?`.`:`. Your previous data is in a safety snapshot.`}`}}return{list:()=>t.scenarios,get:c,active:()=>t.active,pendingLink:()=>i,staleWorld:()=>a,ensureSeeded:()=>t.serial(async()=>{let e=t.options.link??{};if(t.active&&await _(t.active),!t.active){let n=await t.db.table(`py_personas`).count(),r=(e.scenario?c(e.scenario):void 0)??(t.definition.manifest.defaultScenario?c(t.definition.manifest.defaultScenario):void 0)??t.scenarios[0];if(!r)throw Error(`This prototype declares no scenarios; add one in src/scenarios/index.ts.`);if(n>0){let e={scenario:r,seed:r.seed,...Fr(t),loadedAt:new Date(t.now()).toISOString()};await t.writeControl({activeScenario:e}),t.active=e,t.refreshDerived(),t.events.scenario.emit(e)}else{let t=e.scenario===r.id?e.seed:void 0;await h(r.id,t===void 0?{}:{seed:t})}}else if(e.scenario){let n=e.scenario!==t.active.scenario.id||e.seed!==void 0&&e.seed!==t.active.seed;n&&o&&c(e.scenario)&&await h(e.scenario,e.seed===void 0?{}:{seed:e.seed}),i=n&&!(o&&c(e.scenario))?{scenario:e.scenario,...e.seed===void 0?{}:{seed:e.seed},reason:c(e.scenario)?`This browser already has edits for another scenario. Load the linked scenario to replace them.`:`The link points to unknown scenario "${e.scenario}".`}:null}e.actor&&e.actor!==t.principal?.persona.id&&t.personas.some(t=>t.id===e.actor)&&(t.actorId=e.actor,await t.writeControl({actorId:e.actor}),t.refreshDerived());let n=e.theme?await t.ensureTheme(e.theme)!==void 0:!1,r=e.layout&&d(t.definition.manifest.preview.layout).includes(e.layout);(n&&e.theme!==t.overrides.themeId||e.mode&&e.mode!==t.overrides.mode||e.shell&&e.shell!==t.overrides.shell||r&&e.layout!==t.overrides.layout||g.some(n=>e[n]&&e[n]!==t.overrides[n]))&&await $(t,{...t.overrides,...n?{themeId:e.theme}:{},...e.mode?{mode:e.mode}:{},...e.shell?{shell:e.shell}:{},...r?{layout:e.layout}:{},...Mr(e)})}),load:(e,n)=>t.pending.track({kind:`scenario`,label:`Loading scenario “${c(e)?.name??e}”…`},()=>t.serial(()=>h(e,n))),reset:(e={})=>t.pending.track({kind:`scenario`,label:`Resetting scenario…`},()=>t.serial(async()=>{let n=t.active;if(!n)throw Error(`No active scenario to reset. Load one first.`);e.snapshotFirst&&await r(`Before resetting ${n.scenario.name}`),await p(c(n.scenario.id)??n.scenario,n.seed,e)})),advance:r=>t.pending.track({kind:`time`,label:`Advancing time…`},()=>t.serial(async()=>{let i=t.active;if(!i)throw Error(`No active scenario. Load one before advancing time.`);let a=e(r);if(!(a>0))throw RangeError(`advance(): duration must be positive`);let o=t.clock.committed().getTime(),s=new Date(o),c=new Date(o+a),l=0,u=0,d=t.definition.timeline;if(d){let e=await d({...await n(zr(i.scenario,i.seed)),from:s,to:c,read:e=>t.db.rows(e).toArray()}),r=new Map;for(let t of e)r.has(t.id)||r.set(t.id,t);let a=[...r.values()],o=t.db;await o.transaction(`rw`,[...o.allTables],async()=>{let e=await o.table(`py_events`).bulkGet(a.map(e=>e.id)),n=a.filter((t,n)=>e[n]===void 0);u=a.length-n.length;let r=t.definition.applyEvent,i={put:async(e,t)=>{await o.rows(e).put(t)},get:(e,t)=>o.rows(e).get(t),remove:(e,t)=>o.rows(e).delete(t)};n.sort((e,t)=>e.at.localeCompare(t.at)||e.id.localeCompare(t.id));for(let e of n)r&&await r(e,i),await o.table(`py_events`).add({...e,source:e.source??`timeline`});l=n.length})}t.setClockSilently({...t.clock.getState(),committedOffsetMs:t.clock.getState().committedOffsetMs+a});let f=t.clock.getState();return await t.writeControl({clock:f,timelineCheckpoint:{committedOffsetMs:f.committedOffsetMs,at:c.toISOString()}}),l>0&&(await t.reloadIdentity(),t.refreshDerived()),{applied:l,skipped:u}})),subscribe:e=>t.events.scenario.subscribe(e),progress:()=>l,subscribeProgress:e=>u.subscribe(e),lastLoadTimings:()=>s}}function Hr(e){async function t(t=Promise.resolve()){if(e.overrides.actorId!==void 0){let{actorId:n,...r}=e.overrides;await Promise.all([t,$(e,r)])}else e.refreshDerived(),await t}async function n(n,r){if(!e.personas.some(e=>e.id===n))throw Error(`Unknown persona "${n}".`);e.actorId=n,e.signedOut=r;let i=e.memberships.filter(e=>e.personaId===n);i.length&&!i.some(t=>t.organizationId===e.organizationId)&&(e.organizationId=i[0]?.organizationId??e.organizationId),await t(e.writeControl({actorId:n,...e.organizationId?{organizationId:e.organizationId}:{},signedOut:r?!0:null}))}return{principal:()=>e.principal,personas:()=>e.personas,organizations:()=>e.organizations,memberships:()=>e.memberships,switchActor:t=>e.pending.track({kind:`session`,label:`Switching persona…`},()=>n(t,e.signedOut)),signIn:t=>e.pending.track({kind:`session`,label:`Signing in…`},()=>n(t,!1)),signOut:()=>e.pending.track({kind:`session`,label:`Signing out…`},async()=>{e.signedOut=!0,await t(e.writeControl({signedOut:!0}))}),isSignedIn:()=>e.principal!==null,authState:()=>e.principal?`signed-in`:`signed-out`,switchOrganization:t=>e.pending.track({kind:`session`,label:`Switching organization…`},async()=>{if(!e.organizations.some(e=>e.id===t))throw Error(`Unknown organization "${t}".`);e.organizationId=t;let n=e.writeControl({organizationId:t});if(e.overrides.organizationId!==void 0){let{organizationId:t,...r}=e.overrides;await Promise.all([n,$(e,r)])}else e.refreshDerived(),await n}),can:(t,n)=>e.policy.can(e.principal,t,n),assert:(t,n)=>e.policy.assert(e.principal,t,n),async refresh(){await e.reloadIdentity(),e.refreshDerived()},subscribe:t=>e.events.session.subscribe(t)}}function Ur(e){return{themes:()=>e.themes,get:t=>e.themes.find(e=>e.id===t),appearance:()=>e.appearance,async setPreference(t){let n=e.principal?.persona;if(!n)throw Error(`No active persona: load a scenario before saving preferences.`);t.themeId!==void 0&&await e.ensureTheme(t.themeId);let r=await e.control.setPreference(n.id,t);e.preferences.set(n.id,r),e.refreshDerived()},async setOverride(t){t.themeId!==void 0&&await e.ensureTheme(t.themeId);let n={...e.overrides};for(let[e,r]of Object.entries(t))r===void 0?delete n[e]:n[e]=r;await $(e,n)},async clearOverride(){let{themeId:t,mode:n,reducedMotion:r,density:i,viewport:a,shell:o,device:s,orientation:c,layout:l,...u}=e.overrides;for(let e of g)delete u[e];await $(e,u)},subscribe:t=>e.events.appearance.subscribe(t)}}var Wr=class extends Error{constructor(e){super(e),this.name=`SnapshotImportError`}};function Gr(e){let{tables:t,...n}=e;return n}var Kr=25e4,qr=864e13;function Jr(e){return new Wr(`${e} Nothing was changed.`)}function Yr(e){let t=0;for(let n of e.tables){if(t+=n.rows.length,t>25e4)throw Jr(`Snapshot has more than ${Kr.toLocaleString(`en-US`)} rows.`);n.rows.forEach((e,t)=>{let r=e.id;if(!(typeof r==`string`&&r.length>0&&r.length<=512||typeof r==`number`&&Number.isFinite(r)))throw Jr(`Row ${t+1} of table "${n.name}" has no valid id.`)})}}function Xr(e){let t=Date.parse(e.referenceTime),n=t+e.committedOffsetMs,r=n+e.previewOffsetMs;if(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||Math.abs(n)>qr||Math.abs(r)>qr||e.runningSince!==void 0&&!Number.isFinite(e.runningSince))throw Jr(`Snapshot clock is not a valid point in time.`);return{committedOffsetMs:e.committedOffsetMs,at:new Date(n).toISOString()}}function Zr(e,t,n){return`${e}-${p(t)||`snapshot`}-${n.slice(0,10)}.protoyard.json`}function Qr(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof Blob<`u`&&e instanceof Blob}function $r(e){let t=0;return{tables:e.map(e=>({...e,rows:e.rows.map(e=>{if(!e||typeof e!=`object`)return e;let n=null;for(let[r,i]of Object.entries(e))Qr(i)&&(n??={...e},n[r]=null,t+=1);return n??e})})),excluded:t}}var ei=[`simulatedPassword`];function ti(e,t=ei){let n=0;return{tables:e.map(e=>({...e,rows:e.rows.map(e=>{if(!e||typeof e!=`object`)return e;let r=null;for(let i of t)e[i]!=null&&(r??={...e},r[i]=null,n+=1);return r??e})})),redacted:n}}function ni(e){let t=e.definition.manifest,n=()=>({prototypeId:t.id,schemaVersion:e.db.schemaVersion,tables:e.db.allTables}),r=[];async function i(n={name:`Current world`}){let[r,i]=await Promise.all([Yn(e.db),Zn(e.db)]),{tables:a}=$r(r),o=e.active,c=e.appearance;return{format:x,formatVersion:1,id:s(`snap`),name:n.name.trim().slice(0,120)||`Snapshot`,notes:(n.notes??``).slice(0,2e3),prototypeId:t.id,prototypeVersion:t.version,schemaVersion:e.db.schemaVersion,scenarioId:o?.scenario.id??null,scenarioVersion:o?.scenario.version??null,seed:o?.seed??null,referenceTime:o?.scenario.referenceTime??null,createdAt:new Date(e.now()).toISOString(),actorId:e.principal?.persona.id??e.actorId,organizationId:e.principal?.organization?.id??e.organizationId,...e.signedOut?{signedOut:!0}:{},clock:e.clock.getState(),environment:e.env.get(),overrides:{...e.overrides},appearance:{themeId:c.theme.value,mode:c.mode.value},tables:a,stats:i}}async function a(t,n={tablesRestored:!1}){let i=[];Yr(t);let a=t.scenarioId?e.scenarios.find(e=>e.id===t.scenarioId):void 0;t.scenarioId&&!a&&i.push(`Scenario "${t.scenarioId}" no longer exists; records were restored without it.`);let o=a?{scenario:a,seed:t.seed??a.seed,...Fr(e),loadedAt:t.createdAt}:null,s={};try{s=ar(t.overrides)}catch{i.push(`Snapshot overrides were invalid and were ignored.`)}let c=t.referenceTime??o?.scenario.referenceTime,l=t.clock?{...t.clock,...t.clock.running?{runningSince:e.now()}:{}}:c?{referenceTime:c,committedOffsetMs:0,previewOffsetMs:0,running:!1}:null,u=l?Xr(l):null,d=await Xn(e.db,t.tables,{knownTables:e.db.allTables});n.tablesRestored=!0;for(let e of d.skipped)i.push(`Unknown table "${e}" was skipped.`);t.schemaVersion<e.db.schemaVersion&&i.push(`Snapshot rows use schema v${t.schemaVersion}; they were restored as-is into v${e.db.schemaVersion}.`),await e.writeControl({activeScenario:o,overrides:Object.keys(s).length?s:null,actorId:t.actorId,organizationId:t.organizationId,signedOut:t.signedOut?!0:null,clock:l,timelineCheckpoint:u}),e.active=o,e.overrides=s,e.actorId=t.actorId,e.organizationId=t.organizationId,e.signedOut=t.signedOut===!0,l&&e.setClockSilently(l),await e.reloadIdentity(),e.refreshDerived();let f=t.appearance,p={};return f.themeId&&f.themeId!==e.appearance.theme.value&&(await e.ensureTheme(f.themeId)?p.themeId=f.themeId:i.push(`Theme "${f.themeId}" is not available here; kept the current theme.`)),f.mode&&f.mode!==e.appearance.mode.value&&(p.mode=f.mode),Object.keys(p).length?await $(e,{...e.overrides,...p}):e.events.overrides.emit(e.overrides),e.events.scenario.emit(o),r=i,i}async function o(t){let n=await i(t);return await e.control.putSnapshot(n),Gr(n)}function c(e){let t=v(e,n());if(!t.ok)throw new Wr(t.error);return Yr(t.snapshot),t.snapshot.clock&&Xr(t.snapshot.clock),t}return{list:()=>e.control.listSnapshots(),save:o,build:()=>i(),lastWarnings:()=>r,restore:t=>e.pending.track({kind:`snapshot`,label:`Restoring snapshot…`},()=>e.serial(async()=>{let n=await e.control.getSnapshot(t);if(!n)throw Error(`Snapshot "${t}" was not found.`);await a(n)})),remove:t=>e.control.deleteSnapshot(t),async exportJson(n){let r=n?await e.control.getSnapshot(n):await i();if(!r)throw Error(`Snapshot "${n}" was not found.`);let a={...r,tables:ti(r.tables).tables};return{filename:Zr(t.slug,r.name,r.createdAt),json:`${JSON.stringify(a,null,2)}\n`}},async previewImport(e){let{snapshot:t,warnings:n}=c(e),r={};for(let e of t.tables)r[e.name]=(r[e.name]??0)+e.rows.length;return{snapshot:Gr(t),warnings:n,rowCounts:r}},importJson:(t,n={})=>e.pending.track({kind:`snapshot`,label:n.restore?`Restoring snapshot…`:`Importing snapshot…`},()=>e.serial(async()=>{let{snapshot:i,warnings:o}=c(t),l={...i,id:s(`snap`)};if(await e.control.putSnapshot(l),n.restore){let t={tablesRestored:!1};try{let e=await a(l,t);r=[...new Set([...o,...e])]}catch(n){throw t.tablesRestored||await e.control.deleteSnapshot(l.id).catch(e.report),n}}else r=o;return Gr(l)}))}}function ri(e){return{tables:()=>e.db.allTables,counts:()=>Zn(e.db),async rows(t,n={}){let r=Math.min(Math.max(1,Math.floor(n.limit??50)),500),i=Math.max(0,Math.floor(n.offset??0));return e.db.rows(t).offset(i).limit(r).toArray()}}}async function ii(e,t={}){let n=t.link?.sandbox&&ne.test(t.link.sandbox)?t.link.sandbox:void 0,r=n?Et(e.manifest.storage.namespace,n):e.manifest.storage.namespace,i={manifest:{storage:{...e.manifest.storage,namespace:r}},database:e.database},a=await S(i,{...t.indexedDB?{indexedDB:t.indexedDB}:{},...t.IDBKeyRange?{IDBKeyRange:t.IDBKeyRange}:{},...t.allowMemoryFallback===void 0?{}:{allowMemoryFallback:t.allowMemoryFallback}}),o;try{o=await _r(e,a,t)}catch(e){throw a.db.close(),a.control.close(),e}let s=ni(o),c=Vr(o,e=>s.save({name:e,notes:`Saved automatically before replacing the world.`})),l=tr(o),u=!1,d=()=>{u||(u=!0,o.dispose(),o.db.close(),o.control.close())},f={prototypeId:e.manifest.id,...n?{sandbox:n}:{},manifest:e.manifest,definition:e,db:o.db,scenarios:c,session:Hr(o),identity:l,members:jr(o,l),clock:o.clock,theme:{...Ur(o),...mr(o)},environment:lr(o),snapshots:s,overrides:cr(o),policy:o.policy,data:ri(o),pending:o.pending,storage:()=>({...o.status}),environmentState:()=>o.env.get(),get closed(){return u},async destroy(){await o.serial(async()=>void 0),d(),await C(r,o.backend)},async discardSandbox(){if(!n)throw Error(`This runtime is not running in a sandbox.`);await f.destroy()},close:d};return f}var ai=/^[a-z][a-z0-9-]*$/,oi=/^[A-Za-z0-9_-]{1,64}$/,si=/^[a-z][a-z0-9-]*$/;function ci(e,t){if(!e.startsWith(`#`))return null;let n=e.slice(1).split(`--`);if(n.length<1||n.length>3)return null;let r=n[0];if(!r||!ai.test(r)||!t.scenarios.includes(r))return null;let i=new URLSearchParams({scenario:r}),a=n[1],o=n[2],s,c;return a!==void 0&&(t.personas?.includes(a)&&oi.test(a)?s=a:t.themes?.includes(a)&&si.test(a)&&(c=a)),o!==void 0&&t.themes?.includes(o)&&si.test(o)&&(c=o),s&&i.set(`actor`,s),c&&i.set(`theme`,c),`?${i.toString()}`}function li(e){if(typeof location>`u`)return;let t=ci(location.hash,e);if(t)return history.replaceState(history.state,``,`${location.pathname}${location.search}#/`),t}var ui=P(`<p class="font-mono text-xs text-muted-foreground"> </p>`),di=P(`<p class="mt-3 text-sm text-destructive" role="alert"> </p>`),fi=P(`<!> `,1),pi=P(`<!> <!>`,1),mi=P(`<main class="flex min-h-dvh items-center justify-center bg-background px-4 py-10 text-foreground"><section class="w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-float" aria-labelledby="py-boot-error-title"><div class="flex items-center gap-3"><span class="inline-flex size-10 items-center justify-center rounded-lg bg-destructive/10 text-destructive"><!></span> <div><h1 id="py-boot-error-title" class="text-lg font-semibold"> </h1> <!></div></div> <p class="mt-4 text-sm text-surface-foreground"> </p> <p class="mt-2 text-sm text-muted-foreground"> </p> <!> <div class="mt-6 flex flex-wrap gap-2"><!> <!></div></section></main>`);function hi(e,t){L(t,!0);let n=H(()=>t.error instanceof Error?t.error.message:String(t.error)),r=H(()=>t.error?.code),i=q(!1),a=q(!1),o=q(null);function s(e){return new Promise((t,n)=>{let r=indexedDB.deleteDatabase(e);r.onsuccess=()=>t(),r.onerror=()=>n(r.error??Error(`Could not delete ${e}`)),r.onblocked=()=>n(Error(Tt().boot.otherTab))})}async function c(){if(t.namespace){V(a,!0),V(o,null);try{await s(`protoyard.${t.namespace}.data`),await s(`protoyard.${t.namespace}.control`),await s(`protoyard.${t.namespace}.validation`),location.reload()}catch(e){V(o,e instanceof Error?e.message:String(e),!0),V(a,!1)}}}let l=Tt().boot;var u=mi(),d=z(u),f=z(d),p=z(f),m=z(p);Dt(m,{name:`alert`,class:`size-5`}),N(p);var h=G(p,2),g=z(h),_=U(g,!0),v=G(g,2),y=e=>{var t=ui(),n=U(t,!0);R(()=>j(n,F(r))),Y(e,t)};M(v,e=>{typeof F(r)==`string`&&e(y)}),N(h),N(f);var b=G(f,2),x=U(b,!0),S=G(b,2),C=U(S,!0),w=G(S,2),T=e=>{var t=di(),n=U(t,!0);R(()=>j(n,F(o))),Y(e,t)};M(w,e=>{F(o)&&e(T)});var E=G(w,2),D=z(E);X(D,{type:`button`,size:`sm`,class:`inline-flex min-h-touch items-center gap-2 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground hover:bg-primary-hover sm:min-h-9`,onclick:()=>location.reload(),children:(e,t)=>{var n=fi(),r=I(n);Dt(r,{name:`refresh`});var i=G(r);R(()=>j(i,` ${l.reload??``}`)),Y(e,n)},$$slots:{default:!0}});var O=G(D,2),ee=e=>{var t=A(),n=I(t),r=e=>{var t=pi(),n=I(t);X(n,{type:`button`,variant:`destructive`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md bg-destructive px-4 text-sm font-medium text-destructive-foreground hover:bg-destructive-hover disabled:opacity-60 sm:min-h-9`,get disabled(){return F(a)},get"aria-busy"(){return F(a)},onclick:c,children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,F(a)?l.resetting:l.confirmReset)),Y(e,n)},$$slots:{default:!0}});var r=G(n,2);X(r,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border px-4 text-sm font-medium hover:bg-muted sm:min-h-9`,get disabled(){return F(a)},onclick:()=>V(i,!1),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,l.cancel)),Y(e,n)},$$slots:{default:!0}}),Y(e,t)},o=e=>{X(e,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border px-4 text-sm font-medium hover:bg-muted sm:min-h-9`,onclick:()=>V(i,!0),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,l.reset)),Y(e,n)},$$slots:{default:!0}})};M(n,e=>{F(i)?e(r):e(o,-1)}),Y(e,t)};M(O,e=>{t.namespace&&e(ee)}),N(E),N(d),N(u),R(e=>{j(_,e),j(x,F(n)),j(C,l.explanation)},[()=>wt(l.title,{name:t.name})]),Y(e,u),J()}var gi=[`bottom-left`,`bottom-right`,`top-left`,`top-right`];function _i(e,t,n,r=12){return{left:e.endsWith(`left`)?t.left+r:t.left+t.width-r-n.width,top:e.startsWith(`top`)?t.top+r:t.top+t.height-r-n.height,width:n.width,height:n.height}}function vi(e,t=16){let n=Math.max(2,Math.ceil(e.width/t)+1),r=Math.max(2,Math.ceil(e.height/t)+1),i=[];for(let t=0;t<r;t++)for(let a=0;a<n;a++)i.push([e.left+1+(e.width-2)*a/(n-1),e.top+1+(e.height-2)*t/(r-1)]);return i}function yi(e){let t=gi[0],n=1/0;for(let r of gi){let i=e(r);if(i===0)return r;i<n&&(t=r,n=i)}return t}var bi=[`a[href]`,`button`,`input`,`select`,`textarea`,`summary`,`label`,`[contenteditable]:not([contenteditable="false"])`,`[tabindex]:not([tabindex="-1"])`,`[role="button"]`,`[role="link"]`,`[role="tab"]`,`[role="menuitem"]`,`[role="checkbox"]`,`[role="radio"]`,`[role="switch"]`,`[role="option"]`,`[role="slider"]`,`[role="textbox"]`,`[role="combobox"]`].join(`,`);function xi(e,t,n){for(let r of e.childNodes){if(r.nodeType!==3||!r.textContent?.trim())continue;let i=e.ownerDocument.createRange();if(i.selectNodeContents(r),typeof i.getClientRects!=`function`)return!0;let a=i.getClientRects();if(a.length===0)return!0;for(let e of a)if(t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom)return!0}return!1}function Si(e,t,n){return yi(r=>Ci(_i(r,e,t),n))}function Ci(e,t,n=16){let r=0;for(let[i,a]of vi(e,n)){let e=t(i,a);e&&(e.closest(bi)?r+=100:xi(e,i,a)&&(r+=1))}return r}function wi(e,t,n){return gi.every(r=>Ci(_i(r,e,t),n)>=100)}function Ti(e,t=8){let n={width:20,height:20},r=gi.map(t=>_i(t,e,n,4)),i=e.left+4,a=e.left+e.width-4-20;for(let o of[e.top+e.height-4-20,e.top+4])for(let e=i+t;e<a;e+=t)r.push({left:e,top:o,...n});return r}function Ei(e,t){let n,r=1/0;for(let i of Ti(e)){let e=Ci(i,t,6);if(e===0)return i;e<r&&(n=i,r=e)}return n}var Di=`protoyard:floating`,Oi=[`bottom-right`,`top-right`,`bottom-left`,`top-left`];function ki(e,t,n=8,r=12){let i=Oi.map(n=>_i(n,e,t,r)),a=e.left+r,o=e.left+e.width-r-t.width;for(let s of[e.top+e.height-r-t.height,e.top+r])for(let e=o-n;e>a;e-=n)i.push({left:e,top:s,...t});return i}var Ai=(e,t)=>e.left<t.left+t.width&&t.left<e.left+e.width&&e.top<t.top+t.height&&t.top<e.top+e.height;function ji(e,t,n,r=[]){let i,a=1/0;for(let o of ki(e,t)){let e=Ci(o,n,8)+r.filter(e=>Ai(o,e)).length*100*100;if(e===0)return o;e<a&&(i=o,a=e)}return i}function Mi(e=window){let t=e.innerWidth,n=e.innerHeight,r=e.visualViewport;return{left:r?.offsetLeft??0,top:r?.offsetTop??0,width:r?.width??t,height:r?.height??n}}function Ni(e,t=window){return e?{container:e,origin:{left:e.left,top:e.top}}:{container:Mi(t),origin:{left:0,top:0}}}var Pi=`--py-fixed-right-edge`;function Fi(e=window){let t=e.visualViewport;return t?Math.max(0,Math.round(e.innerWidth-(t.offsetLeft+t.width))):0}function Ii(e=document.documentElement,t=window){let n=``,r=()=>{let r=`${Fi(t)}px`;r!==n&&(n=r,e.style.setProperty(Pi,r))};r();let i=t.visualViewport;return t.addEventListener(`resize`,r),i?.addEventListener(`resize`,r),i?.addEventListener(`scroll`,r),()=>{t.removeEventListener(`resize`,r),i?.removeEventListener(`resize`,r),i?.removeEventListener(`scroll`,r),e.style.removeProperty(Pi)}}function Li(e,t={}){let n,r=``,i,a,o,s=()=>{if(!e.isConnected||typeof document.elementFromPoint!=`function`)return;let n=(t.handle?.()??e).getBoundingClientRect();if(!n.width||!n.height)return;let s=e.getBoundingClientRect(),c=window.innerWidth,l=window.innerHeight,u=Mi(window),d=document.querySelector(`[data-py-demo-badge]`),f=[];if(d){let e=d.getBoundingClientRect();e.width&&e.height&&f.push({left:e.left,top:e.top,width:e.width,height:e.height})}if(u.width<=767){let e=document.querySelector(an);if(e){let t=e.getBoundingClientRect();t.width&&t.height&&f.push({left:t.left,top:t.top,width:t.width,height:t.height})}}let p=document.querySelector(`[data-py-review-overlay]`),m=e.closest(`[data-py-review-root]`),h=(t,n)=>(typeof document.elementsFromPoint==`function`?document.elementsFromPoint(t,n):[document.elementFromPoint(t,n)]).find(t=>t&&!e.contains(t)&&!d?.contains(t)&&!p?.contains(t)&&!m?.contains(t))??null,g={width:Math.min(Math.max(n.width,s.width),u.width-24),height:Math.max(n.height,s.height)},_=e.style.visibility;e.style.visibility=`hidden`;let v;try{v=ji(u,g,h,f)}finally{e.style.visibility=_}if(i&&a&&o){let e={left:a===`right`?u.left+u.width-12-g.width:i.left,top:o===`bottom`?u.top+u.height-12-g.height:i.top,...g},t=e.left>=u.left+12&&e.top>=u.top+12&&e.left+e.width<=u.left+u.width-12&&e.top+e.height<=u.top+u.height-12,n=Ci(e,h,8)+f.filter(t=>Ai(e,t)).length*100*100;t&&n===0&&(v=e)}let y=v.left+v.width/2>u.left+u.width/2,b=v.top+v.height/2>u.top+u.height/2,x=e.style,S=u.width<c||u.height<l||u.left!==0||u.top!==0,C=S&&s.width>n.width+1,w=S||!y?`${Math.round(C?u.left+12:v.left)}px`:`auto`,T=S||!y?`auto`:`${Math.round(u.left+u.width-v.left-v.width)}px`,E=S||!b?`${Math.round(v.top)}px`:`auto`,D=S||!b?`auto`:`${Math.round(u.top+u.height-v.top-v.height)}px`,O=C||S?`left`:y?`right`:`left`,ee=b?`bottom`:`top`,te=S?`top`:ee,k=`${w}|${T}|${E}|${D}|${O}|${ee}`;k!==r&&(r=k,x.position=`fixed`,x.setProperty(`transition`,`none`,`important`),x.left=w,x.right=T,x.top=E,x.bottom=D,e.dataset.pyFloatX=O,e.dataset.pyFloatY=ee,i={left:w===`auto`?u.left+u.width-Number.parseFloat(T)-g.width:Number.parseFloat(w),top:E===`auto`?u.top+u.height-Number.parseFloat(D)-g.height:Number.parseFloat(E),...g},a=O,o=te,window.dispatchEvent(new Event(Di)))},c=e=>typeof requestIdleCallback==`function`?requestIdleCallback(e,{timeout:1e3}):e(),l=()=>{clearTimeout(n),n=setTimeout(()=>c(s),150)};e.style.position=`fixed`,e.style.right=`12px`,e.style.bottom=`12px`,s(),l();let u=typeof MutationObserver>`u`?void 0:new MutationObserver(t=>{t.some(({target:t})=>!e.contains(t))&&l()});u?.observe(document.getElementById(`app`)??document.body,{childList:!0,subtree:!0}),u?.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-py-shell`,`data-py-viewport`]}),window.addEventListener(`resize`,l),window.addEventListener(`hashchange`,l),window.addEventListener(Di,l);let d=window.visualViewport;return d?.addEventListener(`resize`,l),d?.addEventListener(`scroll`,l),{update(){clearTimeout(n),s()},destroy(){clearTimeout(n),u?.disconnect(),window.removeEventListener(`resize`,l),window.removeEventListener(`hashchange`,l),window.removeEventListener(Di,l),d?.removeEventListener(`resize`,l),d?.removeEventListener(`scroll`,l)}}}var Ri=P(`<span class="size-1.5 rounded-full bg-primary" aria-hidden="true"></span>`),zi=P(`<span role="status"> </span>`),Bi=P(`<aside data-py-demo-badge="compact" class="pointer-events-none fixed z-30 flex size-5 select-none"><!> <!></aside>`),Vi=P(`<aside><span class="mr-1 inline-block size-1.5 rounded-full bg-primary align-middle" aria-hidden="true"></span> </aside>`);function Hi(e,t){L(t,!0);let n=q(`bottom-left`),r=q(null),i=q(!1),a=q(void 0),o={width:0,height:0};function s(){let e=F(a)?.closest(`#app`);if(e&&getComputedStyle(e).transform!==`none`){let t=e.getBoundingClientRect();return Ni({left:t.left,top:t.top,width:t.width,height:t.height})}return Ni(null)}function c(){let e=document.documentElement;if(!F(a))return;if(e.hasAttribute(`data-py-shell`)){V(r,null);return}if(F(r)||(o={width:F(a).offsetWidth,height:F(a).offsetHeight}),!o.width||typeof document.elementFromPoint!=`function`)return;let{container:t,origin:c}=s(),l=(e,t)=>{let n=document.elementFromPoint(e,t);return n&&F(a)?.contains(n)?null:n};if(!wi(t,o,l)){V(r,null),V(i,!1),V(n,Si(t,o,l),!0);return}let u=Ei(t,l);V(r,{left:u.left-c.left,top:u.top-c.top,right:u.left-t.left>t.width/2,bottom:u.top-t.top>t.height/2},!0)}Re(()=>{let e,t=e=>typeof requestIdleCallback==`function`?requestIdleCallback(e,{timeout:1e3}):e(),n=()=>{clearTimeout(e),e=setTimeout(()=>t(c),150)};n();let r=new MutationObserver(n);r.observe(document.getElementById(`app`)??document.body,{childList:!0,subtree:!0}),r.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-py-shell`,`data-py-viewport`]});let a=()=>V(i,!1),o=e=>{e.key===`Escape`&&a()};return window.addEventListener(`resize`,n),window.addEventListener(Di,n),window.addEventListener(`hashchange`,n),window.addEventListener(`hashchange`,a),window.addEventListener(`keydown`,o),()=>{window.removeEventListener(`hashchange`,a),window.removeEventListener(`keydown`,o),clearTimeout(e),r.disconnect(),window.removeEventListener(`resize`,n),window.removeEventListener(Di,n),window.removeEventListener(`hashchange`,n)}});let l=Tt().badge;var u=A(),d=I(u),f=e=>{var n=Bi();let o;var s=z(n);{let e=H(()=>wt(l.title,{name:t.name}));X(s,{variant:`ghost`,size:`icon`,type:`button`,class:`pointer-events-auto inline-flex size-5 items-center justify-center rounded-full border border-border bg-elevated/90 shadow-soft backdrop-blur focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,get"aria-expanded"(){return F(i)},get"aria-label"(){return l.text},get title(){return F(e)},onclick:()=>V(i,!F(i)),children:(e,t)=>{var n=Ri();Y(e,n)},$$slots:{default:!0}})}var c=G(s,2),u=e=>{var t=zi(),n=U(t,!0);R(()=>{Oe(t,1,be([`absolute whitespace-nowrap rounded-full border border-border bg-elevated px-2.5 py-1 text-[11px] font-medium text-muted-foreground shadow-soft`,F(r).bottom?`bottom-full mb-1`:`top-full mt-1`,F(r).right?`right-0`:`left-0`])),j(n,l.text)}),Y(e,t)};M(c,e=>{F(i)&&e(u)}),N(n),B(n,e=>V(a,e),()=>F(a)),R(()=>{Fe(n,`aria-label`,l.label),o=We(n,``,o,{left:`${F(r).left??``}px`,top:`${F(r).top??``}px`})}),Y(e,n)},p=e=>{var r=Vi(),i=G(z(r));N(r),B(r,e=>V(a,e),()=>F(a)),R((e,t)=>{Fe(r,`aria-label`,l.label),Fe(r,`data-py-demo-badge`,F(n)),Oe(r,1,e),Fe(r,`title`,t),j(i,` ${l.text??``}`)},[()=>be([`pointer-events-none fixed z-30 select-none whitespace-nowrap rounded-full border border-border bg-elevated px-2.5 py-1 text-[11px] font-medium text-muted-foreground shadow-soft`,F(n).startsWith(`top`)?`top-3`:`bottom-3 pb-safe`,F(n).endsWith(`left`)?`left-3`:`right-[calc(0.75rem+var(--py-fixed-right-edge,0px))]`]),()=>wt(l.title,{name:t.name})]),Y(e,r)};M(d,e=>{F(r)?e(f):e(p,-1)}),Y(e,u),J()}function Ui(e){switch(e.phase){case`generate`:return{label:`Generating the world…`,fraction:null};case`validate`:return{label:`Checking integrity…`,fraction:null};case`write`:{let t=e=>e.toLocaleString(`en-US`);return e.total>0?{label:`Writing ${t(e.done)} of ${t(e.total)} rows…`,fraction:e.done/e.total}:{label:`Writing rows…`,fraction:null}}default:return{label:`Scenario loaded.`,fraction:1}}}var Wi=P(`<!> <p class="sr-only" aria-live="polite" aria-atomic="true" data-py-pending-status=""> </p>`,1);function Gi(e,t){L(t,!0);let n=W(t,`delayMs`,3,150),r=W(t,`announceAfterMs`,3,1e3),i=xt(t.runtime),a=q(t.runtime.scenarios.progress?.()??null);K(()=>t.runtime.scenarios.subscribeProgress?.(e=>V(a,e)));let o=H(()=>i.active||F(a)!==null),s=q(!1),c=q(!1);K(()=>{if(!F(o)){V(s,!1),V(c,!1);return}let e=setTimeout(()=>V(s,!0),n()),t=setTimeout(()=>V(c,!0),r());return()=>{clearTimeout(e),clearTimeout(t)}});let l=H(()=>F(a)?Ui(F(a)):null),u=H(()=>F(l)?.fraction??null),d=H(()=>{if(F(l))return F(l).label;let e=i.operations[0];return e&&e.kind!==`service`?e.label:Tt().pending.working});var f=Wi(),p=I(f),m=e=>{{let t=H(()=>F(u)===null?null:Math.round(F(u)*100));ft(e,{class:`py-pending-bar`,"data-py-pending-bar":!0,size:`sm`,get value(){return F(t)},get ariaLabel(){return F(d)}})}};M(p,e=>{F(s)&&e(m)});var h=G(p,2),g=U(h,!0);R(()=>j(g,F(c)?F(d):``)),Y(e,f),J()}var Ki=P(`<p class="mt-1 text-xs font-medium text-destructive" role="alert"> </p>`),qi=P(`<div role="region" class="relative z-40 border-b border-border bg-accent px-4 py-3 text-sm text-accent-foreground"><div class="mx-auto flex max-w-5xl flex-col gap-3 sm:flex-row sm:items-center"><!> <div class="min-w-0 flex-1"><p><!></p> <p class="text-xs opacity-80"> </p> <!></div> <label class="inline-flex min-h-touch items-center gap-2 text-xs sm:min-h-0"><!> </label> <div class="flex gap-2"><!> <!></div></div></div>`);function Ji(e,t){L(t,!0);function n(){let e=t.runtime.scenarios;return typeof e.pendingLink==`function`?e.pendingLink():null}let r=q(Ne(n())),i=q(!0),a=Tt().linkedScenario,o=Tt().pending.loading,s=q(!1),c=q(null),l=H(()=>F(r)?t.runtime.scenarios.get(F(r).scenario)?.name??F(r).scenario:``);async function u(){if(F(r)){V(s,!0),V(c,null);try{await t.runtime.scenarios.load(F(r).scenario,{...F(r).seed===void 0?{}:{seed:F(r).seed},snapshotFirst:F(i)}),V(r,null)}catch(e){V(c,e instanceof Error?e.message:String(e),!0)}finally{V(s,!1)}}}var d=A(),f=I(d),p=e=>{var t=qi(),n=z(t),d=z(n);Dt(d,{name:`link`,class:`hidden size-4 shrink-0 sm:block`});var f=G(d,2),p=z(f),m=z(p);{let e=H(()=>F(r).seed===void 0?a.body:a.bodyWithSeed),t=H(()=>({scenario:F(l),...F(r).seed===void 0?{}:{seed:F(r).seed}}));Ot(m,{get template(){return F(e)},get values(){return F(t)},strong:[`scenario`]})}N(p);var h=G(p,2),g=U(h,!0),_=G(h,2),v=e=>{var t=Ki(),n=U(t,!0);R(()=>j(n,F(c))),Y(e,t)};M(_,e=>{F(c)&&e(v)}),N(f);var y=G(f,2),b=z(y);dt(b,{get checked(){return F(i)},onCheckedChange:e=>V(i,e===!0)});var x=G(b);N(y);var S=G(y,2),C=z(S);X(C,{type:`button`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md bg-primary px-3 text-sm font-medium text-primary-foreground hover:bg-primary-hover disabled:opacity-60 sm:min-h-8`,get disabled(){return F(s)},get"aria-busy"(){return F(s)},onclick:u,children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,F(s)?o:a.load)),Y(e,n)},$$slots:{default:!0}});var w=G(C,2);X(w,{type:`button`,variant:`outline`,size:`sm`,class:`inline-flex min-h-touch items-center rounded-md border border-border bg-surface px-3 text-sm font-medium text-surface-foreground hover:bg-muted sm:min-h-8`,get disabled(){return F(s)},onclick:()=>V(r,null),children:(e,t)=>{Ue();var n=Ae();R(()=>j(n,a.keep)),Y(e,n)},$$slots:{default:!0}}),N(S),N(n),N(t),R(()=>{Fe(t,`aria-label`,a.label),j(g,F(r).reason),j(x,` ${a.snapshotFirst??``}`)}),Y(e,t)};M(f,e=>{F(r)&&e(p)}),Y(e,d),J()}var Yi=`default`;function Xi(e){return`protoyard.${e}.frame-return`}function Zi(e,t,n=_e()){try{n?.setItem(Xi(e),t??Yi)}catch{}}function Qi(e,t=_e()){try{let n=t?.getItem(Xi(e)),r=f.safeParse(n);return r.success&&r.data!==`none`?r.data:void 0}catch{return}}function $i(e,t=_e()){try{t?.removeItem(Xi(e))}catch{}}function ea(e){let t=new URL(e,`http://protoyard.local`);return t.searchParams.get(`frame`)===`none`&&t.searchParams.delete(`frame`),t.searchParams.get(`shell`)===`none`&&t.searchParams.delete(`shell`),/^https?:\/\//.test(e)?t.toString():`${t.pathname}${t.search}${t.hash}`}var ta=[`[role="dialog"]`,`[role="alertdialog"]`,`[role="menu"]`,`[role="listbox"]`,`[aria-modal="true"]`,`dialog[open]`].join(`,`);function na(e){if(!(e instanceof Element))return!1;if(e.closest(`input, textarea, select`))return!0;let t=e.closest(`[contenteditable]`);return t!==null&&t.getAttribute(`contenteditable`)!==`false`}function ra(e,t=document){return e.key!==`Escape`||e.defaultPrevented||e.isComposing||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||na(e.target)?!1:![...t.querySelectorAll(ta)].some(e=>e.closest(`[inert], [aria-hidden="true"], [hidden]`)===null)}function ia(e){return e.overrides.get().shell??e.scenarios.active()?.scenario.appearance?.shell??e.manifest.preview.shell??`auto`}function aa(e){return e.manifest.build.frameWhenEmbedded&&ia(e)!==`auto`}function oa(e,t){let{shell:n}=e.theme.appearance();if(n.value!==`none`||n.source!==`override`)return;let s=e.manifest,c=Qi(s.storage.namespace)??e.scenarios.active()?.scenario.appearance?.shell??s.preview.shell??`auto`,l=u(c,s.platform);if(l===`none`)return;let d=s.preview,f=d.device&&r(d.device,l)?d.device:a(l,d.viewport),p=o(f),m=p?i(p,d.orientation??p.orientation):void 0;return jt({shell:l,spec:m,...t})===`none`?void 0:l}async function sa(e,t={}){Zi(e.manifest.storage.namespace,e.overrides.get().shell),t.browser&&document.documentElement.requestFullscreen?.().catch(()=>{}),await e.theme.setOverride({shell:`none`})}async function ca(e){let t=e.manifest.storage.namespace,n=Qi(t);if($i(t),typeof document<`u`&&document.fullscreenElement&&document.exitFullscreen?.().catch(()=>{}),typeof location<`u`){let e=ea(location.href);e!==location.href&&history.replaceState(history.state,``,e)}n?await e.theme.setOverride({shell:n}):await e.overrides.clear([`shell`])}var la=P(`<p data-py-frame-hint="" role="status" class="pointer-events-none fixed top-3 left-1/2 z-[70] -translate-x-1/2 rounded-full bg-zinc-900/85 px-3 py-1 text-xs text-white shadow-sm"> </p>`),ua=P(`<!> <!>`,1);function da(e,t){L(t,!0);let n=q(!0);Re(()=>{let e=setTimeout(()=>V(n,!1),4e3),r=e=>{ra(e)&&(e.preventDefault(),t.onexit())},i=!!document.fullscreenElement,a=()=>{let e=!!document.fullscreenElement;i&&!e&&t.onexit(),i=e};return window.addEventListener(`keydown`,r),document.addEventListener(`fullscreenchange`,a),()=>{clearTimeout(e),window.removeEventListener(`keydown`,r),document.removeEventListener(`fullscreenchange`,a)}});let r=Tt().frame;var i=ua(),a=I(i);X(a,{type:`button`,variant:`ghost`,size:`icon`,"data-py-frame-toggle":!0,get"aria-label"(){return r.exit},"aria-pressed":`true`,get title(){return r.exitHint},class:`pointer-events-none fixed top-2 right-2 z-[70] flex size-8 items-center justify-center rounded-full border border-white/20 bg-zinc-800/90 text-white opacity-0 shadow-sm focus-visible:pointer-events-auto focus-visible:opacity-100 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring dark:bg-zinc-950/90`,get onclick(){return t.onexit},children:(e,t)=>{Dt(e,{name:`shrink`,class:`size-4`})},$$slots:{default:!0}});var o=G(a,2),s=e=>{var t=la(),n=U(t,!0);R(()=>j(n,r.fullScreenNotice)),Y(e,t)};M(o,e=>{F(n)&&e(s)}),Y(e,i),J()}var fa=P(`<!> <span aria-hidden="true"> </span>`,1);function pa(e,t){L(t,!0);let n=W(t,`offset`,3,0),r=Tt().frame;{let i=H(()=>`bottom: calc(100% + ${n()+8}px); right: ${-n()}px`);X(e,{type:`button`,variant:`ghost`,size:`sm`,"data-py-frame-toggle":!0,get"aria-label"(){return r.enter},"aria-pressed":`false`,get title(){return r.enterHint},get style(){return F(i)},class:`pointer-events-auto absolute z-[35] inline-flex h-8 items-center gap-1.5 whitespace-nowrap rounded-full border border-white/20 bg-zinc-800/85 px-3 text-xs font-medium text-white shadow-sm hover:bg-zinc-700/90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring dark:bg-zinc-950/85`,onclick:e=>t.onenter({browser:e.shiftKey}),children:(e,t)=>{var n=fa(),i=I(n);Dt(i,{name:`expand`,class:`size-3.5`});var a=G(i,2),o=U(a,!0);R(()=>j(o,r.enterShort)),Y(e,n)},$$slots:{default:!0}})}J()}var ma=P(`<!> <div data-py-shell-part="stage"><div data-py-shell-part="sizer"><div data-py-shell-part="device"><div data-py-shell-part="screen"><!></div> <!> <!></div></div></div>`,1);function ha(e,t){L(t,!0);let n=St(t.runtime),r=typeof window<`u`&&kt(),a=H(()=>(n.current,r&&!aa(t.runtime))),s=typeof document<`u`&&At(),c=!1,l=q(Ne(typeof window>`u`?0:window.innerWidth)),u=q(void 0),d=q(Ne({width:0,height:0})),f=H(()=>{let e=o(n.current.device.value);return e?i(e,n.current.orientation.value):void 0}),p=H(()=>jt({shell:n.current.shell.value,spec:F(f),windowWidth:F(l),embedded:F(a),cssReady:s})),m=H(()=>F(p)===`none`?void 0:Ft[F(p)]),h=H(()=>F(p)!==`none`&&F(f)!==void 0&&F(m)!==void 0),g=H(()=>F(f)?Pt(F(f),F(m)):void 0),_=H(()=>F(g)?.inset??Mt(F(m))),v=H(()=>F(g)?.safe),y=[`widget-host`,`side-panel`,`extension-popup`],b=H(()=>!y.includes(F(p))),x=q(!1),S=q(!1);K(()=>{F(p),V(x,!1),V(S,!1)});let C=H(()=>F(h)&&F(f)&&F(m)?Nt(F(d),F(f),F(m),F(x)):void 0),w=H(()=>(n.current,oa(t.runtime,{windowWidth:F(l),embedded:F(a),cssReady:s}))),T=H(()=>{if(!F(C))return;let e=(e,t)=>e===0&&t===0?F(C).radius:0;return`${e(F(_).top,F(_).left)}px ${e(F(_).top,F(_).right)}px ${e(F(_).bottom,F(_).right)}px ${e(F(_).bottom,F(_).left)}px`}),E=q(null),D=q(void 0);K(()=>{let e=F(m);if(V(E,null),!e)return;let t=!1;return e.load().then(e=>{t||V(E,e.default)},e=>{console.error(`[protoyard] shell frame failed to load`,e)}),()=>{t=!0}}),K(()=>(F(h)&&F(D)?lt(F(D)):lt(null),()=>lt(null))),K(()=>{s||c||n.current.shell.value===`none`||(c=!0,console.warn(`[protoyard] The "${n.current.shell.value}" shell needs the renderer stylesheet, so the app renders full-bleed. Add \`@import '@protoyard/renderer-svelte/app.css';\` to this prototype's src/app.css.`))}),K(()=>{let e=document.documentElement;return F(h)?e.dataset.pyShell=F(p):delete e.dataset.pyShell,()=>{delete e.dataset.pyShell}}),K(()=>{if(!F(u)||typeof ResizeObserver>`u`)return;let e=new ResizeObserver(([e])=>{e&&V(d,{width:e.contentRect.width,height:e.contentRect.height},!0)});return e.observe(F(u)),()=>e.disconnect()});var O=ma(),ee=I(O),te=e=>{da(e,{onexit:()=>void ca(t.runtime).catch(console.error)})};M(ee,e=>{F(w)&&e(te)});var k=G(ee,2),ne=z(k);let re;var ie=z(ne);let ae;var oe=z(ie);let se;var ce=z(oe);{let e=H(()=>n.current.reducedMotion.value?!0:void 0);_t(ce,{get reducedMotion(){return F(e)},children:(e,n)=>{var r=A(),i=I(r);we(i,()=>t.children),Y(e,r)},$$slots:{default:!0}})}N(oe),B(oe,e=>V(D,e),()=>F(D));var le=G(oe,2),ue=e=>{var n=A(),r=I(n);{let e=H(()=>({name:t.runtime.manifest.name,icon:t.runtime.manifest.icon}));xe(r,()=>F(E),(n,r)=>{r(n,{get spec(){return F(f)},get shell(){return F(p)},get chrome(){return t.runtime.manifest.preview.chrome},get app(){return F(e)},get maximized(){return F(x)},setMaximized:e=>V(x,e,!0),setScreenHidden:e=>V(S,e,!0)})})}Y(e,n)};M(le,e=>{F(C)&&F(E)&&F(f)&&e(ue)});var de=G(le,2),fe=e=>{{let n=H(()=>F(m).bezel??0);pa(e,{get offset(){return F(n)},onenter:e=>void sa(t.runtime,e).catch(console.error)})}};M(de,e=>{F(C)&&F(m)&&!F(x)&&e(fe)}),N(ie),N(ne),N(k),B(k,e=>V(u,e),()=>F(u)),R(()=>{re=We(ne,``,re,{width:F(C)?`${F(C).width*F(C).scale}px`:void 0,height:F(C)?`${F(C).height*F(C).scale}px`:void 0}),Fe(ie,`data-py-maximized`,F(C)&&F(x)?``:void 0),ae=We(ie,``,ae,{"--py-device-radius":F(C)?`${F(C).radius}px`:void 0,width:F(C)?`${F(C).width}px`:void 0,height:F(C)?`${F(C).height}px`:void 0,transform:F(C)&&F(C).scale<1?`scale(${F(C).scale})`:void 0}),Fe(oe,`data-py-portal-root`,F(h)?``:void 0),Fe(oe,`aria-hidden`,F(C)&&F(S)?`true`:void 0),se=We(oe,``,se,{inset:F(C)&&F(b)?`${F(_).top}px ${F(_).right}px ${F(_).bottom}px ${F(_).left}px`:void 0,visibility:F(C)&&F(S)?`hidden`:void 0,"border-radius":F(b)?F(T):void 0,"--py-app-height":F(C)&&F(b)?`${F(C).height-F(_).top-F(_).bottom}px`:void 0,"--py-safe-top":F(C)&&F(v)&&F(b)?`${F(v).top}px`:void 0,"--py-safe-right":F(C)&&F(v)&&F(b)?`${F(v).right}px`:void 0,"--py-safe-bottom":F(C)&&F(v)&&F(b)?`${F(v).bottom}px`:void 0,"--py-safe-left":F(C)&&F(v)&&F(b)?`${F(v).left}px`:void 0,"--tx-safe-top":F(C)&&F(v)&&F(b)?`${F(v).top}px`:void 0,"--tx-safe-right":F(C)&&F(v)&&F(b)?`${F(v).right}px`:void 0,"--tx-safe-bottom":F(C)&&F(v)&&F(b)?`${F(v).bottom}px`:void 0,"--tx-safe-left":F(C)&&F(v)&&F(b)?`${F(v).left}px`:void 0})}),Ve(`innerWidth`,e=>V(l,e,!0)),Y(e,O),J()}var ga=P(`<div role="status" class="relative z-40 flex items-start gap-3 border-b border-border bg-warning px-4 py-2.5 pt-safe text-sm text-warning-foreground"><!> <p class="min-w-0 flex-1"><strong class="font-semibold"> </strong> </p> <!></div>`);function _a(e,t){L(t,!0);let n=q(!1),r=Tt().storage;var i=A(),a=I(i),o=e=>{var i=ga(),a=z(i);Dt(a,{name:`alert`,class:`mt-0.5 size-4 shrink-0`});var o=G(a,2),s=z(o),c=U(s,!0),l=G(s);N(o);var u=G(o,2);X(u,{type:`button`,variant:`ghost`,size:`icon`,class:`-m-1 inline-flex size-11 shrink-0 items-center justify-center rounded-md hover:bg-black/10 sm:size-7`,get"aria-label"(){return r.dismiss},onclick:()=>V(n,!0),children:(e,t)=>{Dt(e,{name:`close`})},$$slots:{default:!0}}),N(i),R(()=>{j(c,r.title),j(l,` ${t.storage.warning??r.body??``}`)}),Y(e,i)};M(a,e=>{F(n)||e(o)}),Y(e,i),J()}var va=P(`<!> <div data-py-scroll-root=""><!></div> <!>`,1),ya=P(`<!> <!> <!> <!> <!>`,1);function ba(e,t){L(t,!0);let n=W(t,`demoBadge`,3,!1),r=W(t,`devtools`,3,!1);bt(t.runtime);let i=t.runtime.storage(),a=xt(t.runtime),o=t.runtime.scenarios,s=typeof o.staleWorld==`function`?o.staleWorld():null;var c=ya(),l=I(c),u=e=>{_a(e,{get storage(){return i}})};M(l,e=>{i.persistent||e(u)});var d=G(l,2);Ji(d,{get runtime(){return t.runtime}});var f=G(d,2),p=e=>{var n=A(),i=I(n);Ce(i,()=>fe(()=>import(`./StaleWorldNotice-BQqYS-Lw.js`),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),null,(e,n)=>{var i=H(()=>{var{default:e}=F(n);return{StaleWorldNotice:e}}),a=H(()=>F(i).StaleWorldNotice),o=A(),c=I(o);xe(c,()=>F(a),(e,n)=>{n(e,{get runtime(){return t.runtime},get stale(){return s},get devtools(){return r()}})}),Y(e,o)}),Y(e,n)};M(f,e=>{s&&e(p)});var m=G(f,2);ha(m,{get runtime(){return t.runtime},children:(e,n)=>{var r=va(),i=I(r);Gi(i,{get runtime(){return t.runtime}});var o=G(i,2),s=z(o);xe(s,()=>t.App,(e,t)=>{t(e,{})}),N(o),Wn(G(o,2),{}),R(()=>Fe(o,`aria-busy`,a.active||void 0)),Y(e,r)},$$slots:{default:!0}});var h=G(m,2),g=e=>{Hi(e,{get name(){return t.runtime.manifest.name}})};M(h,e=>{n()&&e(g)}),Y(e,c),J()}async function xa(e){let{findLibraryThemeMeta:t,loadLibraryTheme:n}=await fe(async()=>{let{findLibraryThemeMeta:e,loadLibraryTheme:t}=await import(`./library-X49Tko4M.js`).then(e=>e.t);return{findLibraryThemeMeta:e,loadLibraryTheme:t}},__vite__mapDeps([16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url);return await t(e)?n(e):void 0}function Sa(e,t){let n=e.manifest,r=t?.namespace&&t.namespace!==n.storage.namespace?t.namespace:void 0,i=t?.frameWhenEmbedded===!0&&!n.build.frameWhenEmbedded;return!r&&!i?e:{...e,manifest:{...n,...r?{storage:{...n.storage,namespace:r}}:{},...i?{build:{...n.build,frameWhenEmbedded:!0}}:{}}}}function Ca(e,t){let n=e.manifest,r=t?.namespace!==void 0&&t.namespace!==n.storage.namespace?m.parse(t.namespace):void 0,i=t?.frameWhenEmbedded!==void 0&&t.frameWhenEmbedded!==n.build.frameWhenEmbedded?t.frameWhenEmbedded:void 0;return r===void 0&&i===void 0?e:{...e,manifest:{...n,...r?{storage:{...n.storage,namespace:r}}:{},...i===void 0?{}:{build:{...n.build,frameWhenEmbedded:i}}}}}async function wa(e){let{App:t,target:n,build:r}=e;try{Ct(e.messages)}catch(t){return Ct(),Ta(e.definition,n,t)}let i;try{i=Ca(Sa(e.definition,qn),r)}catch(t){return Ta(e.definition,n,t)}let a=he(pe,i.themes),o=e.search===void 0?li({scenarios:i.scenarios.map(e=>e.id),personas:i.scenarios.flatMap(e=>e.actor?.id?[e.actor.id]:[]),themes:a.map(e=>e.id)}):void 0,s=new URLSearchParams(e.search??location.search);if(o)for(let[e,t]of new URLSearchParams(o))s.set(e,t);let c=k(s.toString()),l=document.documentElement;delete l.dataset.protoyardReady;let u=[],d=e=>Ta(i,n,e),f=null;try{f=await(e.createRuntime??ii)(i,{themes:a,link:c,resolveTheme:xa});let t=!1,n=f.scenarios.subscribeProgress(e=>{e?.phase===`generate`&&(t=!0)});try{await f.scenarios.ensureSeeded()}finally{n()}performance.mark(`protoyard:world-ready`,{detail:{seeded:t}})}catch(e){return f?.close(),d(e)}let p=f;yt(p),window.__protoyard=p,u.push(Kn(p,a,l)),u.push(Ii());let m=r?.devtools??e.devtools??c.devtools!==!1;n.replaceChildren();let h;try{h=Ee(ba,{target:n,props:{runtime:p,App:t,demoBadge:r?.demoBadge??e.demoBadge??!0,devtools:m}})}catch(e){for(let e of u.reverse())await e();return yt(null),window.__protoyard===p&&delete window.__protoyard,p.close(),d(e)}u.push(()=>Se(h)),await De(),l.dataset.protoyardReady=`1`,performance.mark(`protoyard:ready`);let g;if(m&&new URLSearchParams(e.search??location.search).get(`comments`)===`1`)try{let{mountReview:e}=await fe(async()=>{let{mountReview:e}=await import(`./mount-N9_FnJSf.js`);return{mountReview:e}},__vite__mapDeps([28,20,4,5,29,11,30,10,9,31,32,33,34]),import.meta.url),t=await e({definition:i,runtime:p,root:n,place:Li,devtools:m});g=t.devtoolsTab,u.push(()=>t.destroy())}catch(e){console.error(`[protoyard] review comments failed to load`,e)}if(m)try{let[{mountDevtools:t},{avatarImage:n}]=await Promise.all([fe(()=>import(`./src-_ograGmM.js`),__vite__mapDeps([35,36,23,37,38,39,22,40,41,20,42,43,44,17,45,46,47,48,49,50,21,51,52,53,54,55,8,7,56,4,5,10,9,11,57,58,59,60,18,19,24,25,26,27,61,62,2,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,1,84,85,86,30,31,33,87,88,89,90,91,92,93,94,95,96,97,29,98,99,6,12,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116]),import.meta.url),fe(()=>import(`./avatars-CA9KfGtD.js`).then(e=>e.i),__vite__mapDeps([117,17,118,23,39,36]),import.meta.url)]),r=t({runtime:p,themes:a,avatarImage:n,...e.devtoolsTabs?.length||g?{extraTabs:[...e.devtoolsTabs??[],...g?[g]:[]]}:{}});u.push(()=>r.destroy())}catch(e){console.error(`[protoyard] DevTools failed to load`,e)}return Ea(p),u.push(Da()),l.dataset.pyReady=`true`,{runtime:p,error:null,async destroy(){for(let e of u.reverse())await e();yt(null),window.__protoyard===p&&delete window.__protoyard,delete l.dataset.pyReady,delete l.dataset.protoyardReady,p.close()}}}function Ta(e,t,n){console.error(`[protoyard] boot failed`,n),t.replaceChildren();let r=Ee(hi,{target:t,props:{error:n,namespace:e.manifest.storage.namespace,name:e.manifest.name}});return document.documentElement.dataset.pyReady=`error`,{runtime:null,error:n,destroy:async()=>{await Se(r)}}}async function Ea(e){if(e.storage().backend===`indexeddb`)try{let e=typeof navigator<`u`?navigator.storage:void 0;return e?.persist?await e.persisted?.()?!0:await e.persist():void 0}catch{return}}function Da(){let e=()=>{mt.info(`Update available`,{id:`protoyard-offline-update`,description:`A newer version of this prototype is ready. Your data is kept.`,duration:0,action:{label:`Reload`,onClick:()=>window.__protoyardOffline?.applyUpdate()}})};return window.__protoyardOffline?.updateAvailable&&e(),window.addEventListener(`protoyard:offline-update`,e),()=>window.removeEventListener(`protoyard:offline-update`,e)}var Oa=`/api/comments`,ka=`protoyard.player.index`,Aa=`protoyard.player.active-namespace`,ja=80,Ma=class extends vt{explorations;constructor(e){super(ka,e?{indexedDB:e}:void 0),this.version(1).stores({explorations:`namespace,lastOpened`})}};function Na(e){return e??globalThis.indexedDB}async function Pa(){let e=globalThis.navigator?.storage;if(e?.estimate)try{let t=await e.estimate();return typeof t.usage==`number`?t.usage:void 0}catch{return}}function Fa(e){let t=e.trim(),n=[...t].some(e=>{let t=e.charCodeAt(0);return t<32||t===127});if(!t||t.length>ja||n)throw Error(`keep name must be 1-${ja} printable characters`);return t}function Ia(e){let t=new URLSearchParams(e).get(`keep`);return t===null||t.trim()===``?null:Fa(t)}async function La(e){let t=Fa(e).normalize(`NFKC`).toLowerCase(),n=globalThis.crypto?.subtle;if(!n)throw Error(`keep mode needs Web Crypto (crypto.subtle)`);let r=new Uint8Array(await n.digest(`SHA-256`,new TextEncoder().encode(`protoyard.keep\u0000${t}`)));return`keep-${Array.from(r,e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,26)}`}async function Ra(e,t,n=``){let r=Ia(n);return{identity:t,namespace:r?await La(r):t.namespace,name:r??e.name,keepName:r}}async function za(e){if(!Na(e))throw Error(`IndexedDB is unavailable for the player index`);let t=new Ma(e);return await t.open(),{async list(){return(await t.explorations.orderBy(`lastOpened`).reverse().toArray()).map(e=>({...e,sizeEstimateBytes:e.sizeEstimateBytes??null}))},async put(e){await t.explorations.put(e)},async remove(e){await t.explorations.delete(e)},close(){t.close()}}}async function Ba(e,t){if(!Na(t))return!1;let n=await za(t);try{let t=await Pa();return await n.put({namespace:e.namespace,name:e.name,identitySha256:e.identity.sha256,lastOpened:new Date().toISOString(),...t===void 0?{}:{sizeEstimateBytes:t}}),!0}finally{n.close()}}function Va(e,t=(()=>{try{return globalThis.localStorage}catch{return}})()){try{return t?.setItem(Aa,e),!!t}catch{return!1}}export{wa as a,Oa as i,Ba as n,Ra as r,Va as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./family-wuWqPS3i.js";var n=e({loadStructureFamily:()=>t});export{n as t};