@epic-web/workshop-app 6.69.0 → 6.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_-BnmXymJG.js → _-dWSrc4Ox.js} +2 -2
- package/build/client/assets/{_-BnmXymJG.js.map → _-dWSrc4Ox.js.map} +1 -1
- package/build/client/assets/{_basePickBy-D6pFkWVF.js → _basePickBy-D77BeQbR.js} +2 -2
- package/build/client/assets/{_basePickBy-D6pFkWVF.js.map → _basePickBy-D77BeQbR.js.map} +1 -1
- package/build/client/assets/{_baseUniq-BbljtzXr.js → _baseUniq-DTO-tFvD.js} +2 -2
- package/build/client/assets/{_baseUniq-BbljtzXr.js.map → _baseUniq-DTO-tFvD.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber-77g7-L-x.js → _exerciseNumber-DNg1F_Vn.js} +2 -2
- package/build/client/assets/{_exerciseNumber-77g7-L-x.js.map → _exerciseNumber-DNg1F_Vn.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_._stepNumber.index-DYb7kg06.js → _exerciseNumber_._stepNumber.index-WLW-sVZ0.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber.index-DYb7kg06.js.map → _exerciseNumber_._stepNumber.index-WLW-sVZ0.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-CGoPhVVF.js → _exerciseNumber_.finished-BmUlhiS8.js} +2 -2
- package/build/client/assets/_exerciseNumber_.finished-BmUlhiS8.js.map +1 -0
- package/build/client/assets/_extra-fwsy2qkP.js +2 -0
- package/build/client/assets/_extra-fwsy2qkP.js.map +1 -0
- package/build/client/assets/_layout-BLOYb3Iq.js +2 -0
- package/build/client/assets/_layout-BLOYb3Iq.js.map +1 -0
- package/build/client/assets/_layout-C-j5TKNx.js +2 -0
- package/build/client/assets/_layout-C-j5TKNx.js.map +1 -0
- package/build/client/assets/{accordion-CzXT3k43.js → accordion-CQ7oujC6.js} +2 -2
- package/build/client/assets/{accordion-CzXT3k43.js.map → accordion-CQ7oujC6.js.map} +1 -1
- package/build/client/assets/{account-Cs3Te0is.js → account-C96cpeZR.js} +2 -2
- package/build/client/assets/{account-Cs3Te0is.js.map → account-C96cpeZR.js.map} +1 -1
- package/build/client/assets/app-CJniokic.js +2 -0
- package/build/client/assets/{app-TcFAQB2o.js.map → app-CJniokic.js.map} +1 -1
- package/build/client/assets/{arc-BHxP6xxO.js → arc-ChVm3d4e.js} +2 -2
- package/build/client/assets/{arc-BHxP6xxO.js.map → arc-ChVm3d4e.js.map} +1 -1
- package/build/client/assets/{architectureDiagram-VXUJARFQ-oEJHJt7x.js → architectureDiagram-VXUJARFQ-DkqyKZ50.js} +2 -2
- package/build/client/assets/{architectureDiagram-VXUJARFQ-oEJHJt7x.js.map → architectureDiagram-VXUJARFQ-DkqyKZ50.js.map} +1 -1
- package/build/client/assets/{blockDiagram-VD42YOAC-7xzSJqoM.js → blockDiagram-VD42YOAC-Cqa8Z0qT.js} +2 -2
- package/build/client/assets/{blockDiagram-VD42YOAC-7xzSJqoM.js.map → blockDiagram-VD42YOAC-Cqa8Z0qT.js.map} +1 -1
- package/build/client/assets/{button-CIlVtsau.js → button-Cd-ekki5.js} +2 -2
- package/build/client/assets/{button-CIlVtsau.js.map → button-Cd-ekki5.js.map} +1 -1
- package/build/client/assets/{c4Diagram-YG6GDRKO-BUdT9rCJ.js → c4Diagram-YG6GDRKO-BHQRSJ1P.js} +2 -2
- package/build/client/assets/{c4Diagram-YG6GDRKO-BUdT9rCJ.js.map → c4Diagram-YG6GDRKO-BHQRSJ1P.js.map} +1 -1
- package/build/client/assets/{cache-MJu_dqFS.js → cache-CAr50MIB.js} +2 -2
- package/build/client/assets/{cache-MJu_dqFS.js.map → cache-CAr50MIB.js.map} +1 -1
- package/build/client/assets/channel-B7uExpgv.js +2 -0
- package/build/client/assets/{channel-BLJkdd1O.js.map → channel-B7uExpgv.js.map} +1 -1
- package/build/client/assets/{chunk-4BX2VUAB-qrzenNNi.js → chunk-4BX2VUAB-BOJM4J9w.js} +2 -2
- package/build/client/assets/{chunk-4BX2VUAB-qrzenNNi.js.map → chunk-4BX2VUAB-BOJM4J9w.js.map} +1 -1
- package/build/client/assets/{chunk-55IACEB6-BOr0rES3.js → chunk-55IACEB6-CO_GT_87.js} +2 -2
- package/build/client/assets/{chunk-55IACEB6-BOr0rES3.js.map → chunk-55IACEB6-CO_GT_87.js.map} +1 -1
- package/build/client/assets/{chunk-B4BG7PRW-C2qQTBXm.js → chunk-B4BG7PRW-CqfZTumF.js} +2 -2
- package/build/client/assets/{chunk-B4BG7PRW-C2qQTBXm.js.map → chunk-B4BG7PRW-CqfZTumF.js.map} +1 -1
- package/build/client/assets/{chunk-DI55MBZ5-CSfEUcAq.js → chunk-DI55MBZ5-CxSXOmoK.js} +2 -2
- package/build/client/assets/{chunk-DI55MBZ5-CSfEUcAq.js.map → chunk-DI55MBZ5-CxSXOmoK.js.map} +1 -1
- package/build/client/assets/{chunk-FMBD7UC4-CyJoWksV.js → chunk-FMBD7UC4-ChHVMdVq.js} +2 -2
- package/build/client/assets/{chunk-FMBD7UC4-CyJoWksV.js.map → chunk-FMBD7UC4-ChHVMdVq.js.map} +1 -1
- package/build/client/assets/{chunk-QN33PNHL-BpbvTQdp.js → chunk-QN33PNHL-DKEBwj3f.js} +2 -2
- package/build/client/assets/{chunk-QN33PNHL-BpbvTQdp.js.map → chunk-QN33PNHL-DKEBwj3f.js.map} +1 -1
- package/build/client/assets/{chunk-QZHKN3VN-C2RN0CtQ.js → chunk-QZHKN3VN-Cu5tuE5n.js} +2 -2
- package/build/client/assets/{chunk-QZHKN3VN-C2RN0CtQ.js.map → chunk-QZHKN3VN-Cu5tuE5n.js.map} +1 -1
- package/build/client/assets/{chunk-TZMSLE5B-0z8lxtDn.js → chunk-TZMSLE5B-BpvH1fVS.js} +2 -2
- package/build/client/assets/{chunk-TZMSLE5B-0z8lxtDn.js.map → chunk-TZMSLE5B-BpvH1fVS.js.map} +1 -1
- package/build/client/assets/classDiagram-2ON5EDUG-BjjlpwdW.js +2 -0
- package/build/client/assets/{classDiagram-2ON5EDUG-_kfNpv_f.js.map → classDiagram-2ON5EDUG-BjjlpwdW.js.map} +1 -1
- package/build/client/assets/classDiagram-v2-WZHVMYZB-BjjlpwdW.js +2 -0
- package/build/client/assets/{classDiagram-v2-WZHVMYZB-_kfNpv_f.js.map → classDiagram-v2-WZHVMYZB-BjjlpwdW.js.map} +1 -1
- package/build/client/assets/clone-DRkw5ylZ.js +2 -0
- package/build/client/assets/{clone-CztDUJhf.js.map → clone-DRkw5ylZ.js.map} +1 -1
- package/build/client/assets/{cose-bilkent-S5V4N54A-DQM-J4RL.js → cose-bilkent-S5V4N54A-9tAqXXXx.js} +2 -2
- package/build/client/assets/{cose-bilkent-S5V4N54A-DQM-J4RL.js.map → cose-bilkent-S5V4N54A-9tAqXXXx.js.map} +1 -1
- package/build/client/assets/{dagre-6UL2VRFP-BdfvKPZ9.js → dagre-6UL2VRFP-DdQahM76.js} +2 -2
- package/build/client/assets/{dagre-6UL2VRFP-BdfvKPZ9.js.map → dagre-6UL2VRFP-DdQahM76.js.map} +1 -1
- package/build/client/assets/{db-x6v-Uxrh.js → db-DAnX-T3_.js} +2 -2
- package/build/client/assets/{db-x6v-Uxrh.js.map → db-DAnX-T3_.js.map} +1 -1
- package/build/client/assets/{diagram-PSM6KHXK-CgwBEb3G.js → diagram-PSM6KHXK-D2ghOCFR.js} +2 -2
- package/build/client/assets/{diagram-PSM6KHXK-CgwBEb3G.js.map → diagram-PSM6KHXK-D2ghOCFR.js.map} +1 -1
- package/build/client/assets/{diagram-QEK2KX5R-DEaXdLXz.js → diagram-QEK2KX5R-CVdPnwKa.js} +2 -2
- package/build/client/assets/{diagram-QEK2KX5R-DEaXdLXz.js.map → diagram-QEK2KX5R-CVdPnwKa.js.map} +1 -1
- package/build/client/assets/{diagram-S2PKOQOG-Dq5QQWqq.js → diagram-S2PKOQOG-ByHcRNai.js} +2 -2
- package/build/client/assets/{diagram-S2PKOQOG-Dq5QQWqq.js.map → diagram-S2PKOQOG-ByHcRNai.js.map} +1 -1
- package/build/client/assets/{dialog-DnpUg3VT.js → dialog-CzO65Z5w.js} +3 -3
- package/build/client/assets/{dialog-DnpUg3VT.js.map → dialog-CzO65Z5w.js.map} +1 -1
- package/build/client/assets/{diff-CxEbhF8Q.js → diff-BhWzqoVN.js} +2 -2
- package/build/client/assets/{diff-CxEbhF8Q.js.map → diff-BhWzqoVN.js.map} +1 -1
- package/build/client/assets/{diff-eAvgXb3f.js → diff-DC-wn6-x.js} +2 -2
- package/build/client/assets/{diff-eAvgXb3f.js.map → diff-DC-wn6-x.js.map} +1 -1
- package/build/client/assets/{discord-DlU9y5Iz.js → discord-BJkw0IrB.js} +2 -2
- package/build/client/assets/{discord-DlU9y5Iz.js.map → discord-BJkw0IrB.js.map} +1 -1
- package/build/client/assets/{discord-CuxZiU8E.js → discord-r3m19sUM.js} +2 -2
- package/build/client/assets/discord-r3m19sUM.js.map +1 -0
- package/build/client/assets/{epic-video-Bx8Ctiez.js → epic-video-8Hv_HMMr.js} +2 -2
- package/build/client/assets/{epic-video-Bx8Ctiez.js.map → epic-video-8Hv_HMMr.js.map} +1 -1
- package/build/client/assets/{epic-video-BVcJzJzi.js → epic-video-D0drHmgC.js} +2 -2
- package/build/client/assets/{epic-video-BVcJzJzi.js.map → epic-video-D0drHmgC.js.map} +1 -1
- package/build/client/assets/{erDiagram-Q2GNP2WA-CW73Zw0q.js → erDiagram-Q2GNP2WA-CBRWzQzK.js} +2 -2
- package/build/client/assets/{erDiagram-Q2GNP2WA-CW73Zw0q.js.map → erDiagram-Q2GNP2WA-CBRWzQzK.js.map} +1 -1
- package/build/client/assets/{error-boundary-DFBd6s0g.js → error-boundary-DVp6wKiz.js} +2 -2
- package/build/client/assets/{error-boundary-DFBd6s0g.js.map → error-boundary-DVp6wKiz.js.map} +1 -1
- package/build/client/assets/{finished-CmV4aFjA.js → finished-Cr3pXmrH.js} +2 -2
- package/build/client/assets/{finished-CmV4aFjA.js.map → finished-Cr3pXmrH.js.map} +1 -1
- package/build/client/assets/{flowDiagram-NV44I4VS-BbxV9VQf.js → flowDiagram-NV44I4VS-L32__tfK.js} +2 -2
- package/build/client/assets/{flowDiagram-NV44I4VS-BbxV9VQf.js.map → flowDiagram-NV44I4VS-L32__tfK.js.map} +1 -1
- package/build/client/assets/{ganttDiagram-JELNMOA3-CRBJBlE5.js → ganttDiagram-JELNMOA3-Dpp5PKJc.js} +2 -2
- package/build/client/assets/{ganttDiagram-JELNMOA3-CRBJBlE5.js.map → ganttDiagram-JELNMOA3-Dpp5PKJc.js.map} +1 -1
- package/build/client/assets/{gitGraphDiagram-NY62KEGX-CU0X3hfs.js → gitGraphDiagram-NY62KEGX-zn4IXANG.js} +2 -2
- package/build/client/assets/{gitGraphDiagram-NY62KEGX-CU0X3hfs.js.map → gitGraphDiagram-NY62KEGX-zn4IXANG.js.map} +1 -1
- package/build/client/assets/{graph-CEUh1UxC.js → graph-Da5nhwRG.js} +2 -2
- package/build/client/assets/{graph-CEUh1UxC.js.map → graph-Da5nhwRG.js.map} +1 -1
- package/build/client/assets/index-AMZhCeTP.js +2 -0
- package/build/client/assets/index-AMZhCeTP.js.map +1 -0
- package/build/client/assets/{index-D3zOGeBE.js → index-BKAVQvm5.js} +2 -2
- package/build/client/assets/{index-D3zOGeBE.js.map → index-BKAVQvm5.js.map} +1 -1
- package/build/client/assets/{index-BOhw3wcM.js → index-CJDOQ1bl.js} +2 -2
- package/build/client/assets/{index-BOhw3wcM.js.map → index-CJDOQ1bl.js.map} +1 -1
- package/build/client/assets/{index-BW8stNyh.js → index-CdzVFL-Z.js} +3 -3
- package/build/client/assets/{index-BW8stNyh.js.map → index-CdzVFL-Z.js.map} +1 -1
- package/build/client/assets/index-CmflCPTU.js +2 -0
- package/build/client/assets/index-CmflCPTU.js.map +1 -0
- package/build/client/assets/index-hhQHCvb9.js +2 -0
- package/build/client/assets/{index-EdNV8gTk.js.map → index-hhQHCvb9.js.map} +1 -1
- package/build/client/assets/{index-B-9GR1C2.js → index-wDjETrF-.js} +2 -2
- package/build/client/assets/{index-B-9GR1C2.js.map → index-wDjETrF-.js.map} +1 -1
- package/build/client/assets/{index-C_KjwKVt.js → index-ynYvVAOK.js} +2 -2
- package/build/client/assets/{index-C_KjwKVt.js.map → index-ynYvVAOK.js.map} +1 -1
- package/build/client/assets/{infoDiagram-WHAUD3N6-BplcSre1.js → infoDiagram-WHAUD3N6-CToPP1ur.js} +2 -2
- package/build/client/assets/{infoDiagram-WHAUD3N6-BplcSre1.js.map → infoDiagram-WHAUD3N6-CToPP1ur.js.map} +1 -1
- package/build/client/assets/{journeyDiagram-XKPGCS4Q-yxvCkf49.js → journeyDiagram-XKPGCS4Q-BBRpqEuF.js} +2 -2
- package/build/client/assets/{journeyDiagram-XKPGCS4Q-yxvCkf49.js.map → journeyDiagram-XKPGCS4Q-BBRpqEuF.js.map} +1 -1
- package/build/client/assets/{kanban-definition-3W4ZIXB7-DFEBMrRH.js → kanban-definition-3W4ZIXB7-CyGlZ-MK.js} +2 -2
- package/build/client/assets/{kanban-definition-3W4ZIXB7-DFEBMrRH.js.map → kanban-definition-3W4ZIXB7-CyGlZ-MK.js.map} +1 -1
- package/build/client/assets/{launch-editor-B2dmpkaO.js → launch-editor-D2exGfVu.js} +2 -2
- package/build/client/assets/{launch-editor-B2dmpkaO.js.map → launch-editor-D2exGfVu.js.map} +1 -1
- package/build/client/assets/{layout-CiHrgFnf.js → layout-CUEelucj.js} +2 -2
- package/build/client/assets/{layout-CiHrgFnf.js.map → layout-CUEelucj.js.map} +1 -1
- package/build/client/assets/{linear-C-81cvJP.js → linear-DzZ9bjHs.js} +2 -2
- package/build/client/assets/{linear-C-81cvJP.js.map → linear-DzZ9bjHs.js.map} +1 -1
- package/build/client/assets/{loading-CUydCGD3.js → loading-CDNzW5oO.js} +2 -2
- package/build/client/assets/{loading-CUydCGD3.js.map → loading-CDNzW5oO.js.map} +1 -1
- package/build/client/assets/{login-DvBmP_ce.js → login-mWjVXGbJ.js} +2 -2
- package/build/client/assets/{login-DvBmP_ce.js.map → login-mWjVXGbJ.js.map} +1 -1
- package/build/client/assets/manifest-e2f9a54b.js +1 -0
- package/build/client/assets/{mdx-vrch0szL.js → mdx-BzyhMqFg.js} +3 -3
- package/build/client/assets/{mdx-vrch0szL.js.map → mdx-BzyhMqFg.js.map} +1 -1
- package/build/client/assets/{mermaid.core-D3y7PO8B.js → mermaid.core-BdxLLjl2.js} +5 -5
- package/build/client/assets/{mermaid.core-D3y7PO8B.js.map → mermaid.core-BdxLLjl2.js.map} +1 -1
- package/build/client/assets/{mindmap-definition-VGOIOE7T-VMZ6ZZlW.js → mindmap-definition-VGOIOE7T-DeKD8ncg.js} +2 -2
- package/build/client/assets/{mindmap-definition-VGOIOE7T-VMZ6ZZlW.js.map → mindmap-definition-VGOIOE7T-DeKD8ncg.js.map} +1 -1
- package/build/client/assets/{misc-DVYuZMjW.js → misc-W4055b-0.js} +2 -2
- package/build/client/assets/{misc-DVYuZMjW.js.map → misc-W4055b-0.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-DlNUibJV.js → nav-chevrons-Dk4GtZwQ.js} +2 -2
- package/build/client/assets/{nav-chevrons-DlNUibJV.js.map → nav-chevrons-Dk4GtZwQ.js.map} +1 -1
- package/build/client/assets/{offline-videos-Do9PBh87.js → offline-videos-BP7_xJkO.js} +2 -2
- package/build/client/assets/{offline-videos-Do9PBh87.js.map → offline-videos-BP7_xJkO.js.map} +1 -1
- package/build/client/assets/{onboarding-indicator-CVwXz3Cn.js → onboarding-indicator-B-XR90_G.js} +2 -2
- package/build/client/assets/{onboarding-indicator-CVwXz3Cn.js.map → onboarding-indicator-B-XR90_G.js.map} +1 -1
- package/build/client/assets/{pieDiagram-ADFJNKIX-CKbrBdQs.js → pieDiagram-ADFJNKIX-BQ4sFDrB.js} +2 -2
- package/build/client/assets/{pieDiagram-ADFJNKIX-CKbrBdQs.js.map → pieDiagram-ADFJNKIX-BQ4sFDrB.js.map} +1 -1
- package/build/client/assets/playground-DmEAkxG1.js +2 -0
- package/build/client/assets/playground-DmEAkxG1.js.map +1 -0
- package/build/client/assets/{playground-window-D9a7P7rH.js → playground-window-x2mQ5o1O.js} +2 -2
- package/build/client/assets/{playground-window-D9a7P7rH.js.map → playground-window-x2mQ5o1O.js.map} +1 -1
- package/build/client/assets/{preferences-BCvK10k2.js → preferences-D6HQ5bK1.js} +2 -2
- package/build/client/assets/{preferences-BCvK10k2.js.map → preferences-D6HQ5bK1.js.map} +1 -1
- package/build/client/assets/{preview-CiDtuQCc.js → preview-fhmjENlm.js} +2 -2
- package/build/client/assets/{preview-CiDtuQCc.js.map → preview-fhmjENlm.js.map} +1 -1
- package/build/client/assets/{product-GLsnY1u3.js → product-CvyMpYD_.js} +2 -2
- package/build/client/assets/{product-GLsnY1u3.js.map → product-CvyMpYD_.js.map} +1 -1
- package/build/client/assets/{progress-fKsNxmmt.js → progress-By6-_9Ii.js} +2 -2
- package/build/client/assets/{progress-fKsNxmmt.js.map → progress-By6-_9Ii.js.map} +1 -1
- package/build/client/assets/{progress-bar-B27isaGl.js → progress-bar-DpWhcyhC.js} +2 -2
- package/build/client/assets/{progress-bar-B27isaGl.js.map → progress-bar-DpWhcyhC.js.map} +1 -1
- package/build/client/assets/{quadrantDiagram-AYHSOK5B-Bb5EtkPw.js → quadrantDiagram-AYHSOK5B-QnjodHfi.js} +2 -2
- package/build/client/assets/{quadrantDiagram-AYHSOK5B-Bb5EtkPw.js.map → quadrantDiagram-AYHSOK5B-QnjodHfi.js.map} +1 -1
- package/build/client/assets/{requirementDiagram-UZGBJVZJ-BNsXiFG2.js → requirementDiagram-UZGBJVZJ-mL9Oeda0.js} +2 -2
- package/build/client/assets/{requirementDiagram-UZGBJVZJ-BNsXiFG2.js.map → requirementDiagram-UZGBJVZJ-mL9Oeda0.js.map} +1 -1
- package/build/client/assets/{root-Ch373D3a.js → root-BkPGxm0k.js} +2 -2
- package/build/client/assets/{root-Ch373D3a.js.map → root-BkPGxm0k.js.map} +1 -1
- package/build/client/assets/{sankeyDiagram-TZEHDZUN-qlPqhk7P.js → sankeyDiagram-TZEHDZUN-B8_zpQVR.js} +2 -2
- package/build/client/assets/{sankeyDiagram-TZEHDZUN-qlPqhk7P.js.map → sankeyDiagram-TZEHDZUN-B8_zpQVR.js.map} +1 -1
- package/build/client/assets/{sequenceDiagram-WL72ISMW-C3d31B7K.js → sequenceDiagram-WL72ISMW-BDd5tjuk.js} +2 -2
- package/build/client/assets/{sequenceDiagram-WL72ISMW-C3d31B7K.js.map → sequenceDiagram-WL72ISMW-BDd5tjuk.js.map} +1 -1
- package/build/client/assets/{set-playground-DeMY9i7p.js → set-playground-BSGwH9dH.js} +2 -2
- package/build/client/assets/{set-playground-DeMY9i7p.js.map → set-playground-BSGwH9dH.js.map} +1 -1
- package/build/client/assets/{stateDiagram-FKZM4ZOC-C1eIQm_7.js → stateDiagram-FKZM4ZOC-DGPNpRbW.js} +2 -2
- package/build/client/assets/{stateDiagram-FKZM4ZOC-C1eIQm_7.js.map → stateDiagram-FKZM4ZOC-DGPNpRbW.js.map} +1 -1
- package/build/client/assets/stateDiagram-v2-4FDKWEC3-DxaFuKxL.js +2 -0
- package/build/client/assets/{stateDiagram-v2-4FDKWEC3-CAmcrDIS.js.map → stateDiagram-v2-4FDKWEC3-DxaFuKxL.js.map} +1 -1
- package/build/client/assets/status-indicator-C6DiLYL5.js +2 -0
- package/build/client/assets/status-indicator-C6DiLYL5.js.map +1 -0
- package/build/client/assets/test-DtQCjBBX.js +2 -0
- package/build/client/assets/{test-CdEKoDoS.js.map → test-DtQCjBBX.js.map} +1 -1
- package/build/client/assets/{tests-xD9PppmM.js → tests-fDISNsE-.js} +2 -2
- package/build/client/assets/{tests-xD9PppmM.js.map → tests-fDISNsE-.js.map} +1 -1
- package/build/client/assets/{timeline-definition-IT6M3QCI-Di_ZGPjO.js → timeline-definition-IT6M3QCI-BnMOh0dz.js} +2 -2
- package/build/client/assets/{timeline-definition-IT6M3QCI-Di_ZGPjO.js.map → timeline-definition-IT6M3QCI-BnMOh0dz.js.map} +1 -1
- package/build/client/assets/{tooltip-Chzzs4KB.js → tooltip-Tlsyx2YO.js} +2 -2
- package/build/client/assets/{tooltip-Chzzs4KB.js.map → tooltip-Tlsyx2YO.js.map} +1 -1
- package/build/client/assets/{treemap-KMMF4GRG-DZrMUxqR.js → treemap-KMMF4GRG-Ds3XkDP-.js} +2 -2
- package/build/client/assets/{treemap-KMMF4GRG-DZrMUxqR.js.map → treemap-KMMF4GRG-Ds3XkDP-.js.map} +1 -1
- package/build/client/assets/{workspace-structure-i_5Tiikk.js → workspace-structure-B6Rpl-B2.js} +2 -2
- package/build/client/assets/{workspace-structure-i_5Tiikk.js.map → workspace-structure-B6Rpl-B2.js.map} +1 -1
- package/build/client/assets/{xychartDiagram-PRI3JC2R-BxuKJVc7.js → xychartDiagram-PRI3JC2R-DH_JPNZp.js} +2 -2
- package/build/client/assets/{xychartDiagram-PRI3JC2R-BxuKJVc7.js.map → xychartDiagram-PRI3JC2R-DH_JPNZp.js.map} +1 -1
- package/build/server/index.js +443 -111
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/_exerciseNumber_.finished-CGoPhVVF.js.map +0 -1
- package/build/client/assets/_extra-BZPB_nWQ.js +0 -2
- package/build/client/assets/_extra-BZPB_nWQ.js.map +0 -1
- package/build/client/assets/_layout-BxQPZuW6.js +0 -2
- package/build/client/assets/_layout-BxQPZuW6.js.map +0 -1
- package/build/client/assets/_layout-yxOoJ6Yg.js +0 -2
- package/build/client/assets/_layout-yxOoJ6Yg.js.map +0 -1
- package/build/client/assets/app-TcFAQB2o.js +0 -2
- package/build/client/assets/channel-BLJkdd1O.js +0 -2
- package/build/client/assets/classDiagram-2ON5EDUG-_kfNpv_f.js +0 -2
- package/build/client/assets/classDiagram-v2-WZHVMYZB-_kfNpv_f.js +0 -2
- package/build/client/assets/clone-CztDUJhf.js +0 -2
- package/build/client/assets/discord-CuxZiU8E.js.map +0 -1
- package/build/client/assets/index-C6vQqVxz.js +0 -2
- package/build/client/assets/index-C6vQqVxz.js.map +0 -1
- package/build/client/assets/index-EdNV8gTk.js +0 -2
- package/build/client/assets/manifest-34df6718.js +0 -1
- package/build/client/assets/playground-C_aP_pE8.js +0 -2
- package/build/client/assets/playground-C_aP_pE8.js.map +0 -1
- package/build/client/assets/stateDiagram-v2-4FDKWEC3-CAmcrDIS.js +0 -2
- package/build/client/assets/test-CdEKoDoS.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-CEUh1UxC.js","sources":["../../../../../node_modules/lodash-es/union.js","../../../../../node_modules/dagre-d3-es/src/graphlib/graph.js"],"sourcesContent":["import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n constructor(opts = {}) {\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return _.keys(this._nodes);\n }\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return _.values(this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"],"names":["union","baseRest","arrays","baseUniq","baseFlatten","isArrayLikeObject","DEFAULT_EDGE_NAME","GRAPH_NODE","EDGE_KEY_DELIM","Graph","opts","_.constant","label","newDefault","_.isFunction","_.keys","self","_.filter","v","_.isEmpty","vs","value","args","_.each","removeEdge","e","child","parent","_.isUndefined","ancestor","children","predsV","sucsV","preds","_.union","neighbors","filter","copy","parents","findParent","_.values","_.reduce","w","name","valueSpecified","arg0","edgeArgsToId","edgeObj","edgeArgsToObj","incrementOrInitEntry","edgeObjToId","edge","decrementOrRemoveEntry","u","inV","edges","outV","inEdges","map","k","isDirected","v_","w_","tmp"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"graph-Da5nhwRG.js","sources":["../../../../../node_modules/lodash-es/union.js","../../../../../node_modules/dagre-d3-es/src/graphlib/graph.js"],"sourcesContent":["import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n constructor(opts = {}) {\n this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n ? opts.directed\n : true;\n this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n ? opts.multigraph\n : false;\n this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n ? opts.compound\n : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return _.keys(this._nodes);\n }\n sources() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return _.filter(this.nodes(), function (v) {\n return _.isEmpty(self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return Object.prototype.hasOwnProperty.call(this._nodes, v);\n }\n removeNode(v) {\n if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), (child) => {\n this.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return _.values(this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!_.isUndefined(name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"],"names":["union","baseRest","arrays","baseUniq","baseFlatten","isArrayLikeObject","DEFAULT_EDGE_NAME","GRAPH_NODE","EDGE_KEY_DELIM","Graph","opts","_.constant","label","newDefault","_.isFunction","_.keys","self","_.filter","v","_.isEmpty","vs","value","args","_.each","removeEdge","e","child","parent","_.isUndefined","ancestor","children","predsV","sucsV","preds","_.union","neighbors","filter","copy","parents","findParent","_.values","_.reduce","w","name","valueSpecified","arg0","edgeArgsToId","edgeObj","edgeArgsToObj","incrementOrInitEntry","edgeObjToId","edge","decrementOrRemoveEntry","u","inV","edges","outV","inEdges","map","k","isDirected","v_","w_","tmp"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{w as C,k as S,F as h,L as N}from"./chunk-EPOLDU6W-BCLmut3y.js";import{j as e}from"./jsx-runtime-C5WNSv3b.js";import{I as m,a as j,c as f,e as P}from"./misc-W4055b-0.js";import{S as y}from"./tooltip-Tlsyx2YO.js";import{a as A}from"./progress-By6-_9Ii.js";import{g as D}from"./root-loader-BOzEMapJ.js";import"./index-CqIc3cxq.js";import"./index-vDCSPjrM.js";import"./pe-CIZUOJMr.js";const H={getSitemapEntries:()=>null},U=({matches:s})=>[{title:`👷 | ${D(s)?.workshopTitle}`}];function T(s,n){return s.type==="unknown"&&n.type==="unknown"?0:s.type==="unknown"?-1:n.type==="unknown"?1:0}function O(s){switch(s.type){case"workshop-instructions":return"/";case"workshop-finished":return"/finished";case"instructions":return`/${s.exerciseNumber.toString().padStart(2,"0")}`;case"step":return`/${s.exerciseNumber.toString().padStart(2,"0")}/${s.stepNumber.toString().padStart(2,"0")}`;case"finished":return`/${s.exerciseNumber.toString().padStart(2,"0")}/finished`;default:return""}}const q=C(function({loaderData:n}){const x=S(),u=A(),p=x.formData?.get("intent")==="inspect",w=x.formData?.get("intent")==="stop-inspect",k={completed:"bg-success",incomplete:"bg-warning"};return e.jsxs("div",{className:"flex flex-col gap-6 p-6",children:[e.jsxs("div",{className:"mb-2",children:[e.jsx("h1",{className:"text-foreground text-2xl font-bold",children:"Admin Panel"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm",children:"Manage workshop settings and monitor processes"})]}),e.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[Object.entries(n.sidecarProcesses).length>0&&e.jsxs(i,{children:[e.jsxs(a,{children:[e.jsx(o,{children:"Sidecar Processes"}),e.jsx(c,{children:"Background sidecar processes"})]}),e.jsx(d,{children:e.jsx("ul",{className:"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto",children:Object.entries(n.sidecarProcesses).map(([t,r])=>e.jsxs("li",{className:"border-border bg-muted/30 rounded-md border p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[r.running?e.jsx(l,{status:"running"}):e.jsx(l,{status:"taken"}),e.jsx("span",{className:"font-mono text-sm font-semibold",children:t})]}),e.jsxs("div",{className:"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs",children:[r.pid&&e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"PID:"})," ",r.pid]}),e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"Status:"})," ",r.running?"Running":"Failed"]})]})]},t))})})]}),e.jsxs(i,{children:[e.jsxs(a,{children:[e.jsx(o,{children:"Commands"}),e.jsx(c,{children:"Workshop management actions"})]}),e.jsx(d,{children:e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(h,{method:"POST",children:e.jsxs(v,{name:"intent",value:"clear-caches",children:[e.jsx(m,{name:"Clear",className:"h-4 w-4"}),"Clear local caches"]})}),e.jsx(h,{method:"POST",children:e.jsxs(v,{name:"intent",value:"clear-data",className:"border-destructive bg-destructive/80 text-destructive-foreground hover:bg-destructive hover:text-destructive-foreground",doubleCheckClassName:"border-destructive bg-destructive text-destructive-foreground",children:[e.jsx(m,{name:"TriangleAlert",className:"h-4 w-4"}),"Clear all local data (including auth data)"]})}),n.inspectorRunning?e.jsx(h,{method:"POST",children:e.jsxs(g,{name:"intent",value:"stop-inspect",children:[e.jsx(m,{name:"Stop",className:"h-4 w-4"}),w?"Stopping inspector...":"Stop inspector"]})}):e.jsx(h,{method:"POST",children:e.jsx(g,{name:"intent",value:"inspect",children:p?"Starting inspector...":"Start inspector"})})]})})]}),e.jsxs(i,{children:[e.jsxs(a,{children:[e.jsx(o,{children:"Apps"}),e.jsx(c,{children:"Available workshop apps"})]}),e.jsx(d,{children:e.jsx("ul",{className:"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto",children:n.apps.length>0?n.apps.map(t=>e.jsxs("li",{className:"hover:bg-muted/50 flex items-center gap-3 rounded-md p-2",children:[n.processes[t.name]?e.jsx(l,{status:"running"}):e.jsx(l,{status:"stopped"}),e.jsx("span",{className:"font-mono text-sm",children:t.name})]},t.name)):e.jsx("p",{className:"text-muted-foreground text-sm",children:"No apps available"})})})]}),e.jsxs(i,{children:[e.jsxs(a,{children:[e.jsx(o,{children:"Processes"}),e.jsx(c,{children:"Running development processes"})]}),e.jsx(d,{children:e.jsx("ul",{className:"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto",children:Object.entries(n.processes).length>0?Object.entries(n.processes).map(([t,r])=>e.jsxs("li",{className:"border-border bg-muted/30 rounded-md border p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(l,{status:"running"}),e.jsx("span",{className:"font-mono text-sm font-semibold",children:t})]}),e.jsxs("div",{className:"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs",children:[e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"Port:"})," ",r.port]}),r.pid&&e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"PID:"})," ",r.pid]}),e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"Color:"})," ",e.jsx("span",{className:"inline-block h-3 w-3 rounded-full",style:{backgroundColor:r.color}})]})]})]},t)):e.jsx("p",{className:"text-muted-foreground text-sm",children:"No processes running"})})})]}),Object.entries(n.testProcesses).length>0&&e.jsxs(i,{className:"md:col-span-2",children:[e.jsxs(a,{children:[e.jsx(o,{children:"Test Processes"}),e.jsx(c,{children:"Test execution processes"})]}),e.jsx(d,{children:e.jsx("ul",{className:"scrollbar-thin scrollbar-thumb-scrollbar flex flex-col gap-2 overflow-y-auto",children:Object.entries(n.testProcesses).map(([t,r])=>e.jsxs("li",{className:"border-border bg-muted/30 rounded-md border p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[r.exitCode===null||r.exitCode===void 0?e.jsx(l,{status:"running"}):r.exitCode===0?e.jsx(l,{status:"stopped"}):e.jsx(l,{status:"taken"}),e.jsx("span",{className:"font-mono text-sm font-semibold",children:t})]}),e.jsxs("div",{className:"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs",children:[r.pid&&e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"PID:"})," ",r.pid]}),e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:"Exit code:"})," ",r.exitCode===null||r.exitCode===void 0?"Running":r.exitCode]})]})]},t))})})]}),e.jsxs(i,{children:[e.jsxs(a,{children:[e.jsx(o,{children:"Progress"}),e.jsx(c,{children:"EpicWeb.dev lesson progress"})]}),e.jsx(d,{children:u?e.jsx("ul",{className:"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-72 flex-col gap-2 overflow-y-auto",children:u.sort(T).map(t=>{const r=t.epicCompletedAt?"completed":"incomplete",b=[t.epicLessonSlug,t.epicCompletedAt?`(${t.epicCompletedAt})`:null].filter(Boolean).join(" ");return e.jsxs("li",{className:"hover:bg-muted/50 flex items-center gap-3 rounded-md p-2",children:[e.jsx("span",{className:j("h-3 w-3 shrink-0 rounded-full",k[r]),title:r}),t.type==="unknown"?e.jsxs("span",{className:"flex flex-1 items-center gap-2 truncate text-sm",children:[e.jsx("span",{className:"truncate",children:b}),e.jsx(y,{content:"This video is in the workshop on EpicWeb.dev, but not in the local workshop.",children:e.jsx(m,{name:"Close",className:"text-destructive h-4 w-4 shrink-0"})})]}):e.jsx(N,{to:O(t),className:"text-foreground flex-1 truncate text-sm hover:underline",children:b}),e.jsx(N,{to:t.epicLessonUrl,className:"text-muted-foreground hover:text-foreground shrink-0",children:e.jsx(m,{name:"ExternalLink",className:"h-4 w-4"})})]},t.epicLessonSlug)})}):e.jsx("p",{className:"text-muted-foreground text-sm",children:"No progress data"})})]})]})]})});function i({children:s,className:n}){return e.jsx("div",{className:f("border-border bg-card rounded-lg border p-6 shadow-sm",n),children:s})}function a({children:s}){return e.jsx("div",{className:"mb-4",children:s})}function o({children:s}){return e.jsx("h2",{className:"text-foreground text-lg font-semibold",children:s})}function c({children:s}){return e.jsx("p",{className:"text-muted-foreground mt-1 text-sm",children:s})}function d({children:s}){return e.jsx("div",{children:s})}function g({children:s,...n}){return e.jsx("button",{...n,className:f("border-border bg-background text-foreground hover:bg-muted hover:text-foreground focus:ring-ring inline-flex w-full items-center justify-center gap-2 rounded-md border px-4 py-2 text-sm font-medium transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none disabled:opacity-50",n.className),children:s})}function v({children:s,doubleCheckClassName:n,...x}){const{doubleCheck:u,getButtonProps:p}=P();return e.jsx(g,{...p(x),className:f(x.className,u?n??"border-destructive bg-destructive text-destructive-foreground":null),children:u?e.jsxs(e.Fragment,{children:[e.jsx(m,{name:"TriangleAlert",className:"h-4 w-4"}),"Are you sure?"]}):s})}function l({status:s}){const n={running:{pinger:"bg-success/60",circle:"bg-success"},starting:{pinger:"bg-info/60",circle:"bg-info"},stopped:{circle:"bg-muted-foreground"},taken:{pinger:"bg-destructive/60",circle:"bg-destructive"}}[s];return e.jsxs("span",{className:"relative flex h-3 w-3 shrink-0",children:[n.pinger?e.jsx("span",{className:j("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75",n.pinger)}):null,e.jsx("span",{className:j("relative inline-flex h-3 w-3 rounded-full",n.circle)})]})}export{q as default,H as handle,U as meta};
|
|
2
|
+
//# sourceMappingURL=index-AMZhCeTP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-AMZhCeTP.js","sources":["../../../app/routes/admin+/index.tsx"],"sourcesContent":["import { getApps } from '@epic-web/workshop-utils/apps.server'\nimport { getProcesses } from '@epic-web/workshop-utils/process-manager.server'\nimport {\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { clsx } from 'clsx'\nimport { data, Form, Link, useNavigation } from 'react-router'\nimport { Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport {\n\tuseEpicProgress,\n\ttype SerializedProgress,\n} from '#app/routes/progress.tsx'\nimport { cn, ensureUndeployed, useDoubleCheck } from '#app/utils/misc.tsx'\nimport { getRootMatchLoaderData } from '#app/utils/root-loader.ts'\nimport { type Route } from './+types/index.tsx'\nimport {\n\tclearCaches,\n\tclearData,\n\tisInspectorRunning,\n\tstartInspector,\n\tstopInspector,\n} from './admin-utils.server.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport const meta: Route.MetaFunction = ({ matches }) => {\n\tconst rootData = getRootMatchLoaderData(matches)\n\treturn [{ title: `👷 | ${rootData?.workshopTitle}` }]\n}\n\nexport async function loader({ request }: Route.LoaderArgs) {\n\tensureUndeployed()\n\tconst timings = makeTimings('adminLoader')\n\tconst apps = (await getApps({ request, timings })).filter(\n\t\t(a, i, ar) => ar.findIndex((b) => a.name === b.name) === i,\n\t)\n\tconst processes: Record<\n\t\tstring,\n\t\t{ port: number; pid?: number; color: string }\n\t> = {}\n\tconst testProcesses: Record<\n\t\tstring,\n\t\t{ pid?: number; exitCode?: number | null }\n\t> = {}\n\tfor (const [\n\t\tname,\n\t\t{ port, process, color },\n\t] of getProcesses().devProcesses.entries()) {\n\t\tprocesses[name] = { port, pid: process.pid, color }\n\t}\n\n\tfor (const [\n\t\tname,\n\t\t{ process, exitCode },\n\t] of getProcesses().testProcesses.entries()) {\n\t\ttestProcesses[name] = { pid: process?.pid, exitCode }\n\t}\n\n\tconst sidecarProcesses: Record<string, { pid?: number; running: boolean }> =\n\t\t{}\n\tfor (const [name, { process }] of getProcesses().sidecarProcesses.entries()) {\n\t\tsidecarProcesses[name] = {\n\t\t\tpid: process.pid,\n\t\t\trunning: process.exitCode === null,\n\t\t}\n\t}\n\n\treturn data(\n\t\t{\n\t\t\tapps,\n\t\t\tprocesses,\n\t\t\ttestProcesses,\n\t\t\tsidecarProcesses,\n\t\t\tinspectorRunning: isInspectorRunning(),\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport async function action({ request }: Route.ActionArgs) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\tconst intent = formData.get('intent')\n\tswitch (intent) {\n\t\tcase 'clear-data': {\n\t\t\tawait clearData()\n\t\t\treturn { success: true }\n\t\t}\n\t\tcase 'clear-caches': {\n\t\t\tawait clearCaches()\n\t\t\treturn { success: true }\n\t\t}\n\t\tcase 'inspect': {\n\t\t\tawait startInspector()\n\t\t\treturn { success: true }\n\t\t}\n\t\tcase 'stop-inspect': {\n\t\t\tawait stopInspector()\n\t\t\treturn { success: true }\n\t\t}\n\t\tdefault: {\n\t\t\tthrow new Error(`Unknown intent: ${intent}`)\n\t\t}\n\t}\n}\n\nfunction sortProgress(a: SerializedProgress, b: SerializedProgress) {\n\treturn a.type === 'unknown' && b.type === 'unknown'\n\t\t? 0\n\t\t: a.type === 'unknown'\n\t\t\t? -1\n\t\t\t: b.type === 'unknown'\n\t\t\t\t? 1\n\t\t\t\t: 0\n}\n\nfunction linkProgress(progress: SerializedProgress) {\n\tswitch (progress.type) {\n\t\tcase 'workshop-instructions':\n\t\t\treturn '/'\n\t\tcase 'workshop-finished':\n\t\t\treturn '/finished'\n\t\tcase 'instructions':\n\t\t\treturn `/${progress.exerciseNumber.toString().padStart(2, '0')}`\n\t\tcase 'step':\n\t\t\treturn `/${progress.exerciseNumber\n\t\t\t\t.toString()\n\t\t\t\t.padStart(2, '0')}/${progress.stepNumber.toString().padStart(2, '0')}`\n\t\tcase 'finished':\n\t\t\treturn `/${progress.exerciseNumber.toString().padStart(2, '0')}/finished`\n\t\tdefault:\n\t\t\treturn ''\n\t}\n}\n\nexport default function AdminLayout({\n\tloaderData: data,\n}: Route.ComponentProps) {\n\tconst navigation = useNavigation()\n\tconst epicProgress = useEpicProgress()\n\n\tconst isStartingInspector = navigation.formData?.get('intent') === 'inspect'\n\tconst isStoppingInspector =\n\t\tnavigation.formData?.get('intent') === 'stop-inspect'\n\n\tconst progressStatus = {\n\t\tcompleted: 'bg-success',\n\t\tincomplete: 'bg-warning',\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-col gap-6 p-6\">\n\t\t\t<div className=\"mb-2\">\n\t\t\t\t<h1 className=\"text-foreground text-2xl font-bold\">Admin Panel</h1>\n\t\t\t\t<p className=\"text-muted-foreground mt-1 text-sm\">\n\t\t\t\t\tManage workshop settings and monitor processes\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div className=\"grid gap-6 md:grid-cols-2\">\n\t\t\t\t{Object.entries(data.sidecarProcesses).length > 0 && (\n\t\t\t\t\t<Card>\n\t\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t\t<CardTitle>Sidecar Processes</CardTitle>\n\t\t\t\t\t\t\t<CardDescription>Background sidecar processes</CardDescription>\n\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t<ul className=\"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto\">\n\t\t\t\t\t\t\t\t{Object.entries(data.sidecarProcesses).map(([key, process]) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-muted/30 rounded-md border p-3\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t{process.running ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"running\" />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"taken\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-mono text-sm font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs\">\n\t\t\t\t\t\t\t\t\t\t\t{process.pid && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">PID:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{process.pid}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">Status:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t{process.running ? 'Running' : 'Failed'}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\t\t\t\t)}\n\n\t\t\t\t<Card>\n\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t<CardTitle>Commands</CardTitle>\n\t\t\t\t\t\t<CardDescription>Workshop management actions</CardDescription>\n\t\t\t\t\t</CardHeader>\n\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t<div className=\"flex flex-col gap-3\">\n\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t<DoubleCheckAdminButton name=\"intent\" value=\"clear-caches\">\n\t\t\t\t\t\t\t\t\t<Icon name=\"Clear\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\tClear local caches\n\t\t\t\t\t\t\t\t</DoubleCheckAdminButton>\n\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t<DoubleCheckAdminButton\n\t\t\t\t\t\t\t\t\tname=\"intent\"\n\t\t\t\t\t\t\t\t\tvalue=\"clear-data\"\n\t\t\t\t\t\t\t\t\tclassName=\"border-destructive bg-destructive/80 text-destructive-foreground hover:bg-destructive hover:text-destructive-foreground\"\n\t\t\t\t\t\t\t\t\tdoubleCheckClassName=\"border-destructive bg-destructive text-destructive-foreground\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon name=\"TriangleAlert\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\tClear all local data (including auth data)\n\t\t\t\t\t\t\t\t</DoubleCheckAdminButton>\n\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t{data.inspectorRunning ? (\n\t\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t\t<AdminButton name=\"intent\" value=\"stop-inspect\">\n\t\t\t\t\t\t\t\t\t\t<Icon name=\"Stop\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t{isStoppingInspector\n\t\t\t\t\t\t\t\t\t\t\t? 'Stopping inspector...'\n\t\t\t\t\t\t\t\t\t\t\t: 'Stop inspector'}\n\t\t\t\t\t\t\t\t\t</AdminButton>\n\t\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Form method=\"POST\">\n\t\t\t\t\t\t\t\t\t<AdminButton name=\"intent\" value=\"inspect\">\n\t\t\t\t\t\t\t\t\t\t{isStartingInspector\n\t\t\t\t\t\t\t\t\t\t\t? 'Starting inspector...'\n\t\t\t\t\t\t\t\t\t\t\t: 'Start inspector'}\n\t\t\t\t\t\t\t\t\t</AdminButton>\n\t\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\n\t\t\t\t<Card>\n\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t<CardTitle>Apps</CardTitle>\n\t\t\t\t\t\t<CardDescription>Available workshop apps</CardDescription>\n\t\t\t\t\t</CardHeader>\n\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t<ul className=\"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto\">\n\t\t\t\t\t\t\t{data.apps.length > 0 ? (\n\t\t\t\t\t\t\t\tdata.apps.map((app) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={app.name}\n\t\t\t\t\t\t\t\t\t\tclassName=\"hover:bg-muted/50 flex items-center gap-3 rounded-md p-2\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{data.processes[app.name] ? (\n\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"running\" />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"stopped\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<span className=\"font-mono text-sm\">{app.name}</span>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\tNo apps available\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\n\t\t\t\t<Card>\n\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t<CardTitle>Processes</CardTitle>\n\t\t\t\t\t\t<CardDescription>Running development processes</CardDescription>\n\t\t\t\t\t</CardHeader>\n\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t<ul className=\"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-48 flex-col gap-2 overflow-y-auto\">\n\t\t\t\t\t\t\t{Object.entries(data.processes).length > 0 ? (\n\t\t\t\t\t\t\t\tObject.entries(data.processes).map(([key, process]) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-muted/30 rounded-md border p-3\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"running\" />\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-mono text-sm font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs\">\n\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">Port:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t{process.port}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{process.pid && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">PID:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{process.pid}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">Color:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"inline-block h-3 w-3 rounded-full\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: process.color }}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\tNo processes running\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\n\t\t\t\t{Object.entries(data.testProcesses).length > 0 && (\n\t\t\t\t\t<Card className=\"md:col-span-2\">\n\t\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t\t<CardTitle>Test Processes</CardTitle>\n\t\t\t\t\t\t\t<CardDescription>Test execution processes</CardDescription>\n\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t\t<ul className=\"scrollbar-thin scrollbar-thumb-scrollbar flex flex-col gap-2 overflow-y-auto\">\n\t\t\t\t\t\t\t\t{Object.entries(data.testProcesses).map(([key, process]) => (\n\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-muted/30 rounded-md border p-3\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t{process.exitCode === null ||\n\t\t\t\t\t\t\t\t\t\t\tprocess.exitCode === undefined ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"running\" />\n\t\t\t\t\t\t\t\t\t\t\t) : process.exitCode === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"stopped\" />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Pinger status=\"taken\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-mono text-sm font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"text-muted-foreground mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs\">\n\t\t\t\t\t\t\t\t\t\t\t{process.pid && (\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">PID:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{process.pid}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"font-medium\">Exit code:</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t{process.exitCode === null ||\n\t\t\t\t\t\t\t\t\t\t\t\tprocess.exitCode === undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'Running'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: process.exitCode}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t</Card>\n\t\t\t\t)}\n\n\t\t\t\t<Card>\n\t\t\t\t\t<CardHeader>\n\t\t\t\t\t\t<CardTitle>Progress</CardTitle>\n\t\t\t\t\t\t<CardDescription>EpicWeb.dev lesson progress</CardDescription>\n\t\t\t\t\t</CardHeader>\n\t\t\t\t\t<CardContent>\n\t\t\t\t\t\t{epicProgress ? (\n\t\t\t\t\t\t\t<ul className=\"scrollbar-thin scrollbar-thumb-scrollbar flex max-h-72 flex-col gap-2 overflow-y-auto\">\n\t\t\t\t\t\t\t\t{epicProgress.sort(sortProgress).map((progress) => {\n\t\t\t\t\t\t\t\t\tconst status = progress.epicCompletedAt\n\t\t\t\t\t\t\t\t\t\t? 'completed'\n\t\t\t\t\t\t\t\t\t\t: 'incomplete'\n\t\t\t\t\t\t\t\t\tconst label = [\n\t\t\t\t\t\t\t\t\t\tprogress.epicLessonSlug,\n\t\t\t\t\t\t\t\t\t\tprogress.epicCompletedAt\n\t\t\t\t\t\t\t\t\t\t\t? `(${progress.epicCompletedAt})`\n\t\t\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t.join(' ')\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={progress.epicLessonSlug}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"hover:bg-muted/50 flex items-center gap-3 rounded-md p-2\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'h-3 w-3 shrink-0 rounded-full',\n\t\t\t\t\t\t\t\t\t\t\t\t\tprogressStatus[status],\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={status}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t{progress.type === 'unknown' ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex flex-1 items-center gap-2 truncate text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"truncate\">{label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SimpleTooltip content=\"This video is in the workshop on EpicWeb.dev, but not in the local workshop.\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname=\"Close\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-destructive h-4 w-4 shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\tto={linkProgress(progress)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-foreground flex-1 truncate text-sm hover:underline\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\tto={progress.epicLessonUrl}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-foreground shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"ExternalLink\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">No progress data</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</CardContent>\n\t\t\t\t</Card>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction Card({\n\tchildren,\n\tclassName,\n}: {\n\tchildren: React.ReactNode\n\tclassName?: string\n}) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'border-border bg-card rounded-lg border p-6 shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n\nfunction CardHeader({ children }: { children: React.ReactNode }) {\n\treturn <div className=\"mb-4\">{children}</div>\n}\n\nfunction CardTitle({ children }: { children: React.ReactNode }) {\n\treturn <h2 className=\"text-foreground text-lg font-semibold\">{children}</h2>\n}\n\nfunction CardDescription({ children }: { children: React.ReactNode }) {\n\treturn <p className=\"text-muted-foreground mt-1 text-sm\">{children}</p>\n}\n\nfunction CardContent({ children }: { children: React.ReactNode }) {\n\treturn <div>{children}</div>\n}\n\nfunction AdminButton({\n\tchildren,\n\t...props\n}: React.ComponentPropsWithoutRef<'button'>) {\n\treturn (\n\t\t<button\n\t\t\t{...props}\n\t\t\tclassName={cn(\n\t\t\t\t'border-border bg-background text-foreground hover:bg-muted hover:text-foreground focus:ring-ring inline-flex w-full items-center justify-center gap-2 rounded-md border px-4 py-2 text-sm font-medium transition-colors focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none disabled:opacity-50',\n\t\t\t\tprops.className,\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</button>\n\t)\n}\n\nfunction DoubleCheckAdminButton({\n\tchildren,\n\tdoubleCheckClassName,\n\t...props\n}: React.ComponentPropsWithoutRef<'button'> & {\n\tdoubleCheckClassName?: string\n}) {\n\tconst { doubleCheck, getButtonProps } = useDoubleCheck()\n\n\treturn (\n\t\t<AdminButton\n\t\t\t{...getButtonProps(props)}\n\t\t\tclassName={cn(\n\t\t\t\tprops.className,\n\t\t\t\tdoubleCheck\n\t\t\t\t\t? (doubleCheckClassName ??\n\t\t\t\t\t\t\t'border-destructive bg-destructive text-destructive-foreground')\n\t\t\t\t\t: null,\n\t\t\t)}\n\t\t>\n\t\t\t{doubleCheck ? (\n\t\t\t\t<>\n\t\t\t\t\t<Icon name=\"TriangleAlert\" className=\"h-4 w-4\" />\n\t\t\t\t\tAre you sure?\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\tchildren\n\t\t\t)}\n\t\t</AdminButton>\n\t)\n}\n\nfunction Pinger({\n\tstatus,\n}: {\n\tstatus: 'running' | 'starting' | 'stopped' | 'taken'\n}) {\n\tconst colors = {\n\t\trunning: {\n\t\t\tpinger: 'bg-success/60',\n\t\t\tcircle: 'bg-success',\n\t\t},\n\t\tstarting: {\n\t\t\tpinger: 'bg-info/60',\n\t\t\tcircle: 'bg-info',\n\t\t},\n\t\tstopped: {\n\t\t\tcircle: 'bg-muted-foreground',\n\t\t},\n\t\ttaken: {\n\t\t\tpinger: 'bg-destructive/60',\n\t\t\tcircle: 'bg-destructive',\n\t\t},\n\t}[status]\n\treturn (\n\t\t<span className=\"relative flex h-3 w-3 shrink-0\">\n\t\t\t{colors.pinger ? (\n\t\t\t\t<span\n\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t'absolute inline-flex h-full w-full animate-ping rounded-full opacity-75',\n\t\t\t\t\t\tcolors.pinger,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t<span\n\t\t\t\tclassName={clsx(\n\t\t\t\t\t'relative inline-flex h-3 w-3 rounded-full',\n\t\t\t\t\tcolors.circle,\n\t\t\t\t)}\n\t\t\t/>\n\t\t</span>\n\t)\n}\n"],"names":["handle","getSitemapEntries","meta","matches","title","getRootMatchLoaderData","workshopTitle","sortProgress","a","b","type","linkProgress","progress","exerciseNumber","toString","padStart","stepNumber","index","_UNSAFE_withComponentProps","loaderData","data","navigation","useNavigation","epicProgress","useEpicProgress","isStartingInspector","formData","get","isStoppingInspector","progressStatus","completed","incomplete","jsxs","className","children","jsx","Object","entries","sidecarProcesses","length","Card","CardHeader","CardTitle","CardDescription","CardContent","map","key","process","running","Pinger","status","pid","Form","method","DoubleCheckAdminButton","name","value","Icon","doubleCheckClassName","inspectorRunning","AdminButton","apps","app","processes","port","style","backgroundColor","color","testProcesses","exitCode","sort","epicCompletedAt","label","epicLessonSlug","filter","Boolean","join","clsx","SimpleTooltip","content","Link","to","epicLessonUrl","cn","props","doubleCheck","getButtonProps","useDoubleCheck","Fragment","colors","pinger","circle","starting","stopped","taken"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{w as s,a,b as i,L as l}from"./chunk-EPOLDU6W-BCLmut3y.js";import{j as e}from"./jsx-runtime-C5WNSv3b.js";import{E as n}from"./index-CEVyDj51.js";import{E as m}from"./epic-video-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{w as s,a,b as i,L as l}from"./chunk-EPOLDU6W-BCLmut3y.js";import{j as e}from"./jsx-runtime-C5WNSv3b.js";import{E as n}from"./index-CEVyDj51.js";import{E as m}from"./epic-video-D0drHmgC.js";import{G as d}from"./error-boundary-DVp6wKiz.js";import{u as c}from"./revalidation-ws-BJWJviUX.js";import{E as x}from"./launch-editor-D2exGfVu.js";import{M as p}from"./mdx-BzyhMqFg.js";import{c as f}from"./misc-W4055b-0.js";import{g as u}from"./root-loader-BOzEMapJ.js";import{g as h}from"./seo-t5J-DRxw.js";import"./index-CqIc3cxq.js";import"./use-event-source-BuD4_2SF.js";import"./index-DzdDahau.js";import"./index-vDCSPjrM.js";import"./index-CdzVFL-Z.js";import"./tooltip-Tlsyx2YO.js";import"./pe-CIZUOJMr.js";import"./schemas-Uj5SZtvt.js";import"./online-DiNLkgTC.js";import"./loading-CDNzW5oO.js";import"./user-BsPobzjB.js";import"./workshop-config-Zfc8zU0x.js";import"./preload-helper-BXl3LOEh.js";import"./progress-bar-DpWhcyhC.js";const Q=o=>{const r=o.data,t=u(o.matches);return!r||!t?[{title:"🦉 | Error"}]:h({title:`📚 | ${r.title} | ${t.workshopTitle}`,description:`Extras for ${t.workshopTitle}`,ogTitle:r.title,ogDescription:`Extras for ${t.workshopTitle}`,instructor:t.instructor,requestInfo:t.requestInfo})};function j({extra:o}){return e.jsx("li",{children:e.jsxs(l,{className:f("relative flex items-center gap-4 px-4 py-3 text-lg font-semibold transition","hover:bg-muted/60 focus:bg-muted/60"),prefetch:"intent",to:o.dirName,children:[e.jsx("span",{className:"text-muted-foreground text-xs font-normal tabular-nums",children:"•"}),e.jsx("span",{className:"truncate",children:o.title})]})})}const v={h1:()=>null},W=s(function(){const r=i();return c({watchPaths:["./extra","./example","./examples"]}),e.jsxs("main",{className:"relative flex h-full w-full max-w-5xl flex-col justify-between border-r md:w-3/4 xl:w-2/3",children:[e.jsxs("article",{id:r.articleId,className:"shadow-on-scrollbox scrollbar-thin scrollbar-thumb-scrollbar flex w-full flex-1 flex-col gap-12 overflow-y-scroll px-3 py-4 pt-6 md:px-10 md:py-12 md:pt-16",children:[e.jsx("div",{children:e.jsx("h1",{className:"text-[clamp(3rem,6vw,7.5rem)] leading-none font-extrabold",children:r.title})}),e.jsx("div",{children:r.extrasReadme.compiled.status==="success"&&r.extrasReadme.compiled.code?e.jsx(m,{epicVideoInfosPromise:r.epicVideoInfosPromise,children:e.jsx("div",{className:"prose dark:prose-invert sm:prose-lg",children:e.jsx(p,{code:r.extrasReadme.compiled.code,components:v})})}):r.extrasReadme.compiled.status==="error"?e.jsxs("div",{className:"text-foreground-destructive",children:["There was an error:",e.jsx("pre",{children:r.extrasReadme.compiled.error})]}):"No extras overview yet..."}),e.jsxs("div",{className:"pt-6",children:[e.jsx("h2",{className:"pb-4 font-mono text-xs font-semibold uppercase",children:"Extras"}),r.extras.length?e.jsx("ul",{className:"divide-border dark:divide-border/50 flex flex-col divide-y",children:r.extras.map(t=>e.jsx(j,{extra:t},t.dirName))}):e.jsx("p",{className:"text-muted-foreground",children:"No extras yet. Add one to get started."})]})]}),e.jsx(n,{elementQuery:`#${r.articleId}`}),e.jsx("div",{className:"@container flex h-16 justify-center border-t",children:e.jsx(x,{file:r.extrasReadme.file,relativePath:r.extrasReadme.relativePath})})]})}),z=a(function(){return e.jsx(d,{})});export{z as ErrorBoundary,W as default,Q as meta};
|
|
2
|
+
//# sourceMappingURL=index-BKAVQvm5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BKAVQvm5.js","sources":["../../../app/routes/_app+/extra+/index.tsx"],"sourcesContent":["import { ElementScrollRestoration } from '@epic-web/restore-scroll'\nimport {\n\tgetApps,\n\tgetExtrasInstructions,\n\tisExtraApp,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport { getEpicVideoInfos } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n\ttime,\n} from '@epic-web/workshop-utils/timing.server'\nimport slugify from '@sindresorhus/slugify'\nimport {\n\tdata,\n\ttype HeadersFunction,\n\tLink,\n\ttype LoaderFunctionArgs,\n\ttype MetaFunction,\n\tuseLoaderData,\n} from 'react-router'\nimport { EpicVideoInfoProvider } from '#app/components/epic-video.tsx'\nimport { GeneralErrorBoundary } from '#app/components/error-boundary.tsx'\nimport { useRevalidationWS } from '#app/components/revalidation-ws.tsx'\nimport { EditFileOnGitHub } from '#app/routes/launch-editor.tsx'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { getRootMatchLoaderData } from '#app/utils/root-loader.ts'\nimport { getSeoMetaTags } from '#app/utils/seo.ts'\n\nexport const meta: MetaFunction<typeof loader> = (args) => {\n\tconst loaderData = args.data\n\tconst rootData = getRootMatchLoaderData(args.matches)\n\tif (!loaderData || !rootData) return [{ title: '🦉 | Error' }]\n\n\treturn getSeoMetaTags({\n\t\ttitle: `📚 | ${loaderData.title} | ${rootData.workshopTitle}`,\n\t\tdescription: `Extras for ${rootData.workshopTitle}`,\n\t\togTitle: loaderData.title,\n\t\togDescription: `Extras for ${rootData.workshopTitle}`,\n\t\tinstructor: rootData.instructor,\n\t\trequestInfo: rootData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('extrasIndexLoader')\n\tconst { title: workshopTitle } = getWorkshopConfig()\n\tconst [extrasReadme, apps] = await Promise.all([\n\t\ttime(() => getExtrasInstructions({ request }), {\n\t\t\ttimings,\n\t\t\ttype: 'compileMdx',\n\t\t\tdesc: 'compileMdx in extras index',\n\t\t}),\n\t\ttime(() => getApps({ request, timings }), {\n\t\t\ttimings,\n\t\t\ttype: 'getApps',\n\t\t\tdesc: 'getApps in extras index',\n\t\t}),\n\t])\n\n\tconst extras = apps\n\t\t.filter(isExtraApp)\n\t\t.sort((a, b) =>\n\t\t\ta.title.localeCompare(b.title, undefined, {\n\t\t\t\tnumeric: true,\n\t\t\t\tsensitivity: 'base',\n\t\t\t}),\n\t\t)\n\t\t.map((extra) => ({\n\t\t\tdirName: extra.dirName,\n\t\t\ttitle: extra.title,\n\t\t}))\n\n\tconst title =\n\t\textrasReadme.compiled.status === 'success'\n\t\t\t? (extrasReadme.compiled.title ?? 'Extras')\n\t\t\t: 'Extras'\n\n\treturn data(\n\t\t{\n\t\t\tarticleId: `workshop-${slugify(workshopTitle)}-extras`,\n\t\t\ttitle,\n\t\t\textras,\n\t\t\textrasReadme,\n\t\t\tepicVideoInfosPromise:\n\t\t\t\textrasReadme.compiled.status === 'success'\n\t\t\t\t\t? getEpicVideoInfos(extrasReadme.compiled.epicVideoEmbeds, {\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nfunction ExtraListItem({\n\textra,\n}: {\n\textra: { dirName: string; title: string }\n}) {\n\treturn (\n\t\t<li>\n\t\t\t<Link\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative flex items-center gap-4 px-4 py-3 text-lg font-semibold transition',\n\t\t\t\t\t'hover:bg-muted/60 focus:bg-muted/60',\n\t\t\t\t)}\n\t\t\t\tprefetch=\"intent\"\n\t\t\t\tto={extra.dirName}\n\t\t\t>\n\t\t\t\t<span className=\"text-muted-foreground text-xs font-normal tabular-nums\">\n\t\t\t\t\t•\n\t\t\t\t</span>\n\t\t\t\t<span className=\"truncate\">{extra.title}</span>\n\t\t\t</Link>\n\t\t</li>\n\t)\n}\n\nconst mdxComponents = { h1: () => null }\n\nexport default function ExtrasIndex() {\n\tconst data = useLoaderData<typeof loader>()\n\tuseRevalidationWS({ watchPaths: ['./extra', './example', './examples'] })\n\n\treturn (\n\t\t<main className=\"relative flex h-full w-full max-w-5xl flex-col justify-between border-r md:w-3/4 xl:w-2/3\">\n\t\t\t<article\n\t\t\t\tid={data.articleId}\n\t\t\t\tclassName=\"shadow-on-scrollbox scrollbar-thin scrollbar-thumb-scrollbar flex w-full flex-1 flex-col gap-12 overflow-y-scroll px-3 py-4 pt-6 md:px-10 md:py-12 md:pt-16\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<h1 className=\"text-[clamp(3rem,6vw,7.5rem)] leading-none font-extrabold\">\n\t\t\t\t\t\t{data.title}\n\t\t\t\t\t</h1>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t{data.extrasReadme.compiled.status === 'success' &&\n\t\t\t\t\tdata.extrasReadme.compiled.code ? (\n\t\t\t\t\t\t<EpicVideoInfoProvider\n\t\t\t\t\t\t\tepicVideoInfosPromise={data.epicVideoInfosPromise}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"prose dark:prose-invert sm:prose-lg\">\n\t\t\t\t\t\t\t\t<Mdx\n\t\t\t\t\t\t\t\t\tcode={data.extrasReadme.compiled.code}\n\t\t\t\t\t\t\t\t\tcomponents={mdxComponents}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</EpicVideoInfoProvider>\n\t\t\t\t\t) : data.extrasReadme.compiled.status === 'error' ? (\n\t\t\t\t\t\t<div className=\"text-foreground-destructive\">\n\t\t\t\t\t\t\tThere was an error:\n\t\t\t\t\t\t\t<pre>{data.extrasReadme.compiled.error}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t'No extras overview yet...'\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"pt-6\">\n\t\t\t\t\t<h2 className=\"pb-4 font-mono text-xs font-semibold uppercase\">\n\t\t\t\t\t\tExtras\n\t\t\t\t\t</h2>\n\t\t\t\t\t{data.extras.length ? (\n\t\t\t\t\t\t<ul className=\"divide-border dark:divide-border/50 flex flex-col divide-y\">\n\t\t\t\t\t\t\t{data.extras.map((extra) => (\n\t\t\t\t\t\t\t\t<ExtraListItem key={extra.dirName} extra={extra} />\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<p className=\"text-muted-foreground\">\n\t\t\t\t\t\t\tNo extras yet. Add one to get started.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</article>\n\t\t\t<ElementScrollRestoration elementQuery={`#${data.articleId}`} />\n\t\t\t<div className=\"@container flex h-16 justify-center border-t\">\n\t\t\t\t<EditFileOnGitHub\n\t\t\t\t\tfile={data.extrasReadme.file}\n\t\t\t\t\trelativePath={data.extrasReadme.relativePath}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nexport function ErrorBoundary() {\n\treturn <GeneralErrorBoundary />\n}\n"],"names":["meta","args","loaderData","data","rootData","getRootMatchLoaderData","matches","title","getSeoMetaTags","workshopTitle","description","ogTitle","ogDescription","instructor","requestInfo","ExtraListItem","extra","children","jsxs","Link","className","cn","prefetch","to","dirName","jsx","mdxComponents","h1","index","_UNSAFE_withComponentProps","useLoaderData","useRevalidationWS","watchPaths","id","articleId","extrasReadme","compiled","status","code","EpicVideoInfoProvider","epicVideoInfosPromise","Mdx","components","error","extras","length","map","ElementScrollRestoration","elementQuery","EditFileOnGitHub","file","relativePath","ErrorBoundary","_UNSAFE_withErrorBoundaryProps","GeneralErrorBoundary"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{R as Q,r as o}from"./index-CqIc3cxq.js";import{r as Ne}from"./index-vDCSPjrM.js";import{c as _e,e as D,i as ge,l as be,u as Pe,R as ct,d as Te,A as lt,P as O,f as E,n as Y,h as it,V as at,o as dt,D as ut,C as pt,m as ft}from"./tooltip-Chzzs4KB.js";import{j as d}from"./jsx-runtime-C5WNSv3b.js";import{h as mt,u as ht,R as vt,F as St}from"./index-C_KjwKVt.js";function Ee(t,[n,e]){return Math.min(e,Math.max(n,t))}function gt(t){const n=t+"CollectionProvider",[e,a]=_e(n),[c,p]=e(n,{collectionRef:{current:null},itemMap:new Map}),r=i=>{const{scope:m,children:g}=i,u=Q.useRef(null),v=Q.useRef(new Map).current;return d.jsx(c,{scope:m,itemMap:v,collectionRef:u,children:g})};r.displayName=n;const s=t+"CollectionSlot",l=ge(s),f=Q.forwardRef((i,m)=>{const{scope:g,children:u}=i,v=p(s,g),N=D(m,v.collectionRef);return d.jsx(l,{ref:N,children:u})});f.displayName=s;const S=t+"CollectionItemSlot",x="data-radix-collection-item",R=ge(S),y=Q.forwardRef((i,m)=>{const{scope:g,children:u,...v}=i,N=Q.useRef(null),b=D(m,N),j=p(S,g);return Q.useEffect(()=>(j.itemMap.set(N,{ref:N,...v}),()=>void j.itemMap.delete(N))),d.jsx(R,{[x]:"",ref:b,children:u})});y.displayName=S;function w(i){const m=p(t+"CollectionConsumer",i);return Q.useCallback(()=>{const u=m.collectionRef.current;if(!u)return[];const v=Array.from(u.querySelectorAll(`[${x}]`));return Array.from(m.itemMap.values()).sort((j,_)=>v.indexOf(j.ref.current)-v.indexOf(_.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:r,Slot:f,ItemSlot:y},w,a]}var xt=o.createContext(void 0);function Ct(t){const n=o.useContext(xt);return t||n||"ltr"}function wt(t){const n=o.useRef({value:t,previous:t});return o.useMemo(()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous),[t])}var It=[" ","Enter","ArrowUp","ArrowDown"],yt=[" ","Enter"],ee="Select",[ae,de,Tt]=gt(ee),[ne]=_e(ee,[Tt,be]),ue=be(),[Rt,q]=ne(ee),[Pt,Et]=ne(ee),Me=t=>{const{__scopeSelect:n,children:e,open:a,defaultOpen:c,onOpenChange:p,value:r,defaultValue:s,onValueChange:l,dir:f,name:S,autoComplete:x,disabled:R,required:y,form:w}=t,i=ue(n),[m,g]=o.useState(null),[u,v]=o.useState(null),[N,b]=o.useState(!1),j=Ct(f),[_,k]=Pe({prop:a,defaultProp:c??!1,onChange:p,caller:ee}),[K,X]=Pe({prop:r,defaultProp:s,onChange:l,caller:ee}),B=o.useRef(null),H=m?w||!!m.closest("form"):!0,[G,F]=o.useState(new Set),U=Array.from(G).map(M=>M.props.value).join(";");return d.jsx(ct,{...i,children:d.jsxs(Rt,{required:y,scope:n,trigger:m,onTriggerChange:g,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:N,onValueNodeHasChildrenChange:b,contentId:Te(),value:K,onValueChange:X,open:_,onOpenChange:k,dir:j,triggerPointerDownPosRef:B,disabled:R,children:[d.jsx(ae.Provider,{scope:n,children:d.jsx(Pt,{scope:t.__scopeSelect,onNativeOptionAdd:o.useCallback(M=>{F(V=>new Set(V).add(M))},[]),onNativeOptionRemove:o.useCallback(M=>{F(V=>{const W=new Set(V);return W.delete(M),W})},[]),children:e})}),H?d.jsxs(ot,{"aria-hidden":!0,required:y,tabIndex:-1,name:S,autoComplete:x,value:K,onChange:M=>X(M.target.value),disabled:R,form:w,children:[K===void 0?d.jsx("option",{value:""}):null,Array.from(G)]},U):null]})})};Me.displayName=ee;var Ae="SelectTrigger",Oe=o.forwardRef((t,n)=>{const{__scopeSelect:e,disabled:a=!1,...c}=t,p=ue(e),r=q(Ae,e),s=r.disabled||a,l=D(n,r.onTriggerChange),f=de(e),S=o.useRef("touch"),[x,R,y]=rt(i=>{const m=f().filter(v=>!v.disabled),g=m.find(v=>v.value===r.value),u=st(m,i,g);u!==void 0&&r.onValueChange(u.value)}),w=i=>{s||(r.onOpenChange(!0),y()),i&&(r.triggerPointerDownPosRef.current={x:Math.round(i.pageX),y:Math.round(i.pageY)})};return d.jsx(lt,{asChild:!0,...p,children:d.jsx(O.button,{type:"button",role:"combobox","aria-controls":r.contentId,"aria-expanded":r.open,"aria-required":r.required,"aria-autocomplete":"none",dir:r.dir,"data-state":r.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":nt(r.value)?"":void 0,...c,ref:l,onClick:E(c.onClick,i=>{i.currentTarget.focus(),S.current!=="mouse"&&w(i)}),onPointerDown:E(c.onPointerDown,i=>{S.current=i.pointerType;const m=i.target;m.hasPointerCapture(i.pointerId)&&m.releasePointerCapture(i.pointerId),i.button===0&&i.ctrlKey===!1&&i.pointerType==="mouse"&&(w(i),i.preventDefault())}),onKeyDown:E(c.onKeyDown,i=>{const m=x.current!=="";!(i.ctrlKey||i.altKey||i.metaKey)&&i.key.length===1&&R(i.key),!(m&&i.key===" ")&&It.includes(i.key)&&(w(),i.preventDefault())})})})});Oe.displayName=Ae;var De="SelectValue",Le=o.forwardRef((t,n)=>{const{__scopeSelect:e,className:a,style:c,children:p,placeholder:r="",...s}=t,l=q(De,e),{onValueNodeHasChildrenChange:f}=l,S=p!==void 0,x=D(n,l.onValueNodeChange);return Y(()=>{f(S)},[f,S]),d.jsx(O.span,{...s,ref:x,style:{pointerEvents:"none"},children:nt(l.value)?d.jsx(d.Fragment,{children:r}):p})});Le.displayName=De;var Nt="SelectIcon",je=o.forwardRef((t,n)=>{const{__scopeSelect:e,children:a,...c}=t;return d.jsx(O.span,{"aria-hidden":!0,...c,ref:n,children:a||"▼"})});je.displayName=Nt;var _t="SelectPortal",ke=t=>d.jsx(it,{asChild:!0,...t});ke.displayName=_t;var te="SelectContent",Ve=o.forwardRef((t,n)=>{const e=q(te,t.__scopeSelect),[a,c]=o.useState();if(Y(()=>{c(new DocumentFragment)},[]),!e.open){const p=a;return p?Ne.createPortal(d.jsx(Be,{scope:t.__scopeSelect,children:d.jsx(ae.Slot,{scope:t.__scopeSelect,children:d.jsx("div",{children:t.children})})}),p):null}return d.jsx(He,{...t,ref:n})});Ve.displayName=te;var L=10,[Be,$]=ne(te),bt="SelectContentImpl",Mt=ge("SelectContent.RemoveScroll"),He=o.forwardRef((t,n)=>{const{__scopeSelect:e,position:a="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:p,onPointerDownOutside:r,side:s,sideOffset:l,align:f,alignOffset:S,arrowPadding:x,collisionBoundary:R,collisionPadding:y,sticky:w,hideWhenDetached:i,avoidCollisions:m,...g}=t,u=q(te,e),[v,N]=o.useState(null),[b,j]=o.useState(null),_=D(n,h=>N(h)),[k,K]=o.useState(null),[X,B]=o.useState(null),H=de(e),[G,F]=o.useState(!1),U=o.useRef(!1);o.useEffect(()=>{if(v)return mt(v)},[v]),ht();const M=o.useCallback(h=>{const[T,...A]=H().map(P=>P.ref.current),[C]=A.slice(-1),I=document.activeElement;for(const P of h)if(P===I||(P?.scrollIntoView({block:"nearest"}),P===T&&b&&(b.scrollTop=0),P===C&&b&&(b.scrollTop=b.scrollHeight),P?.focus(),document.activeElement!==I))return},[H,b]),V=o.useCallback(()=>M([k,v]),[M,k,v]);o.useEffect(()=>{G&&V()},[G,V]);const{onOpenChange:W,triggerPointerDownPosRef:z}=u;o.useEffect(()=>{if(v){let h={x:0,y:0};const T=C=>{h={x:Math.abs(Math.round(C.pageX)-(z.current?.x??0)),y:Math.abs(Math.round(C.pageY)-(z.current?.y??0))}},A=C=>{h.x<=10&&h.y<=10?C.preventDefault():v.contains(C.target)||W(!1),document.removeEventListener("pointermove",T),z.current=null};return z.current!==null&&(document.addEventListener("pointermove",T),document.addEventListener("pointerup",A,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",A,{capture:!0})}}},[v,W,z]),o.useEffect(()=>{const h=()=>W(!1);return window.addEventListener("blur",h),window.addEventListener("resize",h),()=>{window.removeEventListener("blur",h),window.removeEventListener("resize",h)}},[W]);const[pe,ce]=rt(h=>{const T=H().filter(I=>!I.disabled),A=T.find(I=>I.ref.current===document.activeElement),C=st(T,h,A);C&&setTimeout(()=>C.ref.current.focus())}),fe=o.useCallback((h,T,A)=>{const C=!U.current&&!A;(u.value!==void 0&&u.value===T||C)&&(K(h),C&&(U.current=!0))},[u.value]),me=o.useCallback(()=>v?.focus(),[v]),oe=o.useCallback((h,T,A)=>{const C=!U.current&&!A;(u.value!==void 0&&u.value===T||C)&&B(h)},[u.value]),le=a==="popper"?xe:Fe,re=le===xe?{side:s,sideOffset:l,align:f,alignOffset:S,arrowPadding:x,collisionBoundary:R,collisionPadding:y,sticky:w,hideWhenDetached:i,avoidCollisions:m}:{};return d.jsx(Be,{scope:e,content:v,viewport:b,onViewportChange:j,itemRefCallback:fe,selectedItem:k,onItemLeave:me,itemTextRefCallback:oe,focusSelectedItem:V,selectedItemText:X,position:a,isPositioned:G,searchRef:pe,children:d.jsx(vt,{as:Mt,allowPinchZoom:!0,children:d.jsx(St,{asChild:!0,trapped:u.open,onMountAutoFocus:h=>{h.preventDefault()},onUnmountAutoFocus:E(c,h=>{u.trigger?.focus({preventScroll:!0}),h.preventDefault()}),children:d.jsx(ut,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:p,onPointerDownOutside:r,onFocusOutside:h=>h.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:d.jsx(le,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:h=>h.preventDefault(),...g,...re,onPlaced:()=>F(!0),ref:_,style:{display:"flex",flexDirection:"column",outline:"none",...g.style},onKeyDown:E(g.onKeyDown,h=>{const T=h.ctrlKey||h.altKey||h.metaKey;if(h.key==="Tab"&&h.preventDefault(),!T&&h.key.length===1&&ce(h.key),["ArrowUp","ArrowDown","Home","End"].includes(h.key)){let C=H().filter(I=>!I.disabled).map(I=>I.ref.current);if(["ArrowUp","End"].includes(h.key)&&(C=C.slice().reverse()),["ArrowUp","ArrowDown"].includes(h.key)){const I=h.target,P=C.indexOf(I);C=C.slice(P+1)}setTimeout(()=>M(C)),h.preventDefault()}})})})})})})});He.displayName=bt;var At="SelectItemAlignedPosition",Fe=o.forwardRef((t,n)=>{const{__scopeSelect:e,onPlaced:a,...c}=t,p=q(te,e),r=$(te,e),[s,l]=o.useState(null),[f,S]=o.useState(null),x=D(n,_=>S(_)),R=de(e),y=o.useRef(!1),w=o.useRef(!0),{viewport:i,selectedItem:m,selectedItemText:g,focusSelectedItem:u}=r,v=o.useCallback(()=>{if(p.trigger&&p.valueNode&&s&&f&&i&&m&&g){const _=p.trigger.getBoundingClientRect(),k=f.getBoundingClientRect(),K=p.valueNode.getBoundingClientRect(),X=g.getBoundingClientRect();if(p.dir!=="rtl"){const I=X.left-k.left,P=K.left-I,Z=_.left-P,J=_.width+Z,he=Math.max(J,k.width),ve=window.innerWidth-L,Se=Ee(P,[L,Math.max(L,ve-he)]);s.style.minWidth=J+"px",s.style.left=Se+"px"}else{const I=k.right-X.right,P=window.innerWidth-K.right-I,Z=window.innerWidth-_.right-P,J=_.width+Z,he=Math.max(J,k.width),ve=window.innerWidth-L,Se=Ee(P,[L,Math.max(L,ve-he)]);s.style.minWidth=J+"px",s.style.right=Se+"px"}const B=R(),H=window.innerHeight-L*2,G=i.scrollHeight,F=window.getComputedStyle(f),U=parseInt(F.borderTopWidth,10),M=parseInt(F.paddingTop,10),V=parseInt(F.borderBottomWidth,10),W=parseInt(F.paddingBottom,10),z=U+M+G+W+V,pe=Math.min(m.offsetHeight*5,z),ce=window.getComputedStyle(i),fe=parseInt(ce.paddingTop,10),me=parseInt(ce.paddingBottom,10),oe=_.top+_.height/2-L,le=H-oe,re=m.offsetHeight/2,h=m.offsetTop+re,T=U+M+h,A=z-T;if(T<=oe){const I=B.length>0&&m===B[B.length-1].ref.current;s.style.bottom="0px";const P=f.clientHeight-i.offsetTop-i.offsetHeight,Z=Math.max(le,re+(I?me:0)+P+V),J=T+Z;s.style.height=J+"px"}else{const I=B.length>0&&m===B[0].ref.current;s.style.top="0px";const Z=Math.max(oe,U+i.offsetTop+(I?fe:0)+re)+A;s.style.height=Z+"px",i.scrollTop=T-oe+i.offsetTop}s.style.margin=`${L}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=H+"px",a?.(),requestAnimationFrame(()=>y.current=!0)}},[R,p.trigger,p.valueNode,s,f,i,m,g,p.dir,a]);Y(()=>v(),[v]);const[N,b]=o.useState();Y(()=>{f&&b(window.getComputedStyle(f).zIndex)},[f]);const j=o.useCallback(_=>{_&&w.current===!0&&(v(),u?.(),w.current=!1)},[v,u]);return d.jsx(Dt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:y,onScrollButtonChange:j,children:d.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:N},children:d.jsx(O.div,{...c,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});Fe.displayName=At;var Ot="SelectPopperPosition",xe=o.forwardRef((t,n)=>{const{__scopeSelect:e,align:a="start",collisionPadding:c=L,...p}=t,r=ue(e);return d.jsx(pt,{...r,...p,ref:n,align:a,collisionPadding:c,style:{boxSizing:"border-box",...p.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Ot;var[Dt,Re]=ne(te,{}),Ce="SelectViewport",Ue=o.forwardRef((t,n)=>{const{__scopeSelect:e,nonce:a,...c}=t,p=$(Ce,e),r=Re(Ce,e),s=D(n,p.onViewportChange),l=o.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),d.jsx(ae.Slot,{scope:e,children:d.jsx(O.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:E(c.onScroll,f=>{const S=f.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:R}=r;if(R?.current&&x){const y=Math.abs(l.current-S.scrollTop);if(y>0){const w=window.innerHeight-L*2,i=parseFloat(x.style.minHeight),m=parseFloat(x.style.height),g=Math.max(i,m);if(g<w){const u=g+y,v=Math.min(w,u),N=u-v;x.style.height=v+"px",x.style.bottom==="0px"&&(S.scrollTop=N>0?N:0,x.style.justifyContent="flex-end")}}}l.current=S.scrollTop})})})]})});Ue.displayName=Ce;var We="SelectGroup",[Lt,jt]=ne(We),Ke=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=Te();return d.jsx(Lt,{scope:e,id:c,children:d.jsx(O.div,{role:"group","aria-labelledby":c,...a,ref:n})})});Ke.displayName=We;var Ge="SelectLabel",ze=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=jt(Ge,e);return d.jsx(O.div,{id:c.id,...a,ref:n})});ze.displayName=Ge;var ie="SelectItem",[kt,Ye]=ne(ie),qe=o.forwardRef((t,n)=>{const{__scopeSelect:e,value:a,disabled:c=!1,textValue:p,...r}=t,s=q(ie,e),l=$(ie,e),f=s.value===a,[S,x]=o.useState(p??""),[R,y]=o.useState(!1),w=D(n,u=>l.itemRefCallback?.(u,a,c)),i=Te(),m=o.useRef("touch"),g=()=>{c||(s.onValueChange(a),s.onOpenChange(!1))};if(a==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(kt,{scope:e,value:a,disabled:c,textId:i,isSelected:f,onItemTextChange:o.useCallback(u=>{x(v=>v||(u?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:a,disabled:c,textValue:S,children:d.jsx(O.div,{role:"option","aria-labelledby":i,"data-highlighted":R?"":void 0,"aria-selected":f&&R,"data-state":f?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...r,ref:w,onFocus:E(r.onFocus,()=>y(!0)),onBlur:E(r.onBlur,()=>y(!1)),onClick:E(r.onClick,()=>{m.current!=="mouse"&&g()}),onPointerUp:E(r.onPointerUp,()=>{m.current==="mouse"&&g()}),onPointerDown:E(r.onPointerDown,u=>{m.current=u.pointerType}),onPointerMove:E(r.onPointerMove,u=>{m.current=u.pointerType,c?l.onItemLeave?.():m.current==="mouse"&&u.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(r.onPointerLeave,u=>{u.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:E(r.onKeyDown,u=>{l.searchRef?.current!==""&&u.key===" "||(yt.includes(u.key)&&g(),u.key===" "&&u.preventDefault())})})})})});qe.displayName=ie;var se="SelectItemText",$e=o.forwardRef((t,n)=>{const{__scopeSelect:e,className:a,style:c,...p}=t,r=q(se,e),s=$(se,e),l=Ye(se,e),f=Et(se,e),[S,x]=o.useState(null),R=D(n,g=>x(g),l.onItemTextChange,g=>s.itemTextRefCallback?.(g,l.value,l.disabled)),y=S?.textContent,w=o.useMemo(()=>d.jsx("option",{value:l.value,disabled:l.disabled,children:y},l.value),[l.disabled,l.value,y]),{onNativeOptionAdd:i,onNativeOptionRemove:m}=f;return Y(()=>(i(w),()=>m(w)),[i,m,w]),d.jsxs(d.Fragment,{children:[d.jsx(O.span,{id:l.textId,...p,ref:R}),l.isSelected&&r.valueNode&&!r.valueNodeHasChildren?Ne.createPortal(p.children,r.valueNode):null]})});$e.displayName=se;var Xe="SelectItemIndicator",Ze=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t;return Ye(Xe,e).isSelected?d.jsx(O.span,{"aria-hidden":!0,...a,ref:n}):null});Ze.displayName=Xe;var we="SelectScrollUpButton",Je=o.forwardRef((t,n)=>{const e=$(we,t.__scopeSelect),a=Re(we,t.__scopeSelect),[c,p]=o.useState(!1),r=D(n,a.onScrollButtonChange);return Y(()=>{if(e.viewport&&e.isPositioned){let s=function(){const f=l.scrollTop>0;p(f)};const l=e.viewport;return s(),l.addEventListener("scroll",s),()=>l.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),c?d.jsx(et,{...t,ref:r,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=e;s&&l&&(s.scrollTop=s.scrollTop-l.offsetHeight)}}):null});Je.displayName=we;var Ie="SelectScrollDownButton",Qe=o.forwardRef((t,n)=>{const e=$(Ie,t.__scopeSelect),a=Re(Ie,t.__scopeSelect),[c,p]=o.useState(!1),r=D(n,a.onScrollButtonChange);return Y(()=>{if(e.viewport&&e.isPositioned){let s=function(){const f=l.scrollHeight-l.clientHeight,S=Math.ceil(l.scrollTop)<f;p(S)};const l=e.viewport;return s(),l.addEventListener("scroll",s),()=>l.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),c?d.jsx(et,{...t,ref:r,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=e;s&&l&&(s.scrollTop=s.scrollTop+l.offsetHeight)}}):null});Qe.displayName=Ie;var et=o.forwardRef((t,n)=>{const{__scopeSelect:e,onAutoScroll:a,...c}=t,p=$("SelectScrollButton",e),r=o.useRef(null),s=de(e),l=o.useCallback(()=>{r.current!==null&&(window.clearInterval(r.current),r.current=null)},[]);return o.useEffect(()=>()=>l(),[l]),Y(()=>{s().find(S=>S.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(O.div,{"aria-hidden":!0,...c,ref:n,style:{flexShrink:0,...c.style},onPointerDown:E(c.onPointerDown,()=>{r.current===null&&(r.current=window.setInterval(a,50))}),onPointerMove:E(c.onPointerMove,()=>{p.onItemLeave?.(),r.current===null&&(r.current=window.setInterval(a,50))}),onPointerLeave:E(c.onPointerLeave,()=>{l()})})}),Vt="SelectSeparator",tt=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t;return d.jsx(O.div,{"aria-hidden":!0,...a,ref:n})});tt.displayName=Vt;var ye="SelectArrow",Bt=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=ue(e),p=q(ye,e),r=$(ye,e);return p.open&&r.position==="popper"?d.jsx(ft,{...c,...a,ref:n}):null});Bt.displayName=ye;var Ht="SelectBubbleInput",ot=o.forwardRef(({__scopeSelect:t,value:n,...e},a)=>{const c=o.useRef(null),p=D(a,c),r=wt(n);return o.useEffect(()=>{const s=c.current;if(!s)return;const l=window.HTMLSelectElement.prototype,S=Object.getOwnPropertyDescriptor(l,"value").set;if(r!==n&&S){const x=new Event("change",{bubbles:!0});S.call(s,n),s.dispatchEvent(x)}},[r,n]),d.jsx(O.select,{...e,style:{...at,...e.style},ref:p,defaultValue:n})});ot.displayName=Ht;function nt(t){return t===""||t===void 0}function rt(t){const n=dt(t),e=o.useRef(""),a=o.useRef(0),c=o.useCallback(r=>{const s=e.current+r;n(s),(function l(f){e.current=f,window.clearTimeout(a.current),f!==""&&(a.current=window.setTimeout(()=>l(""),1e3))})(s)},[n]),p=o.useCallback(()=>{e.current="",window.clearTimeout(a.current)},[]);return o.useEffect(()=>()=>window.clearTimeout(a.current),[]),[e,c,p]}function st(t,n,e){const c=n.length>1&&Array.from(n).every(f=>f===n[0])?n[0]:n,p=e?t.indexOf(e):-1;let r=Ft(t,Math.max(p,0));c.length===1&&(r=r.filter(f=>f!==e));const l=r.find(f=>f.textValue.toLowerCase().startsWith(c.toLowerCase()));return l!==e?l:void 0}function Ft(t,n){return t.map((e,a)=>t[(n+a)%t.length])}var Yt=Me,qt=Oe,$t=Le,Xt=je,Zt=ke,Jt=Ve,Qt=Ue,eo=Ke,to=ze,oo=qe,no=$e,ro=Ze,so=Je,co=Qe,lo=tt;export{Jt as C,eo as G,Xt as I,to as L,Zt as P,Yt as R,so as S,qt as T,$t as V,Qt as a,lo as b,co as c,oo as d,no as e,ro as f,gt as g,Ct as u};
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{R as Q,r as o}from"./index-CqIc3cxq.js";import{r as Ne}from"./index-vDCSPjrM.js";import{a as _e,d as D,h as ge,c as be,u as Pe,R as ct,b as Te,A as lt,P as O,e as E,n as Y,g as it,V as at,o as dt,D as ut,C as pt,i as ft}from"./tooltip-Tlsyx2YO.js";import{j as d}from"./jsx-runtime-C5WNSv3b.js";import{h as mt,u as ht,R as vt,F as St}from"./index-ynYvVAOK.js";function Ee(t,[n,e]){return Math.min(e,Math.max(n,t))}function gt(t){const n=t+"CollectionProvider",[e,a]=_e(n),[c,p]=e(n,{collectionRef:{current:null},itemMap:new Map}),r=i=>{const{scope:m,children:g}=i,u=Q.useRef(null),v=Q.useRef(new Map).current;return d.jsx(c,{scope:m,itemMap:v,collectionRef:u,children:g})};r.displayName=n;const s=t+"CollectionSlot",l=ge(s),f=Q.forwardRef((i,m)=>{const{scope:g,children:u}=i,v=p(s,g),N=D(m,v.collectionRef);return d.jsx(l,{ref:N,children:u})});f.displayName=s;const S=t+"CollectionItemSlot",x="data-radix-collection-item",R=ge(S),y=Q.forwardRef((i,m)=>{const{scope:g,children:u,...v}=i,N=Q.useRef(null),b=D(m,N),j=p(S,g);return Q.useEffect(()=>(j.itemMap.set(N,{ref:N,...v}),()=>void j.itemMap.delete(N))),d.jsx(R,{[x]:"",ref:b,children:u})});y.displayName=S;function w(i){const m=p(t+"CollectionConsumer",i);return Q.useCallback(()=>{const u=m.collectionRef.current;if(!u)return[];const v=Array.from(u.querySelectorAll(`[${x}]`));return Array.from(m.itemMap.values()).sort((j,_)=>v.indexOf(j.ref.current)-v.indexOf(_.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:r,Slot:f,ItemSlot:y},w,a]}var xt=o.createContext(void 0);function Ct(t){const n=o.useContext(xt);return t||n||"ltr"}function wt(t){const n=o.useRef({value:t,previous:t});return o.useMemo(()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous),[t])}var It=[" ","Enter","ArrowUp","ArrowDown"],yt=[" ","Enter"],ee="Select",[ae,de,Tt]=gt(ee),[ne]=_e(ee,[Tt,be]),ue=be(),[Rt,q]=ne(ee),[Pt,Et]=ne(ee),Me=t=>{const{__scopeSelect:n,children:e,open:a,defaultOpen:c,onOpenChange:p,value:r,defaultValue:s,onValueChange:l,dir:f,name:S,autoComplete:x,disabled:R,required:y,form:w}=t,i=ue(n),[m,g]=o.useState(null),[u,v]=o.useState(null),[N,b]=o.useState(!1),j=Ct(f),[_,k]=Pe({prop:a,defaultProp:c??!1,onChange:p,caller:ee}),[K,X]=Pe({prop:r,defaultProp:s,onChange:l,caller:ee}),B=o.useRef(null),H=m?w||!!m.closest("form"):!0,[G,F]=o.useState(new Set),U=Array.from(G).map(M=>M.props.value).join(";");return d.jsx(ct,{...i,children:d.jsxs(Rt,{required:y,scope:n,trigger:m,onTriggerChange:g,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:N,onValueNodeHasChildrenChange:b,contentId:Te(),value:K,onValueChange:X,open:_,onOpenChange:k,dir:j,triggerPointerDownPosRef:B,disabled:R,children:[d.jsx(ae.Provider,{scope:n,children:d.jsx(Pt,{scope:t.__scopeSelect,onNativeOptionAdd:o.useCallback(M=>{F(V=>new Set(V).add(M))},[]),onNativeOptionRemove:o.useCallback(M=>{F(V=>{const W=new Set(V);return W.delete(M),W})},[]),children:e})}),H?d.jsxs(ot,{"aria-hidden":!0,required:y,tabIndex:-1,name:S,autoComplete:x,value:K,onChange:M=>X(M.target.value),disabled:R,form:w,children:[K===void 0?d.jsx("option",{value:""}):null,Array.from(G)]},U):null]})})};Me.displayName=ee;var Ae="SelectTrigger",Oe=o.forwardRef((t,n)=>{const{__scopeSelect:e,disabled:a=!1,...c}=t,p=ue(e),r=q(Ae,e),s=r.disabled||a,l=D(n,r.onTriggerChange),f=de(e),S=o.useRef("touch"),[x,R,y]=rt(i=>{const m=f().filter(v=>!v.disabled),g=m.find(v=>v.value===r.value),u=st(m,i,g);u!==void 0&&r.onValueChange(u.value)}),w=i=>{s||(r.onOpenChange(!0),y()),i&&(r.triggerPointerDownPosRef.current={x:Math.round(i.pageX),y:Math.round(i.pageY)})};return d.jsx(lt,{asChild:!0,...p,children:d.jsx(O.button,{type:"button",role:"combobox","aria-controls":r.contentId,"aria-expanded":r.open,"aria-required":r.required,"aria-autocomplete":"none",dir:r.dir,"data-state":r.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":nt(r.value)?"":void 0,...c,ref:l,onClick:E(c.onClick,i=>{i.currentTarget.focus(),S.current!=="mouse"&&w(i)}),onPointerDown:E(c.onPointerDown,i=>{S.current=i.pointerType;const m=i.target;m.hasPointerCapture(i.pointerId)&&m.releasePointerCapture(i.pointerId),i.button===0&&i.ctrlKey===!1&&i.pointerType==="mouse"&&(w(i),i.preventDefault())}),onKeyDown:E(c.onKeyDown,i=>{const m=x.current!=="";!(i.ctrlKey||i.altKey||i.metaKey)&&i.key.length===1&&R(i.key),!(m&&i.key===" ")&&It.includes(i.key)&&(w(),i.preventDefault())})})})});Oe.displayName=Ae;var De="SelectValue",Le=o.forwardRef((t,n)=>{const{__scopeSelect:e,className:a,style:c,children:p,placeholder:r="",...s}=t,l=q(De,e),{onValueNodeHasChildrenChange:f}=l,S=p!==void 0,x=D(n,l.onValueNodeChange);return Y(()=>{f(S)},[f,S]),d.jsx(O.span,{...s,ref:x,style:{pointerEvents:"none"},children:nt(l.value)?d.jsx(d.Fragment,{children:r}):p})});Le.displayName=De;var Nt="SelectIcon",je=o.forwardRef((t,n)=>{const{__scopeSelect:e,children:a,...c}=t;return d.jsx(O.span,{"aria-hidden":!0,...c,ref:n,children:a||"▼"})});je.displayName=Nt;var _t="SelectPortal",ke=t=>d.jsx(it,{asChild:!0,...t});ke.displayName=_t;var te="SelectContent",Ve=o.forwardRef((t,n)=>{const e=q(te,t.__scopeSelect),[a,c]=o.useState();if(Y(()=>{c(new DocumentFragment)},[]),!e.open){const p=a;return p?Ne.createPortal(d.jsx(Be,{scope:t.__scopeSelect,children:d.jsx(ae.Slot,{scope:t.__scopeSelect,children:d.jsx("div",{children:t.children})})}),p):null}return d.jsx(He,{...t,ref:n})});Ve.displayName=te;var L=10,[Be,$]=ne(te),bt="SelectContentImpl",Mt=ge("SelectContent.RemoveScroll"),He=o.forwardRef((t,n)=>{const{__scopeSelect:e,position:a="item-aligned",onCloseAutoFocus:c,onEscapeKeyDown:p,onPointerDownOutside:r,side:s,sideOffset:l,align:f,alignOffset:S,arrowPadding:x,collisionBoundary:R,collisionPadding:y,sticky:w,hideWhenDetached:i,avoidCollisions:m,...g}=t,u=q(te,e),[v,N]=o.useState(null),[b,j]=o.useState(null),_=D(n,h=>N(h)),[k,K]=o.useState(null),[X,B]=o.useState(null),H=de(e),[G,F]=o.useState(!1),U=o.useRef(!1);o.useEffect(()=>{if(v)return mt(v)},[v]),ht();const M=o.useCallback(h=>{const[T,...A]=H().map(P=>P.ref.current),[C]=A.slice(-1),I=document.activeElement;for(const P of h)if(P===I||(P?.scrollIntoView({block:"nearest"}),P===T&&b&&(b.scrollTop=0),P===C&&b&&(b.scrollTop=b.scrollHeight),P?.focus(),document.activeElement!==I))return},[H,b]),V=o.useCallback(()=>M([k,v]),[M,k,v]);o.useEffect(()=>{G&&V()},[G,V]);const{onOpenChange:W,triggerPointerDownPosRef:z}=u;o.useEffect(()=>{if(v){let h={x:0,y:0};const T=C=>{h={x:Math.abs(Math.round(C.pageX)-(z.current?.x??0)),y:Math.abs(Math.round(C.pageY)-(z.current?.y??0))}},A=C=>{h.x<=10&&h.y<=10?C.preventDefault():v.contains(C.target)||W(!1),document.removeEventListener("pointermove",T),z.current=null};return z.current!==null&&(document.addEventListener("pointermove",T),document.addEventListener("pointerup",A,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",A,{capture:!0})}}},[v,W,z]),o.useEffect(()=>{const h=()=>W(!1);return window.addEventListener("blur",h),window.addEventListener("resize",h),()=>{window.removeEventListener("blur",h),window.removeEventListener("resize",h)}},[W]);const[pe,ce]=rt(h=>{const T=H().filter(I=>!I.disabled),A=T.find(I=>I.ref.current===document.activeElement),C=st(T,h,A);C&&setTimeout(()=>C.ref.current.focus())}),fe=o.useCallback((h,T,A)=>{const C=!U.current&&!A;(u.value!==void 0&&u.value===T||C)&&(K(h),C&&(U.current=!0))},[u.value]),me=o.useCallback(()=>v?.focus(),[v]),oe=o.useCallback((h,T,A)=>{const C=!U.current&&!A;(u.value!==void 0&&u.value===T||C)&&B(h)},[u.value]),le=a==="popper"?xe:Fe,re=le===xe?{side:s,sideOffset:l,align:f,alignOffset:S,arrowPadding:x,collisionBoundary:R,collisionPadding:y,sticky:w,hideWhenDetached:i,avoidCollisions:m}:{};return d.jsx(Be,{scope:e,content:v,viewport:b,onViewportChange:j,itemRefCallback:fe,selectedItem:k,onItemLeave:me,itemTextRefCallback:oe,focusSelectedItem:V,selectedItemText:X,position:a,isPositioned:G,searchRef:pe,children:d.jsx(vt,{as:Mt,allowPinchZoom:!0,children:d.jsx(St,{asChild:!0,trapped:u.open,onMountAutoFocus:h=>{h.preventDefault()},onUnmountAutoFocus:E(c,h=>{u.trigger?.focus({preventScroll:!0}),h.preventDefault()}),children:d.jsx(ut,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:p,onPointerDownOutside:r,onFocusOutside:h=>h.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:d.jsx(le,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:h=>h.preventDefault(),...g,...re,onPlaced:()=>F(!0),ref:_,style:{display:"flex",flexDirection:"column",outline:"none",...g.style},onKeyDown:E(g.onKeyDown,h=>{const T=h.ctrlKey||h.altKey||h.metaKey;if(h.key==="Tab"&&h.preventDefault(),!T&&h.key.length===1&&ce(h.key),["ArrowUp","ArrowDown","Home","End"].includes(h.key)){let C=H().filter(I=>!I.disabled).map(I=>I.ref.current);if(["ArrowUp","End"].includes(h.key)&&(C=C.slice().reverse()),["ArrowUp","ArrowDown"].includes(h.key)){const I=h.target,P=C.indexOf(I);C=C.slice(P+1)}setTimeout(()=>M(C)),h.preventDefault()}})})})})})})});He.displayName=bt;var At="SelectItemAlignedPosition",Fe=o.forwardRef((t,n)=>{const{__scopeSelect:e,onPlaced:a,...c}=t,p=q(te,e),r=$(te,e),[s,l]=o.useState(null),[f,S]=o.useState(null),x=D(n,_=>S(_)),R=de(e),y=o.useRef(!1),w=o.useRef(!0),{viewport:i,selectedItem:m,selectedItemText:g,focusSelectedItem:u}=r,v=o.useCallback(()=>{if(p.trigger&&p.valueNode&&s&&f&&i&&m&&g){const _=p.trigger.getBoundingClientRect(),k=f.getBoundingClientRect(),K=p.valueNode.getBoundingClientRect(),X=g.getBoundingClientRect();if(p.dir!=="rtl"){const I=X.left-k.left,P=K.left-I,Z=_.left-P,J=_.width+Z,he=Math.max(J,k.width),ve=window.innerWidth-L,Se=Ee(P,[L,Math.max(L,ve-he)]);s.style.minWidth=J+"px",s.style.left=Se+"px"}else{const I=k.right-X.right,P=window.innerWidth-K.right-I,Z=window.innerWidth-_.right-P,J=_.width+Z,he=Math.max(J,k.width),ve=window.innerWidth-L,Se=Ee(P,[L,Math.max(L,ve-he)]);s.style.minWidth=J+"px",s.style.right=Se+"px"}const B=R(),H=window.innerHeight-L*2,G=i.scrollHeight,F=window.getComputedStyle(f),U=parseInt(F.borderTopWidth,10),M=parseInt(F.paddingTop,10),V=parseInt(F.borderBottomWidth,10),W=parseInt(F.paddingBottom,10),z=U+M+G+W+V,pe=Math.min(m.offsetHeight*5,z),ce=window.getComputedStyle(i),fe=parseInt(ce.paddingTop,10),me=parseInt(ce.paddingBottom,10),oe=_.top+_.height/2-L,le=H-oe,re=m.offsetHeight/2,h=m.offsetTop+re,T=U+M+h,A=z-T;if(T<=oe){const I=B.length>0&&m===B[B.length-1].ref.current;s.style.bottom="0px";const P=f.clientHeight-i.offsetTop-i.offsetHeight,Z=Math.max(le,re+(I?me:0)+P+V),J=T+Z;s.style.height=J+"px"}else{const I=B.length>0&&m===B[0].ref.current;s.style.top="0px";const Z=Math.max(oe,U+i.offsetTop+(I?fe:0)+re)+A;s.style.height=Z+"px",i.scrollTop=T-oe+i.offsetTop}s.style.margin=`${L}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=H+"px",a?.(),requestAnimationFrame(()=>y.current=!0)}},[R,p.trigger,p.valueNode,s,f,i,m,g,p.dir,a]);Y(()=>v(),[v]);const[N,b]=o.useState();Y(()=>{f&&b(window.getComputedStyle(f).zIndex)},[f]);const j=o.useCallback(_=>{_&&w.current===!0&&(v(),u?.(),w.current=!1)},[v,u]);return d.jsx(Dt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:y,onScrollButtonChange:j,children:d.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:N},children:d.jsx(O.div,{...c,ref:x,style:{boxSizing:"border-box",maxHeight:"100%",...c.style}})})})});Fe.displayName=At;var Ot="SelectPopperPosition",xe=o.forwardRef((t,n)=>{const{__scopeSelect:e,align:a="start",collisionPadding:c=L,...p}=t,r=ue(e);return d.jsx(pt,{...r,...p,ref:n,align:a,collisionPadding:c,style:{boxSizing:"border-box",...p.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});xe.displayName=Ot;var[Dt,Re]=ne(te,{}),Ce="SelectViewport",Ue=o.forwardRef((t,n)=>{const{__scopeSelect:e,nonce:a,...c}=t,p=$(Ce,e),r=Re(Ce,e),s=D(n,p.onViewportChange),l=o.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),d.jsx(ae.Slot,{scope:e,children:d.jsx(O.div,{"data-radix-select-viewport":"",role:"presentation",...c,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...c.style},onScroll:E(c.onScroll,f=>{const S=f.currentTarget,{contentWrapper:x,shouldExpandOnScrollRef:R}=r;if(R?.current&&x){const y=Math.abs(l.current-S.scrollTop);if(y>0){const w=window.innerHeight-L*2,i=parseFloat(x.style.minHeight),m=parseFloat(x.style.height),g=Math.max(i,m);if(g<w){const u=g+y,v=Math.min(w,u),N=u-v;x.style.height=v+"px",x.style.bottom==="0px"&&(S.scrollTop=N>0?N:0,x.style.justifyContent="flex-end")}}}l.current=S.scrollTop})})})]})});Ue.displayName=Ce;var We="SelectGroup",[Lt,jt]=ne(We),Ke=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=Te();return d.jsx(Lt,{scope:e,id:c,children:d.jsx(O.div,{role:"group","aria-labelledby":c,...a,ref:n})})});Ke.displayName=We;var Ge="SelectLabel",ze=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=jt(Ge,e);return d.jsx(O.div,{id:c.id,...a,ref:n})});ze.displayName=Ge;var ie="SelectItem",[kt,Ye]=ne(ie),qe=o.forwardRef((t,n)=>{const{__scopeSelect:e,value:a,disabled:c=!1,textValue:p,...r}=t,s=q(ie,e),l=$(ie,e),f=s.value===a,[S,x]=o.useState(p??""),[R,y]=o.useState(!1),w=D(n,u=>l.itemRefCallback?.(u,a,c)),i=Te(),m=o.useRef("touch"),g=()=>{c||(s.onValueChange(a),s.onOpenChange(!1))};if(a==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(kt,{scope:e,value:a,disabled:c,textId:i,isSelected:f,onItemTextChange:o.useCallback(u=>{x(v=>v||(u?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:a,disabled:c,textValue:S,children:d.jsx(O.div,{role:"option","aria-labelledby":i,"data-highlighted":R?"":void 0,"aria-selected":f&&R,"data-state":f?"checked":"unchecked","aria-disabled":c||void 0,"data-disabled":c?"":void 0,tabIndex:c?void 0:-1,...r,ref:w,onFocus:E(r.onFocus,()=>y(!0)),onBlur:E(r.onBlur,()=>y(!1)),onClick:E(r.onClick,()=>{m.current!=="mouse"&&g()}),onPointerUp:E(r.onPointerUp,()=>{m.current==="mouse"&&g()}),onPointerDown:E(r.onPointerDown,u=>{m.current=u.pointerType}),onPointerMove:E(r.onPointerMove,u=>{m.current=u.pointerType,c?l.onItemLeave?.():m.current==="mouse"&&u.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(r.onPointerLeave,u=>{u.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:E(r.onKeyDown,u=>{l.searchRef?.current!==""&&u.key===" "||(yt.includes(u.key)&&g(),u.key===" "&&u.preventDefault())})})})})});qe.displayName=ie;var se="SelectItemText",$e=o.forwardRef((t,n)=>{const{__scopeSelect:e,className:a,style:c,...p}=t,r=q(se,e),s=$(se,e),l=Ye(se,e),f=Et(se,e),[S,x]=o.useState(null),R=D(n,g=>x(g),l.onItemTextChange,g=>s.itemTextRefCallback?.(g,l.value,l.disabled)),y=S?.textContent,w=o.useMemo(()=>d.jsx("option",{value:l.value,disabled:l.disabled,children:y},l.value),[l.disabled,l.value,y]),{onNativeOptionAdd:i,onNativeOptionRemove:m}=f;return Y(()=>(i(w),()=>m(w)),[i,m,w]),d.jsxs(d.Fragment,{children:[d.jsx(O.span,{id:l.textId,...p,ref:R}),l.isSelected&&r.valueNode&&!r.valueNodeHasChildren?Ne.createPortal(p.children,r.valueNode):null]})});$e.displayName=se;var Xe="SelectItemIndicator",Ze=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t;return Ye(Xe,e).isSelected?d.jsx(O.span,{"aria-hidden":!0,...a,ref:n}):null});Ze.displayName=Xe;var we="SelectScrollUpButton",Je=o.forwardRef((t,n)=>{const e=$(we,t.__scopeSelect),a=Re(we,t.__scopeSelect),[c,p]=o.useState(!1),r=D(n,a.onScrollButtonChange);return Y(()=>{if(e.viewport&&e.isPositioned){let s=function(){const f=l.scrollTop>0;p(f)};const l=e.viewport;return s(),l.addEventListener("scroll",s),()=>l.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),c?d.jsx(et,{...t,ref:r,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=e;s&&l&&(s.scrollTop=s.scrollTop-l.offsetHeight)}}):null});Je.displayName=we;var Ie="SelectScrollDownButton",Qe=o.forwardRef((t,n)=>{const e=$(Ie,t.__scopeSelect),a=Re(Ie,t.__scopeSelect),[c,p]=o.useState(!1),r=D(n,a.onScrollButtonChange);return Y(()=>{if(e.viewport&&e.isPositioned){let s=function(){const f=l.scrollHeight-l.clientHeight,S=Math.ceil(l.scrollTop)<f;p(S)};const l=e.viewport;return s(),l.addEventListener("scroll",s),()=>l.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),c?d.jsx(et,{...t,ref:r,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=e;s&&l&&(s.scrollTop=s.scrollTop+l.offsetHeight)}}):null});Qe.displayName=Ie;var et=o.forwardRef((t,n)=>{const{__scopeSelect:e,onAutoScroll:a,...c}=t,p=$("SelectScrollButton",e),r=o.useRef(null),s=de(e),l=o.useCallback(()=>{r.current!==null&&(window.clearInterval(r.current),r.current=null)},[]);return o.useEffect(()=>()=>l(),[l]),Y(()=>{s().find(S=>S.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(O.div,{"aria-hidden":!0,...c,ref:n,style:{flexShrink:0,...c.style},onPointerDown:E(c.onPointerDown,()=>{r.current===null&&(r.current=window.setInterval(a,50))}),onPointerMove:E(c.onPointerMove,()=>{p.onItemLeave?.(),r.current===null&&(r.current=window.setInterval(a,50))}),onPointerLeave:E(c.onPointerLeave,()=>{l()})})}),Vt="SelectSeparator",tt=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t;return d.jsx(O.div,{"aria-hidden":!0,...a,ref:n})});tt.displayName=Vt;var ye="SelectArrow",Bt=o.forwardRef((t,n)=>{const{__scopeSelect:e,...a}=t,c=ue(e),p=q(ye,e),r=$(ye,e);return p.open&&r.position==="popper"?d.jsx(ft,{...c,...a,ref:n}):null});Bt.displayName=ye;var Ht="SelectBubbleInput",ot=o.forwardRef(({__scopeSelect:t,value:n,...e},a)=>{const c=o.useRef(null),p=D(a,c),r=wt(n);return o.useEffect(()=>{const s=c.current;if(!s)return;const l=window.HTMLSelectElement.prototype,S=Object.getOwnPropertyDescriptor(l,"value").set;if(r!==n&&S){const x=new Event("change",{bubbles:!0});S.call(s,n),s.dispatchEvent(x)}},[r,n]),d.jsx(O.select,{...e,style:{...at,...e.style},ref:p,defaultValue:n})});ot.displayName=Ht;function nt(t){return t===""||t===void 0}function rt(t){const n=dt(t),e=o.useRef(""),a=o.useRef(0),c=o.useCallback(r=>{const s=e.current+r;n(s),(function l(f){e.current=f,window.clearTimeout(a.current),f!==""&&(a.current=window.setTimeout(()=>l(""),1e3))})(s)},[n]),p=o.useCallback(()=>{e.current="",window.clearTimeout(a.current)},[]);return o.useEffect(()=>()=>window.clearTimeout(a.current),[]),[e,c,p]}function st(t,n,e){const c=n.length>1&&Array.from(n).every(f=>f===n[0])?n[0]:n,p=e?t.indexOf(e):-1;let r=Ft(t,Math.max(p,0));c.length===1&&(r=r.filter(f=>f!==e));const l=r.find(f=>f.textValue.toLowerCase().startsWith(c.toLowerCase()));return l!==e?l:void 0}function Ft(t,n){return t.map((e,a)=>t[(n+a)%t.length])}var Yt=Me,qt=Oe,$t=Le,Xt=je,Zt=ke,Jt=Ve,Qt=Ue,eo=Ke,to=ze,oo=qe,no=$e,ro=Ze,so=Je,co=Qe,lo=tt;export{Jt as C,eo as G,Xt as I,to as L,Zt as P,Yt as R,so as S,qt as T,$t as V,Qt as a,lo as b,co as c,oo as d,no as e,ro as f,gt as g,Ct as u};
|
|
2
|
+
//# sourceMappingURL=index-CJDOQ1bl.js.map
|