@epic-web/workshop-app 5.28.0 → 5.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/build/client/assets/_-DTLUa7j2.js +2 -0
  2. package/build/client/assets/_-DTLUa7j2.js.map +1 -0
  3. package/build/client/assets/{_basePickBy-lB0X5x6U.js → _basePickBy-Bkju64MX.js} +2 -2
  4. package/build/client/assets/{_basePickBy-lB0X5x6U.js.map → _basePickBy-Bkju64MX.js.map} +1 -1
  5. package/build/client/assets/{_baseUniq-BOjGYEEK.js → _baseUniq-Cp1g4BpN.js} +2 -2
  6. package/build/client/assets/{_baseUniq-BOjGYEEK.js.map → _baseUniq-Cp1g4BpN.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber-Co7M7Ztw.js +2 -0
  8. package/build/client/assets/_exerciseNumber-Co7M7Ztw.js.map +1 -0
  9. package/build/client/assets/_exerciseNumber_._stepNumber-Don1A9mU.js +2 -0
  10. package/build/client/assets/_exerciseNumber_._stepNumber-Don1A9mU.js.map +1 -0
  11. package/build/client/assets/_exerciseNumber_.finished-BqsavTTe.js +2 -0
  12. package/build/client/assets/_exerciseNumber_.finished-BqsavTTe.js.map +1 -0
  13. package/build/client/assets/_layout-BFto7KzZ.js +2 -0
  14. package/build/client/assets/_layout-BFto7KzZ.js.map +1 -0
  15. package/build/client/assets/_layout-BvOre76Q.js +2 -0
  16. package/build/client/assets/_layout-BvOre76Q.js.map +1 -0
  17. package/build/client/assets/_layout-CSP6lWdg.js +2 -0
  18. package/build/client/assets/_layout-CSP6lWdg.js.map +1 -0
  19. package/build/client/assets/_layout-DDOZBbUH.js +6 -0
  20. package/build/client/assets/_layout-DDOZBbUH.js.map +1 -0
  21. package/build/client/assets/accordion-BNzI0wOK.js +2 -0
  22. package/build/client/assets/{accordion-CpiLc1m2.js.map → accordion-BNzI0wOK.js.map} +1 -1
  23. package/build/client/assets/account-2uOW4wHE.js +2 -0
  24. package/build/client/assets/account-2uOW4wHE.js.map +1 -0
  25. package/build/client/assets/app-DfAmumll.js +2 -0
  26. package/build/client/assets/app-DfAmumll.js.map +1 -0
  27. package/build/client/assets/{arc-DmQZ2TPB.js → arc-BgUWL_JM.js} +2 -2
  28. package/build/client/assets/{arc-DmQZ2TPB.js.map → arc-BgUWL_JM.js.map} +1 -1
  29. package/build/client/assets/architectureDiagram-IEHRJDOE-VEDL5YJR.js +37 -0
  30. package/build/client/assets/{architectureDiagram-IEHRJDOE-BqPvrjLh.js.map → architectureDiagram-IEHRJDOE-VEDL5YJR.js.map} +1 -1
  31. package/build/client/assets/{blockDiagram-JOT3LUYC-D8OFd78i.js → blockDiagram-JOT3LUYC-CJojWhFE.js} +3 -3
  32. package/build/client/assets/{blockDiagram-JOT3LUYC-D8OFd78i.js.map → blockDiagram-JOT3LUYC-CJojWhFE.js.map} +1 -1
  33. package/build/client/assets/button-DRpue1NG.js +2 -0
  34. package/build/client/assets/button-DRpue1NG.js.map +1 -0
  35. package/build/client/assets/{c4Diagram-VJAJSXHY-DjROjsr_.js → c4Diagram-VJAJSXHY-CDiBL4DZ.js} +3 -3
  36. package/build/client/assets/{c4Diagram-VJAJSXHY-DjROjsr_.js.map → c4Diagram-VJAJSXHY-CDiBL4DZ.js.map} +1 -1
  37. package/build/client/assets/channel-CAodiiwJ.js +2 -0
  38. package/build/client/assets/{channel-DnqeaSfB.js.map → channel-CAodiiwJ.js.map} +1 -1
  39. package/build/client/assets/{chunk-4BMEZGHF-CNL-bCj2.js → chunk-4BMEZGHF-Dn8dm6h4.js} +2 -2
  40. package/build/client/assets/{chunk-4BMEZGHF-CNL-bCj2.js.map → chunk-4BMEZGHF-Dn8dm6h4.js.map} +1 -1
  41. package/build/client/assets/{chunk-A2AXSNBT-PeSyIKDm.js → chunk-A2AXSNBT-4MnudWit.js} +2 -2
  42. package/build/client/assets/{chunk-A2AXSNBT-PeSyIKDm.js.map → chunk-A2AXSNBT-4MnudWit.js.map} +1 -1
  43. package/build/client/assets/{chunk-AEK57VVT-B1JqGB_s.js → chunk-AEK57VVT-CqDnkZ4u.js} +2 -2
  44. package/build/client/assets/{chunk-AEK57VVT-B1JqGB_s.js.map → chunk-AEK57VVT-CqDnkZ4u.js.map} +1 -1
  45. package/build/client/assets/{chunk-D6G4REZN-C1e0nCkL.js → chunk-D6G4REZN-Brt3as5d.js} +2 -2
  46. package/build/client/assets/{chunk-D6G4REZN-C1e0nCkL.js.map → chunk-D6G4REZN-Brt3as5d.js.map} +1 -1
  47. package/build/client/assets/chunk-QMGIS6GS-CTjj1G71.js +44 -0
  48. package/build/client/assets/chunk-QMGIS6GS-CTjj1G71.js.map +1 -0
  49. package/build/client/assets/{chunk-RZ5BOZE2-D5pIwNeA.js → chunk-RZ5BOZE2-DRDeFo9p.js} +2 -2
  50. package/build/client/assets/{chunk-RZ5BOZE2-D5pIwNeA.js.map → chunk-RZ5BOZE2-DRDeFo9p.js.map} +1 -1
  51. package/build/client/assets/{chunk-XZIHB7SX-FbrNggxP.js → chunk-XZIHB7SX-jEJwVQJf.js} +2 -2
  52. package/build/client/assets/{chunk-XZIHB7SX-FbrNggxP.js.map → chunk-XZIHB7SX-jEJwVQJf.js.map} +1 -1
  53. package/build/client/assets/classDiagram-GIVACNV2-H_7kh---.js +2 -0
  54. package/build/client/assets/{classDiagram-GIVACNV2-cXWx-aYi.js.map → classDiagram-GIVACNV2-H_7kh---.js.map} +1 -1
  55. package/build/client/assets/classDiagram-v2-COTLJTTW-H_7kh---.js +2 -0
  56. package/build/client/assets/{classDiagram-v2-COTLJTTW-cXWx-aYi.js.map → classDiagram-v2-COTLJTTW-H_7kh---.js.map} +1 -1
  57. package/build/client/assets/clone-DRQ0Dnbp.js +2 -0
  58. package/build/client/assets/{clone-Bj8ANPCv.js.map → clone-DRQ0Dnbp.js.map} +1 -1
  59. package/build/client/assets/dagre-OKDRZEBW-BPnUPPO5.js +5 -0
  60. package/build/client/assets/{dagre-OKDRZEBW-DT9ZQRxf.js.map → dagre-OKDRZEBW-BPnUPPO5.js.map} +1 -1
  61. package/build/client/assets/diagram-SSKATNLV-Bh_ZXdjr.js +44 -0
  62. package/build/client/assets/{diagram-SSKATNLV-CcKCni9R.js.map → diagram-SSKATNLV-Bh_ZXdjr.js.map} +1 -1
  63. package/build/client/assets/diagram-VNBRO52H-D5zqYvJa.js +25 -0
  64. package/build/client/assets/{diagram-VNBRO52H-DWoRAiqO.js.map → diagram-VNBRO52H-D5zqYvJa.js.map} +1 -1
  65. package/build/client/assets/diff-CQ7A0nZj.js +2 -0
  66. package/build/client/assets/diff-CQ7A0nZj.js.map +1 -0
  67. package/build/client/assets/{diff-D5_VwPLF.js → diff-CtGU9cxI.js} +2 -2
  68. package/build/client/assets/diff-CtGU9cxI.js.map +1 -0
  69. package/build/client/assets/discord-91JJKnJ5.js +2 -0
  70. package/build/client/assets/discord-91JJKnJ5.js.map +1 -0
  71. package/build/client/assets/discord-D4appJa-.js +2 -0
  72. package/build/client/assets/discord-D4appJa-.js.map +1 -0
  73. package/build/client/assets/entry.client-uKxtCCau.js +35 -0
  74. package/build/client/assets/entry.client-uKxtCCau.js.map +1 -0
  75. package/build/client/assets/{epic-video-CmlkW6Rw.js → epic-video-D_3otytp.js} +3 -3
  76. package/build/client/assets/{epic-video-CmlkW6Rw.js.map → epic-video-D_3otytp.js.map} +1 -1
  77. package/build/client/assets/{erDiagram-Q7BY3M3F-DXkEmvKk.js → erDiagram-Q7BY3M3F-BxueSNDf.js} +3 -3
  78. package/build/client/assets/{erDiagram-Q7BY3M3F-DXkEmvKk.js.map → erDiagram-Q7BY3M3F-BxueSNDf.js.map} +1 -1
  79. package/build/client/assets/error-boundary-BLyHIxcu.js +2 -0
  80. package/build/client/assets/error-boundary-BLyHIxcu.js.map +1 -0
  81. package/build/client/assets/finished-BiOz59BB.js +2 -0
  82. package/build/client/assets/finished-BiOz59BB.js.map +1 -0
  83. package/build/client/assets/{flowDiagram-4HSFHLVR-DCodZaNW.js → flowDiagram-4HSFHLVR-CfL3E-FD.js} +3 -3
  84. package/build/client/assets/{flowDiagram-4HSFHLVR-DCodZaNW.js.map → flowDiagram-4HSFHLVR-CfL3E-FD.js.map} +1 -1
  85. package/build/client/assets/ganttDiagram-APWFNJXF-DxEqrjXE.js +258 -0
  86. package/build/client/assets/{ganttDiagram-APWFNJXF-TfB6wYvN.js.map → ganttDiagram-APWFNJXF-DxEqrjXE.js.map} +1 -1
  87. package/build/client/assets/gitGraphDiagram-7IBYFJ6S-csni0XOM.js +66 -0
  88. package/build/client/assets/{gitGraphDiagram-7IBYFJ6S-D2NQnQv2.js.map → gitGraphDiagram-7IBYFJ6S-csni0XOM.js.map} +1 -1
  89. package/build/client/assets/{graph-eJUngNSH.js → graph-DiSezMy_.js} +2 -2
  90. package/build/client/assets/{graph-eJUngNSH.js.map → graph-DiSezMy_.js.map} +1 -1
  91. package/build/client/assets/index-AKpqKc27.js +2 -0
  92. package/build/client/assets/index-AKpqKc27.js.map +1 -0
  93. package/build/client/assets/index-BGtlU-cD.js +2 -0
  94. package/build/client/assets/index-BGtlU-cD.js.map +1 -0
  95. package/build/client/assets/index-BP1ceC2h.js +10 -0
  96. package/build/client/assets/index-BP1ceC2h.js.map +1 -0
  97. package/build/client/assets/index-BSJLLJJ3.js +2 -0
  98. package/build/client/assets/index-BSJLLJJ3.js.map +1 -0
  99. package/build/client/assets/index-C0Fh_zu0.js +36 -0
  100. package/build/client/assets/{index-DLC5u33j.js.map → index-C0Fh_zu0.js.map} +1 -1
  101. package/build/client/assets/index-Co8qgD4k.js +2 -0
  102. package/build/client/assets/{index-BmMpCvYx.js.map → index-Co8qgD4k.js.map} +1 -1
  103. package/build/client/assets/index-D0dQzJhy.js +2 -0
  104. package/build/client/assets/index-D0dQzJhy.js.map +1 -0
  105. package/build/client/assets/index-DJsDENYs.js +42 -0
  106. package/build/client/assets/{index-Do-KWT0a.js.map → index-DJsDENYs.js.map} +1 -1
  107. package/build/client/assets/index-DWV7tDz3.js +3 -0
  108. package/build/client/assets/{index-DvQyydjU.js.map → index-DWV7tDz3.js.map} +1 -1
  109. package/build/client/assets/infoDiagram-PH2N3AL5-Dr2v4fFk.js +3 -0
  110. package/build/client/assets/{infoDiagram-PH2N3AL5-D-nEozcT.js.map → infoDiagram-PH2N3AL5-Dr2v4fFk.js.map} +1 -1
  111. package/build/client/assets/{journeyDiagram-U35MCT3I-Dc8g8jIX.js → journeyDiagram-U35MCT3I-iX4x5HVK.js} +3 -3
  112. package/build/client/assets/{journeyDiagram-U35MCT3I-Dc8g8jIX.js.map → journeyDiagram-U35MCT3I-iX4x5HVK.js.map} +1 -1
  113. package/build/client/assets/jsx-runtime-BjG_zV1W.js +10 -0
  114. package/build/client/assets/jsx-runtime-BjG_zV1W.js.map +1 -0
  115. package/build/client/assets/{kanban-definition-NDS4AKOZ-BwwcaZU2.js → kanban-definition-NDS4AKOZ-BwP5uDj3.js} +3 -3
  116. package/build/client/assets/{kanban-definition-NDS4AKOZ-BwwcaZU2.js.map → kanban-definition-NDS4AKOZ-BwP5uDj3.js.map} +1 -1
  117. package/build/client/assets/l-CVlzRdDg.js +2 -0
  118. package/build/client/assets/l-CVlzRdDg.js.map +1 -0
  119. package/build/client/assets/{layout-BAeq0-Is.js → layout-X8Y3Cf_B.js} +2 -2
  120. package/build/client/assets/{layout-BAeq0-Is.js.map → layout-X8Y3Cf_B.js.map} +1 -1
  121. package/build/client/assets/{linear-LWRPSVMz.js → linear-1DrdUlCY.js} +2 -2
  122. package/build/client/assets/{linear-LWRPSVMz.js.map → linear-1DrdUlCY.js.map} +1 -1
  123. package/build/client/assets/loading-CXEQXwx8.js +2 -0
  124. package/build/client/assets/{loading-b1FV2pQh.js.map → loading-CXEQXwx8.js.map} +1 -1
  125. package/build/client/assets/login-CaIyI5Cd.js +2 -0
  126. package/build/client/assets/login-CaIyI5Cd.js.map +1 -0
  127. package/build/client/assets/manifest-953eedfa.js +1 -0
  128. package/build/client/assets/mdx-DD5XL3ew.js +3 -0
  129. package/build/client/assets/mdx-DD5XL3ew.js.map +1 -0
  130. package/build/client/assets/{mermaid.core-q9C-HfFu.js → mermaid.core-D4QVSd3D.js} +5 -5
  131. package/build/client/assets/{mermaid.core-q9C-HfFu.js.map → mermaid.core-D4QVSd3D.js.map} +1 -1
  132. package/build/client/assets/mindmap-definition-ALO5MXBD-tl5KlWaB.js +96 -0
  133. package/build/client/assets/{mindmap-definition-ALO5MXBD-BhzLy0Zl.js.map → mindmap-definition-ALO5MXBD-tl5KlWaB.js.map} +1 -1
  134. package/build/client/assets/misc-yfWFSwMN.js +2 -0
  135. package/build/client/assets/{misc-2sBiisF5.js.map → misc-yfWFSwMN.js.map} +1 -1
  136. package/build/client/assets/nav-chevrons-CokHxUSB.js +2 -0
  137. package/build/client/assets/nav-chevrons-CokHxUSB.js.map +1 -0
  138. package/build/client/assets/onboarding-DyrGJaVn.js +2 -0
  139. package/build/client/assets/onboarding-DyrGJaVn.js.map +1 -0
  140. package/build/client/assets/online-CFV79-RX.js +2 -0
  141. package/build/client/assets/{online-DZKJk3C2.js.map → online-CFV79-RX.js.map} +1 -1
  142. package/build/client/assets/pe-C53l4u-6.js +2 -0
  143. package/build/client/assets/{pe-BShc2dvc.js.map → pe-C53l4u-6.js.map} +1 -1
  144. package/build/client/assets/pieDiagram-IB7DONF6-y5DqPNpS.js +31 -0
  145. package/build/client/assets/{pieDiagram-IB7DONF6-CaTGj8RH.js.map → pieDiagram-IB7DONF6-y5DqPNpS.js.map} +1 -1
  146. package/build/client/assets/preferences-C2zlOkAS.js +2 -0
  147. package/build/client/assets/preferences-C2zlOkAS.js.map +1 -0
  148. package/build/client/assets/{presence-C9bUSihT.js → presence-BoFXYAd7.js} +3 -3
  149. package/build/client/assets/{presence-C9bUSihT.js.map → presence-BoFXYAd7.js.map} +1 -1
  150. package/build/client/assets/preview-CE_VqYU4.js +2 -0
  151. package/build/client/assets/preview-CE_VqYU4.js.map +1 -0
  152. package/build/client/assets/product-TKJyOyif.js +2 -0
  153. package/build/client/assets/{product-DJOWNuL-.js.map → product-TKJyOyif.js.map} +1 -1
  154. package/build/client/assets/progress-CtGAFS2P.js +2 -0
  155. package/build/client/assets/{progress-BJ4ADF-s.js.map → progress-CtGAFS2P.js.map} +1 -1
  156. package/build/client/assets/progress-bar-DTYORRrG.js +2 -0
  157. package/build/client/assets/progress-bar-DTYORRrG.js.map +1 -0
  158. package/build/client/assets/{quadrantDiagram-7GDLP6J5-B4Od6z6p.js → quadrantDiagram-7GDLP6J5-ymq7Ot51.js} +3 -3
  159. package/build/client/assets/{quadrantDiagram-7GDLP6J5-B4Od6z6p.js.map → quadrantDiagram-7GDLP6J5-ymq7Ot51.js.map} +1 -1
  160. package/build/client/assets/{radar-MK3ICKWK-CENXhI0E.js → radar-MK3ICKWK-B8xuvUo7.js} +2 -2
  161. package/build/client/assets/{radar-MK3ICKWK-CENXhI0E.js.map → radar-MK3ICKWK-B8xuvUo7.js.map} +1 -1
  162. package/build/client/assets/{requirementDiagram-KVF5MWMF-_w0WuUxy.js → requirementDiagram-KVF5MWMF-B4D4Pi12.js} +3 -3
  163. package/build/client/assets/{requirementDiagram-KVF5MWMF-_w0WuUxy.js.map → requirementDiagram-KVF5MWMF-B4D4Pi12.js.map} +1 -1
  164. package/build/client/assets/revalidation-ws-89FLt73b.js +2 -0
  165. package/build/client/assets/revalidation-ws-89FLt73b.js.map +1 -0
  166. package/build/client/assets/root-Dd9--OJ3.js +2 -0
  167. package/build/client/assets/root-Dd9--OJ3.js.map +1 -0
  168. package/build/client/assets/sankeyDiagram-QLVOVGJD-BAY-vMZj.js +11 -0
  169. package/build/client/assets/{sankeyDiagram-QLVOVGJD-Bt8556P1.js.map → sankeyDiagram-QLVOVGJD-BAY-vMZj.js.map} +1 -1
  170. package/build/client/assets/{sequenceDiagram-X6HHIX6F-y2-oW3Ob.js → sequenceDiagram-X6HHIX6F-CDjFTgBk.js} +3 -3
  171. package/build/client/assets/{sequenceDiagram-X6HHIX6F-y2-oW3Ob.js.map → sequenceDiagram-X6HHIX6F-CDjFTgBk.js.map} +1 -1
  172. package/build/client/assets/set-playground-DtZ5ki7i.js +2 -0
  173. package/build/client/assets/set-playground-DtZ5ki7i.js.map +1 -0
  174. package/build/client/assets/stateDiagram-DGXRK772-DFekjeUZ.js +2 -0
  175. package/build/client/assets/{stateDiagram-DGXRK772-B3BuD15b.js.map → stateDiagram-DGXRK772-DFekjeUZ.js.map} +1 -1
  176. package/build/client/assets/stateDiagram-v2-YXO3MK2T-CSkUdkOW.js +2 -0
  177. package/build/client/assets/{stateDiagram-v2-YXO3MK2T-BzFxWpqR.js.map → stateDiagram-v2-YXO3MK2T-CSkUdkOW.js.map} +1 -1
  178. package/build/client/assets/support-drzs9wuf.js +2 -0
  179. package/build/client/assets/support-drzs9wuf.js.map +1 -0
  180. package/build/client/assets/test-psaYrMGK.js +2 -0
  181. package/build/client/assets/test-psaYrMGK.js.map +1 -0
  182. package/build/client/assets/{tests-B1ak2CDI.js → tests-7juFXgcY.js} +3 -3
  183. package/build/client/assets/tests-7juFXgcY.js.map +1 -0
  184. package/build/client/assets/{timeline-definition-BDJGKUSR-DUa2yfAV.js → timeline-definition-BDJGKUSR-1WjIsnZH.js} +3 -3
  185. package/build/client/assets/{timeline-definition-BDJGKUSR-DUa2yfAV.js.map → timeline-definition-BDJGKUSR-1WjIsnZH.js.map} +1 -1
  186. package/build/client/assets/tooltip-C6xKzWST.js +2 -0
  187. package/build/client/assets/{tooltip-Bzd6O8vq.js.map → tooltip-C6xKzWST.js.map} +1 -1
  188. package/build/client/assets/use-event-source-B411g-uF.js +2 -0
  189. package/build/client/assets/{use-event-source-Dar8h_B8.js.map → use-event-source-B411g-uF.js.map} +1 -1
  190. package/build/client/assets/user-Dmcddqge.js +2 -0
  191. package/build/client/assets/user-Dmcddqge.js.map +1 -0
  192. package/build/client/assets/version-BAECczgY.js +2 -0
  193. package/build/client/assets/version-BAECczgY.js.map +1 -0
  194. package/build/client/assets/workshop-config-gFAnGhSV.js +2 -0
  195. package/build/client/assets/workshop-config-gFAnGhSV.js.map +1 -0
  196. package/build/client/assets/{xychartDiagram-VJFVF3MP-JztjcODi.js → xychartDiagram-VJFVF3MP-Cp8GqXc6.js} +3 -3
  197. package/build/client/assets/{xychartDiagram-VJFVF3MP-JztjcODi.js.map → xychartDiagram-VJFVF3MP-Cp8GqXc6.js.map} +1 -1
  198. package/build/server/index.js +4439 -4072
  199. package/build/server/index.js.map +1 -1
  200. package/dist/server/index.js +2 -2
  201. package/package.json +13 -13
  202. package/build/client/assets/_-BaHOmd8F.js +0 -2
  203. package/build/client/assets/_-BaHOmd8F.js.map +0 -1
  204. package/build/client/assets/_exerciseNumber-Dqi7TgL9.js +0 -2
  205. package/build/client/assets/_exerciseNumber-Dqi7TgL9.js.map +0 -1
  206. package/build/client/assets/_exerciseNumber_._stepNumber-DoOFEk-P.js +0 -2
  207. package/build/client/assets/_exerciseNumber_._stepNumber-DoOFEk-P.js.map +0 -1
  208. package/build/client/assets/_exerciseNumber_.finished-C5m6M0gM.js +0 -2
  209. package/build/client/assets/_exerciseNumber_.finished-C5m6M0gM.js.map +0 -1
  210. package/build/client/assets/_layout-B_BIIcpM.js +0 -2
  211. package/build/client/assets/_layout-B_BIIcpM.js.map +0 -1
  212. package/build/client/assets/_layout-B_NrRv0S.js +0 -6
  213. package/build/client/assets/_layout-B_NrRv0S.js.map +0 -1
  214. package/build/client/assets/_layout-D7_F6t3x.js +0 -2
  215. package/build/client/assets/_layout-D7_F6t3x.js.map +0 -1
  216. package/build/client/assets/_layout-QRe2q83m.js +0 -2
  217. package/build/client/assets/_layout-QRe2q83m.js.map +0 -1
  218. package/build/client/assets/accordion-CpiLc1m2.js +0 -2
  219. package/build/client/assets/account-CbFDiVNd.js +0 -2
  220. package/build/client/assets/account-CbFDiVNd.js.map +0 -1
  221. package/build/client/assets/app-BYSDu0vh.js +0 -2
  222. package/build/client/assets/app-BYSDu0vh.js.map +0 -1
  223. package/build/client/assets/architectureDiagram-IEHRJDOE-BqPvrjLh.js +0 -37
  224. package/build/client/assets/button-Dt4EcDfR.js +0 -2
  225. package/build/client/assets/button-Dt4EcDfR.js.map +0 -1
  226. package/build/client/assets/channel-DnqeaSfB.js +0 -2
  227. package/build/client/assets/classDiagram-GIVACNV2-cXWx-aYi.js +0 -2
  228. package/build/client/assets/classDiagram-v2-COTLJTTW-cXWx-aYi.js +0 -2
  229. package/build/client/assets/clone-Bj8ANPCv.js +0 -2
  230. package/build/client/assets/components-5arJTWsS.js +0 -158
  231. package/build/client/assets/components-5arJTWsS.js.map +0 -1
  232. package/build/client/assets/dagre-OKDRZEBW-DT9ZQRxf.js +0 -5
  233. package/build/client/assets/diagram-SSKATNLV-CcKCni9R.js +0 -44
  234. package/build/client/assets/diagram-VNBRO52H-DWoRAiqO.js +0 -25
  235. package/build/client/assets/diff-BKR4usVv.js +0 -2
  236. package/build/client/assets/diff-BKR4usVv.js.map +0 -1
  237. package/build/client/assets/diff-D5_VwPLF.js.map +0 -1
  238. package/build/client/assets/discord-BU7RzE6-.js +0 -2
  239. package/build/client/assets/discord-BU7RzE6-.js.map +0 -1
  240. package/build/client/assets/discord-ut4t-aMQ.js +0 -2
  241. package/build/client/assets/discord-ut4t-aMQ.js.map +0 -1
  242. package/build/client/assets/entry.client-BLUlgPHE.js +0 -44
  243. package/build/client/assets/entry.client-BLUlgPHE.js.map +0 -1
  244. package/build/client/assets/error-boundary-B07cWiEy.js +0 -2
  245. package/build/client/assets/error-boundary-B07cWiEy.js.map +0 -1
  246. package/build/client/assets/finished-MrsevkkK.js +0 -2
  247. package/build/client/assets/finished-MrsevkkK.js.map +0 -1
  248. package/build/client/assets/ganttDiagram-APWFNJXF-TfB6wYvN.js +0 -258
  249. package/build/client/assets/gitGraphDiagram-7IBYFJ6S-D2NQnQv2.js +0 -66
  250. package/build/client/assets/index-9euhNa27.js +0 -2
  251. package/build/client/assets/index-9euhNa27.js.map +0 -1
  252. package/build/client/assets/index-B8yUFowV.js +0 -2
  253. package/build/client/assets/index-B8yUFowV.js.map +0 -1
  254. package/build/client/assets/index-BmMpCvYx.js +0 -2
  255. package/build/client/assets/index-DLC5u33j.js +0 -36
  256. package/build/client/assets/index-DPHVg8Eh.js +0 -2
  257. package/build/client/assets/index-DPHVg8Eh.js.map +0 -1
  258. package/build/client/assets/index-Do-KWT0a.js +0 -42
  259. package/build/client/assets/index-Dsusf_Av.js +0 -38
  260. package/build/client/assets/index-Dsusf_Av.js.map +0 -1
  261. package/build/client/assets/index-DvQyydjU.js +0 -3
  262. package/build/client/assets/index-Fw2eA3AF.js +0 -2
  263. package/build/client/assets/index-Fw2eA3AF.js.map +0 -1
  264. package/build/client/assets/infoDiagram-PH2N3AL5-D-nEozcT.js +0 -3
  265. package/build/client/assets/l-ChG-6rmU.js +0 -2
  266. package/build/client/assets/l-ChG-6rmU.js.map +0 -1
  267. package/build/client/assets/loading-b1FV2pQh.js +0 -2
  268. package/build/client/assets/login-Ci7cdiuj.js +0 -2
  269. package/build/client/assets/login-Ci7cdiuj.js.map +0 -1
  270. package/build/client/assets/manifest-f9e2a790.js +0 -1
  271. package/build/client/assets/mdx-C7imFHZE.js +0 -3
  272. package/build/client/assets/mdx-C7imFHZE.js.map +0 -1
  273. package/build/client/assets/mindmap-definition-ALO5MXBD-BhzLy0Zl.js +0 -96
  274. package/build/client/assets/misc-2sBiisF5.js +0 -2
  275. package/build/client/assets/nav-chevrons-CV-dpXNR.js +0 -2
  276. package/build/client/assets/nav-chevrons-CV-dpXNR.js.map +0 -1
  277. package/build/client/assets/onboarding-c9ZuxLsm.js +0 -2
  278. package/build/client/assets/onboarding-c9ZuxLsm.js.map +0 -1
  279. package/build/client/assets/online-DZKJk3C2.js +0 -2
  280. package/build/client/assets/pe-BShc2dvc.js +0 -2
  281. package/build/client/assets/pieDiagram-IB7DONF6-CaTGj8RH.js +0 -31
  282. package/build/client/assets/preferences-BkWQyRCq.js +0 -2
  283. package/build/client/assets/preferences-BkWQyRCq.js.map +0 -1
  284. package/build/client/assets/preview-CqZGJtsE.js +0 -2
  285. package/build/client/assets/preview-CqZGJtsE.js.map +0 -1
  286. package/build/client/assets/product-DJOWNuL-.js +0 -2
  287. package/build/client/assets/progress-BJ4ADF-s.js +0 -2
  288. package/build/client/assets/progress-bar-DgnkQxQw.js +0 -2
  289. package/build/client/assets/progress-bar-DgnkQxQw.js.map +0 -1
  290. package/build/client/assets/revalidation-ws-B0skixgr.js +0 -2
  291. package/build/client/assets/revalidation-ws-B0skixgr.js.map +0 -1
  292. package/build/client/assets/root-C_WG23OF.js +0 -11
  293. package/build/client/assets/root-C_WG23OF.js.map +0 -1
  294. package/build/client/assets/sankeyDiagram-QLVOVGJD-Bt8556P1.js +0 -11
  295. package/build/client/assets/set-playground-DW2Ys-rV.js +0 -2
  296. package/build/client/assets/set-playground-DW2Ys-rV.js.map +0 -1
  297. package/build/client/assets/stateDiagram-DGXRK772-B3BuD15b.js +0 -2
  298. package/build/client/assets/stateDiagram-v2-YXO3MK2T-BzFxWpqR.js +0 -2
  299. package/build/client/assets/support-Bg0iSyle.js +0 -2
  300. package/build/client/assets/support-Bg0iSyle.js.map +0 -1
  301. package/build/client/assets/test-DdUNKtkF.js +0 -2
  302. package/build/client/assets/test-DdUNKtkF.js.map +0 -1
  303. package/build/client/assets/tests-B1ak2CDI.js.map +0 -1
  304. package/build/client/assets/tooltip-Bzd6O8vq.js +0 -2
  305. package/build/client/assets/use-event-source-Dar8h_B8.js +0 -2
  306. package/build/client/assets/user-DNSnhqGn.js +0 -2
  307. package/build/client/assets/user-DNSnhqGn.js.map +0 -1
  308. package/build/client/assets/version-DriSvNMy.js +0 -2
  309. package/build/client/assets/version-DriSvNMy.js.map +0 -1
  310. package/build/client/assets/workshop-config-DchzGYJM.js +0 -2
  311. package/build/client/assets/workshop-config-DchzGYJM.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"components-5arJTWsS.js","sources":["../../../../../node_modules/react-dom/cjs/react-dom.production.js","../../../../../node_modules/react-dom/index.js","../../../../../node_modules/react-router-dom/dist/index.js","../../../../../node_modules/turbo-stream/dist/turbo-stream.mjs","../../../../../node_modules/@remix-run/server-runtime/dist/esm/single-fetch.js","../../../../../node_modules/@remix-run/react/dist/esm/_virtual/_rollupPluginBabelHelpers.js","../../../../../node_modules/@remix-run/react/dist/esm/invariant.js","../../../../../node_modules/@remix-run/react/dist/esm/routeModules.js","../../../../../node_modules/@remix-run/react/dist/esm/links.js","../../../../../node_modules/@remix-run/react/dist/esm/markup.js","../../../../../node_modules/@remix-run/react/dist/esm/data.js","../../../../../node_modules/@remix-run/react/dist/esm/single-fetch.js","../../../../../node_modules/@remix-run/react/dist/esm/errorBoundaries.js","../../../../../node_modules/@remix-run/react/dist/esm/fallback.js","../../../../../node_modules/@remix-run/react/dist/esm/routes.js","../../../../../node_modules/@remix-run/react/dist/esm/fog-of-war.js","../../../../../node_modules/@remix-run/react/dist/esm/components.js"],"sourcesContent":["/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.0.0-rc-1460d67c-20241003\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * React Router DOM v6.26.2\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a <button> or <input type=\\\"submit\\\"> without a <form>\");\n }\n // <button>/<input type=\"submit\"> may override attributes of <form>\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n // Build a FormData object populated from a form and submitter\n formData = new FormData(form, target);\n // If this browser doesn't support the `FormData(el, submitter)` format,\n // then tack on the submitter value at the end. This is a lightweight\n // solution that is not 100% spec compliant. For complete support in older\n // browsers, consider using the `formdata-submitter-polyfill` package\n if (!isFormDataSubmitterSupported()) {\n let {\n name,\n type,\n value\n } = target;\n if (type === \"image\") {\n let prefix = name ? name + \".\" : \"\";\n formData.append(prefix + \"x\", \"0\");\n formData.append(prefix + \"y\", \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\"Cannot submit element that is not <form>, <button>, or \" + \"<input type=\\\"submit|image\\\">\");\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n // Send body for <Form encType=\"text/plain\" so we encode it into text\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = undefined;\n }\n return {\n action,\n method: method.toLowerCase(),\n encType,\n formData,\n body\n };\n}\n\nconst _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\", \"unstable_viewTransition\"],\n _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"unstable_viewTransition\", \"children\"],\n _excluded3 = [\"fetcherKey\", \"navigate\", \"reloadDocument\", \"replace\", \"state\", \"method\", \"action\", \"onSubmit\", \"relative\", \"preventScrollReset\", \"unstable_viewTransition\"];\n// HEY YOU! DON'T TOUCH THIS VARIABLE!\n//\n// It is replaced with the proper version at build time via a babel plugin in\n// the rollup config.\n//\n// Export a global property onto the window for React Router detection by the\n// Core Web Vitals Technology Report. This way they can configure the `wappalyzer`\n// to detect and properly classify live websites as being built with React Router:\n// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json\nconst REACT_ROUTER_VERSION = \"6\";\ntry {\n window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n // no-op\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createBrowserHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,\n unstable_patchRoutesOnNavigation: opts == null ? void 0 : opts.unstable_patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts == null ? void 0 : opts.basename,\n future: _extends({}, opts == null ? void 0 : opts.future, {\n v7_prependBasename: true\n }),\n history: createHashHistory({\n window: opts == null ? void 0 : opts.window\n }),\n hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n routes,\n mapRouteProperties: UNSAFE_mapRouteProperties,\n unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,\n unstable_patchRoutesOnNavigation: opts == null ? void 0 : opts.unstable_patchRoutesOnNavigation,\n window: opts == null ? void 0 : opts.window\n }).initialize();\n}\nfunction parseHydrationData() {\n var _window;\n let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n if (state && state.errors) {\n state = _extends({}, state, {\n errors: deserializeErrors(state.errors)\n });\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);\n } else if (val && val.__type === \"Error\") {\n // Attempt to reconstruct the right type of Error (i.e., ReferenceError)\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n // @ts-expect-error\n let error = new ErrorConstructor(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n // no-op - fall through and create a normal Error\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nconst ViewTransitionContext = /*#__PURE__*/React.createContext({\n isTransitioning: false\n});\nif (process.env.NODE_ENV !== \"production\") {\n ViewTransitionContext.displayName = \"ViewTransition\";\n}\nconst FetchersContext = /*#__PURE__*/React.createContext(new Map());\nif (process.env.NODE_ENV !== \"production\") {\n FetchersContext.displayName = \"Fetchers\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\nconst FLUSH_SYNC = \"flushSync\";\nconst flushSyncImpl = ReactDOM[FLUSH_SYNC];\nconst USE_ID = \"useId\";\nconst useIdImpl = React[USE_ID];\nfunction startTransitionSafe(cb) {\n if (startTransitionImpl) {\n startTransitionImpl(cb);\n } else {\n cb();\n }\n}\nfunction flushSyncSafe(cb) {\n if (flushSyncImpl) {\n flushSyncImpl(cb);\n } else {\n cb();\n }\n}\nclass Deferred {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = value => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = reason => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n}\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nfunction RouterProvider(_ref) {\n let {\n fallbackElement,\n router,\n future\n } = _ref;\n let [state, setStateImpl] = React.useState(router.state);\n let [pendingState, setPendingState] = React.useState();\n let [vtContext, setVtContext] = React.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React.useState();\n let [transition, setTransition] = React.useState();\n let [interruption, setInterruption] = React.useState();\n let fetcherData = React.useRef(new Map());\n let {\n v7_startTransition\n } = future || {};\n let optInStartTransition = React.useCallback(cb => {\n if (v7_startTransition) {\n startTransitionSafe(cb);\n } else {\n cb();\n }\n }, [v7_startTransition]);\n let setState = React.useCallback((newState, _ref2) => {\n let {\n deletedFetchers,\n unstable_flushSync: flushSync,\n unstable_viewTransitionOpts: viewTransitionOpts\n } = _ref2;\n deletedFetchers.forEach(key => fetcherData.current.delete(key));\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== undefined) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== \"function\";\n // If this isn't a view transition or it's not available in this browser,\n // just update and be done with it\n if (!viewTransitionOpts || isViewTransitionUnavailable) {\n if (flushSync) {\n flushSyncSafe(() => setStateImpl(newState));\n } else {\n optInStartTransition(() => setStateImpl(newState));\n }\n return;\n }\n // flushSync + startViewTransition\n if (flushSync) {\n // Flush through the context to mark DOM elements as transition=ing\n flushSyncSafe(() => {\n // Cancel any pending transitions\n if (transition) {\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n // Update the DOM\n let t = router.window.document.startViewTransition(() => {\n flushSyncSafe(() => setStateImpl(newState));\n });\n // Clean up after the animation completes\n t.finished.finally(() => {\n flushSyncSafe(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n });\n flushSyncSafe(() => setTransition(t));\n return;\n }\n // startTransition + startViewTransition\n if (transition) {\n // Interrupting an in-progress transition, cancel and let everything flush\n // out, and then kick off a new transition from the interruption state\n renderDfd && renderDfd.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n // Completed navigation update with opted-in view transitions, let 'er rip\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n // When we start a view transition, create a Deferred we can use for the\n // eventual \"completed\" render\n React.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n // Once the deferred is created, kick off startViewTransition() to update the\n // DOM and then wait on the Deferred to resolve (indicating the DOM update has\n // happened)\n React.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition = router.window.document.startViewTransition(async () => {\n optInStartTransition(() => setStateImpl(newState));\n await renderPromise;\n });\n transition.finished.finally(() => {\n setRenderDfd(undefined);\n setTransition(undefined);\n setPendingState(undefined);\n setVtContext({\n isTransitioning: false\n });\n });\n setTransition(transition);\n }\n }, [optInStartTransition, pendingState, renderDfd, router.window]);\n // When the new location finally renders and is committed to the DOM, this\n // effect will run to resolve the transition\n React.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n // If we get interrupted with a new navigation during a transition, we skip\n // the active transition, let it cleanup, then kick it off again here\n React.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(undefined);\n }\n }, [vtContext.isTransitioning, interruption]);\n React.useEffect(() => {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using \" + \"`v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n let navigator = React.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: n => router.navigate(n),\n push: (to, state, opts) => router.navigate(to, {\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n }),\n replace: (to, state, opts) => router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React.useMemo(() => ({\n router,\n navigator,\n static: false,\n basename\n }), [router, navigator, basename]);\n let routerFuture = React.useMemo(() => ({\n v7_relativeSplatPath: router.future.v7_relativeSplatPath\n }), [router.future.v7_relativeSplatPath]);\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a <script> here\n // containing the hydrated server-side staticContext (from StaticRouterProvider).\n // useId relies on the component tree structure to generate deterministic id's\n // so we need to ensure it remains the same on the client even though\n // we don't need the <script> tag\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React.createElement(UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React.createElement(FetchersContext.Provider, {\n value: fetcherData.current\n }, /*#__PURE__*/React.createElement(ViewTransitionContext.Provider, {\n value: vtContext\n }, /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: navigator,\n future: routerFuture\n }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/React.createElement(MemoizedDataRoutes, {\n routes: router.routes,\n future: router.future,\n state: state\n }) : fallbackElement))))), null);\n}\n// Memoize to avoid re-renders when updating `ViewTransitionContext`\nconst MemoizedDataRoutes = /*#__PURE__*/React.memo(DataRoutes);\nfunction DataRoutes(_ref3) {\n let {\n routes,\n future,\n state\n } = _ref3;\n return UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nfunction BrowserRouter(_ref4) {\n let {\n basename,\n children,\n future,\n window\n } = _ref4;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nfunction HashRouter(_ref5) {\n let {\n basename,\n children,\n future,\n window\n } = _ref5;\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({\n window,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter(_ref6) {\n let {\n basename,\n children,\n future,\n history\n } = _ref6;\n let [state, setStateImpl] = React.useState({\n action: history.action,\n location: history.location\n });\n let {\n v7_startTransition\n } = future || {};\n let setState = React.useCallback(newState => {\n v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n }, [setStateImpl, v7_startTransition]);\n React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /*#__PURE__*/React.createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n future: future\n });\n}\nif (process.env.NODE_ENV !== \"production\") {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\nconst isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n/**\n * The public API for rendering a history-aware `<a>`.\n */\nconst Link = /*#__PURE__*/React.forwardRef(function LinkWithRef(_ref7, ref) {\n let {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n unstable_viewTransition\n } = _ref7,\n rest = _objectWithoutPropertiesLoose(_ref7, _excluded);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n // Rendered into <a href> for absolute URLs\n let absoluteHref;\n let isExternal = false;\n if (typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to)) {\n // Render the absolute href server- and client-side\n absoluteHref = to;\n // Only check for external origins client-side\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n // Strip the protocol/origin/basename for same-origin absolute URLs\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n // We can't do external URL detection without a valid URL\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"<Link to=\\\"\" + to + \"\\\"> contains an invalid URL which will probably break \" + \"when clicked - please update to a valid URL path.\") : void 0;\n }\n }\n }\n // Rendered into <a href> for relative URLs\n let href = useHref(to, {\n relative\n });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n unstable_viewTransition\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n React.createElement(\"a\", _extends({}, rest, {\n href: absoluteHref || href,\n onClick: isExternal || reloadDocument ? onClick : handleClick,\n ref: ref,\n target: target\n }))\n );\n});\nif (process.env.NODE_ENV !== \"production\") {\n Link.displayName = \"Link\";\n}\n/**\n * A `<Link>` wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = /*#__PURE__*/React.forwardRef(function NavLinkWithRef(_ref8, ref) {\n let {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n unstable_viewTransition,\n children\n } = _ref8,\n rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);\n let path = useResolvedPath(to, {\n relative: rest.relative\n });\n let location = useLocation();\n let routerState = React.useContext(UNSAFE_DataRouterStateContext);\n let {\n navigator,\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let isTransitioning = routerState != null &&\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) && unstable_viewTransition === true;\n let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n // If the `to` has a trailing slash, look at that exact spot. Otherwise,\n // we're looking for a slash _after_ what's in `to`. For example:\n //\n // <NavLink to=\"/users\"> and <NavLink to=\"/users/\">\n // both want to look for a / at index 6 to match URL `/users/matt`\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null, isTransitioning ? \"transitioning\" : null].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {\n \"aria-current\": ariaCurrent,\n className: className,\n ref: ref,\n style: style,\n to: to,\n unstable_viewTransition: unstable_viewTransition\n }), typeof children === \"function\" ? children(renderProps) : children);\n});\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n}\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nconst Form = /*#__PURE__*/React.forwardRef((_ref9, forwardedRef) => {\n let {\n fetcherKey,\n navigate,\n reloadDocument,\n replace,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n unstable_viewTransition\n } = _ref9,\n props = _objectWithoutPropertiesLoose(_ref9, _excluded3);\n let submit = useSubmit();\n let formAction = useFormAction(action, {\n relative\n });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let submitHandler = event => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = (submitter == null ? void 0 : submitter.getAttribute(\"formmethod\")) || method;\n submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace,\n state,\n relative,\n preventScrollReset,\n unstable_viewTransition\n });\n };\n return /*#__PURE__*/React.createElement(\"form\", _extends({\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler\n }, props));\n});\nif (process.env.NODE_ENV !== \"production\") {\n Form.displayName = \"Form\";\n}\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nfunction ScrollRestoration(_ref10) {\n let {\n getKey,\n storageKey\n } = _ref10;\n useScrollRestoration({\n getKey,\n storageKey\n });\n return null;\n}\nif (process.env.NODE_ENV !== \"production\") {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\nvar DataRouterHook;\n(function (DataRouterHook) {\n DataRouterHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n DataRouterHook[\"UseSubmit\"] = \"useSubmit\";\n DataRouterHook[\"UseSubmitFetcher\"] = \"useSubmitFetcher\";\n DataRouterHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterHook[\"useViewTransitionState\"] = \"useViewTransitionState\";\n})(DataRouterHook || (DataRouterHook = {}));\nvar DataRouterStateHook;\n(function (DataRouterStateHook) {\n DataRouterStateHook[\"UseFetcher\"] = \"useFetcher\";\n DataRouterStateHook[\"UseFetchers\"] = \"useFetchers\";\n DataRouterStateHook[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook || (DataRouterStateHook = {}));\n// Internal hooks\nfunction getDataRouterConsoleError(hookName) {\n return hookName + \" must be used within a data router. See https://reactrouter.com/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React.useContext(UNSAFE_DataRouterContext);\n !ctx ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React.useContext(UNSAFE_DataRouterStateContext);\n !state ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, getDataRouterConsoleError(hookName)) : UNSAFE_invariant(false) : void 0;\n return state;\n}\n// External hooks\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nfunction useLinkClickHandler(to, _temp) {\n let {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n unstable_viewTransition\n } = _temp === void 0 ? {} : _temp;\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, {\n relative\n });\n return React.useCallback(event => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace = replaceProp !== undefined ? replaceProp : createPath(location) === createPath(path);\n navigate(to, {\n replace,\n state,\n preventScrollReset,\n relative,\n unstable_viewTransition\n });\n }\n }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, unstable_viewTransition]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nfunction useSearchParams(defaultInit) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params.\") : void 0;\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React.useRef(false);\n let location = useLocation();\n let searchParams = React.useMemo(() =>\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);\n let navigate = useNavigate();\n let setSearchParams = React.useCallback((nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n }, [navigate, searchParams]);\n return [searchParams, setSearchParams];\n}\nfunction validateClientSideSubmission() {\n if (typeof document === \"undefined\") {\n throw new Error(\"You are calling submit during the server render. \" + \"Try calling submit within a `useEffect` or callback instead.\");\n }\n}\nlet fetcherId = 0;\nlet getUniqueFetcherId = () => \"__\" + String(++fetcherId) + \"__\";\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nfunction useSubmit() {\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseSubmit);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let currentRouteId = UNSAFE_useRouteId();\n return React.useCallback(function (target, options) {\n if (options === void 0) {\n options = {};\n }\n validateClientSideSubmission();\n let {\n action,\n method,\n encType,\n formData,\n body\n } = getFormSubmissionInfo(target, basename);\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n router.fetch(key, currentRouteId, options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n unstable_flushSync: options.unstable_flushSync\n });\n } else {\n router.navigate(options.action || action, {\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n unstable_flushSync: options.unstable_flushSync,\n unstable_viewTransition: options.unstable_viewTransition\n });\n }\n }, [router, basename, currentRouteId]);\n}\n// v7: Eventually we should deprecate this entirely in favor of using the\n// router method directly?\nfunction useFormAction(action, _temp2) {\n let {\n relative\n } = _temp2 === void 0 ? {} : _temp2;\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let routeContext = React.useContext(UNSAFE_RouteContext);\n !routeContext ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFormAction must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n let [match] = routeContext.matches.slice(-1);\n // Shallow clone path so we can modify it below, otherwise we modify the\n // object referenced by useMemo inside useResolvedPath\n let path = _extends({}, useResolvedPath(action ? action : \".\", {\n relative\n }));\n // If no action was specified, browsers will persist current search params\n // when determining the path, so match that behavior\n // https://github.com/remix-run/remix/issues/927\n let location = useLocation();\n if (action == null) {\n // Safe to write to this directly here since if action was undefined, we\n // would have called useResolvedPath(\".\") which will never include a search\n path.search = location.search;\n // When grabbing search params from the URL, remove any included ?index param\n // since it might not apply to our contextual route. We add it back based\n // on match.route.index below\n let params = new URLSearchParams(path.search);\n if (params.has(\"index\") && params.get(\"index\") === \"\") {\n params.delete(\"index\");\n path.search = params.toString() ? \"?\" + params.toString() : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the form action. If this is a root navigation, then just use\n // the raw basename which allows the basename to have full control over the\n // presence of a trailing slash on root actions\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nfunction useFetcher(_temp3) {\n var _route$matches;\n let {\n key\n } = _temp3 === void 0 ? {} : _temp3;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseFetcher);\n let state = useDataRouterState(DataRouterStateHook.UseFetcher);\n let fetcherData = React.useContext(FetchersContext);\n let route = React.useContext(UNSAFE_RouteContext);\n let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n !fetcherData ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a FetchersContext\") : UNSAFE_invariant(false) : void 0;\n !route ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher must be used inside a RouteContext\") : UNSAFE_invariant(false) : void 0;\n !(routeId != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"useFetcher can only be used on routes that contain a unique \\\"id\\\"\") : UNSAFE_invariant(false) : void 0;\n // Fetcher key handling\n // OK to call conditionally to feature detect `useId`\n // eslint-disable-next-line react-hooks/rules-of-hooks\n let defaultKey = useIdImpl ? useIdImpl() : \"\";\n let [fetcherKey, setFetcherKey] = React.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n } else if (!fetcherKey) {\n // We will only fall through here when `useId` is not available\n setFetcherKey(getUniqueFetcherId());\n }\n // Registration/cleanup\n React.useEffect(() => {\n router.getFetcher(fetcherKey);\n return () => {\n // Tell the router we've unmounted - if v7_fetcherPersist is enabled this\n // will not delete immediately but instead queue up a delete after the\n // fetcher returns to an `idle` state\n router.deleteFetcher(fetcherKey);\n };\n }, [router, fetcherKey]);\n // Fetcher additions\n let load = React.useCallback((href, opts) => {\n !routeId ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"No routeId available for fetcher.load()\") : UNSAFE_invariant(false) : void 0;\n router.fetch(fetcherKey, routeId, href, opts);\n }, [fetcherKey, routeId, router]);\n let submitImpl = useSubmit();\n let submit = React.useCallback((target, opts) => {\n submitImpl(target, _extends({}, opts, {\n navigate: false,\n fetcherKey\n }));\n }, [fetcherKey, submitImpl]);\n let FetcherForm = React.useMemo(() => {\n let FetcherForm = /*#__PURE__*/React.forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(Form, _extends({}, props, {\n navigate: false,\n fetcherKey: fetcherKey,\n ref: ref\n }));\n });\n if (process.env.NODE_ENV !== \"production\") {\n FetcherForm.displayName = \"fetcher.Form\";\n }\n return FetcherForm;\n }, [fetcherKey]);\n // Exposed FetcherWithComponents\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React.useMemo(() => _extends({\n Form: FetcherForm,\n submit,\n load\n }, fetcher, {\n data\n }), [FetcherForm, submit, load, fetcher, data]);\n return fetcherWithComponents;\n}\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nfunction useFetchers() {\n let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n return Array.from(state.fetchers.entries()).map(_ref11 => {\n let [key, fetcher] = _ref11;\n return _extends({}, fetcher, {\n key\n });\n });\n}\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions = {};\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration(_temp4) {\n let {\n getKey,\n storageKey\n } = _temp4 === void 0 ? {} : _temp4;\n let {\n router\n } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n let {\n restoreScrollPosition,\n preventScrollReset\n } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);\n let {\n basename\n } = React.useContext(UNSAFE_NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n // Trigger manual scroll restoration while we're active\n React.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n // Save positions on pagehide\n usePageHide(React.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = (getKey ? getKey(location, matches) : null) || location.key;\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n } catch (error) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (\" + error + \").\") : void 0;\n }\n window.history.scrollRestoration = \"auto\";\n }, [storageKey, getKey, navigation.state, location, matches]));\n // Read in any saved scroll locations\n if (typeof document !== \"undefined\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n // no-op, use default empty object\n }\n }, [storageKey]);\n // Enable scroll restoration in the router\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n let getKeyWithoutBasename = getKey && basename !== \"/\" ? (location, matches) => getKey( // Strip the basename to match useLocation()\n _extends({}, location, {\n pathname: stripBasename(location.pathname, basename) || location.pathname\n }), matches) : getKey;\n let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n // Restore scrolling when state.restoreScrollPosition changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(() => {\n // Explicit false means don't do anything (used for submissions)\n if (restoreScrollPosition === false) {\n return;\n }\n // been here before, scroll to it\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n // try to scroll to the hash\n if (location.hash) {\n let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n // Don't reset if this navigation opted out\n if (preventScrollReset === true) {\n return;\n }\n // otherwise go to the top on new locations\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction useBeforeUnload(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Setup a callback to be fired on the window's `pagehide` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes. This event is better supported than beforeunload across browsers.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nfunction usePageHide(callback, options) {\n let {\n capture\n } = options || {};\n React.useEffect(() => {\n let opts = capture != null ? {\n capture\n } : undefined;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\n/**\n * Wrapper around useBlocker to show a window.confirm prompt to users instead\n * of building a custom UI with useBlocker.\n *\n * Warning: This has *a lot of rough edges* and behaves very differently (and\n * very incorrectly in some cases) across browsers if user click addition\n * back/forward navigations while the confirm is open. Use at your own risk.\n */\nfunction usePrompt(_ref12) {\n let {\n when,\n message\n } = _ref12;\n let blocker = useBlocker(when);\n React.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n // This timeout is needed to avoid a weird \"race\" on POP navigations\n // between the `window.history` revert navigation and the result of\n // `window.confirm`\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\n/**\n * Return a boolean indicating if there is an active view transition to the\n * given href. You can use this value to render CSS classes or viewTransitionName\n * styles onto your elements\n *\n * @param href The destination href\n * @param [opts.relative] Relative routing type (\"route\" | \"path\")\n */\nfunction useViewTransitionState(to, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let vtContext = React.useContext(ViewTransitionContext);\n !(vtContext != null) ? process.env.NODE_ENV !== \"production\" ? UNSAFE_invariant(false, \"`unstable_useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. \" + \"Did you accidentally import `RouterProvider` from `react-router`?\") : UNSAFE_invariant(false) : void 0;\n let {\n basename\n } = useDataRouterContext(DataRouterHook.useViewTransitionState);\n let path = useResolvedPath(to, {\n relative: opts.relative\n });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n // Transition is active if we're going to or coming from the indicated\n // destination. This ensures that other PUSH navigations that reverse\n // an indicated transition apply. I.e., on the list view you have:\n //\n // <NavLink to=\"/details/1\" unstable_viewTransition>\n //\n // If you click the breadcrumb back to the list view:\n //\n // <NavLink to=\"/list\" unstable_viewTransition>\n //\n // We should apply the transition because it's indicated as active going\n // from /list -> /details/1 and therefore should be active on the reverse\n // (even though this isn't strictly a POP reverse)\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n//#endregion\n\nexport { BrowserRouter, Form, HashRouter, Link, NavLink, RouterProvider, ScrollRestoration, FetchersContext as UNSAFE_FetchersContext, ViewTransitionContext as UNSAFE_ViewTransitionContext, useScrollRestoration as UNSAFE_useScrollRestoration, createBrowserRouter, createHashRouter, createSearchParams, HistoryRouter as unstable_HistoryRouter, usePrompt as unstable_usePrompt, useViewTransitionState as unstable_useViewTransitionState, useBeforeUnload, useFetcher, useFetchers, useFormAction, useLinkClickHandler, useSearchParams, useSubmit };\n//# sourceMappingURL=index.js.map\n","// src/utils.ts\nvar HOLE = -1;\nvar NAN = -2;\nvar NEGATIVE_INFINITY = -3;\nvar NEGATIVE_ZERO = -4;\nvar NULL = -5;\nvar POSITIVE_INFINITY = -6;\nvar UNDEFINED = -7;\nvar TYPE_BIGINT = \"B\";\nvar TYPE_DATE = \"D\";\nvar TYPE_ERROR = \"E\";\nvar TYPE_MAP = \"M\";\nvar TYPE_NULL_OBJECT = \"N\";\nvar TYPE_PROMISE = \"P\";\nvar TYPE_REGEXP = \"R\";\nvar TYPE_SET = \"S\";\nvar TYPE_SYMBOL = \"Y\";\nvar TYPE_URL = \"U\";\nvar TYPE_PREVIOUS_RESOLVED = \"Z\";\nvar Deferred = class {\n promise;\n resolve;\n reject;\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n};\nfunction createLineSplittingTransform() {\n const decoder = new TextDecoder();\n let leftover = \"\";\n return new TransformStream({\n transform(chunk, controller) {\n const str = decoder.decode(chunk, { stream: true });\n const parts = (leftover + str).split(\"\\n\");\n leftover = parts.pop() || \"\";\n for (const part of parts) {\n controller.enqueue(part);\n }\n },\n flush(controller) {\n if (leftover) {\n controller.enqueue(leftover);\n }\n }\n });\n}\n\n// src/flatten.ts\nfunction flatten(input) {\n const { indices } = this;\n const existing = indices.get(input);\n if (existing)\n return [existing];\n if (input === void 0)\n return UNDEFINED;\n if (input === null)\n return NULL;\n if (Number.isNaN(input))\n return NAN;\n if (input === Number.POSITIVE_INFINITY)\n return POSITIVE_INFINITY;\n if (input === Number.NEGATIVE_INFINITY)\n return NEGATIVE_INFINITY;\n if (input === 0 && 1 / input < 0)\n return NEGATIVE_ZERO;\n const index = this.index++;\n indices.set(input, index);\n stringify.call(this, input, index);\n return index;\n}\nfunction stringify(input, index) {\n const { deferred, plugins, postPlugins } = this;\n const str = this.stringified;\n const stack = [[input, index]];\n while (stack.length > 0) {\n const [input2, index2] = stack.pop();\n const partsForObj = (obj) => Object.keys(obj).map((k) => `\"_${flatten.call(this, k)}\":${flatten.call(this, obj[k])}`).join(\",\");\n let error = null;\n switch (typeof input2) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n str[index2] = JSON.stringify(input2);\n break;\n case \"bigint\":\n str[index2] = `[\"${TYPE_BIGINT}\",\"${input2}\"]`;\n break;\n case \"symbol\": {\n const keyFor = Symbol.keyFor(input2);\n if (!keyFor) {\n error = new Error(\n \"Cannot encode symbol unless created with Symbol.for()\"\n );\n } else {\n str[index2] = `[\"${TYPE_SYMBOL}\",${JSON.stringify(keyFor)}]`;\n }\n break;\n }\n case \"object\": {\n if (!input2) {\n str[index2] = `${NULL}`;\n break;\n }\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n let result = isArray ? \"[\" : \"{\";\n if (isArray) {\n for (let i = 0; i < input2.length; i++)\n result += (i ? \",\" : \"\") + (i in input2 ? flatten.call(this, input2[i]) : HOLE);\n str[index2] = `${result}]`;\n } else if (input2 instanceof Date) {\n str[index2] = `[\"${TYPE_DATE}\",${input2.getTime()}]`;\n } else if (input2 instanceof URL) {\n str[index2] = `[\"${TYPE_URL}\",${JSON.stringify(input2.href)}]`;\n } else if (input2 instanceof RegExp) {\n str[index2] = `[\"${TYPE_REGEXP}\",${JSON.stringify(\n input2.source\n )},${JSON.stringify(input2.flags)}]`;\n } else if (input2 instanceof Set) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_SET}\",${[...input2].map((val) => flatten.call(this, val)).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_SET}\"]`;\n }\n } else if (input2 instanceof Map) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_MAP}\",${[...input2].flatMap(([k, v]) => [\n flatten.call(this, k),\n flatten.call(this, v)\n ]).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_MAP}\"]`;\n }\n } else if (input2 instanceof Promise) {\n str[index2] = `[\"${TYPE_PROMISE}\",${index2}]`;\n deferred[index2] = input2;\n } else if (input2 instanceof Error) {\n str[index2] = `[\"${TYPE_ERROR}\",${JSON.stringify(input2.message)}`;\n if (input2.name !== \"Error\") {\n str[index2] += `,${JSON.stringify(input2.name)}`;\n }\n str[index2] += \"]\";\n } else if (Object.getPrototypeOf(input2) === null) {\n str[index2] = `[\"${TYPE_NULL_OBJECT}\",{${partsForObj(input2)}}]`;\n } else if (isPlainObject(input2)) {\n str[index2] = `{${partsForObj(input2)}}`;\n } else {\n error = new Error(\"Cannot encode object with prototype\");\n }\n }\n break;\n }\n default: {\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n error = new Error(\"Cannot encode function or unexpected type\");\n }\n }\n }\n if (error) {\n let pluginHandled = false;\n if (postPlugins) {\n for (const plugin of postPlugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n throw error;\n }\n }\n }\n}\nvar objectProtoNames = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject(thing) {\n const proto = Object.getPrototypeOf(thing);\n return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames;\n}\n\n// src/unflatten.ts\nvar globalObj = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : void 0;\nfunction unflatten(parsed) {\n const { hydrated, values } = this;\n if (typeof parsed === \"number\")\n return hydrate.call(this, parsed);\n if (!Array.isArray(parsed) || !parsed.length)\n throw new SyntaxError();\n const startIndex = values.length;\n for (const value of parsed) {\n values.push(value);\n }\n hydrated.length = values.length;\n return hydrate.call(this, startIndex);\n}\nfunction hydrate(index) {\n const { hydrated, values, deferred, plugins } = this;\n let result;\n const stack = [\n [\n index,\n (v) => {\n result = v;\n }\n ]\n ];\n let postRun = [];\n while (stack.length > 0) {\n const [index2, set] = stack.pop();\n switch (index2) {\n case UNDEFINED:\n set(void 0);\n continue;\n case NULL:\n set(null);\n continue;\n case NAN:\n set(NaN);\n continue;\n case POSITIVE_INFINITY:\n set(Infinity);\n continue;\n case NEGATIVE_INFINITY:\n set(-Infinity);\n continue;\n case NEGATIVE_ZERO:\n set(-0);\n continue;\n }\n if (hydrated[index2]) {\n set(hydrated[index2]);\n continue;\n }\n const value = values[index2];\n if (!value || typeof value !== \"object\") {\n hydrated[index2] = value;\n set(value);\n continue;\n }\n if (Array.isArray(value)) {\n if (typeof value[0] === \"string\") {\n const [type, b, c] = value;\n switch (type) {\n case TYPE_DATE:\n set(hydrated[index2] = new Date(b));\n continue;\n case TYPE_URL:\n set(hydrated[index2] = new URL(b));\n continue;\n case TYPE_BIGINT:\n set(hydrated[index2] = BigInt(b));\n continue;\n case TYPE_REGEXP:\n set(hydrated[index2] = new RegExp(b, c));\n continue;\n case TYPE_SYMBOL:\n set(hydrated[index2] = Symbol.for(b));\n continue;\n case TYPE_SET:\n const newSet = /* @__PURE__ */ new Set();\n hydrated[index2] = newSet;\n for (let i = 1; i < value.length; i++)\n stack.push([\n value[i],\n (v) => {\n newSet.add(v);\n }\n ]);\n set(newSet);\n continue;\n case TYPE_MAP:\n const map = /* @__PURE__ */ new Map();\n hydrated[index2] = map;\n for (let i = 1; i < value.length; i += 2) {\n const r = [];\n stack.push([\n value[i + 1],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n value[i],\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n map.set(r[0], r[1]);\n });\n }\n set(map);\n continue;\n case TYPE_NULL_OBJECT:\n const obj = /* @__PURE__ */ Object.create(null);\n hydrated[index2] = obj;\n for (const key of Object.keys(b).reverse()) {\n const r = [];\n stack.push([\n b[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n obj[r[0]] = r[1];\n });\n }\n set(obj);\n continue;\n case TYPE_PROMISE:\n if (hydrated[b]) {\n set(hydrated[index2] = hydrated[b]);\n } else {\n const d = new Deferred();\n deferred[b] = d;\n set(hydrated[index2] = d.promise);\n }\n continue;\n case TYPE_ERROR:\n const [, message, errorType] = value;\n let error = errorType && globalObj && globalObj[errorType] ? new globalObj[errorType](message) : new Error(message);\n hydrated[index2] = error;\n set(error);\n continue;\n case TYPE_PREVIOUS_RESOLVED:\n set(hydrated[index2] = hydrated[b]);\n continue;\n default:\n if (Array.isArray(plugins)) {\n const r = [];\n const vals = value.slice(1);\n for (let i = 0; i < vals.length; i++) {\n const v = vals[i];\n stack.push([\n v,\n (v2) => {\n r[i] = v2;\n }\n ]);\n }\n postRun.push(() => {\n for (const plugin of plugins) {\n const result2 = plugin(value[0], ...r);\n if (result2) {\n set(hydrated[index2] = result2.value);\n return;\n }\n }\n throw new SyntaxError();\n });\n continue;\n }\n throw new SyntaxError();\n }\n } else {\n const array = [];\n hydrated[index2] = array;\n for (let i = 0; i < value.length; i++) {\n const n = value[i];\n if (n !== HOLE) {\n stack.push([\n n,\n (v) => {\n array[i] = v;\n }\n ]);\n }\n }\n set(array);\n continue;\n }\n } else {\n const object = {};\n hydrated[index2] = object;\n for (const key of Object.keys(value).reverse()) {\n const r = [];\n stack.push([\n value[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n object[r[0]] = r[1];\n });\n }\n set(object);\n continue;\n }\n }\n while (postRun.length > 0) {\n postRun.pop()();\n }\n return result;\n}\n\n// src/turbo-stream.ts\nasync function decode(readable, options) {\n const { plugins } = options ?? {};\n const done = new Deferred();\n const reader = readable.pipeThrough(createLineSplittingTransform()).getReader();\n const decoder = {\n values: [],\n hydrated: [],\n deferred: {},\n plugins\n };\n const decoded = await decodeInitial.call(decoder, reader);\n let donePromise = done.promise;\n if (decoded.done) {\n done.resolve();\n } else {\n donePromise = decodeDeferred.call(decoder, reader).then(done.resolve).catch((reason) => {\n for (const deferred of Object.values(decoder.deferred)) {\n deferred.reject(reason);\n }\n done.reject(reason);\n });\n }\n return {\n done: donePromise.then(() => reader.closed),\n value: decoded.value\n };\n}\nasync function decodeInitial(reader) {\n const read = await reader.read();\n if (!read.value) {\n throw new SyntaxError();\n }\n let line;\n try {\n line = JSON.parse(read.value);\n } catch (reason) {\n throw new SyntaxError();\n }\n return {\n done: read.done,\n value: unflatten.call(this, line)\n };\n}\nasync function decodeDeferred(reader) {\n let read = await reader.read();\n while (!read.done) {\n if (!read.value)\n continue;\n const line = read.value;\n switch (line[0]) {\n case TYPE_PROMISE: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.resolve(value);\n break;\n }\n case TYPE_ERROR: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.reject(value);\n break;\n }\n default:\n throw new SyntaxError();\n }\n read = await reader.read();\n }\n}\nfunction encode(input, options) {\n const { plugins, postPlugins, signal } = options ?? {};\n const encoder = {\n deferred: {},\n index: 0,\n indices: /* @__PURE__ */ new Map(),\n stringified: [],\n plugins,\n postPlugins,\n signal\n };\n const textEncoder = new TextEncoder();\n let lastSentIndex = 0;\n const readable = new ReadableStream({\n async start(controller) {\n const id = flatten.call(encoder, input);\n if (Array.isArray(id)) {\n throw new Error(\"This should never happen\");\n }\n if (id < 0) {\n controller.enqueue(textEncoder.encode(`${id}\n`));\n } else {\n controller.enqueue(\n textEncoder.encode(`[${encoder.stringified.join(\",\")}]\n`)\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n const seenPromises = /* @__PURE__ */ new WeakSet();\n while (Object.keys(encoder.deferred).length > 0) {\n for (const [deferredId, deferred] of Object.entries(encoder.deferred)) {\n if (seenPromises.has(deferred))\n continue;\n seenPromises.add(\n encoder.deferred[Number(deferredId)] = raceSignal(\n deferred,\n encoder.signal\n ).then(\n (resolved) => {\n const id2 = flatten.call(encoder, resolved);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(`${TYPE_PROMISE}${deferredId}:${id2}\n`)\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n },\n (reason) => {\n if (!reason || typeof reason !== \"object\" || !(reason instanceof Error)) {\n reason = new Error(\"An unknown error occurred\");\n }\n const id2 = flatten.call(encoder, reason);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(`${TYPE_ERROR}${deferredId}:${id2}\n`)\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n }\n ).finally(() => {\n delete encoder.deferred[Number(deferredId)];\n })\n );\n }\n await Promise.race(Object.values(encoder.deferred));\n }\n await Promise.all(Object.values(encoder.deferred));\n controller.close();\n }\n });\n return readable;\n}\nfunction raceSignal(promise, signal) {\n if (!signal)\n return promise;\n if (signal.aborted)\n return Promise.reject(signal.reason || new Error(\"Signal was aborted.\"));\n const abort = new Promise((resolve, reject) => {\n signal.addEventListener(\"abort\", (event) => {\n reject(signal.reason || new Error(\"Signal was aborted.\"));\n });\n promise.then(resolve).catch(reject);\n });\n abort.catch(() => {\n });\n return Promise.race([abort, promise]);\n}\nexport {\n decode,\n encode\n};\n","/**\n * @remix-run/server-runtime v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { unstable_data, UNSAFE_ErrorResponseImpl, isRouteErrorResponse, stripBasename } from '@remix-run/router';\nimport { encode } from 'turbo-stream';\nimport { sanitizeError, sanitizeErrors } from './errors.js';\nimport { getDocumentHeaders } from './headers.js';\nimport { ServerMode } from './mode.js';\nimport { isResponse, isRedirectStatusCode } from './responses.js';\n\nconst SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\n// We can't use a 3xx status or else the `fetch()` would follow the redirect.\n// We need to communicate the redirect back as data so we can act on it in the\n// client side router. We use a 202 to avoid any automatic caching we might\n// get from a 200 since a \"temporary\" redirect should not be cached. This lets\n// the user control cache behavior via Cache-Control\nconst SINGLE_FETCH_REDIRECT_STATUS = 202;\nfunction getSingleFetchDataStrategy({\n isActionDataRequest,\n loadRouteIds\n} = {}) {\n return async ({\n request,\n matches\n }) => {\n // Don't call loaders on action data requests\n if (isActionDataRequest && request.method === \"GET\") {\n return {};\n }\n\n // Only run opt-in loaders when fine-grained revalidation is enabled\n let matchesToLoad = loadRouteIds ? matches.filter(m => loadRouteIds.includes(m.route.id)) : matches;\n let results = await Promise.all(matchesToLoad.map(match => match.resolve()));\n return results.reduce((acc, result, i) => Object.assign(acc, {\n [matchesToLoad[i].route.id]: result\n }), {});\n };\n}\nasync function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n try {\n let handlerRequest = new Request(handlerUrl, {\n method: request.method,\n body: request.body,\n headers: request.headers,\n signal: request.signal,\n ...(request.body ? {\n duplex: \"half\"\n } : undefined)\n });\n let result = await staticHandler.query(handlerRequest, {\n requestContext: loadContext,\n skipLoaderErrorBubbling: true,\n unstable_dataStrategy: getSingleFetchDataStrategy({\n isActionDataRequest: true\n })\n });\n\n // Unlike `handleDataRequest`, when singleFetch is enabled, query does\n // let non-Response return values through\n if (isResponse(result)) {\n return {\n result: getSingleFetchRedirect(result.status, result.headers, build.basename),\n headers: result.headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n let context = result;\n let headers = getDocumentHeaders(build, context);\n if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n return {\n result: getSingleFetchRedirect(context.statusCode, headers, build.basename),\n headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n\n // Sanitize errors outside of development environments\n if (context.errors) {\n Object.values(context.errors).forEach(err => {\n // @ts-expect-error This is \"private\" from users but intended for internal use\n if (!isRouteErrorResponse(err) || err.error) {\n handleError(err);\n }\n });\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n let singleFetchResult;\n if (context.errors) {\n singleFetchResult = {\n error: Object.values(context.errors)[0]\n };\n } else {\n singleFetchResult = {\n data: Object.values(context.actionData || {})[0]\n };\n }\n return {\n result: singleFetchResult,\n headers,\n status: context.statusCode\n };\n } catch (error) {\n handleError(error);\n // These should only be internal remix errors, no need to deal with responseStubs\n return {\n result: {\n error\n },\n headers: new Headers(),\n status: 500\n };\n }\n}\nasync function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n try {\n var _URL$searchParams$get;\n let handlerRequest = new Request(handlerUrl, {\n headers: request.headers,\n signal: request.signal\n });\n let loadRouteIds = ((_URL$searchParams$get = new URL(request.url).searchParams.get(\"_routes\")) === null || _URL$searchParams$get === void 0 ? void 0 : _URL$searchParams$get.split(\",\")) || undefined;\n let result = await staticHandler.query(handlerRequest, {\n requestContext: loadContext,\n skipLoaderErrorBubbling: true,\n unstable_dataStrategy: getSingleFetchDataStrategy({\n loadRouteIds\n })\n });\n if (isResponse(result)) {\n return {\n result: {\n [SingleFetchRedirectSymbol]: getSingleFetchRedirect(result.status, result.headers, build.basename)\n },\n headers: result.headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n let context = result;\n let headers = getDocumentHeaders(build, context);\n if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n return {\n result: {\n [SingleFetchRedirectSymbol]: getSingleFetchRedirect(context.statusCode, headers, build.basename)\n },\n headers,\n status: SINGLE_FETCH_REDIRECT_STATUS\n };\n }\n\n // Sanitize errors outside of development environments\n if (context.errors) {\n Object.values(context.errors).forEach(err => {\n // @ts-expect-error This is \"private\" from users but intended for internal use\n if (!isRouteErrorResponse(err) || err.error) {\n handleError(err);\n }\n });\n context.errors = sanitizeErrors(context.errors, serverMode);\n }\n\n // Aggregate results based on the matches we intended to load since we get\n // `null` values back in `context.loaderData` for routes we didn't load\n let results = {};\n let loadedMatches = loadRouteIds ? context.matches.filter(m => m.route.loader && loadRouteIds.includes(m.route.id)) : context.matches;\n loadedMatches.forEach(m => {\n var _context$loaderData, _context$errors;\n let data = (_context$loaderData = context.loaderData) === null || _context$loaderData === void 0 ? void 0 : _context$loaderData[m.route.id];\n let error = (_context$errors = context.errors) === null || _context$errors === void 0 ? void 0 : _context$errors[m.route.id];\n if (error !== undefined) {\n results[m.route.id] = {\n error\n };\n } else if (data !== undefined) {\n results[m.route.id] = {\n data\n };\n }\n });\n return {\n result: results,\n headers,\n status: context.statusCode\n };\n } catch (error) {\n handleError(error);\n // These should only be internal remix errors, no need to deal with responseStubs\n return {\n result: {\n root: {\n error\n }\n },\n headers: new Headers(),\n status: 500\n };\n }\n}\nfunction getSingleFetchRedirect(status, headers, basename) {\n let redirect = headers.get(\"Location\");\n if (basename) {\n redirect = stripBasename(redirect, basename) || redirect;\n }\n return {\n redirect,\n status,\n revalidate:\n // Technically X-Remix-Revalidate isn't needed here - that was an implementation\n // detail of ?_data requests as our way to tell the front end to revalidate when\n // we didn't have a response body to include that information in.\n // With single fetch, we tell the front end via this revalidate boolean field.\n // However, we're respecting it for now because it may be something folks have\n // used in their own responses\n // TODO(v3): Consider removing or making this official public API\n headers.has(\"X-Remix-Revalidate\") || headers.has(\"Set-Cookie\"),\n reload: headers.has(\"X-Remix-Reload-Document\"),\n replace: headers.has(\"X-Remix-Replace\")\n };\n}\n\n// Note: If you change this function please change the corresponding\n// decodeViaTurboStream function in server-runtime\nfunction encodeViaTurboStream(data, requestSignal, streamTimeout, serverMode) {\n let controller = new AbortController();\n // How long are we willing to wait for all of the promises in `data` to resolve\n // before timing out? We default this to 50ms shorter than the default value for\n // `ABORT_DELAY` in our built-in `entry.server.tsx` so that once we reject we\n // have time to flush the rejections down through React's rendering stream before `\n // we call abort() on that. If the user provides their own it's up to them to\n // decouple the aborting of the stream from the aborting of React's renderToPipeableStream\n let timeoutId = setTimeout(() => controller.abort(new Error(\"Server Timeout\")), typeof streamTimeout === \"number\" ? streamTimeout : 4950);\n requestSignal.addEventListener(\"abort\", () => clearTimeout(timeoutId));\n return encode(data, {\n signal: controller.signal,\n plugins: [value => {\n // Even though we sanitized errors on context.errors prior to responding,\n // we still need to handle this for any deferred data that rejects with an\n // Error - as those will not be sanitized yet\n if (value instanceof Error) {\n let {\n name,\n message,\n stack\n } = serverMode === ServerMode.Production ? sanitizeError(value, serverMode) : value;\n return [\"SanitizedError\", name, message, stack];\n }\n if (value instanceof UNSAFE_ErrorResponseImpl) {\n let {\n data,\n status,\n statusText\n } = value;\n return [\"ErrorResponse\", data, status, statusText];\n }\n if (value && typeof value === \"object\" && SingleFetchRedirectSymbol in value) {\n return [\"SingleFetchRedirect\", value[SingleFetchRedirectSymbol]];\n }\n }],\n postPlugins: [value => {\n if (!value) return;\n if (typeof value !== \"object\") return;\n return [\"SingleFetchClassInstance\", Object.fromEntries(Object.entries(value))];\n }, () => [\"SingleFetchFallback\"]]\n });\n}\nfunction data(value, init) {\n return unstable_data(value, init);\n}\n\n// prettier-ignore\n// eslint-disable-next-line\n\nexport { SINGLE_FETCH_REDIRECT_STATUS, SingleFetchRedirectSymbol, data, encodeViaTurboStream, getSingleFetchDataStrategy, getSingleFetchRedirect, singleFetchAction, singleFetchLoaders };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport { invariant as default };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n/**\n * A function that handles data mutations for a route on the client\n */\n\n/**\n * Arguments passed to a route `clientAction` function\n */\n\n/**\n * A function that loads data for a route on the client\n */\n\n/**\n * Arguments passed to a route `clientLoader` function\n */\n\n/**\n * ErrorBoundary to display for this route\n */\n\n/**\n * `<Route HydrateFallback>` component to render on initial loads\n * when client loaders are present\n */\n\n/**\n * Optional, root-only `<Route Layout>` component to wrap the root content in.\n * Useful for defining the <html>/<head>/<body> document shell shared by the\n * Component, HydrateFallback, and ErrorBoundary\n */\n\n/**\n * A function that defines `<link>` tags to be inserted into the `<head>` of\n * the document on route transitions.\n *\n * @see https://remix.run/route/meta\n */\n\n/**\n * A React component that is rendered for a route.\n */\n\n/**\n * An arbitrary object that is associated with a route.\n *\n * @see https://remix.run/route/handle\n */\n\nasync function loadRouteModule(route, routeModulesCache) {\n if (route.id in routeModulesCache) {\n return routeModulesCache[route.id];\n }\n try {\n let routeModule = await import( /* webpackIgnore: true */route.module);\n routeModulesCache[route.id] = routeModule;\n return routeModule;\n } catch (error) {\n // If we can't load the route it's likely one of 2 things:\n // - User got caught in the middle of a deploy and the CDN no longer has the\n // asset we're trying to import! Reload from the server and the user\n // (should) get the new manifest--unless the developer purged the static\n // assets, the manifest path, but not the documents 😬\n // - Or, the asset trying to be imported has an error (usually in vite dev\n // mode), so the best we can do here is log the error for visibility\n // (via `Preserve log`) and reload\n\n // Log the error so it can be accessed via the `Preserve Log` setting\n console.error(`Error loading route module \\`${route.module}\\`, reloading page...`);\n console.error(error);\n if (window.__remixContext.isSpaMode &&\n // @ts-expect-error\n typeof import.meta.hot !== \"undefined\") {\n // In SPA Mode (which implies vite) we don't want to perform a hard reload\n // on dev-time errors since it's a vite compilation error and a reload is\n // just going to fail with the same issue. Let the UI bubble to the error\n // boundary and let them see the error in the overlay or the dev server log\n throw error;\n }\n window.location.reload();\n return new Promise(() => {\n // check out of this hook cause the DJs never gonna re[s]olve this\n });\n }\n}\n\nexport { loadRouteModule };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { parsePath } from 'react-router-dom';\nimport { loadRouteModule } from './routeModules.js';\n\n/**\n * Represents a `<link>` element.\n *\n * WHATWG Specification: https://html.spec.whatwg.org/multipage/semantics.html#the-link-element\n */\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Gets all the links for a set of matches. The modules are assumed to have been\n * loaded already.\n */\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n let descriptors = matches.map(match => {\n var _module$links;\n let module = routeModules[match.route.id];\n let route = manifest.routes[match.route.id];\n return [route.css ? route.css.map(href => ({\n rel: \"stylesheet\",\n href\n })) : [], (module === null || module === void 0 ? void 0 : (_module$links = module.links) === null || _module$links === void 0 ? void 0 : _module$links.call(module)) || []];\n }).flat(2);\n let preloads = getCurrentPageModulePreloadHrefs(matches, manifest);\n return dedupeLinkDescriptors(descriptors, preloads);\n}\nasync function prefetchStyleLinks(route, routeModule) {\n var _route$css, _routeModule$links;\n if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n let descriptors = [((_route$css = route.css) === null || _route$css === void 0 ? void 0 : _route$css.map(href => ({\n rel: \"stylesheet\",\n href\n }))) ?? [], ((_routeModule$links = routeModule.links) === null || _routeModule$links === void 0 ? void 0 : _routeModule$links.call(routeModule)) ?? []].flat(1);\n if (descriptors.length === 0) return;\n let styleLinks = [];\n for (let descriptor of descriptors) {\n if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n styleLinks.push({\n ...descriptor,\n rel: \"preload\",\n as: \"style\"\n });\n }\n }\n\n // don't block for non-matching media queries, or for stylesheets that are\n // already in the DOM (active route revalidations)\n let matchingLinks = styleLinks.filter(link => (!link.media || window.matchMedia(link.media).matches) && !document.querySelector(`link[rel=\"stylesheet\"][href=\"${link.href}\"]`));\n await Promise.all(matchingLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n return new Promise(resolve => {\n let link = document.createElement(\"link\");\n Object.assign(link, descriptor);\n function removeLink() {\n // if a navigation interrupts this prefetch React will update the <head>\n // and remove the link we put in there manually, so we check if it's still\n // there before trying to remove it\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n }\n link.onload = () => {\n removeLink();\n resolve();\n };\n link.onerror = () => {\n removeLink();\n resolve();\n };\n document.head.appendChild(link);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\nfunction isPageLinkDescriptor(object) {\n return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n if (object == null) {\n return false;\n }\n\n // <link> may not have an href if <link rel=\"preload\"> is used with imageSrcSet + imageSizes\n // https://github.com/remix-run/remix/issues/184\n // https://html.spec.whatwg.org/commit-snapshots/cb4f5ff75de5f4cbd7013c4abad02f21c77d4d1c/#attr-link-imagesrcset\n if (object.href == null) {\n return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n }\n return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n let links = await Promise.all(matches.map(async match => {\n let mod = await loadRouteModule(manifest.routes[match.route.id], routeModules);\n return mod.links ? mod.links() : [];\n }));\n return dedupeLinkDescriptors(links.flat(1).filter(isHtmlLinkDescriptor).filter(link => link.rel === \"stylesheet\" || link.rel === \"preload\").map(link => link.rel === \"stylesheet\" ? {\n ...link,\n rel: \"prefetch\",\n as: \"style\"\n } : {\n ...link,\n rel: \"prefetch\"\n }));\n}\n\n// This is ridiculously identical to transition.ts `filterMatchesToLoad`\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n let path = parsePathPatch(page);\n let isNew = (match, index) => {\n if (!currentMatches[index]) return true;\n return match.route.id !== currentMatches[index].route.id;\n };\n let matchPathChanged = (match, index) => {\n var _currentMatches$index;\n return (\n // param change, /users/123 -> /users/456\n currentMatches[index].pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n ((_currentMatches$index = currentMatches[index].route.path) === null || _currentMatches$index === void 0 ? void 0 : _currentMatches$index.endsWith(\"*\")) && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n );\n };\n\n // NOTE: keep this mostly up-to-date w/ the transition data diff, but this\n // version doesn't care about submissions\n let newMatches = mode === \"data\" && location.search !== path.search ?\n // this is really similar to stuff in transition.ts, maybe somebody smarter\n // than me (or in less of a hurry) can share some of it. You're the best.\n nextMatches.filter((match, index) => {\n let manifestRoute = manifest.routes[match.route.id];\n if (!manifestRoute.hasLoader) {\n return false;\n }\n if (isNew(match, index) || matchPathChanged(match, index)) {\n return true;\n }\n if (match.route.shouldRevalidate) {\n var _currentMatches$;\n let routeChoice = match.route.shouldRevalidate({\n currentUrl: new URL(location.pathname + location.search + location.hash, window.origin),\n currentParams: ((_currentMatches$ = currentMatches[0]) === null || _currentMatches$ === void 0 ? void 0 : _currentMatches$.params) || {},\n nextUrl: new URL(page, window.origin),\n nextParams: match.params,\n defaultShouldRevalidate: true\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return true;\n }) : nextMatches.filter((match, index) => {\n let manifestRoute = manifest.routes[match.route.id];\n return (mode === \"assets\" || manifestRoute.hasLoader) && (isNew(match, index) || matchPathChanged(match, index));\n });\n return newMatches;\n}\nfunction getDataLinkHrefs(page, matches, manifest) {\n let path = parsePathPatch(page);\n return dedupeHrefs(matches.filter(match => manifest.routes[match.route.id].hasLoader && !manifest.routes[match.route.id].hasClientLoader).map(match => {\n let {\n pathname,\n search\n } = path;\n let searchParams = new URLSearchParams(search);\n searchParams.set(\"_data\", match.route.id);\n return `${pathname}?${searchParams}`;\n }));\n}\nfunction getModuleLinkHrefs(matches, manifestPatch) {\n return dedupeHrefs(matches.map(match => {\n let route = manifestPatch.routes[match.route.id];\n let hrefs = [route.module];\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1));\n}\n\n// The `<Script>` will render rel=modulepreload for the current page, we don't\n// need to include them in a page prefetch, this gives us the list to remove\n// while deduping.\nfunction getCurrentPageModulePreloadHrefs(matches, manifest) {\n return dedupeHrefs(matches.map(match => {\n let route = manifest.routes[match.route.id];\n let hrefs = [route.module];\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1));\n}\nfunction dedupeHrefs(hrefs) {\n return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n let sorted = {};\n let keys = Object.keys(obj).sort();\n for (let key of keys) {\n sorted[key] = obj[key];\n }\n return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n let set = new Set();\n let preloadsSet = new Set(preloads);\n return descriptors.reduce((deduped, descriptor) => {\n let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n if (alreadyModulePreload) {\n return deduped;\n }\n let key = JSON.stringify(sortKeys(descriptor));\n if (!set.has(key)) {\n set.add(key);\n deduped.push({\n key,\n link: descriptor\n });\n }\n return deduped;\n }, []);\n}\n\n// https://github.com/remix-run/history/issues/897\nfunction parsePathPatch(href) {\n let path = parsePath(href);\n if (path.search === undefined) path.search = \"\";\n return path;\n}\n\n// Detect if this browser supports <link rel=\"preload\"> (or has it enabled).\n// Originally added to handle the firefox `network.preload` config:\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1847811\nlet _isPreloadSupported;\nfunction isPreloadSupported() {\n if (_isPreloadSupported !== undefined) {\n return _isPreloadSupported;\n }\n let el = document.createElement(\"link\");\n _isPreloadSupported = el.relList.supports(\"preload\");\n el = null;\n return _isPreloadSupported;\n}\n\nexport { getDataLinkHrefs, getKeyedLinksForMatches, getKeyedPrefetchLinks, getModuleLinkHrefs, getNewMatchesForLinks, isPageLinkDescriptor, prefetchStyleLinks };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// This escapeHtml utility is based on https://github.com/zertosh/htmlescape\n// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE\n\n// We've chosen to inline the utility here to reduce the number of npm dependencies we have,\n// slightly decrease the code size compared the original package and make it esm compatible.\n\nconst ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n return html.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\nfunction createHtml(html) {\n return {\n __html: html\n };\n}\n\nexport { createHtml, escapeHtml };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { AbortedDeferredError, UNSAFE_DeferredData } from '@remix-run/router';\n\n/**\n * Data for a route that was returned from a `loader()`.\n */\n\nfunction isCatchResponse(response) {\n return response.headers.get(\"X-Remix-Catch\") != null;\n}\nfunction isErrorResponse(response) {\n return response.headers.get(\"X-Remix-Error\") != null;\n}\nfunction isNetworkErrorResponse(response) {\n // If we reach the Remix server, we can safely identify response types via the\n // X-Remix-Error/X-Remix-Catch headers. However, if we never reach the Remix\n // server, and instead receive a 4xx/5xx from somewhere in between (like\n // Cloudflare), then we get a false negative in the isErrorResponse check and\n // we incorrectly assume that the user returns the 4xx/5xx response and\n // consider it successful. To alleviate this, we add X-Remix-Response to any\n // non-Error/non-Catch responses coming back from the server. If we don't\n // see this, we can conclude that a 4xx/5xx response never actually reached\n // the Remix server and we can bubble it up as an error.\n return isResponse(response) && response.status >= 400 && response.headers.get(\"X-Remix-Error\") == null && response.headers.get(\"X-Remix-Catch\") == null && response.headers.get(\"X-Remix-Response\") == null;\n}\nfunction isRedirectResponse(response) {\n return response.headers.get(\"X-Remix-Redirect\") != null;\n}\nfunction isDeferredResponse(response) {\n var _response$headers$get;\n return !!((_response$headers$get = response.headers.get(\"Content-Type\")) !== null && _response$headers$get !== void 0 && _response$headers$get.match(/text\\/remix-deferred/));\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nasync function fetchData(request, routeId, retry = 0) {\n let url = new URL(request.url);\n url.searchParams.set(\"_data\", routeId);\n if (retry > 0) {\n // Retry up to 3 times waiting 50, 250, 1250 ms\n // between retries for a total of 1550 ms before giving up.\n await new Promise(resolve => setTimeout(resolve, 5 ** retry * 10));\n }\n let init = await createRequestInit(request);\n let revalidation = window.__remixRevalidation;\n let response = await fetch(url.href, init).catch(error => {\n if (typeof revalidation === \"number\" && revalidation === window.__remixRevalidation && (error === null || error === void 0 ? void 0 : error.name) === \"TypeError\" && retry < 3) {\n return fetchData(request, routeId, retry + 1);\n }\n throw error;\n });\n if (isErrorResponse(response)) {\n let data = await response.json();\n let error = new Error(data.message);\n error.stack = data.stack;\n return error;\n }\n if (isNetworkErrorResponse(response)) {\n let text = await response.text();\n let error = new Error(text);\n error.stack = undefined;\n return error;\n }\n return response;\n}\nasync function createRequestInit(request) {\n let init = {\n signal: request.signal\n };\n if (request.method !== \"GET\") {\n init.method = request.method;\n let contentType = request.headers.get(\"Content-Type\");\n\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n init.headers = {\n \"Content-Type\": contentType\n };\n init.body = JSON.stringify(await request.json());\n } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n init.headers = {\n \"Content-Type\": contentType\n };\n init.body = await request.text();\n } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n init.body = new URLSearchParams(await request.text());\n } else {\n init.body = await request.formData();\n }\n }\n return init;\n}\nconst DEFERRED_VALUE_PLACEHOLDER_PREFIX = \"__deferred_promise:\";\nasync function parseDeferredReadableStream(stream) {\n if (!stream) {\n throw new Error(\"parseDeferredReadableStream requires stream argument\");\n }\n let deferredData;\n let deferredResolvers = {};\n try {\n let sectionReader = readStreamSections(stream);\n\n // Read the first section to get the critical data\n let initialSectionResult = await sectionReader.next();\n let initialSection = initialSectionResult.value;\n if (!initialSection) throw new Error(\"no critical data\");\n let criticalData = JSON.parse(initialSection);\n\n // Setup deferred data and resolvers for later based on the critical data\n if (typeof criticalData === \"object\" && criticalData !== null) {\n for (let [eventKey, value] of Object.entries(criticalData)) {\n if (typeof value !== \"string\" || !value.startsWith(DEFERRED_VALUE_PLACEHOLDER_PREFIX)) {\n continue;\n }\n deferredData = deferredData || {};\n deferredData[eventKey] = new Promise((resolve, reject) => {\n deferredResolvers[eventKey] = {\n resolve: value => {\n resolve(value);\n delete deferredResolvers[eventKey];\n },\n reject: error => {\n reject(error);\n delete deferredResolvers[eventKey];\n }\n };\n });\n }\n }\n\n // Read the rest of the stream and resolve deferred promises\n void (async () => {\n try {\n for await (let section of sectionReader) {\n // Determine event type and data\n let [event, ...sectionDataStrings] = section.split(\":\");\n let sectionDataString = sectionDataStrings.join(\":\");\n let data = JSON.parse(sectionDataString);\n if (event === \"data\") {\n for (let [key, value] of Object.entries(data)) {\n if (deferredResolvers[key]) {\n deferredResolvers[key].resolve(value);\n }\n }\n } else if (event === \"error\") {\n for (let [key, value] of Object.entries(data)) {\n let err = new Error(value.message);\n err.stack = value.stack;\n if (deferredResolvers[key]) {\n deferredResolvers[key].reject(err);\n }\n }\n }\n }\n for (let [key, resolver] of Object.entries(deferredResolvers)) {\n resolver.reject(new AbortedDeferredError(`Deferred ${key} will never be resolved`));\n }\n } catch (error) {\n // Reject any existing deferred promises if something blows up\n for (let resolver of Object.values(deferredResolvers)) {\n resolver.reject(error);\n }\n }\n })();\n return new UNSAFE_DeferredData({\n ...criticalData,\n ...deferredData\n });\n } catch (error) {\n for (let resolver of Object.values(deferredResolvers)) {\n resolver.reject(error);\n }\n throw error;\n }\n}\nasync function* readStreamSections(stream) {\n let reader = stream.getReader();\n let buffer = [];\n let sections = [];\n let closed = false;\n let encoder = new TextEncoder();\n let decoder = new TextDecoder();\n let readStreamSection = async () => {\n if (sections.length > 0) return sections.shift();\n\n // Read from the stream until we have at least one complete section to process\n while (!closed && sections.length === 0) {\n let chunk = await reader.read();\n if (chunk.done) {\n closed = true;\n break;\n }\n // Buffer the raw chunks\n buffer.push(chunk.value);\n try {\n // Attempt to split off a section from the buffer\n let bufferedString = decoder.decode(mergeArrays(...buffer));\n let splitSections = bufferedString.split(\"\\n\\n\");\n if (splitSections.length >= 2) {\n // We have a complete section, so add it to the sections array\n sections.push(...splitSections.slice(0, -1));\n // Remove the section from the buffer and store the rest for future processing\n buffer = [encoder.encode(splitSections.slice(-1).join(\"\\n\\n\"))];\n }\n\n // If we successfully parsed at least one section, break out of reading the stream\n // to allow upstream processing of the processable sections\n if (sections.length > 0) {\n break;\n }\n } catch {\n // If we failed to parse the buffer it was because we failed to decode the stream\n // because we are missing bytes that we haven't yet received, so continue reading\n // from the stream until we have a complete section\n continue;\n }\n }\n\n // If we have a complete section, return it\n if (sections.length > 0) {\n return sections.shift();\n }\n\n // If we have no complete section, but we have no more chunks to process,\n // split those sections and clear out the buffer as there is no more data\n // to process. If this errors, let it bubble up as the stream ended\n // without valid data\n if (buffer.length > 0) {\n let bufferedString = decoder.decode(mergeArrays(...buffer));\n sections = bufferedString.split(\"\\n\\n\").filter(s => s);\n buffer = [];\n }\n\n // Return any remaining sections that have been processed\n return sections.shift();\n };\n let section = await readStreamSection();\n while (section) {\n yield section;\n section = await readStreamSection();\n }\n}\nfunction mergeArrays(...arrays) {\n let out = new Uint8Array(arrays.reduce((total, arr) => total + arr.length, 0));\n let offset = 0;\n for (let arr of arrays) {\n out.set(arr, offset);\n offset += arr.length;\n }\n return out;\n}\n\nexport { createRequestInit, fetchData, isCatchResponse, isDeferredData, isDeferredResponse, isErrorResponse, isNetworkErrorResponse, isRedirectResponse, isResponse, parseDeferredReadableStream };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_ErrorResponseImpl, isRouteErrorResponse, unstable_data, redirect } from '@remix-run/router';\nimport { UNSAFE_SingleFetchRedirectSymbol } from '@remix-run/server-runtime';\nimport { decode } from 'turbo-stream';\nimport { createRequestInit, isResponse } from './data.js';\nimport { escapeHtml } from './markup.js';\nimport invariant from './invariant.js';\n\n// StreamTransfer recursively renders down chunks of the `serverHandoffStream`\n// into the client-side `streamController`\nfunction StreamTransfer({\n context,\n identifier,\n reader,\n textDecoder,\n nonce\n}) {\n // If the user didn't render the <Scripts> component then we don't have to\n // bother streaming anything in\n if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n return null;\n }\n if (!context.renderMeta.streamCache) {\n context.renderMeta.streamCache = {};\n }\n let {\n streamCache\n } = context.renderMeta;\n let promise = streamCache[identifier];\n if (!promise) {\n promise = streamCache[identifier] = reader.read().then(result => {\n streamCache[identifier].result = {\n done: result.done,\n value: textDecoder.decode(result.value, {\n stream: true\n })\n };\n }).catch(e => {\n streamCache[identifier].error = e;\n });\n }\n if (promise.error) {\n throw promise.error;\n }\n if (promise.result === undefined) {\n throw promise;\n }\n let {\n done,\n value\n } = promise.result;\n let scriptTag = value ? /*#__PURE__*/React.createElement(\"script\", {\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__remixContext.streamController.enqueue(${escapeHtml(JSON.stringify(value))});`\n }\n }) : null;\n if (done) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, scriptTag, /*#__PURE__*/React.createElement(\"script\", {\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__remixContext.streamController.close();`\n }\n }));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, scriptTag, /*#__PURE__*/React.createElement(React.Suspense, null, /*#__PURE__*/React.createElement(StreamTransfer, {\n context: context,\n identifier: identifier + 1,\n reader: reader,\n textDecoder: textDecoder,\n nonce: nonce\n })));\n }\n}\nfunction getSingleFetchDataStrategy(manifest, routeModules, getRouter) {\n return async ({\n request,\n matches,\n fetcherKey\n }) => {\n // Actions are simple and behave the same for navigations and fetchers\n if (request.method !== \"GET\") {\n return singleFetchActionStrategy(request, matches);\n }\n\n // Fetcher loads are singular calls to one loader\n if (fetcherKey) {\n return singleFetchLoaderFetcherStrategy(request, matches);\n }\n\n // Navigational loads are more complex...\n return singleFetchLoaderNavigationStrategy(manifest, routeModules, getRouter(), request, matches);\n };\n}\n\n// Actions are simple since they're singular calls to the server for both\n// navigations and fetchers)\nasync function singleFetchActionStrategy(request, matches) {\n let actionMatch = matches.find(m => m.shouldLoad);\n invariant(actionMatch, \"No action match found\");\n let actionStatus = undefined;\n let result = await actionMatch.resolve(async handler => {\n let result = await handler(async () => {\n let url = singleFetchUrl(request.url);\n let init = await createRequestInit(request);\n let {\n data,\n status\n } = await fetchAndDecode(url, init);\n actionStatus = status;\n return unwrapSingleFetchResult(data, actionMatch.route.id);\n });\n return result;\n });\n if (isResponse(result.result) || isRouteErrorResponse(result.result)) {\n return {\n [actionMatch.route.id]: result\n };\n }\n\n // For non-responses, proxy along the statusCode via unstable_data()\n // (most notably for skipping action error revalidation)\n return {\n [actionMatch.route.id]: {\n type: result.type,\n result: unstable_data(result.result, actionStatus)\n }\n };\n}\n\n// Loaders are trickier since we only want to hit the server once, so we\n// create a singular promise for all server-loader routes to latch onto.\nasync function singleFetchLoaderNavigationStrategy(manifest, routeModules, router, request, matches) {\n // Track which routes need a server load - in case we need to tack on a\n // `_routes` param\n let routesParams = new Set();\n\n // We only add `_routes` when one or more routes opts out of a load via\n // `shouldRevalidate` or `clientLoader`\n let foundOptOutRoute = false;\n\n // Deferreds for each route so we can be sure they've all loaded via\n // `match.resolve()`, and a singular promise that can tell us all routes\n // have been resolved\n let routeDfds = matches.map(() => createDeferred());\n let routesLoadedPromise = Promise.all(routeDfds.map(d => d.promise));\n\n // Deferred that we'll use for the call to the server that each match can\n // await and parse out it's specific result\n let singleFetchDfd = createDeferred();\n\n // Base URL and RequestInit for calls to the server\n let url = stripIndexParam(singleFetchUrl(request.url));\n let init = await createRequestInit(request);\n\n // We'll build up this results object as we loop through matches\n let results = {};\n let resolvePromise = Promise.all(matches.map(async (m, i) => m.resolve(async handler => {\n routeDfds[i].resolve();\n if (!m.shouldLoad) {\n var _routeModules$m$route;\n // If we're not yet initialized and this is the initial load, respect\n // `shouldLoad` because we're only dealing with `clientLoader.hydrate`\n // routes which will fall into the `clientLoader` section below.\n if (!router.state.initialized) {\n return;\n }\n\n // Otherwise, we opt out if we currently have data, a `loader`, and a\n // `shouldRevalidate` function. This implies that the user opted out\n // via `shouldRevalidate`\n if (m.route.id in router.state.loaderData && manifest.routes[m.route.id].hasLoader && (_routeModules$m$route = routeModules[m.route.id]) !== null && _routeModules$m$route !== void 0 && _routeModules$m$route.shouldRevalidate) {\n foundOptOutRoute = true;\n return;\n }\n }\n\n // When a route has a client loader, it opts out of the singular call and\n // calls it's server loader via `serverLoader()` using a `?_routes` param\n if (manifest.routes[m.route.id].hasClientLoader) {\n if (manifest.routes[m.route.id].hasLoader) {\n foundOptOutRoute = true;\n }\n try {\n let result = await fetchSingleLoader(handler, url, init, m.route.id);\n results[m.route.id] = {\n type: \"data\",\n result\n };\n } catch (e) {\n results[m.route.id] = {\n type: \"error\",\n result: e\n };\n }\n return;\n }\n\n // Load this route on the server if it has a loader\n if (manifest.routes[m.route.id].hasLoader) {\n routesParams.add(m.route.id);\n }\n\n // Lump this match in with the others on a singular promise\n try {\n let result = await handler(async () => {\n let data = await singleFetchDfd.promise;\n return unwrapSingleFetchResults(data, m.route.id);\n });\n results[m.route.id] = {\n type: \"data\",\n result\n };\n } catch (e) {\n results[m.route.id] = {\n type: \"error\",\n result: e\n };\n }\n })));\n\n // Wait for all routes to resolve above before we make the HTTP call\n await routesLoadedPromise;\n\n // We can skip the server call:\n // - On initial hydration - only clientLoaders can pass through via `clientLoader.hydrate`\n // - If there are no routes to fetch from the server\n //\n // One exception - if we are performing an HDR revalidation we have to call\n // the server in case a new loader has shown up that the manifest doesn't yet\n // know about\n if ((!router.state.initialized || routesParams.size === 0) && !window.__remixHdrActive) {\n singleFetchDfd.resolve({});\n } else {\n try {\n // When one or more routes have opted out, we add a _routes param to\n // limit the loaders to those that have a server loader and did not\n // opt out\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\"_routes\", matches.filter(m => routesParams.has(m.route.id)).map(m => m.route.id).join(\",\"));\n }\n let data = await fetchAndDecode(url, init);\n singleFetchDfd.resolve(data.data);\n } catch (e) {\n singleFetchDfd.reject(e);\n }\n }\n await resolvePromise;\n return results;\n}\n\n// Fetcher loader calls are much simpler than navigational loader calls\nasync function singleFetchLoaderFetcherStrategy(request, matches) {\n let fetcherMatch = matches.find(m => m.shouldLoad);\n invariant(fetcherMatch, \"No fetcher match found\");\n let result = await fetcherMatch.resolve(async handler => {\n let url = stripIndexParam(singleFetchUrl(request.url));\n let init = await createRequestInit(request);\n return fetchSingleLoader(handler, url, init, fetcherMatch.route.id);\n });\n return {\n [fetcherMatch.route.id]: result\n };\n}\nfunction fetchSingleLoader(handler, url, init, routeId) {\n return handler(async () => {\n let singleLoaderUrl = new URL(url);\n singleLoaderUrl.searchParams.set(\"_routes\", routeId);\n let {\n data\n } = await fetchAndDecode(singleLoaderUrl, init);\n return unwrapSingleFetchResults(data, routeId);\n });\n}\nfunction stripIndexParam(url) {\n let indexValues = url.searchParams.getAll(\"index\");\n url.searchParams.delete(\"index\");\n let indexValuesToKeep = [];\n for (let indexValue of indexValues) {\n if (indexValue) {\n indexValuesToKeep.push(indexValue);\n }\n }\n for (let toKeep of indexValuesToKeep) {\n url.searchParams.append(\"index\", toKeep);\n }\n return url;\n}\nfunction singleFetchUrl(reqUrl) {\n let url = typeof reqUrl === \"string\" ? new URL(reqUrl, window.location.origin) : reqUrl;\n if (url.pathname === \"/\") {\n url.pathname = \"_root.data\";\n } else {\n url.pathname = `${url.pathname.replace(/\\/$/, \"\")}.data`;\n }\n return url;\n}\nasync function fetchAndDecode(url, init) {\n let res = await fetch(url, init);\n // Don't do a hard check against the header here. We'll get `text/x-script`\n // when we have a running server, but if folks want to prerender `.data` files\n // and serve them from a CDN we should let them come back with whatever\n // Content-Type their CDN provides and not force them to make sure `.data`\n // files are served as `text/x-script`. We'll throw if we can't decode anyway.\n invariant(res.body, \"No response body to decode\");\n try {\n let decoded = await decodeViaTurboStream(res.body, window);\n return {\n status: res.status,\n data: decoded.value\n };\n } catch (e) {\n console.error(e);\n throw new Error(`Unable to decode turbo-stream response from URL: ${url.toString()}`);\n }\n}\n\n// Note: If you change this function please change the corresponding\n// encodeViaTurboStream function in server-runtime\nfunction decodeViaTurboStream(body, global) {\n return decode(body, {\n plugins: [(type, ...rest) => {\n // Decode Errors back into Error instances using the right type and with\n // the right (potentially undefined) stacktrace\n if (type === \"SanitizedError\") {\n let [name, message, stack] = rest;\n let Constructor = Error;\n // @ts-expect-error\n if (name && name in global && typeof global[name] === \"function\") {\n // @ts-expect-error\n Constructor = global[name];\n }\n let error = new Constructor(message);\n error.stack = stack;\n return {\n value: error\n };\n }\n if (type === \"ErrorResponse\") {\n let [data, status, statusText] = rest;\n return {\n value: new UNSAFE_ErrorResponseImpl(status, statusText, data)\n };\n }\n if (type === \"SingleFetchRedirect\") {\n return {\n value: {\n [UNSAFE_SingleFetchRedirectSymbol]: rest[0]\n }\n };\n }\n }, (type, value) => {\n if (type === \"SingleFetchFallback\") {\n return {\n value: undefined\n };\n }\n if (type === \"SingleFetchClassInstance\") {\n return {\n value\n };\n }\n }]\n });\n}\nfunction unwrapSingleFetchResults(results, routeId) {\n let redirect = results[UNSAFE_SingleFetchRedirectSymbol];\n if (redirect) {\n return unwrapSingleFetchResult(redirect, routeId);\n }\n return results[routeId] !== undefined ? unwrapSingleFetchResult(results[routeId], routeId) : null;\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n if (\"error\" in result) {\n throw result.error;\n } else if (\"redirect\" in result) {\n let headers = {};\n if (result.revalidate) {\n headers[\"X-Remix-Revalidate\"] = \"yes\";\n }\n if (result.reload) {\n headers[\"X-Remix-Reload-Document\"] = \"yes\";\n }\n if (result.replace) {\n headers[\"X-Remix-Replace\"] = \"yes\";\n }\n return redirect(result.redirect, {\n status: result.status,\n headers\n });\n } else if (\"data\" in result) {\n return result.data;\n } else {\n throw new Error(`No response found for routeId \"${routeId}\"`);\n }\n}\nfunction createDeferred() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async val => {\n res(val);\n try {\n await promise;\n } catch (e) {}\n };\n reject = async error => {\n rej(error);\n try {\n await promise;\n } catch (e) {}\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\nexport { StreamTransfer, decodeViaTurboStream, getSingleFetchDataStrategy, singleFetchUrl };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { isRouteErrorResponse } from 'react-router-dom';\nimport { useRemixContext, Scripts } from './components.js';\n\nclass RemixErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n error: props.error || null,\n location: props.location\n };\n }\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n static getDerivedStateFromProps(props, state) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application (even the HTML!) that will have no effect--the error page\n // continues to display. This gives us a mechanism to recover from the error\n // when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error || null,\n location: props.location\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location\n };\n }\n render() {\n if (this.state.error) {\n return /*#__PURE__*/React.createElement(RemixRootDefaultErrorBoundary, {\n error: this.state.error,\n isOutsideRemixApp: true\n });\n } else {\n return this.props.children;\n }\n }\n}\n\n/**\n * When app's don't provide a root level ErrorBoundary, we default to this.\n */\nfunction RemixRootDefaultErrorBoundary({\n error,\n isOutsideRemixApp\n}) {\n console.error(error);\n let heyDeveloper = /*#__PURE__*/React.createElement(\"script\", {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://remix.run/guides/errors for more information.\"\n );\n `\n }\n });\n if (isRouteErrorResponse(error)) {\n return /*#__PURE__*/React.createElement(BoundaryShell, {\n title: \"Unhandled Thrown Response!\"\n }, /*#__PURE__*/React.createElement(\"h1\", {\n style: {\n fontSize: \"24px\"\n }\n }, error.status, \" \", error.statusText), heyDeveloper);\n }\n let errorInstance;\n if (error instanceof Error) {\n errorInstance = error;\n } else {\n let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n errorInstance = new Error(errorString);\n }\n return /*#__PURE__*/React.createElement(BoundaryShell, {\n title: \"Application Error!\",\n isOutsideRemixApp: isOutsideRemixApp\n }, /*#__PURE__*/React.createElement(\"h1\", {\n style: {\n fontSize: \"24px\"\n }\n }, \"Application Error\"), /*#__PURE__*/React.createElement(\"pre\", {\n style: {\n padding: \"2rem\",\n background: \"hsla(10, 50%, 50%, 0.1)\",\n color: \"red\",\n overflow: \"auto\"\n }\n }, errorInstance.stack), heyDeveloper);\n}\nfunction BoundaryShell({\n title,\n renderScripts,\n isOutsideRemixApp,\n children\n}) {\n var _routeModules$root;\n let {\n routeModules\n } = useRemixContext();\n\n // Generally speaking, when the root route has a Layout we want to use that\n // as the app shell instead of the default `BoundaryShell` wrapper markup below.\n // This is true for `loader`/`action` errors, most render errors, and\n // `HydrateFallback` scenarios.\n\n // However, render errors thrown from the `Layout` present a bit of an issue\n // because if the `Layout` itself throws during the `ErrorBoundary` pass and\n // we bubble outside the `RouterProvider` to the wrapping `RemixErrorBoundary`,\n // by returning only `children` here we'll be trying to append a `<div>` to\n // the `document` and the DOM will throw, putting React into an error/hydration\n // loop.\n\n // Instead, if we're ever rendering from the outermost `RemixErrorBoundary`\n // during hydration that wraps `RouterProvider`, then we can't trust the\n // `Layout` and should fallback to the default app shell so we're always\n // returning an `<html>` document.\n if ((_routeModules$root = routeModules.root) !== null && _routeModules$root !== void 0 && _routeModules$root.Layout && !isOutsideRemixApp) {\n return children;\n }\n return /*#__PURE__*/React.createElement(\"html\", {\n lang: \"en\"\n }, /*#__PURE__*/React.createElement(\"head\", null, /*#__PURE__*/React.createElement(\"meta\", {\n charSet: \"utf-8\"\n }), /*#__PURE__*/React.createElement(\"meta\", {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }), /*#__PURE__*/React.createElement(\"title\", null, title)), /*#__PURE__*/React.createElement(\"body\", null, /*#__PURE__*/React.createElement(\"main\", {\n style: {\n fontFamily: \"system-ui, sans-serif\",\n padding: \"2rem\"\n }\n }, children, renderScripts ? /*#__PURE__*/React.createElement(Scripts, null) : null)));\n}\n\nexport { BoundaryShell, RemixErrorBoundary, RemixRootDefaultErrorBoundary };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { BoundaryShell } from './errorBoundaries.js';\n\n// If the user sets `clientLoader.hydrate=true` somewhere but does not\n// provide a `HydrateFallback` at any level of the tree, then we need to at\n// least include `<Scripts>` in the SSR so we can hydrate the app and call the\n// `clientLoader` functions\nfunction RemixRootDefaultHydrateFallback() {\n return /*#__PURE__*/React.createElement(BoundaryShell, {\n title: \"Loading...\",\n renderScripts: true\n }, /*#__PURE__*/React.createElement(\"script\", {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"💿 Hey developer 👋. You can provide a way better UX than this \" +\n \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n \"functions. Check out https://remix.run/route/hydrate-fallback \" +\n \"for more information.\"\n );\n `\n }\n }));\n}\n\nexport { RemixRootDefaultHydrateFallback };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\nimport { useRouteError, redirect } from 'react-router-dom';\nimport { loadRouteModule } from './routeModules.js';\nimport { fetchData, isRedirectResponse, isCatchResponse, isDeferredResponse, parseDeferredReadableStream, isDeferredData, isResponse } from './data.js';\nimport { prefetchStyleLinks } from './links.js';\nimport { RemixRootDefaultErrorBoundary } from './errorBoundaries.js';\nimport { RemixRootDefaultHydrateFallback } from './fallback.js';\nimport invariant from './invariant.js';\n\n// NOTE: make sure to change the Route in server-runtime if you change this\n\n// NOTE: make sure to change the EntryRoute in server-runtime if you change this\n\n// Create a map of routes by parentId to use recursively instead of\n// repeatedly filtering the manifest.\nfunction groupRoutesByParentId(manifest) {\n let routes = {};\n Object.values(manifest).forEach(route => {\n let parentId = route.parentId || \"\";\n if (!routes[parentId]) {\n routes[parentId] = [];\n }\n routes[parentId].push(route);\n });\n return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n let Component = getRouteModuleComponent(routeModule);\n // HydrateFallback can only exist on the root route in SPA Mode\n let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : undefined;\n let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /*#__PURE__*/React.createElement(RemixRootDefaultErrorBoundary, {\n error: useRouteError()\n }) : undefined;\n if (route.id === \"root\" && routeModule.Layout) {\n return {\n ...(Component ? {\n element: /*#__PURE__*/React.createElement(routeModule.Layout, null, /*#__PURE__*/React.createElement(Component, null))\n } : {\n Component\n }),\n ...(ErrorBoundary ? {\n errorElement: /*#__PURE__*/React.createElement(routeModule.Layout, null, /*#__PURE__*/React.createElement(ErrorBoundary, null))\n } : {\n ErrorBoundary\n }),\n ...(HydrateFallback ? {\n hydrateFallbackElement: /*#__PURE__*/React.createElement(routeModule.Layout, null, /*#__PURE__*/React.createElement(HydrateFallback, null))\n } : {\n HydrateFallback\n })\n };\n }\n return {\n Component,\n ErrorBoundary,\n HydrateFallback\n };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({\n Component: () => null\n})) {\n return (routesByParentId[parentId] || []).map(route => {\n let routeModule = routeModules[route.id];\n invariant(routeModule, \"No `routeModule` available to create server routes\");\n let dataRoute = {\n ...getRouteComponents(route, routeModule, isSpaMode),\n caseSensitive: route.caseSensitive,\n id: route.id,\n index: route.index,\n path: route.path,\n handle: routeModule.handle,\n // For SPA Mode, all routes are lazy except root. However we tell the\n // router root is also lazy here too since we don't need a full\n // implementation - we just need a `lazy` prop to tell the RR rendering\n // where to stop which is always at the root route in SPA mode\n lazy: isSpaMode ? () => spaModeLazyPromise : undefined,\n // For partial hydration rendering, we need to indicate when the route\n // has a loader/clientLoader, but it won't ever be called during the static\n // render, so just give it a no-op function so we can render down to the\n // proper fallback\n loader: route.hasLoader || route.hasClientLoader ? () => null : undefined\n // We don't need action/shouldRevalidate on these routes since they're\n // for a static render\n };\n let children = createServerRoutes(manifest, routeModules, future, isSpaMode, route.id, routesByParentId, spaModeLazyPromise);\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, future, isSpaMode) {\n return createClientRoutes(manifest, routeModulesCache, initialState, future, isSpaMode, \"\", groupRoutesByParentId(manifest), needsRevalidation);\n}\nfunction preventInvalidServerHandlerCall(type, route, isSpaMode) {\n if (isSpaMode) {\n let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg = `You cannot call ${fn} in SPA Mode (routeId: \"${route.id}\")`;\n console.error(msg);\n throw new UNSAFE_ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n }\n let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg = `You are trying to call ${fn} on a route that does not have a server ` + `${type} (routeId: \"${route.id}\")`;\n if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n console.error(msg);\n throw new UNSAFE_ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n }\n}\nfunction noActionDefinedError(type, routeId) {\n let article = type === \"clientAction\" ? \"a\" : \"an\";\n let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to ` + `submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n console.error(msg);\n throw new UNSAFE_ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n return (routesByParentId[parentId] || []).map(route => {\n let routeModule = routeModulesCache[route.id];\n\n // Fetch data from the server either via single fetch or the standard `?_data`\n // request. Unwrap it when called via `serverLoader`/`serverAction` in a\n // client handler, otherwise return the raw response for the router to unwrap\n async function fetchServerHandlerAndMaybeUnwrap(request, unwrap, singleFetch) {\n if (typeof singleFetch === \"function\") {\n let result = await singleFetch();\n return result;\n }\n let result = await fetchServerHandler(request, route);\n return unwrap ? unwrapServerResponse(result) : result;\n }\n function fetchServerLoader(request, unwrap, singleFetch) {\n if (!route.hasLoader) return Promise.resolve(null);\n return fetchServerHandlerAndMaybeUnwrap(request, unwrap, singleFetch);\n }\n function fetchServerAction(request, unwrap, singleFetch) {\n if (!route.hasAction) {\n throw noActionDefinedError(\"action\", route.id);\n }\n return fetchServerHandlerAndMaybeUnwrap(request, unwrap, singleFetch);\n }\n async function prefetchStylesAndCallHandler(handler) {\n // Only prefetch links if we exist in the routeModulesCache (critical modules\n // and navigating back to pages previously loaded via route.lazy). Initial\n // execution of route.lazy (when the module is not in the cache) will handle\n // prefetching style links via loadRouteModuleWithBlockingLinks.\n let cachedModule = routeModulesCache[route.id];\n let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n try {\n return handler();\n } finally {\n await linkPrefetchPromise;\n }\n }\n let dataRoute = {\n id: route.id,\n index: route.index,\n path: route.path\n };\n if (routeModule) {\n var _initialState$loaderD, _initialState$errors, _routeModule$clientLo;\n // Use critical path modules directly\n Object.assign(dataRoute, {\n ...dataRoute,\n ...getRouteComponents(route, routeModule, isSpaMode),\n handle: routeModule.handle,\n shouldRevalidate: needsRevalidation ? wrapShouldRevalidateForHdr(route.id, routeModule.shouldRevalidate, needsRevalidation) : routeModule.shouldRevalidate\n });\n let initialData = initialState === null || initialState === void 0 ? void 0 : (_initialState$loaderD = initialState.loaderData) === null || _initialState$loaderD === void 0 ? void 0 : _initialState$loaderD[route.id];\n let initialError = initialState === null || initialState === void 0 ? void 0 : (_initialState$errors = initialState.errors) === null || _initialState$errors === void 0 ? void 0 : _initialState$errors[route.id];\n let isHydrationRequest = needsRevalidation == null && (((_routeModule$clientLo = routeModule.clientLoader) === null || _routeModule$clientLo === void 0 ? void 0 : _routeModule$clientLo.hydrate) === true || !route.hasLoader);\n dataRoute.loader = async ({\n request,\n params\n }, singleFetch) => {\n try {\n let result = await prefetchStylesAndCallHandler(async () => {\n invariant(routeModule, \"No `routeModule` available for critical-route loader\");\n if (!routeModule.clientLoader) {\n if (isSpaMode) return null;\n // Call the server when no client loader exists\n return fetchServerLoader(request, false, singleFetch);\n }\n return routeModule.clientLoader({\n request,\n params,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route, isSpaMode);\n\n // On the first call, resolve with the server result\n if (isHydrationRequest) {\n if (initialError !== undefined) {\n throw initialError;\n }\n return initialData;\n }\n\n // Call the server loader for client-side navigations\n return fetchServerLoader(request, true, singleFetch);\n }\n });\n });\n return result;\n } finally {\n // Whether or not the user calls `serverLoader`, we only let this\n // stick around as true for one loader call\n isHydrationRequest = false;\n }\n };\n\n // Let React Router know whether to run this on hydration\n dataRoute.loader.hydrate = shouldHydrateRouteLoader(route, routeModule, isSpaMode);\n dataRoute.action = ({\n request,\n params\n }, singleFetch) => {\n return prefetchStylesAndCallHandler(async () => {\n invariant(routeModule, \"No `routeModule` available for critical-route action\");\n if (!routeModule.clientAction) {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(request, false, singleFetch);\n }\n return routeModule.clientAction({\n request,\n params,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route, isSpaMode);\n return fetchServerAction(request, true, singleFetch);\n }\n });\n });\n };\n } else {\n // If the lazy route does not have a client loader/action we want to call\n // the server loader/action in parallel with the module load so we add\n // loader/action as static props on the route\n if (!route.hasClientLoader) {\n dataRoute.loader = ({\n request\n }, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) return Promise.resolve(null);\n return fetchServerLoader(request, false, singleFetch);\n });\n }\n if (!route.hasClientAction) {\n dataRoute.action = ({\n request\n }, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(request, false, singleFetch);\n });\n }\n\n // Load all other modules via route.lazy()\n dataRoute.lazy = async () => {\n let mod = await loadRouteModuleWithBlockingLinks(route, routeModulesCache);\n let lazyRoute = {\n ...mod\n };\n if (mod.clientLoader) {\n let clientLoader = mod.clientLoader;\n lazyRoute.loader = (args, singleFetch) => clientLoader({\n ...args,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route, isSpaMode);\n return fetchServerLoader(args.request, true, singleFetch);\n }\n });\n }\n if (mod.clientAction) {\n let clientAction = mod.clientAction;\n lazyRoute.action = (args, singleFetch) => clientAction({\n ...args,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route, isSpaMode);\n return fetchServerAction(args.request, true, singleFetch);\n }\n });\n }\n if (needsRevalidation) {\n lazyRoute.shouldRevalidate = wrapShouldRevalidateForHdr(route.id, mod.shouldRevalidate, needsRevalidation);\n }\n return {\n ...(lazyRoute.loader ? {\n loader: lazyRoute.loader\n } : {}),\n ...(lazyRoute.action ? {\n action: lazyRoute.action\n } : {}),\n hasErrorBoundary: lazyRoute.hasErrorBoundary,\n shouldRevalidate: lazyRoute.shouldRevalidate,\n handle: lazyRoute.handle,\n // No need to wrap these in layout since the root route is never\n // loaded via route.lazy()\n Component: lazyRoute.Component,\n ErrorBoundary: lazyRoute.ErrorBoundary\n };\n };\n }\n let children = createClientRoutes(manifest, routeModulesCache, initialState, future, isSpaMode, route.id, routesByParentId, needsRevalidation);\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\n\n// When an HMR / HDR update happens we opt out of all user-defined\n// revalidation logic and force a revalidation on the first call\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n let handledRevalidation = false;\n return arg => {\n if (!handledRevalidation) {\n handledRevalidation = true;\n return needsRevalidation.has(routeId);\n }\n return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n let routeModule = await loadRouteModule(route, routeModules);\n await prefetchStyleLinks(route, routeModule);\n\n // Include all `browserSafeRouteExports` fields, except `HydrateFallback`\n // since those aren't used on lazily loaded routes\n return {\n Component: getRouteModuleComponent(routeModule),\n ErrorBoundary: routeModule.ErrorBoundary,\n clientAction: routeModule.clientAction,\n clientLoader: routeModule.clientLoader,\n handle: routeModule.handle,\n links: routeModule.links,\n meta: routeModule.meta,\n shouldRevalidate: routeModule.shouldRevalidate\n };\n}\nasync function fetchServerHandler(request, route) {\n let result = await fetchData(request, route.id);\n if (result instanceof Error) {\n throw result;\n }\n if (isRedirectResponse(result)) {\n throw getRedirect(result);\n }\n if (isCatchResponse(result)) {\n throw result;\n }\n if (isDeferredResponse(result) && result.body) {\n return await parseDeferredReadableStream(result.body);\n }\n return result;\n}\nfunction unwrapServerResponse(result) {\n if (isDeferredData(result)) {\n return result.data;\n }\n if (isResponse(result)) {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n return result.json();\n } else {\n return result.text();\n }\n }\n return result;\n}\nfunction getRedirect(response) {\n let status = parseInt(response.headers.get(\"X-Remix-Status\"), 10) || 302;\n let url = response.headers.get(\"X-Remix-Redirect\");\n let headers = {};\n let revalidate = response.headers.get(\"X-Remix-Revalidate\");\n if (revalidate) {\n headers[\"X-Remix-Revalidate\"] = revalidate;\n }\n let reloadDocument = response.headers.get(\"X-Remix-Reload-Document\");\n if (reloadDocument) {\n headers[\"X-Remix-Reload-Document\"] = reloadDocument;\n }\n let replace = response.headers.get(\"X-Remix-Replace\");\n if (replace) {\n headers[\"X-Remix-Replace\"] = replace;\n }\n return redirect(url, {\n status,\n headers\n });\n}\n\n// Our compiler generates the default export as `{}` when no default is provided,\n// which can lead us to trying to use that as a Component in RR and calling\n// createElement on it. Patching here as a quick fix and hoping it's no longer\n// an issue in Vite.\nfunction getRouteModuleComponent(routeModule) {\n if (routeModule.default == null) return undefined;\n let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n if (!isEmptyObject) {\n return routeModule.default;\n }\n}\nfunction shouldHydrateRouteLoader(route, routeModule, isSpaMode) {\n return isSpaMode && route.id !== \"root\" || routeModule.clientLoader != null && (routeModule.clientLoader.hydrate === true || route.hasLoader !== true);\n}\n\nexport { createClientRoutes, createClientRoutesWithHMRRevalidationOptOut, createServerRoutes, shouldHydrateRouteLoader };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { matchRoutes } from '@remix-run/router';\nimport * as React from 'react';\nimport { createClientRoutes } from './routes.js';\n\n// Currently rendered links that may need prefetching\nconst nextPaths = new Set();\n\n// FIFO queue of previously discovered routes to prevent re-calling on\n// subsequent navigations to the same path\nconst discoveredPathsMaxSize = 1000;\nconst discoveredPaths = new Set();\n\n// 7.5k to come in under the ~8k limit for most browsers\n// https://stackoverflow.com/a/417184\nconst URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(future, isSpaMode) {\n return future.unstable_lazyRouteDiscovery === true && !isSpaMode;\n}\nfunction getPartialManifest(manifest, router) {\n // Start with our matches for this pathname\n let routeIds = new Set(router.state.matches.map(m => m.route.id));\n let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n let paths = [\"/\"];\n\n // We've already matched to the last segment\n segments.pop();\n\n // Traverse each path for our parents and match in case they have pathless/index\n // children we need to include in the initial manifest\n while (segments.length > 0) {\n paths.push(`/${segments.join(\"/\")}`);\n segments.pop();\n }\n paths.forEach(path => {\n let matches = matchRoutes(router.routes, path, router.basename);\n if (matches) {\n matches.forEach(m => routeIds.add(m.route.id));\n }\n });\n let initialRoutes = [...routeIds].reduce((acc, id) => Object.assign(acc, {\n [id]: manifest.routes[id]\n }), {});\n return {\n ...manifest,\n routes: initialRoutes\n };\n}\nfunction getPatchRoutesOnNavigationFunction(manifest, routeModules, future, isSpaMode, basename) {\n if (!isFogOfWarEnabled(future, isSpaMode)) {\n return undefined;\n }\n return async ({\n path,\n patch\n }) => {\n if (discoveredPaths.has(path)) {\n return;\n }\n await fetchAndApplyManifestPatches([path], manifest, routeModules, future, isSpaMode, basename, patch);\n };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, future, isSpaMode) {\n React.useEffect(() => {\n var _navigator$connection;\n // Don't prefetch if not enabled or if the user has `saveData` enabled\n if (!isFogOfWarEnabled(future, isSpaMode) || ((_navigator$connection = navigator.connection) === null || _navigator$connection === void 0 ? void 0 : _navigator$connection.saveData) === true) {\n return;\n }\n\n // Register a link href for patching\n function registerElement(el) {\n let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n if (!path) {\n return;\n }\n let url = new URL(path, window.location.origin);\n if (!discoveredPaths.has(url.pathname)) {\n nextPaths.add(url.pathname);\n }\n }\n\n // Fetch patches for all currently rendered links\n async function fetchPatches() {\n let lazyPaths = Array.from(nextPaths.keys()).filter(path => {\n if (discoveredPaths.has(path)) {\n nextPaths.delete(path);\n return false;\n }\n return true;\n });\n if (lazyPaths.length === 0) {\n return;\n }\n try {\n await fetchAndApplyManifestPatches(lazyPaths, manifest, routeModules, future, isSpaMode, router.basename, router.patchRoutes);\n } catch (e) {\n console.error(\"Failed to fetch manifest patches\", e);\n }\n }\n\n // Register and fetch patches for all initially-rendered links/forms\n document.body.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(el => registerElement(el));\n fetchPatches();\n\n // Setup a MutationObserver to fetch all subsequently rendered links/forms\n let debouncedFetchPatches = debounce(fetchPatches, 100);\n function isElement(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n let observer = new MutationObserver(records => {\n let elements = new Set();\n records.forEach(r => {\n [r.target, ...r.addedNodes].forEach(node => {\n if (!isElement(node)) return;\n if (node.tagName === \"A\" && node.getAttribute(\"data-discover\")) {\n elements.add(node);\n } else if (node.tagName === \"FORM\" && node.getAttribute(\"data-discover\")) {\n elements.add(node);\n }\n if (node.tagName !== \"A\") {\n node.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(el => elements.add(el));\n }\n });\n });\n elements.forEach(el => registerElement(el));\n debouncedFetchPatches();\n });\n observer.observe(document.documentElement, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"data-discover\", \"href\", \"action\"]\n });\n return () => observer.disconnect();\n }, [future, isSpaMode, manifest, routeModules, router]);\n}\nasync function fetchAndApplyManifestPatches(paths, manifest, routeModules, future, isSpaMode, basename, patchRoutes) {\n let manifestPath = `${basename ?? \"/\"}/__manifest`.replace(/\\/+/g, \"/\");\n let url = new URL(manifestPath, window.location.origin);\n paths.sort().forEach(path => url.searchParams.append(\"p\", path));\n url.searchParams.set(\"version\", manifest.version);\n\n // If the URL is nearing the ~8k limit on GET requests, skip this optimization\n // step and just let discovery happen on link click. We also wipe out the\n // nextPaths Set here so we can start filling it with fresh links\n if (url.toString().length > URL_LIMIT) {\n nextPaths.clear();\n return;\n }\n let res = await fetch(url);\n if (!res.ok) {\n throw new Error(`${res.status} ${res.statusText}`);\n } else if (res.status >= 400) {\n throw new Error(await res.text());\n }\n let serverPatches = await res.json();\n\n // Patch routes we don't know about yet into the manifest\n let knownRoutes = new Set(Object.keys(manifest.routes));\n let patches = Object.values(serverPatches).reduce((acc, route) => !knownRoutes.has(route.id) ? Object.assign(acc, {\n [route.id]: route\n }) : acc, {});\n Object.assign(manifest.routes, patches);\n\n // Track discovered paths so we don't have to fetch them again\n paths.forEach(p => addToFifoQueue(p, discoveredPaths));\n\n // Identify all parentIds for which we have new children to add and patch\n // in their new children\n let parentIds = new Set();\n Object.values(patches).forEach(patch => {\n if (!patch.parentId || !patches[patch.parentId]) {\n parentIds.add(patch.parentId);\n }\n });\n parentIds.forEach(parentId => patchRoutes(parentId || null, createClientRoutes(patches, routeModules, null, future, isSpaMode, parentId)));\n}\nfunction addToFifoQueue(path, queue) {\n if (queue.size >= discoveredPathsMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n}\n\n// Thanks Josh!\n// https://www.joshwcomeau.com/snippets/javascript/debounce/\nfunction debounce(callback, wait) {\n let timeoutId;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => callback(...args), wait);\n };\n}\n\nexport { fetchAndApplyManifestPatches, getPartialManifest, getPatchRoutesOnNavigationFunction, isFogOfWarEnabled, useFogOFWarDiscovery };\n","/**\n * @remix-run/react v2.12.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport * as React from 'react';\nimport { useHref, NavLink as NavLink$1, Link as Link$1, Form as Form$1, matchRoutes, useLocation, Await as Await$1, useAsyncError, useMatches as useMatches$1, useLoaderData as useLoaderData$1, useRouteLoaderData as useRouteLoaderData$1, useActionData as useActionData$1, useFetcher as useFetcher$1, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext } from 'react-router-dom';\nimport invariant from './invariant.js';\nimport { getKeyedLinksForMatches, isPageLinkDescriptor, getNewMatchesForLinks, getDataLinkHrefs, getModuleLinkHrefs, getKeyedPrefetchLinks } from './links.js';\nimport { escapeHtml, createHtml } from './markup.js';\nimport { singleFetchUrl } from './single-fetch.js';\nimport { isFogOfWarEnabled, getPartialManifest } from './fog-of-war.js';\n\nfunction useDataRouterContext() {\n let context = React.useContext(UNSAFE_DataRouterContext);\n invariant(context, \"You must render this element inside a <DataRouterContext.Provider> element\");\n return context;\n}\nfunction useDataRouterStateContext() {\n let context = React.useContext(UNSAFE_DataRouterStateContext);\n invariant(context, \"You must render this element inside a <DataRouterStateContext.Provider> element\");\n return context;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RemixContext\n\nconst RemixContext = /*#__PURE__*/React.createContext(undefined);\nRemixContext.displayName = \"Remix\";\nfunction useRemixContext() {\n let context = React.useContext(RemixContext);\n invariant(context, \"You must render this element inside a <Remix> element\");\n return context;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Public API\n\n/**\n * Defines the discovery behavior of the link:\n *\n * - \"render\": Eagerly discover when the link is rendered (default)\n * - \"none\": No eager discovery - discover when the link is clicked\n */\n\n/**\n * Defines the prefetching behavior of the link:\n *\n * - \"none\": Never fetched\n * - \"intent\": Fetched when the user focuses or hovers the link\n * - \"render\": Fetched when the link is rendered\n * - \"viewport\": Fetched when the link is in the viewport\n */\n\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n let [maybePrefetch, setMaybePrefetch] = React.useState(false);\n let [shouldPrefetch, setShouldPrefetch] = React.useState(false);\n let {\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n onTouchStart\n } = theirElementProps;\n let ref = React.useRef(null);\n React.useEffect(() => {\n if (prefetch === \"render\") {\n setShouldPrefetch(true);\n }\n if (prefetch === \"viewport\") {\n let callback = entries => {\n entries.forEach(entry => {\n setShouldPrefetch(entry.isIntersecting);\n });\n };\n let observer = new IntersectionObserver(callback, {\n threshold: 0.5\n });\n if (ref.current) observer.observe(ref.current);\n return () => {\n observer.disconnect();\n };\n }\n }, [prefetch]);\n let setIntent = () => {\n if (prefetch === \"intent\") {\n setMaybePrefetch(true);\n }\n };\n let cancelIntent = () => {\n if (prefetch === \"intent\") {\n setMaybePrefetch(false);\n setShouldPrefetch(false);\n }\n };\n React.useEffect(() => {\n if (maybePrefetch) {\n let id = setTimeout(() => {\n setShouldPrefetch(true);\n }, 100);\n return () => {\n clearTimeout(id);\n };\n }\n }, [maybePrefetch]);\n return [shouldPrefetch, ref, {\n onFocus: composeEventHandlers(onFocus, setIntent),\n onBlur: composeEventHandlers(onBlur, cancelIntent),\n onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n }];\n}\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nfunction getDiscoverAttr(discover, isAbsolute, reloadDocument) {\n return discover === \"render\" && !isAbsolute && !reloadDocument ? \"true\" : undefined;\n}\n\n/**\n * A special kind of `<Link>` that knows whether it is \"active\".\n *\n * @see https://remix.run/components/nav-link\n */\nlet NavLink = /*#__PURE__*/React.forwardRef(({\n to,\n prefetch = \"none\",\n discover = \"render\",\n ...props\n}, forwardedRef) => {\n let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to);\n let href = useHref(to);\n let [shouldPrefetch, ref, prefetchHandlers] = usePrefetchBehavior(prefetch, props);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NavLink$1, _extends({}, props, prefetchHandlers, {\n ref: mergeRefs(forwardedRef, ref),\n to: to,\n \"data-discover\": getDiscoverAttr(discover, isAbsolute, props.reloadDocument)\n })), shouldPrefetch && !isAbsolute ? /*#__PURE__*/React.createElement(PrefetchPageLinks, {\n page: href\n }) : null);\n});\nNavLink.displayName = \"NavLink\";\n\n/**\n * This component renders an anchor tag and is the primary way the user will\n * navigate around your website.\n *\n * @see https://remix.run/components/link\n */\nlet Link = /*#__PURE__*/React.forwardRef(({\n to,\n prefetch = \"none\",\n discover = \"render\",\n ...props\n}, forwardedRef) => {\n let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to);\n let href = useHref(to);\n let [shouldPrefetch, ref, prefetchHandlers] = usePrefetchBehavior(prefetch, props);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Link$1, _extends({}, props, prefetchHandlers, {\n ref: mergeRefs(forwardedRef, ref),\n to: to,\n \"data-discover\": getDiscoverAttr(discover, isAbsolute, props.reloadDocument)\n })), shouldPrefetch && !isAbsolute ? /*#__PURE__*/React.createElement(PrefetchPageLinks, {\n page: href\n }) : null);\n});\nLink.displayName = \"Link\";\n/**\n * This component renders a form tag and is the primary way the user will\n * submit information via your website.\n *\n * @see https://remix.run/components/form\n */\nlet Form = /*#__PURE__*/React.forwardRef(({\n discover = \"render\",\n ...props\n}, forwardedRef) => {\n let isAbsolute = typeof props.action === \"string\" && ABSOLUTE_URL_REGEX.test(props.action);\n return /*#__PURE__*/React.createElement(Form$1, _extends({}, props, {\n ref: forwardedRef,\n \"data-discover\": getDiscoverAttr(discover, isAbsolute, props.reloadDocument)\n }));\n});\nForm.displayName = \"Form\";\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return event => {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\n\n// Return the matches actively being displayed:\n// - In SPA Mode we only SSR/hydrate the root match, and include all matches\n// after hydration. This lets the router handle initial match loads via lazy().\n// - When an error boundary is rendered, we slice off matches up to the\n// boundary for <Links>/<Meta>\nfunction getActiveMatches(matches, errors, isSpaMode) {\n if (isSpaMode && !isHydrated) {\n return [matches[0]];\n }\n if (errors) {\n let errorIdx = matches.findIndex(m => errors[m.route.id] !== undefined);\n return matches.slice(0, errorIdx + 1);\n }\n return matches;\n}\n\n/**\n * Renders the `<link>` tags for the current routes.\n *\n * @see https://remix.run/components/links\n */\nfunction Links() {\n let {\n isSpaMode,\n manifest,\n routeModules,\n criticalCss\n } = useRemixContext();\n let {\n errors,\n matches: routerMatches\n } = useDataRouterStateContext();\n let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let keyedLinks = React.useMemo(() => getKeyedLinksForMatches(matches, routeModules, manifest), [matches, routeModules, manifest]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, criticalCss ? /*#__PURE__*/React.createElement(\"style\", {\n dangerouslySetInnerHTML: {\n __html: criticalCss\n }\n }) : null, keyedLinks.map(({\n key,\n link\n }) => isPageLinkDescriptor(link) ? /*#__PURE__*/React.createElement(PrefetchPageLinks, _extends({\n key: key\n }, link)) : /*#__PURE__*/React.createElement(\"link\", _extends({\n key: key\n }, link))));\n}\n\n/**\n * This component renders all the `<link rel=\"prefetch\">` and\n * `<link rel=\"modulepreload\"/>` tags for all the assets (data, modules, css) of\n * a given page.\n *\n * @param props\n * @param props.page\n * @see https://remix.run/components/prefetch-page-links\n */\nfunction PrefetchPageLinks({\n page,\n ...dataLinkProps\n}) {\n let {\n router\n } = useDataRouterContext();\n let matches = React.useMemo(() => matchRoutes(router.routes, page, router.basename), [router.routes, page, router.basename]);\n if (!matches) {\n console.warn(`Tried to prefetch ${page} but no routes matched.`);\n return null;\n }\n return /*#__PURE__*/React.createElement(PrefetchPageLinksImpl, _extends({\n page: page,\n matches: matches\n }, dataLinkProps));\n}\nfunction useKeyedPrefetchLinks(matches) {\n let {\n manifest,\n routeModules\n } = useRemixContext();\n let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React.useState([]);\n React.useEffect(() => {\n let interrupted = false;\n void getKeyedPrefetchLinks(matches, manifest, routeModules).then(links => {\n if (!interrupted) {\n setKeyedPrefetchLinks(links);\n }\n });\n return () => {\n interrupted = true;\n };\n }, [matches, manifest, routeModules]);\n return keyedPrefetchLinks;\n}\nfunction PrefetchPageLinksImpl({\n page,\n matches: nextMatches,\n ...linkProps\n}) {\n let location = useLocation();\n let {\n future,\n manifest,\n routeModules\n } = useRemixContext();\n let {\n loaderData,\n matches\n } = useDataRouterStateContext();\n let newMatchesForData = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, manifest, location, \"data\"), [page, nextMatches, matches, manifest, location]);\n let dataHrefs = React.useMemo(() => {\n if (!future.unstable_singleFetch) {\n return getDataLinkHrefs(page, newMatchesForData, manifest);\n }\n if (page === location.pathname + location.search + location.hash) {\n // Because we opt-into revalidation, don't compute this for the current page\n // since it would always trigger a prefetch of the existing loaders\n return [];\n }\n\n // Single-fetch is harder :)\n // This parallels the logic in the single fetch data strategy\n let routesParams = new Set();\n let foundOptOutRoute = false;\n nextMatches.forEach(m => {\n var _routeModules$m$route;\n if (!manifest.routes[m.route.id].hasLoader) {\n return;\n }\n if (!newMatchesForData.some(m2 => m2.route.id === m.route.id) && m.route.id in loaderData && (_routeModules$m$route = routeModules[m.route.id]) !== null && _routeModules$m$route !== void 0 && _routeModules$m$route.shouldRevalidate) {\n foundOptOutRoute = true;\n } else if (manifest.routes[m.route.id].hasClientLoader) {\n foundOptOutRoute = true;\n } else {\n routesParams.add(m.route.id);\n }\n });\n if (routesParams.size === 0) {\n return [];\n }\n let url = singleFetchUrl(page);\n // When one or more routes have opted out, we add a _routes param to\n // limit the loaders to those that have a server loader and did not\n // opt out\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\"_routes\", nextMatches.filter(m => routesParams.has(m.route.id)).map(m => m.route.id).join(\",\"));\n }\n return [url.pathname + url.search];\n }, [future.unstable_singleFetch, loaderData, location, manifest, newMatchesForData, nextMatches, page, routeModules]);\n let newMatchesForAssets = React.useMemo(() => getNewMatchesForLinks(page, nextMatches, matches, manifest, location, \"assets\"), [page, nextMatches, matches, manifest, location]);\n let moduleHrefs = React.useMemo(() => getModuleLinkHrefs(newMatchesForAssets, manifest), [newMatchesForAssets, manifest]);\n\n // needs to be a hook with async behavior because we need the modules, not\n // just the manifest like the other links in here.\n let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n return /*#__PURE__*/React.createElement(React.Fragment, null, dataHrefs.map(href => /*#__PURE__*/React.createElement(\"link\", _extends({\n key: href,\n rel: \"prefetch\",\n as: \"fetch\",\n href: href\n }, linkProps))), moduleHrefs.map(href => /*#__PURE__*/React.createElement(\"link\", _extends({\n key: href,\n rel: \"modulepreload\",\n href: href\n }, linkProps))), keyedPrefetchLinks.map(({\n key,\n link\n }) =>\n /*#__PURE__*/\n // these don't spread `linkProps` because they are full link descriptors\n // already with their own props\n React.createElement(\"link\", _extends({\n key: key\n }, link))));\n}\n\n/**\n * Renders HTML tags related to metadata for the current route.\n *\n * @see https://remix.run/components/meta\n */\nfunction Meta() {\n let {\n isSpaMode,\n routeModules\n } = useRemixContext();\n let {\n errors,\n matches: routerMatches,\n loaderData\n } = useDataRouterStateContext();\n let location = useLocation();\n let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let error = null;\n if (errors) {\n error = errors[_matches[_matches.length - 1].route.id];\n }\n let meta = [];\n let leafMeta = null;\n let matches = [];\n for (let i = 0; i < _matches.length; i++) {\n let _match = _matches[i];\n let routeId = _match.route.id;\n let data = loaderData[routeId];\n let params = _match.params;\n let routeModule = routeModules[routeId];\n let routeMeta = [];\n let match = {\n id: routeId,\n data,\n meta: [],\n params: _match.params,\n pathname: _match.pathname,\n handle: _match.route.handle,\n error\n };\n matches[i] = match;\n if (routeModule !== null && routeModule !== void 0 && routeModule.meta) {\n routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n data,\n params,\n location,\n matches,\n error\n }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n } else if (leafMeta) {\n // We only assign the route's meta to the nearest leaf if there is no meta\n // export in the route. The meta function may return a falsy value which\n // is effectively the same as an empty array.\n routeMeta = [...leafMeta];\n }\n routeMeta = routeMeta || [];\n if (!Array.isArray(routeMeta)) {\n throw new Error(\"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must \" + \"return an array of meta objects.\" + \"\\n\\nTo reference the meta function API, see https://remix.run/route/meta\");\n }\n match.meta = routeMeta;\n matches[i] = match;\n meta = [...routeMeta];\n leafMeta = meta;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, meta.flat().map(metaProps => {\n if (!metaProps) {\n return null;\n }\n if (\"tagName\" in metaProps) {\n let {\n tagName,\n ...rest\n } = metaProps;\n if (!isValidMetaTag(tagName)) {\n console.warn(`A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`);\n return null;\n }\n let Comp = tagName;\n return /*#__PURE__*/React.createElement(Comp, _extends({\n key: JSON.stringify(rest)\n }, rest));\n }\n if (\"title\" in metaProps) {\n return /*#__PURE__*/React.createElement(\"title\", {\n key: \"title\"\n }, String(metaProps.title));\n }\n if (\"charset\" in metaProps) {\n metaProps.charSet ??= metaProps.charset;\n delete metaProps.charset;\n }\n if (\"charSet\" in metaProps && metaProps.charSet != null) {\n return typeof metaProps.charSet === \"string\" ? /*#__PURE__*/React.createElement(\"meta\", {\n key: \"charSet\",\n charSet: metaProps.charSet\n }) : null;\n }\n if (\"script:ld+json\" in metaProps) {\n try {\n let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n return /*#__PURE__*/React.createElement(\"script\", {\n key: `script:ld+json:${json}`,\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: {\n __html: json\n }\n });\n } catch (err) {\n return null;\n }\n }\n return /*#__PURE__*/React.createElement(\"meta\", _extends({\n key: JSON.stringify(metaProps)\n }, metaProps));\n }));\n}\nfunction isValidMetaTag(tagName) {\n return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nfunction Await(props) {\n return /*#__PURE__*/React.createElement(Await$1, props);\n}\n\n/**\n * Tracks whether Remix has finished hydrating or not, so scripts can be skipped\n * during client-side updates.\n */\nlet isHydrated = false;\n/**\n * Renders the `<script>` tags needed for the initial render. Bundles for\n * additional routes are loaded later as needed.\n *\n * @param props Additional properties to add to each script tag that is rendered.\n * In addition to scripts, \\<link rel=\"modulepreload\"> tags receive the crossOrigin\n * property if provided.\n *\n * @see https://remix.run/components/scripts\n */\nfunction Scripts(props) {\n let {\n manifest,\n serverHandoffString,\n abortDelay,\n serializeError,\n isSpaMode,\n future,\n renderMeta\n } = useRemixContext();\n let {\n router,\n static: isStatic,\n staticContext\n } = useDataRouterContext();\n let {\n matches: routerMatches\n } = useDataRouterStateContext();\n let enableFogOfWar = isFogOfWarEnabled(future, isSpaMode);\n\n // Let <RemixServer> know that we hydrated and we should render the single\n // fetch streaming scripts\n if (renderMeta) {\n renderMeta.didRenderScripts = true;\n }\n let matches = getActiveMatches(routerMatches, null, isSpaMode);\n React.useEffect(() => {\n isHydrated = true;\n }, []);\n let serializePreResolvedErrorImp = (key, error) => {\n let toSerialize;\n if (serializeError && error instanceof Error) {\n toSerialize = serializeError(error);\n } else {\n toSerialize = error;\n }\n return `${JSON.stringify(key)}:__remixContext.p(!1, ${escapeHtml(JSON.stringify(toSerialize))})`;\n };\n let serializePreresolvedDataImp = (routeId, key, data) => {\n let serializedData;\n try {\n serializedData = JSON.stringify(data);\n } catch (error) {\n return serializePreResolvedErrorImp(key, error);\n }\n return `${JSON.stringify(key)}:__remixContext.p(${escapeHtml(serializedData)})`;\n };\n let serializeErrorImp = (routeId, key, error) => {\n let toSerialize;\n if (serializeError && error instanceof Error) {\n toSerialize = serializeError(error);\n } else {\n toSerialize = error;\n }\n return `__remixContext.r(${JSON.stringify(routeId)}, ${JSON.stringify(key)}, !1, ${escapeHtml(JSON.stringify(toSerialize))})`;\n };\n let serializeDataImp = (routeId, key, data) => {\n let serializedData;\n try {\n serializedData = JSON.stringify(data);\n } catch (error) {\n return serializeErrorImp(routeId, key, error);\n }\n return `__remixContext.r(${JSON.stringify(routeId)}, ${JSON.stringify(key)}, ${escapeHtml(serializedData)})`;\n };\n let deferredScripts = [];\n let initialScripts = React.useMemo(() => {\n var _manifest$hmr;\n let streamScript = future.unstable_singleFetch ?\n // prettier-ignore\n \"window.__remixContext.stream = new ReadableStream({\" + \"start(controller){\" + \"window.__remixContext.streamController = controller;\" + \"}\" + \"}).pipeThrough(new TextEncoderStream());\" : \"\";\n let contextScript = staticContext ? `window.__remixContext = ${serverHandoffString};${streamScript}` : \" \";\n\n // When single fetch is enabled, deferred is handled by turbo-stream\n let activeDeferreds = future.unstable_singleFetch ? undefined : staticContext === null || staticContext === void 0 ? void 0 : staticContext.activeDeferreds;\n\n // This sets up the __remixContext with utility functions used by the\n // deferred scripts.\n // - __remixContext.p is a function that takes a resolved value or error and returns a promise.\n // This is used for transmitting pre-resolved promises from the server to the client.\n // - __remixContext.n is a function that takes a routeID and key to returns a promise for later\n // resolution by the subsequently streamed chunks.\n // - __remixContext.r is a function that takes a routeID, key and value or error and resolves\n // the promise created by __remixContext.n.\n // - __remixContext.t is a map or routeId to keys to an object containing `e` and `r` methods\n // to resolve or reject the promise created by __remixContext.n.\n // - __remixContext.a is the active number of deferred scripts that should be rendered to match\n // the SSR tree for hydration on the client.\n contextScript += !activeDeferreds ? \"\" : [\"__remixContext.p = function(v,e,p,x) {\", \" if (typeof e !== 'undefined') {\", process.env.NODE_ENV === \"development\" ? \" x=new Error(e.message);\\n x.stack=e.stack;\" : ' x=new Error(\"Unexpected Server Error\");\\n x.stack=undefined;', \" p=Promise.reject(x);\", \" } else {\", \" p=Promise.resolve(v);\", \" }\", \" return p;\", \"};\", \"__remixContext.n = function(i,k) {\", \" __remixContext.t = __remixContext.t || {};\", \" __remixContext.t[i] = __remixContext.t[i] || {};\", \" let p = new Promise((r, e) => {__remixContext.t[i][k] = {r:(v)=>{r(v);},e:(v)=>{e(v);}};});\", typeof abortDelay === \"number\" ? `setTimeout(() => {if(typeof p._error !== \"undefined\" || typeof p._data !== \"undefined\"){return;} __remixContext.t[i][k].e(new Error(\"Server timeout.\"))}, ${abortDelay});` : \"\", \" return p;\", \"};\", \"__remixContext.r = function(i,k,v,e,p,x) {\", \" p = __remixContext.t[i][k];\", \" if (typeof e !== 'undefined') {\", process.env.NODE_ENV === \"development\" ? \" x=new Error(e.message);\\n x.stack=e.stack;\" : ' x=new Error(\"Unexpected Server Error\");\\n x.stack=undefined;', \" p.e(x);\", \" } else {\", \" p.r(v);\", \" }\", \"};\"].join(\"\\n\") + Object.entries(activeDeferreds).map(([routeId, deferredData]) => {\n let pendingKeys = new Set(deferredData.pendingKeys);\n let promiseKeyValues = deferredData.deferredKeys.map(key => {\n if (pendingKeys.has(key)) {\n deferredScripts.push( /*#__PURE__*/React.createElement(DeferredHydrationScript, {\n key: `${routeId} | ${key}`,\n deferredData: deferredData,\n routeId: routeId,\n dataKey: key,\n scriptProps: props,\n serializeData: serializeDataImp,\n serializeError: serializeErrorImp\n }));\n return `${JSON.stringify(key)}:__remixContext.n(${JSON.stringify(routeId)}, ${JSON.stringify(key)})`;\n } else {\n let trackedPromise = deferredData.data[key];\n if (typeof trackedPromise._error !== \"undefined\") {\n return serializePreResolvedErrorImp(key, trackedPromise._error);\n } else {\n return serializePreresolvedDataImp(routeId, key, trackedPromise._data);\n }\n }\n }).join(\",\\n\");\n return `Object.assign(__remixContext.state.loaderData[${JSON.stringify(routeId)}], {${promiseKeyValues}});`;\n }).join(\"\\n\") + (deferredScripts.length > 0 ? `__remixContext.a=${deferredScripts.length};` : \"\");\n let routeModulesScript = !isStatic ? \" \" : `${(_manifest$hmr = manifest.hmr) !== null && _manifest$hmr !== void 0 && _manifest$hmr.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${enableFogOfWar ? \"\" : `import ${JSON.stringify(manifest.url)}`};\n${matches.map((match, index) => `import * as route${index} from ${JSON.stringify(manifest.routes[match.route.id].module)};`).join(\"\\n\")}\n${enableFogOfWar ?\n // Inline a minimal manifest with the SSR matches\n `window.__remixManifest = ${JSON.stringify(getPartialManifest(manifest, router), null, 2)};` : \"\"}\nwindow.__remixRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"script\", _extends({}, props, {\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: createHtml(contextScript),\n type: undefined\n })), /*#__PURE__*/React.createElement(\"script\", _extends({}, props, {\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: createHtml(routeModulesScript),\n type: \"module\",\n async: true\n })));\n // disabled deps array because we are purposefully only rendering this once\n // for hydration, after that we want to just continue rendering the initial\n // scripts as they were when the page first loaded\n // eslint-disable-next-line\n }, []);\n if (!isStatic && typeof __remixContext === \"object\" && __remixContext.a) {\n for (let i = 0; i < __remixContext.a; i++) {\n deferredScripts.push( /*#__PURE__*/React.createElement(DeferredHydrationScript, {\n key: i,\n scriptProps: props,\n serializeData: serializeDataImp,\n serializeError: serializeErrorImp\n }));\n }\n }\n let routePreloads = matches.map(match => {\n let route = manifest.routes[match.route.id];\n return (route.imports || []).concat([route.module]);\n }).flat(1);\n let preloads = isHydrated ? [] : manifest.entry.imports.concat(routePreloads);\n return isHydrated ? null : /*#__PURE__*/React.createElement(React.Fragment, null, !enableFogOfWar ? /*#__PURE__*/React.createElement(\"link\", {\n rel: \"modulepreload\",\n href: manifest.url,\n crossOrigin: props.crossOrigin\n }) : null, /*#__PURE__*/React.createElement(\"link\", {\n rel: \"modulepreload\",\n href: manifest.entry.module,\n crossOrigin: props.crossOrigin\n }), dedupe(preloads).map(path => /*#__PURE__*/React.createElement(\"link\", {\n key: path,\n rel: \"modulepreload\",\n href: path,\n crossOrigin: props.crossOrigin\n })), initialScripts, deferredScripts);\n}\nfunction DeferredHydrationScript({\n dataKey,\n deferredData,\n routeId,\n scriptProps,\n serializeData,\n serializeError\n}) {\n if (typeof document === \"undefined\" && deferredData && dataKey && routeId) {\n invariant(deferredData.pendingKeys.includes(dataKey), `Deferred data for route ${routeId} with key ${dataKey} was not pending but tried to render a script for it.`);\n }\n return /*#__PURE__*/React.createElement(React.Suspense, {\n fallback:\n // This makes absolutely no sense. The server renders null as a fallback,\n // but when hydrating, we need to render a script tag to avoid a hydration issue.\n // To reproduce a hydration mismatch, just render null as a fallback.\n typeof document === \"undefined\" && deferredData && dataKey && routeId ? null : /*#__PURE__*/React.createElement(\"script\", _extends({}, scriptProps, {\n async: true,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: \" \"\n }\n }))\n }, typeof document === \"undefined\" && deferredData && dataKey && routeId ? /*#__PURE__*/React.createElement(Await, {\n resolve: deferredData.data[dataKey],\n errorElement: /*#__PURE__*/React.createElement(ErrorDeferredHydrationScript, {\n dataKey: dataKey,\n routeId: routeId,\n scriptProps: scriptProps,\n serializeError: serializeError\n }),\n children: data => {\n return /*#__PURE__*/React.createElement(\"script\", _extends({}, scriptProps, {\n async: true,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: serializeData(routeId, dataKey, data)\n }\n }));\n }\n }) : /*#__PURE__*/React.createElement(\"script\", _extends({}, scriptProps, {\n async: true,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: \" \"\n }\n })));\n}\nfunction ErrorDeferredHydrationScript({\n dataKey,\n routeId,\n scriptProps,\n serializeError\n}) {\n let error = useAsyncError();\n return /*#__PURE__*/React.createElement(\"script\", _extends({}, scriptProps, {\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: serializeError(routeId, dataKey, error)\n }\n }));\n}\nfunction dedupe(array) {\n return [...new Set(array)];\n}\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n *\n * @see https://remix.run/hooks/use-matches\n */\nfunction useMatches() {\n return useMatches$1();\n}\n\n/**\n * Returns the JSON parsed data from the current route's `loader`.\n *\n * @see https://remix.run/hooks/use-loader-data\n */\nfunction useLoaderData() {\n return useLoaderData$1();\n}\n\n/**\n * Returns the loaderData for the given routeId.\n *\n * @see https://remix.run/hooks/use-route-loader-data\n */\nfunction useRouteLoaderData(routeId) {\n return useRouteLoaderData$1(routeId);\n}\n\n/**\n * Returns the JSON parsed data from the current route's `action`.\n *\n * @see https://remix.run/hooks/use-action-data\n */\nfunction useActionData() {\n return useActionData$1();\n}\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n *\n * @see https://remix.run/hooks/use-fetcher\n */\nfunction useFetcher(opts = {}) {\n return useFetcher$1(opts);\n}\n\n/**\n * This component connects your app to the Remix asset server and\n * automatically reloads the page when files change in development.\n * In production, it renders null, so you can safely render it always in your root route.\n *\n * @see https://remix.run/docs/components/live-reload\n */\nconst LiveReload =\n// Dead Code Elimination magic for production builds.\n// This way devs don't have to worry about doing the NODE_ENV check themselves.\nprocess.env.NODE_ENV !== \"development\" ? () => null : function LiveReload({\n origin,\n port,\n timeoutMs = 1000,\n nonce = undefined\n}) {\n // @ts-expect-error\n let isViteClient = import.meta && import.meta.env !== undefined;\n if (isViteClient) {\n console.warn([\"`<LiveReload />` is obsolete when using Vite and can conflict with Vite's built-in HMR runtime.\", \"\", \"Remove `<LiveReload />` from your code and instead only use `<Scripts />`.\", \"Then refresh the page to remove lingering scripts from `<LiveReload />`.\"].join(\"\\n\"));\n return null;\n }\n origin ??= process.env.REMIX_DEV_ORIGIN;\n let js = String.raw;\n return /*#__PURE__*/React.createElement(\"script\", {\n nonce: nonce,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: js`\n function remixLiveReloadConnect(config) {\n let LIVE_RELOAD_ORIGIN = ${JSON.stringify(origin)};\n let protocol =\n LIVE_RELOAD_ORIGIN ? new URL(LIVE_RELOAD_ORIGIN).protocol.replace(/^http/, \"ws\") :\n location.protocol === \"https:\" ? \"wss:\" : \"ws:\"; // remove in v2?\n let hostname = LIVE_RELOAD_ORIGIN ? new URL(LIVE_RELOAD_ORIGIN).hostname : location.hostname;\n let url = new URL(protocol + \"//\" + hostname + \"/socket\");\n\n url.port =\n ${port} ||\n (LIVE_RELOAD_ORIGIN ? new URL(LIVE_RELOAD_ORIGIN).port : 8002);\n\n let ws = new WebSocket(url.href);\n ws.onmessage = async (message) => {\n let event = JSON.parse(message.data);\n if (event.type === \"LOG\") {\n console.log(event.message);\n }\n if (event.type === \"RELOAD\") {\n console.log(\"💿 Reloading window ...\");\n window.location.reload();\n }\n if (event.type === \"HMR\") {\n if (!window.__hmr__ || !window.__hmr__.contexts) {\n console.log(\"💿 [HMR] No HMR context, reloading window ...\");\n window.location.reload();\n return;\n }\n if (!event.updates || !event.updates.length) return;\n let updateAccepted = false;\n let needsRevalidation = new Set();\n for (let update of event.updates) {\n console.log(\"[HMR] \" + update.reason + \" [\" + update.id +\"]\")\n if (update.revalidate) {\n needsRevalidation.add(update.routeId);\n console.log(\"[HMR] Revalidating [\" + update.routeId + \"]\");\n }\n let imported = await import(update.url + '?t=' + event.assetsManifest.hmr.timestamp);\n if (window.__hmr__.contexts[update.id]) {\n let accepted = window.__hmr__.contexts[update.id].emit(\n imported\n );\n if (accepted) {\n console.log(\"[HMR] Update accepted by\", update.id);\n updateAccepted = true;\n }\n }\n }\n if (event.assetsManifest && window.__hmr__.contexts[\"remix:manifest\"]) {\n let accepted = window.__hmr__.contexts[\"remix:manifest\"].emit(\n { needsRevalidation, assetsManifest: event.assetsManifest }\n );\n if (accepted) {\n console.log(\"[HMR] Update accepted by\", \"remix:manifest\");\n updateAccepted = true;\n }\n }\n if (!updateAccepted) {\n console.log(\"[HMR] Update rejected, reloading...\");\n window.location.reload();\n }\n }\n };\n ws.onopen = () => {\n if (config && typeof config.onOpen === \"function\") {\n config.onOpen();\n }\n };\n ws.onclose = (event) => {\n if (event.code === 1006) {\n console.log(\"Remix dev asset server web socket closed. Reconnecting...\");\n setTimeout(\n () =>\n remixLiveReloadConnect({\n onOpen: () => window.location.reload(),\n }),\n ${String(timeoutMs)}\n );\n }\n };\n ws.onerror = (error) => {\n console.log(\"Remix dev asset server web socket error:\");\n console.error(error);\n };\n }\n remixLiveReloadConnect();\n `\n }\n });\n};\nfunction mergeRefs(...refs) {\n return value => {\n refs.forEach(ref => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nexport { Await, Form, Link, Links, LiveReload, Meta, NavLink, PrefetchPageLinks, RemixContext, Scripts, composeEventHandlers, useActionData, useFetcher, useLoaderData, useMatches, useRemixContext, useRouteLoaderData };\n"],"names":["React","require$$0","formatProdErrorMessage","code","url","i","noop","Internals","REACT_PORTAL_TYPE","createPortal$1","children","containerInfo","implementation","key","ReactSharedInternals","getCrossOriginStringAs","as","input","reactDom_production","container","fn","previousTransition","previousUpdatePriority","href","options","crossOrigin","integrity","fetchPriority","form","a","action","initialState","permalink","checkDCE","err","reactDomModule","_extends","target","source","_objectWithoutPropertiesLoose","excluded","sourceKeys","defaultMethod","defaultEncType","isHtmlElement","object","isButtonElement","isFormElement","isInputElement","isModifiedEvent","event","shouldProcessLinkClick","createSearchParams","init","memo","value","v","getSearchParamsForLocation","locationSearch","defaultSearchParams","searchParams","_","_formDataSupportsSubmitter","isFormDataSubmitterSupported","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","basename","method","formData","body","attr","stripBasename","name","type","prefix","_excluded","_excluded2","_excluded3","REACT_ROUTER_VERSION","ViewTransitionContext","FetchersContext","React.createContext","START_TRANSITION","startTransitionImpl","FLUSH_SYNC","flushSyncImpl","ReactDOM","USE_ID","useIdImpl","startTransitionSafe","cb","flushSyncSafe","Deferred$1","resolve","reject","reason","RouterProvider","_ref","fallbackElement","router","future","state","setStateImpl","React.useState","pendingState","setPendingState","vtContext","setVtContext","renderDfd","setRenderDfd","transition","setTransition","interruption","setInterruption","fetcherData","React.useRef","v7_startTransition","optInStartTransition","React.useCallback","setState","newState","_ref2","deletedFetchers","flushSync","viewTransitionOpts","fetcher","isViewTransitionUnavailable","t","React.useLayoutEffect","React.useEffect","Deferred","renderPromise","navigator","React.useMemo","n","to","opts","dataRouterContext","routerFuture","React.createElement","React.Fragment","UNSAFE_DataRouterContext","UNSAFE_DataRouterStateContext","Router","MemoizedDataRoutes","React.memo","DataRoutes","_ref3","routes","UNSAFE_useRoutesImpl","isBrowser","ABSOLUTE_URL_REGEX","Link","React.forwardRef","_ref7","ref","onClick","relative","reloadDocument","replace","preventScrollReset","unstable_viewTransition","rest","React.useContext","UNSAFE_NavigationContext","absoluteHref","isExternal","currentUrl","targetUrl","path","useHref","internalOnClick","useLinkClickHandler","handleClick","NavLink","_ref8","ariaCurrentProp","caseSensitive","classNameProp","end","styleProp","useResolvedPath","location","useLocation","routerState","isTransitioning","useViewTransitionState","toPathname","locationPathname","nextLocationPathname","endSlashPosition","isActive","isPending","renderProps","ariaCurrent","className","style","Form","_ref9","forwardedRef","fetcherKey","navigate","onSubmit","props","submit","useSubmit","formAction","useFormAction","formMethod","submitHandler","submitter","submitMethod","DataRouterHook","DataRouterStateHook","useDataRouterContext","hookName","ctx","UNSAFE_invariant","useDataRouterState","_temp","replaceProp","useNavigate","createPath","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","setSearchParams","nextInit","navigateOptions","newSearchParams","validateClientSideSubmission","fetcherId","getUniqueFetcherId","currentRouteId","UNSAFE_useRouteId","_temp2","routeContext","UNSAFE_RouteContext","match","params","joinPaths","useFetcher","_temp3","_route$matches","route","routeId","defaultKey","setFetcherKey","load","submitImpl","FetcherForm","IDLE_FETCHER","data","useFetchers","_ref11","SCROLL_RESTORATION_STORAGE_KEY","savedScrollPositions","useScrollRestoration","_temp4","getKey","storageKey","restoreScrollPosition","matches","useMatches","navigation","useNavigation","usePageHide","sessionPositions","getKeyWithoutBasename","disableScrollRestoration","el","callback","capture","currentPath","nextPath","matchPath","HOLE","NAN","NEGATIVE_INFINITY","NEGATIVE_ZERO","NULL","POSITIVE_INFINITY","UNDEFINED","TYPE_BIGINT","TYPE_DATE","TYPE_ERROR","TYPE_MAP","TYPE_NULL_OBJECT","TYPE_PROMISE","TYPE_REGEXP","TYPE_SET","TYPE_SYMBOL","TYPE_URL","TYPE_PREVIOUS_RESOLVED","__publicField","createLineSplittingTransform","decoder","leftover","chunk","controller","str","parts","part","globalObj","unflatten","parsed","hydrated","values","hydrate","startIndex","index","deferred","plugins","result","stack","postRun","index2","set","b","c","newSet","map","r","k","obj","d","message","errorType","error","vals","v2","plugin","result2","array","decode","readable","done","reader","decoded","decodeInitial","donePromise","decodeDeferred","read","line","colonIndex","deferredId","lineData","jsonLine","SingleFetchRedirectSymbol","invariant","loadRouteModule","routeModulesCache","routeModule","getKeyedLinksForMatches","routeModules","manifest","descriptors","_module$links","module","preloads","getCurrentPageModulePreloadHrefs","dedupeLinkDescriptors","prefetchStyleLinks","_route$css","_routeModule$links","isPreloadSupported","styleLinks","descriptor","isPageLinkDescriptor","matchingLinks","link","prefetchStyleLink","removeLink","isHtmlLinkDescriptor","getKeyedPrefetchLinks","links","mod","getNewMatchesForLinks","page","nextMatches","currentMatches","mode","parsePathPatch","isNew","matchPathChanged","_currentMatches$index","_currentMatches$","routeChoice","manifestRoute","getDataLinkHrefs","dedupeHrefs","pathname","search","getModuleLinkHrefs","manifestPatch","hrefs","sortKeys","sorted","keys","preloadsSet","deduped","parsePath","_isPreloadSupported","ESCAPE_LOOKUP","ESCAPE_REGEX","escapeHtml","html","createHtml","isCatchResponse","response","isErrorResponse","isNetworkErrorResponse","isResponse","isRedirectResponse","isDeferredResponse","_response$headers$get","isDeferredData","fetchData","request","retry","createRequestInit","revalidation","text","contentType","DEFERRED_VALUE_PLACEHOLDER_PREFIX","parseDeferredReadableStream","stream","deferredData","deferredResolvers","sectionReader","readStreamSections","initialSection","criticalData","eventKey","section","sectionDataStrings","sectionDataString","resolver","AbortedDeferredError","UNSAFE_DeferredData","buffer","sections","closed","encoder","readStreamSection","splitSections","mergeArrays","s","arrays","out","total","arr","offset","getSingleFetchDataStrategy","getRouter","singleFetchActionStrategy","singleFetchLoaderFetcherStrategy","singleFetchLoaderNavigationStrategy","actionMatch","m","actionStatus","handler","singleFetchUrl","status","fetchAndDecode","unwrapSingleFetchResult","isRouteErrorResponse","unstable_data","routesParams","foundOptOutRoute","routeDfds","createDeferred","routesLoadedPromise","singleFetchDfd","stripIndexParam","results","resolvePromise","_routeModules$m$route","fetchSingleLoader","e","unwrapSingleFetchResults","fetcherMatch","singleLoaderUrl","indexValues","indexValuesToKeep","indexValue","toKeep","reqUrl","res","decodeViaTurboStream","global","Constructor","statusText","UNSAFE_ErrorResponseImpl","UNSAFE_SingleFetchRedirectSymbol","redirect","headers","promise","rej","val","RemixErrorBoundary","React.Component","RemixRootDefaultErrorBoundary","isOutsideRemixApp","heyDeveloper","BoundaryShell","errorInstance","errorString","title","renderScripts","_routeModules$root","useRemixContext","Scripts","RemixRootDefaultHydrateFallback","groupRoutesByParentId","parentId","getRouteComponents","isSpaMode","Component","getRouteModuleComponent","HydrateFallback","ErrorBoundary","useRouteError","createClientRoutesWithHMRRevalidationOptOut","needsRevalidation","createClientRoutes","preventInvalidServerHandlerCall","msg","noActionDefinedError","article","routesByParentId","fetchServerHandlerAndMaybeUnwrap","unwrap","singleFetch","fetchServerHandler","unwrapServerResponse","fetchServerLoader","fetchServerAction","prefetchStylesAndCallHandler","cachedModule","linkPrefetchPromise","dataRoute","_initialState$loaderD","_initialState$errors","_routeModule$clientLo","wrapShouldRevalidateForHdr","initialData","initialError","isHydrationRequest","shouldHydrateRouteLoader","loadRouteModuleWithBlockingLinks","lazyRoute","clientLoader","args","clientAction","routeShouldRevalidate","handledRevalidation","arg","getRedirect","revalidate","nextPaths","discoveredPathsMaxSize","discoveredPaths","URL_LIMIT","isFogOfWarEnabled","getPartialManifest","routeIds","segments","paths","matchRoutes","initialRoutes","acc","id","getPatchRoutesOnNavigationFunction","patch","fetchAndApplyManifestPatches","useFogOFWarDiscovery","_navigator$connection","registerElement","fetchPatches","lazyPaths","debouncedFetchPatches","debounce","isElement","node","observer","records","elements","patchRoutes","manifestPath","serverPatches","knownRoutes","patches","p","addToFifoQueue","parentIds","queue","first","wait","timeoutId","context","useDataRouterStateContext","RemixContext","usePrefetchBehavior","prefetch","theirElementProps","maybePrefetch","setMaybePrefetch","shouldPrefetch","setShouldPrefetch","onFocus","onBlur","onMouseEnter","onMouseLeave","onTouchStart","entries","entry","setIntent","cancelIntent","composeEventHandlers","getDiscoverAttr","discover","isAbsolute","prefetchHandlers","NavLink$1","mergeRefs","PrefetchPageLinks","Link$1","Form$1","theirHandler","ourHandler","getActiveMatches","errors","isHydrated","errorIdx","Links","criticalCss","routerMatches","keyedLinks","dataLinkProps","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","linkProps","loaderData","newMatchesForData","dataHrefs","m2","newMatchesForAssets","moduleHrefs","Meta","_matches","meta","leafMeta","_match","routeMeta","metaProps","tagName","isValidMetaTag","Comp","json","Await","Await$1","serverHandoffString","abortDelay","serializeError","renderMeta","isStatic","staticContext","enableFogOfWar","serializePreResolvedErrorImp","toSerialize","serializePreresolvedDataImp","serializedData","serializeErrorImp","serializeDataImp","deferredScripts","initialScripts","_manifest$hmr","streamScript","contextScript","activeDeferreds","pendingKeys","promiseKeyValues","DeferredHydrationScript","trackedPromise","routeModulesScript","routePreloads","dedupe","dataKey","scriptProps","serializeData","React.Suspense","ErrorDeferredHydrationScript","useAsyncError","useLoaderData","useLoaderData$1","useRouteLoaderData","useRouteLoaderData$1","useFetcher$1","refs"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}