@epic-web/workshop-app 0.0.0-semantically-released

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 (305) hide show
  1. package/README.md +10 -0
  2. package/bin/epicshop.js +321 -0
  3. package/build/client/app-default.css +39 -0
  4. package/build/client/assets/_-C_7mS1-0.js +2 -0
  5. package/build/client/assets/_-C_7mS1-0.js.map +1 -0
  6. package/build/client/assets/_-l0sNRNKZ.js +2 -0
  7. package/build/client/assets/_-l0sNRNKZ.js.map +1 -0
  8. package/build/client/assets/_basePickBy-DxgDhkrj.js +2 -0
  9. package/build/client/assets/_basePickBy-DxgDhkrj.js.map +1 -0
  10. package/build/client/assets/_baseUniq-Bh4NktJz.js +2 -0
  11. package/build/client/assets/_baseUniq-Bh4NktJz.js.map +1 -0
  12. package/build/client/assets/_exerciseNumber-D3lfJewu.js +2 -0
  13. package/build/client/assets/_exerciseNumber-D3lfJewu.js.map +1 -0
  14. package/build/client/assets/_exerciseNumber_._stepNumber-BNj079sn.js +2 -0
  15. package/build/client/assets/_exerciseNumber_._stepNumber-BNj079sn.js.map +1 -0
  16. package/build/client/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js +2 -0
  17. package/build/client/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js.map +1 -0
  18. package/build/client/assets/_exerciseNumber_.finished-a6jXslNA.js +2 -0
  19. package/build/client/assets/_exerciseNumber_.finished-a6jXslNA.js.map +1 -0
  20. package/build/client/assets/_layout-B3FchrR9.js +2 -0
  21. package/build/client/assets/_layout-B3FchrR9.js.map +1 -0
  22. package/build/client/assets/_layout-B6ARVFTz.js +2 -0
  23. package/build/client/assets/_layout-B6ARVFTz.js.map +1 -0
  24. package/build/client/assets/_layout-CtqVeNw0.js +6 -0
  25. package/build/client/assets/_layout-CtqVeNw0.js.map +1 -0
  26. package/build/client/assets/_layout-dHfVo9gJ.js +2 -0
  27. package/build/client/assets/_layout-dHfVo9gJ.js.map +1 -0
  28. package/build/client/assets/accordion-PSsenYUI.js +2 -0
  29. package/build/client/assets/accordion-PSsenYUI.js.map +1 -0
  30. package/build/client/assets/account-Jl0f1Zst.js +2 -0
  31. package/build/client/assets/account-Jl0f1Zst.js.map +1 -0
  32. package/build/client/assets/api._-l0sNRNKZ.js +2 -0
  33. package/build/client/assets/api._-l0sNRNKZ.js.map +1 -0
  34. package/build/client/assets/app-CpF0K1cW.css +1 -0
  35. package/build/client/assets/app-CzIg9kJh.js +2 -0
  36. package/build/client/assets/app-CzIg9kJh.js.map +1 -0
  37. package/build/client/assets/app.epic_ws_.js_-l0sNRNKZ.js +2 -0
  38. package/build/client/assets/app.epic_ws_.js_-l0sNRNKZ.js.map +1 -0
  39. package/build/client/assets/apps-DP2rzg_V.js +2 -0
  40. package/build/client/assets/apps-DP2rzg_V.js.map +1 -0
  41. package/build/client/assets/apps-l0sNRNKZ.js +2 -0
  42. package/build/client/assets/apps-l0sNRNKZ.js.map +1 -0
  43. package/build/client/assets/arc-B6tHINqs.js +2 -0
  44. package/build/client/assets/arc-B6tHINqs.js.map +1 -0
  45. package/build/client/assets/architectureDiagram-NQ2NVSRB-D_wGZ5nT.js +37 -0
  46. package/build/client/assets/architectureDiagram-NQ2NVSRB-D_wGZ5nT.js.map +1 -0
  47. package/build/client/assets/blockDiagram-PHRCVELO-h_TbDJvl.js +123 -0
  48. package/build/client/assets/blockDiagram-PHRCVELO-h_TbDJvl.js.map +1 -0
  49. package/build/client/assets/button-cFpvwtjC.js +2 -0
  50. package/build/client/assets/button-cFpvwtjC.js.map +1 -0
  51. package/build/client/assets/c4Diagram-6F6E4RAY-BfXjadL9.js +11 -0
  52. package/build/client/assets/c4Diagram-6F6E4RAY-BfXjadL9.js.map +1 -0
  53. package/build/client/assets/cache-l0sNRNKZ.js +2 -0
  54. package/build/client/assets/cache-l0sNRNKZ.js.map +1 -0
  55. package/build/client/assets/channel-ClIoK57K.js +2 -0
  56. package/build/client/assets/channel-ClIoK57K.js.map +1 -0
  57. package/build/client/assets/chunk-353BL4L5-CExuR7H8.js +2 -0
  58. package/build/client/assets/chunk-353BL4L5-CExuR7H8.js.map +1 -0
  59. package/build/client/assets/chunk-67H74DCK-BF9_AOuB.js +2 -0
  60. package/build/client/assets/chunk-67H74DCK-BF9_AOuB.js.map +1 -0
  61. package/build/client/assets/chunk-6OLS64BW-B_GeRv1G.js +221 -0
  62. package/build/client/assets/chunk-6OLS64BW-B_GeRv1G.js.map +1 -0
  63. package/build/client/assets/chunk-AACKK3MU-BcoQc9Ht.js +2 -0
  64. package/build/client/assets/chunk-AACKK3MU-BcoQc9Ht.js.map +1 -0
  65. package/build/client/assets/chunk-BFAMUDN2-DBCLoV1m.js +2 -0
  66. package/build/client/assets/chunk-BFAMUDN2-DBCLoV1m.js.map +1 -0
  67. package/build/client/assets/chunk-E2GYISFI-DvCzOl_M.js +16 -0
  68. package/build/client/assets/chunk-E2GYISFI-DvCzOl_M.js.map +1 -0
  69. package/build/client/assets/chunk-QEP2MXWD-BA02qRA0.js +166 -0
  70. package/build/client/assets/chunk-QEP2MXWD-BA02qRA0.js.map +1 -0
  71. package/build/client/assets/chunk-QMGIS6GS-CG5cA6CX.js +44 -0
  72. package/build/client/assets/chunk-QMGIS6GS-CG5cA6CX.js.map +1 -0
  73. package/build/client/assets/chunk-SKB7J2MH-BG1nHV0M.js +2 -0
  74. package/build/client/assets/chunk-SKB7J2MH-BG1nHV0M.js.map +1 -0
  75. package/build/client/assets/classDiagram-BGRH5UQR-BZY1Xh5a.js +2 -0
  76. package/build/client/assets/classDiagram-BGRH5UQR-BZY1Xh5a.js.map +1 -0
  77. package/build/client/assets/classDiagram-v2-O24JOBDK-BZY1Xh5a.js +2 -0
  78. package/build/client/assets/classDiagram-v2-O24JOBDK-BZY1Xh5a.js.map +1 -0
  79. package/build/client/assets/clone-RGlausHy.js +2 -0
  80. package/build/client/assets/clone-RGlausHy.js.map +1 -0
  81. package/build/client/assets/cytoscape.esm-BBIONMvf.js +332 -0
  82. package/build/client/assets/cytoscape.esm-BBIONMvf.js.map +1 -0
  83. package/build/client/assets/dagre-FFZHY6LT-CGbe3nXJ.js +5 -0
  84. package/build/client/assets/dagre-FFZHY6LT-CGbe3nXJ.js.map +1 -0
  85. package/build/client/assets/defaultLocale-C4B-KCzX.js +2 -0
  86. package/build/client/assets/defaultLocale-C4B-KCzX.js.map +1 -0
  87. package/build/client/assets/diagram-3EMPZRKU-8UM2S96z.js +25 -0
  88. package/build/client/assets/diagram-3EMPZRKU-8UM2S96z.js.map +1 -0
  89. package/build/client/assets/diagram-5UYTHUR4-Bq8b35J7.js +25 -0
  90. package/build/client/assets/diagram-5UYTHUR4-Bq8b35J7.js.map +1 -0
  91. package/build/client/assets/diagram-ZTM2IBQH-DZ0Q3vKL.js +44 -0
  92. package/build/client/assets/diagram-ZTM2IBQH-DZ0Q3vKL.js.map +1 -0
  93. package/build/client/assets/diff-DTFs5rVO.js +2 -0
  94. package/build/client/assets/diff-DTFs5rVO.js.map +1 -0
  95. package/build/client/assets/diff-DpX_9FU6.js +2 -0
  96. package/build/client/assets/diff-DpX_9FU6.js.map +1 -0
  97. package/build/client/assets/discord-C86FbV-j.js +2 -0
  98. package/build/client/assets/discord-C86FbV-j.js.map +1 -0
  99. package/build/client/assets/discord-DOEtvB6W.js +2 -0
  100. package/build/client/assets/discord-DOEtvB6W.js.map +1 -0
  101. package/build/client/assets/entry.client-anc4-dZY.js +35 -0
  102. package/build/client/assets/entry.client-anc4-dZY.js.map +1 -0
  103. package/build/client/assets/epic-video-CCv7QINN.js +3210 -0
  104. package/build/client/assets/epic-video-CCv7QINN.js.map +1 -0
  105. package/build/client/assets/epic-video-D2Xftn6t.css +1 -0
  106. package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js +2 -0
  107. package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js.map +1 -0
  108. package/build/client/assets/erDiagram-R3QVA2FD-Bu6B069U.js +61 -0
  109. package/build/client/assets/erDiagram-R3QVA2FD-Bu6B069U.js.map +1 -0
  110. package/build/client/assets/error-boundary-B8bEOgxp.js +2 -0
  111. package/build/client/assets/error-boundary-B8bEOgxp.js.map +1 -0
  112. package/build/client/assets/exercises-l0sNRNKZ.js +2 -0
  113. package/build/client/assets/exercises-l0sNRNKZ.js.map +1 -0
  114. package/build/client/assets/finished-RnlPhc3t.js +2 -0
  115. package/build/client/assets/finished-RnlPhc3t.js.map +1 -0
  116. package/build/client/assets/flowDiagram-PKI6S5ZS-ie1Nf5_c.js +163 -0
  117. package/build/client/assets/flowDiagram-PKI6S5ZS-ie1Nf5_c.js.map +1 -0
  118. package/build/client/assets/ganttDiagram-EK5VF46D-BjgRWg6k.js +268 -0
  119. package/build/client/assets/ganttDiagram-EK5VF46D-BjgRWg6k.js.map +1 -0
  120. package/build/client/assets/gitGraphDiagram-GW3U2K7C-BmD31KK0.js +66 -0
  121. package/build/client/assets/gitGraphDiagram-GW3U2K7C-BmD31KK0.js.map +1 -0
  122. package/build/client/assets/graph-BBuyk5Ru.js +2 -0
  123. package/build/client/assets/graph-BBuyk5Ru.js.map +1 -0
  124. package/build/client/assets/icons-BM6r7NHK.svg +570 -0
  125. package/build/client/assets/index-7Ba6ptu2.js +42 -0
  126. package/build/client/assets/index-7Ba6ptu2.js.map +1 -0
  127. package/build/client/assets/index-Bp_2FjuO.js +10 -0
  128. package/build/client/assets/index-Bp_2FjuO.js.map +1 -0
  129. package/build/client/assets/index-CNmh2cao.js +2 -0
  130. package/build/client/assets/index-CNmh2cao.js.map +1 -0
  131. package/build/client/assets/index-CZ8q0Nf8.js +2 -0
  132. package/build/client/assets/index-CZ8q0Nf8.js.map +1 -0
  133. package/build/client/assets/index-DP2rzg_V.js +2 -0
  134. package/build/client/assets/index-DP2rzg_V.js.map +1 -0
  135. package/build/client/assets/index-DSMFPAn8.js +2 -0
  136. package/build/client/assets/index-DSMFPAn8.js.map +1 -0
  137. package/build/client/assets/index-DxbpRM0V.js +2 -0
  138. package/build/client/assets/index-DxbpRM0V.js.map +1 -0
  139. package/build/client/assets/index-K6Dvbx-E.js +2 -0
  140. package/build/client/assets/index-K6Dvbx-E.js.map +1 -0
  141. package/build/client/assets/index-LNXI3Vlr.js +2 -0
  142. package/build/client/assets/index-LNXI3Vlr.js.map +1 -0
  143. package/build/client/assets/index-_jNKXw67.js +2 -0
  144. package/build/client/assets/index-_jNKXw67.js.map +1 -0
  145. package/build/client/assets/index-l0sNRNKZ.js +2 -0
  146. package/build/client/assets/index-l0sNRNKZ.js.map +1 -0
  147. package/build/client/assets/index-rknZKmMI.js +36 -0
  148. package/build/client/assets/index-rknZKmMI.js.map +1 -0
  149. package/build/client/assets/infoDiagram-RLU2ROGC-DVoDIRGH.js +3 -0
  150. package/build/client/assets/infoDiagram-RLU2ROGC-DVoDIRGH.js.map +1 -0
  151. package/build/client/assets/init-Gi6I4Gst.js +2 -0
  152. package/build/client/assets/init-Gi6I4Gst.js.map +1 -0
  153. package/build/client/assets/journeyDiagram-EWQZEKCU-C_Lb2L11.js +140 -0
  154. package/build/client/assets/journeyDiagram-EWQZEKCU-C_Lb2L11.js.map +1 -0
  155. package/build/client/assets/jsx-runtime-EKYJJIwR.js +10 -0
  156. package/build/client/assets/jsx-runtime-EKYJJIwR.js.map +1 -0
  157. package/build/client/assets/kanban-definition-ILFWEQ3N-KsekSC1N.js +90 -0
  158. package/build/client/assets/kanban-definition-ILFWEQ3N-KsekSC1N.js.map +1 -0
  159. package/build/client/assets/katex-DsmCZfJr.js +262 -0
  160. package/build/client/assets/katex-DsmCZfJr.js.map +1 -0
  161. package/build/client/assets/l-D9C1VDbZ.js +2 -0
  162. package/build/client/assets/l-D9C1VDbZ.js.map +1 -0
  163. package/build/client/assets/launch-editor-l0sNRNKZ.js +2 -0
  164. package/build/client/assets/launch-editor-l0sNRNKZ.js.map +1 -0
  165. package/build/client/assets/layout-BkH8Qi9T.js +2 -0
  166. package/build/client/assets/layout-BkH8Qi9T.js.map +1 -0
  167. package/build/client/assets/linear-tKBS5mAJ.js +2 -0
  168. package/build/client/assets/linear-tKBS5mAJ.js.map +1 -0
  169. package/build/client/assets/loading-CZYaLyAk.js +2 -0
  170. package/build/client/assets/loading-CZYaLyAk.js.map +1 -0
  171. package/build/client/assets/login-BHKNDLwl.js +2 -0
  172. package/build/client/assets/login-BHKNDLwl.js.map +1 -0
  173. package/build/client/assets/login-sse-l0sNRNKZ.js +2 -0
  174. package/build/client/assets/login-sse-l0sNRNKZ.js.map +1 -0
  175. package/build/client/assets/manifest-b97649b5.js +1 -0
  176. package/build/client/assets/mdx-BEhxx-X4.js +3 -0
  177. package/build/client/assets/mdx-BEhxx-X4.js.map +1 -0
  178. package/build/client/assets/mermaid.core-CqaUvNIK.js +214 -0
  179. package/build/client/assets/mermaid.core-CqaUvNIK.js.map +1 -0
  180. package/build/client/assets/mindmap-definition-CZNETY7S-BGn0gmpB.js +96 -0
  181. package/build/client/assets/mindmap-definition-CZNETY7S-BGn0gmpB.js.map +1 -0
  182. package/build/client/assets/misc-COGqV2fm.js +2 -0
  183. package/build/client/assets/misc-COGqV2fm.js.map +1 -0
  184. package/build/client/assets/nav-chevrons-Cxzx0j13.js +2 -0
  185. package/build/client/assets/nav-chevrons-Cxzx0j13.js.map +1 -0
  186. package/build/client/assets/notifications-l0sNRNKZ.js +2 -0
  187. package/build/client/assets/notifications-l0sNRNKZ.js.map +1 -0
  188. package/build/client/assets/og-l0sNRNKZ.js +2 -0
  189. package/build/client/assets/og-l0sNRNKZ.js.map +1 -0
  190. package/build/client/assets/onboarding-7Vho777l.js +2 -0
  191. package/build/client/assets/onboarding-7Vho777l.js.map +1 -0
  192. package/build/client/assets/online-CwZkKwTv.js +2 -0
  193. package/build/client/assets/online-CwZkKwTv.js.map +1 -0
  194. package/build/client/assets/ordinal-Cboi1Yqb.js +2 -0
  195. package/build/client/assets/ordinal-Cboi1Yqb.js.map +1 -0
  196. package/build/client/assets/pe-DoDyGTeN.js +2 -0
  197. package/build/client/assets/pe-DoDyGTeN.js.map +1 -0
  198. package/build/client/assets/pieDiagram-NIOCPIFQ-TwGmrzCW.js +31 -0
  199. package/build/client/assets/pieDiagram-NIOCPIFQ-TwGmrzCW.js.map +1 -0
  200. package/build/client/assets/preferences-Dx_EUPYj.js +2 -0
  201. package/build/client/assets/preferences-Dx_EUPYj.js.map +1 -0
  202. package/build/client/assets/presence-tDxUeb6L.js +28 -0
  203. package/build/client/assets/presence-tDxUeb6L.js.map +1 -0
  204. package/build/client/assets/preview-COuApZAb.js +2 -0
  205. package/build/client/assets/preview-COuApZAb.js.map +1 -0
  206. package/build/client/assets/processes-l0sNRNKZ.js +2 -0
  207. package/build/client/assets/processes-l0sNRNKZ.js.map +1 -0
  208. package/build/client/assets/product-DNKDVhI_.js +2 -0
  209. package/build/client/assets/product-DNKDVhI_.js.map +1 -0
  210. package/build/client/assets/progress-DKsShYpv.js +2 -0
  211. package/build/client/assets/progress-DKsShYpv.js.map +1 -0
  212. package/build/client/assets/progress-bar-Cww9t8Vn.js +2 -0
  213. package/build/client/assets/progress-bar-Cww9t8Vn.js.map +1 -0
  214. package/build/client/assets/progress-l0sNRNKZ.js +2 -0
  215. package/build/client/assets/progress-l0sNRNKZ.js.map +1 -0
  216. package/build/client/assets/quadrantDiagram-2OG54O6I-C2FaFW77.js +8 -0
  217. package/build/client/assets/quadrantDiagram-2OG54O6I-C2FaFW77.js.map +1 -0
  218. package/build/client/assets/requirementDiagram-SO3GGRV7-BENrmejn.js +65 -0
  219. package/build/client/assets/requirementDiagram-SO3GGRV7-BENrmejn.js.map +1 -0
  220. package/build/client/assets/revalidation-ws-DJwDeSaI.js +2 -0
  221. package/build/client/assets/revalidation-ws-DJwDeSaI.js.map +1 -0
  222. package/build/client/assets/robots_._txt-l0sNRNKZ.js +2 -0
  223. package/build/client/assets/robots_._txt-l0sNRNKZ.js.map +1 -0
  224. package/build/client/assets/root-30K5JoaI.js +2 -0
  225. package/build/client/assets/root-30K5JoaI.js.map +1 -0
  226. package/build/client/assets/sankeyDiagram-4UZDY2LN-DHcxz6y6.js +11 -0
  227. package/build/client/assets/sankeyDiagram-4UZDY2LN-DHcxz6y6.js.map +1 -0
  228. package/build/client/assets/seo-t5J-DRxw.js +2 -0
  229. package/build/client/assets/seo-t5J-DRxw.js.map +1 -0
  230. package/build/client/assets/sequenceDiagram-ZIKVLSP4-wsbYfOcv.js +123 -0
  231. package/build/client/assets/sequenceDiagram-ZIKVLSP4-wsbYfOcv.js.map +1 -0
  232. package/build/client/assets/set-playground-Bx0yIjpY.js +2 -0
  233. package/build/client/assets/set-playground-Bx0yIjpY.js.map +1 -0
  234. package/build/client/assets/set-playground-l0sNRNKZ.js +2 -0
  235. package/build/client/assets/set-playground-l0sNRNKZ.js.map +1 -0
  236. package/build/client/assets/sitemap_._xml-l0sNRNKZ.js +2 -0
  237. package/build/client/assets/sitemap_._xml-l0sNRNKZ.js.map +1 -0
  238. package/build/client/assets/start-l0sNRNKZ.js +2 -0
  239. package/build/client/assets/start-l0sNRNKZ.js.map +1 -0
  240. package/build/client/assets/stateDiagram-XX37X6EN-D8VCWzU7.js +2 -0
  241. package/build/client/assets/stateDiagram-XX37X6EN-D8VCWzU7.js.map +1 -0
  242. package/build/client/assets/stateDiagram-v2-GD6S3NHB-CWoWkzf7.js +2 -0
  243. package/build/client/assets/stateDiagram-v2-GD6S3NHB-CWoWkzf7.js.map +1 -0
  244. package/build/client/assets/support-BnsTkkCH.js +2 -0
  245. package/build/client/assets/support-BnsTkkCH.js.map +1 -0
  246. package/build/client/assets/tailwind-Dqccob1p.css +1 -0
  247. package/build/client/assets/test-B2dwsj84.js +2 -0
  248. package/build/client/assets/test-B2dwsj84.js.map +1 -0
  249. package/build/client/assets/test-l0sNRNKZ.js +2 -0
  250. package/build/client/assets/test-l0sNRNKZ.js.map +1 -0
  251. package/build/client/assets/test._testName-l0sNRNKZ.js +2 -0
  252. package/build/client/assets/test._testName-l0sNRNKZ.js.map +1 -0
  253. package/build/client/assets/test.epic_ws_.js_-l0sNRNKZ.js +2 -0
  254. package/build/client/assets/test.epic_ws_.js_-l0sNRNKZ.js.map +1 -0
  255. package/build/client/assets/tests-DvbNIXBP.js +4 -0
  256. package/build/client/assets/tests-DvbNIXBP.js.map +1 -0
  257. package/build/client/assets/timeline-definition-RI47OAVP-D44Hv-fs.js +62 -0
  258. package/build/client/assets/timeline-definition-RI47OAVP-D44Hv-fs.js.map +1 -0
  259. package/build/client/assets/tooltip-Cm7A1uIP.js +2 -0
  260. package/build/client/assets/tooltip-Cm7A1uIP.js.map +1 -0
  261. package/build/client/assets/treemap-FKARHQ26-COx8AcUM.js +129 -0
  262. package/build/client/assets/treemap-FKARHQ26-COx8AcUM.js.map +1 -0
  263. package/build/client/assets/use-event-source-DDlZtAwc.js +2 -0
  264. package/build/client/assets/use-event-source-DDlZtAwc.js.map +1 -0
  265. package/build/client/assets/user-BQ8D2Fty.js +2 -0
  266. package/build/client/assets/user-BQ8D2Fty.js.map +1 -0
  267. package/build/client/assets/version-CG_ZHfTC.js +2 -0
  268. package/build/client/assets/version-CG_ZHfTC.js.map +1 -0
  269. package/build/client/assets/workshop-config-5VcXxeyp.js +2 -0
  270. package/build/client/assets/workshop-config-5VcXxeyp.js.map +1 -0
  271. package/build/client/assets/xychartDiagram-H2YORKM3-rhbSyPlb.js +8 -0
  272. package/build/client/assets/xychartDiagram-H2YORKM3-rhbSyPlb.js.map +1 -0
  273. package/build/client/favicon.ico +0 -0
  274. package/build/client/favicon.png +0 -0
  275. package/build/client/favicon.svg +13 -0
  276. package/build/client/fonts/neogrotesk/0b8b755c-fee2-4661-9c8b-c5d1fbea901b.woff2 +0 -0
  277. package/build/client/fonts/neogrotesk/146d9d20-3e53-4e5d-beb2-1209bba5ac61.woff2 +0 -0
  278. package/build/client/fonts/neogrotesk/1798ef2b-5ee0-4f39-8b2c-ae3e36f07cd1.woff2 +0 -0
  279. package/build/client/fonts/neogrotesk/1eb2cb40-6822-4654-856c-8cbe652366b6.woff +0 -0
  280. package/build/client/fonts/neogrotesk/3b64793c-0bdb-4e4f-bf0e-cdf2e974d5f2.woff +0 -0
  281. package/build/client/fonts/neogrotesk/3bb44ed4-cf17-469c-8d0d-5946d10fdad1.woff +0 -0
  282. package/build/client/fonts/neogrotesk/4bd29470-1701-41fe-94b6-4a147512160c.woff +0 -0
  283. package/build/client/fonts/neogrotesk/5cdbf070-a094-44c8-b8f1-17a00a19c959.woff2 +0 -0
  284. package/build/client/fonts/neogrotesk/6d439be9-37df-4912-ac09-388ce938fa46.woff2 +0 -0
  285. package/build/client/fonts/neogrotesk/7fc2971f-a9c2-4e09-bd24-bfd4ee6e97b3.woff +0 -0
  286. package/build/client/fonts/neogrotesk/861b65ee-56bd-4057-9af4-3b2903af231e.woff +0 -0
  287. package/build/client/fonts/neogrotesk/8cf836d9-a49e-4387-bcbd-4800766e5d24.woff +0 -0
  288. package/build/client/fonts/neogrotesk/8d61128d-534c-4793-9668-b98bcc2e5969.woff2 +0 -0
  289. package/build/client/fonts/neogrotesk/98423f75-c341-4161-8b92-7cd5c05081e5.woff +0 -0
  290. package/build/client/fonts/neogrotesk/a1456726-ad0d-4f5e-9d8f-ce92e8ce375d.woff2 +0 -0
  291. package/build/client/fonts/neogrotesk/af81e7d2-0bb1-4aa0-bc76-adb78338c568.woff +0 -0
  292. package/build/client/fonts/neogrotesk/d1302ad5-ceee-47cb-a0fa-2da6bd0d4d54.woff2 +0 -0
  293. package/build/client/fonts/neogrotesk/e7e15c31-aad1-4384-abd3-0671ccd03251.woff +0 -0
  294. package/build/client/fonts/neogrotesk/ec6cb127-161b-469c-9816-69489032a234.woff2 +0 -0
  295. package/build/client/fonts/neogrotesk/f480430c-6c50-4ae3-9abb-e92c484f84d6.woff2 +0 -0
  296. package/build/client/img/tiffany.png +0 -0
  297. package/build/client/logo.svg +48 -0
  298. package/build/client/neogrotesk-font.css +100 -0
  299. package/build/client/og/background.png +0 -0
  300. package/build/client/og/logo.svg +1 -0
  301. package/build/server/index.js +11899 -0
  302. package/build/server/index.js.map +1 -0
  303. package/dist/server/index.js +247 -0
  304. package/package.json +1 -0
  305. package/start.js +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-ZTM2IBQH-DZ0Q3vKL.js","sources":["../../../../../node_modules/mermaid/dist/chunks/mermaid.core/diagram-ZTM2IBQH.mjs"],"sourcesContent":["import {\n populateCommonDb\n} from \"./chunk-353BL4L5.mjs\";\nimport {\n cleanAndMerge\n} from \"./chunk-55PJQP7W.mjs\";\nimport {\n selectSvgElement\n} from \"./chunk-P3VETL53.mjs\";\nimport {\n __name,\n clear,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getDiagramTitle,\n getThemeVariables,\n log,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-3XYRH5AP.mjs\";\n\n// src/diagrams/radar/db.ts\nvar defaultOptions = {\n showLegend: true,\n ticks: 5,\n max: null,\n min: 0,\n graticule: \"circle\"\n};\nvar defaultRadarData = {\n axes: [],\n curves: [],\n options: defaultOptions\n};\nvar data = structuredClone(defaultRadarData);\nvar DEFAULT_RADAR_CONFIG = defaultConfig_default.radar;\nvar getConfig2 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_RADAR_CONFIG,\n ...getConfig().radar\n });\n return config;\n}, \"getConfig\");\nvar getAxes = /* @__PURE__ */ __name(() => data.axes, \"getAxes\");\nvar getCurves = /* @__PURE__ */ __name(() => data.curves, \"getCurves\");\nvar getOptions = /* @__PURE__ */ __name(() => data.options, \"getOptions\");\nvar setAxes = /* @__PURE__ */ __name((axes) => {\n data.axes = axes.map((axis) => {\n return {\n name: axis.name,\n label: axis.label ?? axis.name\n };\n });\n}, \"setAxes\");\nvar setCurves = /* @__PURE__ */ __name((curves) => {\n data.curves = curves.map((curve) => {\n return {\n name: curve.name,\n label: curve.label ?? curve.name,\n entries: computeCurveEntries(curve.entries)\n };\n });\n}, \"setCurves\");\nvar computeCurveEntries = /* @__PURE__ */ __name((entries) => {\n if (entries[0].axis == void 0) {\n return entries.map((entry) => entry.value);\n }\n const axes = getAxes();\n if (axes.length === 0) {\n throw new Error(\"Axes must be populated before curves for reference entries\");\n }\n return axes.map((axis) => {\n const entry = entries.find((entry2) => entry2.axis?.$refText === axis.name);\n if (entry === void 0) {\n throw new Error(\"Missing entry for axis \" + axis.label);\n }\n return entry.value;\n });\n}, \"computeCurveEntries\");\nvar setOptions = /* @__PURE__ */ __name((options) => {\n const optionMap = options.reduce(\n (acc, option) => {\n acc[option.name] = option;\n return acc;\n },\n {}\n );\n data.options = {\n showLegend: optionMap.showLegend?.value ?? defaultOptions.showLegend,\n ticks: optionMap.ticks?.value ?? defaultOptions.ticks,\n max: optionMap.max?.value ?? defaultOptions.max,\n min: optionMap.min?.value ?? defaultOptions.min,\n graticule: optionMap.graticule?.value ?? defaultOptions.graticule\n };\n}, \"setOptions\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n clear();\n data = structuredClone(defaultRadarData);\n}, \"clear\");\nvar db = {\n getAxes,\n getCurves,\n getOptions,\n setAxes,\n setCurves,\n setOptions,\n getConfig: getConfig2,\n clear: clear2,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription\n};\n\n// src/diagrams/radar/parser.ts\nimport { parse } from \"@mermaid-js/parser\";\nvar populate = /* @__PURE__ */ __name((ast) => {\n populateCommonDb(ast, db);\n const { axes, curves, options } = ast;\n db.setAxes(axes);\n db.setCurves(curves);\n db.setOptions(options);\n}, \"populate\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"radar\", input);\n log.debug(ast);\n populate(ast);\n }, \"parse\")\n};\n\n// src/diagrams/radar/renderer.ts\nvar draw = /* @__PURE__ */ __name((_text, id, _version, diagram2) => {\n const db2 = diagram2.db;\n const axes = db2.getAxes();\n const curves = db2.getCurves();\n const options = db2.getOptions();\n const config = db2.getConfig();\n const title = db2.getDiagramTitle();\n const svg = selectSvgElement(id);\n const g = drawFrame(svg, config);\n const maxValue = options.max ?? Math.max(...curves.map((curve) => Math.max(...curve.entries)));\n const minValue = options.min;\n const radius = Math.min(config.width, config.height) / 2;\n drawGraticule(g, axes, radius, options.ticks, options.graticule);\n drawAxes(g, axes, radius, config);\n drawCurves(g, axes, curves, minValue, maxValue, options.graticule, config);\n drawLegend(g, curves, options.showLegend, config);\n g.append(\"text\").attr(\"class\", \"radarTitle\").text(title).attr(\"x\", 0).attr(\"y\", -config.height / 2 - config.marginTop);\n}, \"draw\");\nvar drawFrame = /* @__PURE__ */ __name((svg, config) => {\n const totalWidth = config.width + config.marginLeft + config.marginRight;\n const totalHeight = config.height + config.marginTop + config.marginBottom;\n const center = {\n x: config.marginLeft + config.width / 2,\n y: config.marginTop + config.height / 2\n };\n svg.attr(\"viewbox\", `0 0 ${totalWidth} ${totalHeight}`).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n return svg.append(\"g\").attr(\"transform\", `translate(${center.x}, ${center.y})`);\n}, \"drawFrame\");\nvar drawGraticule = /* @__PURE__ */ __name((g, axes, radius, ticks, graticule) => {\n if (graticule === \"circle\") {\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n g.append(\"circle\").attr(\"r\", r).attr(\"class\", \"radarGraticule\");\n }\n } else if (graticule === \"polygon\") {\n const numAxes = axes.length;\n for (let i = 0; i < ticks; i++) {\n const r = radius * (i + 1) / ticks;\n const points = axes.map((_, j) => {\n const angle = 2 * j * Math.PI / numAxes - Math.PI / 2;\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return `${x},${y}`;\n }).join(\" \");\n g.append(\"polygon\").attr(\"points\", points).attr(\"class\", \"radarGraticule\");\n }\n }\n}, \"drawGraticule\");\nvar drawAxes = /* @__PURE__ */ __name((g, axes, radius, config) => {\n const numAxes = axes.length;\n for (let i = 0; i < numAxes; i++) {\n const label = axes[i].label;\n const angle = 2 * i * Math.PI / numAxes - Math.PI / 2;\n g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", 0).attr(\"x2\", radius * config.axisScaleFactor * Math.cos(angle)).attr(\"y2\", radius * config.axisScaleFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLine\");\n g.append(\"text\").text(label).attr(\"x\", radius * config.axisLabelFactor * Math.cos(angle)).attr(\"y\", radius * config.axisLabelFactor * Math.sin(angle)).attr(\"class\", \"radarAxisLabel\");\n }\n}, \"drawAxes\");\nfunction drawCurves(g, axes, curves, minValue, maxValue, graticule, config) {\n const numAxes = axes.length;\n const radius = Math.min(config.width, config.height) / 2;\n curves.forEach((curve, index) => {\n if (curve.entries.length !== numAxes) {\n return;\n }\n const points = curve.entries.map((entry, i) => {\n const angle = 2 * Math.PI * i / numAxes - Math.PI / 2;\n const r = relativeRadius(entry, minValue, maxValue, radius);\n const x = r * Math.cos(angle);\n const y = r * Math.sin(angle);\n return { x, y };\n });\n if (graticule === \"circle\") {\n g.append(\"path\").attr(\"d\", closedRoundCurve(points, config.curveTension)).attr(\"class\", `radarCurve-${index}`);\n } else if (graticule === \"polygon\") {\n g.append(\"polygon\").attr(\"points\", points.map((p) => `${p.x},${p.y}`).join(\" \")).attr(\"class\", `radarCurve-${index}`);\n }\n });\n}\n__name(drawCurves, \"drawCurves\");\nfunction relativeRadius(value, minValue, maxValue, radius) {\n const clippedValue = Math.min(Math.max(value, minValue), maxValue);\n return radius * (clippedValue - minValue) / (maxValue - minValue);\n}\n__name(relativeRadius, \"relativeRadius\");\nfunction closedRoundCurve(points, tension) {\n const numPoints = points.length;\n let d = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < numPoints; i++) {\n const p0 = points[(i - 1 + numPoints) % numPoints];\n const p1 = points[i];\n const p2 = points[(i + 1) % numPoints];\n const p3 = points[(i + 2) % numPoints];\n const cp1 = {\n x: p1.x + (p2.x - p0.x) * tension,\n y: p1.y + (p2.y - p0.y) * tension\n };\n const cp2 = {\n x: p2.x - (p3.x - p1.x) * tension,\n y: p2.y - (p3.y - p1.y) * tension\n };\n d += ` C${cp1.x},${cp1.y} ${cp2.x},${cp2.y} ${p2.x},${p2.y}`;\n }\n return `${d} Z`;\n}\n__name(closedRoundCurve, \"closedRoundCurve\");\nfunction drawLegend(g, curves, showLegend, config) {\n if (!showLegend) {\n return;\n }\n const legendX = (config.width / 2 + config.marginRight) * 3 / 4;\n const legendY = -(config.height / 2 + config.marginTop) * 3 / 4;\n const lineHeight = 20;\n curves.forEach((curve, index) => {\n const itemGroup = g.append(\"g\").attr(\"transform\", `translate(${legendX}, ${legendY + index * lineHeight})`);\n itemGroup.append(\"rect\").attr(\"width\", 12).attr(\"height\", 12).attr(\"class\", `radarLegendBox-${index}`);\n itemGroup.append(\"text\").attr(\"x\", 16).attr(\"y\", 0).attr(\"class\", \"radarLegendText\").text(curve.label);\n });\n}\n__name(drawLegend, \"drawLegend\");\nvar renderer = { draw };\n\n// src/diagrams/radar/styles.ts\nvar genIndexStyles = /* @__PURE__ */ __name((themeVariables, radarOptions) => {\n let sections = \"\";\n for (let i = 0; i < themeVariables.THEME_COLOR_LIMIT; i++) {\n const indexColor = themeVariables[`cScale${i}`];\n sections += `\n\t\t.radarCurve-${i} {\n\t\t\tcolor: ${indexColor};\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t\tstroke-width: ${radarOptions.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${i} {\n\t\t\tfill: ${indexColor};\n\t\t\tfill-opacity: ${radarOptions.curveOpacity};\n\t\t\tstroke: ${indexColor};\n\t\t}\n\t\t`;\n }\n return sections;\n}, \"genIndexStyles\");\nvar buildRadarStyleOptions = /* @__PURE__ */ __name((radar) => {\n const defaultThemeVariables = getThemeVariables();\n const currentConfig = getConfig();\n const themeVariables = cleanAndMerge(defaultThemeVariables, currentConfig.themeVariables);\n const radarOptions = cleanAndMerge(themeVariables.radar, radar);\n return { themeVariables, radarOptions };\n}, \"buildRadarStyleOptions\");\nvar styles = /* @__PURE__ */ __name(({ radar } = {}) => {\n const { themeVariables, radarOptions } = buildRadarStyleOptions(radar);\n return `\n\t.radarTitle {\n\t\tfont-size: ${themeVariables.fontSize};\n\t\tcolor: ${themeVariables.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${radarOptions.axisColor};\n\t\tstroke-width: ${radarOptions.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${radarOptions.axisLabelFontSize}px;\n\t\tcolor: ${radarOptions.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${radarOptions.graticuleColor};\n\t\tfill-opacity: ${radarOptions.graticuleOpacity};\n\t\tstroke: ${radarOptions.graticuleColor};\n\t\tstroke-width: ${radarOptions.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${radarOptions.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${genIndexStyles(themeVariables, radarOptions)}\n\t`;\n}, \"styles\");\n\n// src/diagrams/radar/diagram.ts\nvar diagram = {\n parser,\n db,\n renderer,\n styles\n};\nexport {\n diagram\n};\n"],"names":["defaultOptions","defaultRadarData","data","DEFAULT_RADAR_CONFIG","defaultConfig_default","getConfig2","__name","cleanAndMerge","getConfig","getAxes","getCurves","getOptions","setAxes","axes","axis","setCurves","curves","curve","computeCurveEntries","entries","entry","entry2","setOptions","options","optionMap","acc","option","clear2","clear","db","setAccTitle","getAccTitle","setDiagramTitle","getDiagramTitle","getAccDescription","setAccDescription","populate","ast","populateCommonDb","parser","input","parse","log","draw","_text","id","_version","diagram2","db2","config","title","svg","selectSvgElement","g","drawFrame","maxValue","minValue","radius","drawGraticule","drawAxes","drawCurves","drawLegend","totalWidth","totalHeight","center","ticks","graticule","i","r","numAxes","points","_","j","angle","x","y","label","index","relativeRadius","closedRoundCurve","p","value","clippedValue","tension","numPoints","d","p0","p1","p2","p3","cp1","cp2","showLegend","legendX","legendY","lineHeight","itemGroup","renderer","genIndexStyles","themeVariables","radarOptions","sections","indexColor","buildRadarStyleOptions","radar","defaultThemeVariables","getThemeVariables","currentConfig","styles","diagram"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{w as a,c as e,l as m,f as p}from"./chunk-QMGIS6GS-CG5cA6CX.js";import{j as r}from"./jsx-runtime-EKYJJIwR.js";import{d as n,a as f}from"./misc-COGqV2fm.js";import{D as c}from"./diff-DpX_9FU6.js";import{N as d}from"./nav-chevrons-Cxzx0j13.js";import"./accordion-PSsenYUI.js";import"./tooltip-Cm7A1uIP.js";import"./index-Bp_2FjuO.js";import"./index-CZ8q0Nf8.js";import"./index-7Ba6ptu2.js";import"./mdx-BEhxx-X4.js";import"./epic-video-CCv7QINN.js";import"./index-rknZKmMI.js";import"./pe-DoDyGTeN.js";import"./online-CwZkKwTv.js";import"./loading-CZYaLyAk.js";import"./user-BQ8D2Fty.js";import"./workshop-config-5VcXxeyp.js";import"./progress-bar-Cww9t8Vn.js";import"./revalidation-ws-DJwDeSaI.js";const U=a(function(){const i=e(),[t]=m();new URLSearchParams(t).set("forceFresh","diff");const s=p(),o=n.useSpinDelay(s.state!=="idle",{delay:200,minDuration:200});return r.jsxs("div",{className:f("grid h-full grid-rows-[1fr,auto]",{"cursor-wait opacity-30":o}),children:[r.jsx("div",{className:"overflow-y-auto",children:r.jsx(c,{diff:i.diff,allApps:i.allApps})}),r.jsx("div",{className:"flex h-16 items-center justify-end border-t",children:r.jsx(d,{prev:i.prevLink,next:i.nextLink})})]})});export{U as default};
2
+ //# sourceMappingURL=diff-DTFs5rVO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-DTFs5rVO.js","sources":["../../../app/routes/diff.tsx"],"sourcesContent":["import {\n\tgetAppByName,\n\tgetAppDisplayName,\n\tgetApps,\n\tisExerciseStepApp,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getDiffCode } from '@epic-web/workshop-utils/diff.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport {\n\ttype LoaderFunctionArgs,\n\tuseLoaderData,\n\tuseNavigation,\n\tuseSearchParams,\n} from 'react-router'\nimport { useSpinDelay } from 'spin-delay'\nimport { Diff } from '#app/components/diff.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst reqUrl = new URL(request.url)\n\tconst searchParams = reqUrl.searchParams\n\tconst timings = makeTimings('diffLoader')\n\tconst cacheOptions = { request, timings }\n\tconst allAppsFull = await getApps()\n\tconst app1Name = reqUrl.searchParams.get('app1')\n\tconst app2Name = reqUrl.searchParams.get('app2')\n\n\tconst usingDefaultApp1 = !app1Name\n\n\t// defaults to first problem app\n\tconst app1 = app1Name\n\t\t? await getAppByName(app1Name)\n\t\t: allAppsFull.filter(isExerciseStepApp).at(0)\n\n\t// defaults to last exercise step app\n\tconst app2 = app2Name\n\t\t? await getAppByName(app2Name)\n\t\t: allAppsFull.filter(isExerciseStepApp).at(-1)\n\n\tasync function getDiffProp() {\n\t\tif (!app1 || !app2) {\n\t\t\treturn {\n\t\t\t\tapp1: app1?.name,\n\t\t\t\tapp2: app2?.name,\n\t\t\t\tdiffCode: null,\n\t\t\t}\n\t\t}\n\t\tconst diffCode = await getDiffCode(app1, app2, {\n\t\t\t...cacheOptions,\n\t\t\tforceFresh: searchParams.get('forceFresh') === 'diff',\n\t\t}).catch((e) => {\n\t\t\tconsole.error(e)\n\t\t\treturn null\n\t\t})\n\t\treturn {\n\t\t\tapp1: app1.name,\n\t\t\tapp2: app2.name,\n\t\t\tdiffCode,\n\t\t}\n\t}\n\n\tconst allApps = allAppsFull\n\t\t.filter((a, i, ar) => ar.findIndex((b) => a.name === b.name) === i)\n\t\t.map((a) => ({\n\t\t\tdisplayName: getAppDisplayName(a, allAppsFull),\n\t\t\tname: a.name,\n\t\t\ttitle: a.title,\n\t\t\ttype: a.type,\n\t\t}))\n\n\tconst diff = getDiffProp()\n\tconst app1Index = allApps.findIndex((a) => a.name === app1?.name)\n\tconst prevApp1Index = usingDefaultApp1\n\t\t? allApps.length - 2\n\t\t: app1Index === 0\n\t\t\t? -2\n\t\t\t: app1Index - 1\n\tconst prevApp2Index = prevApp1Index + 1\n\tconst nextApp1Index = usingDefaultApp1\n\t\t? 0\n\t\t: app1Index + 1 < allApps.length\n\t\t\t? app1Index + 1\n\t\t\t: -2\n\tconst nextApp2Index = nextApp1Index + 1\n\tconst prevApp1 = allAppsFull[prevApp1Index]?.name\n\tconst prevApp2 = allAppsFull[prevApp2Index]?.name\n\tconst nextApp1 = allAppsFull[nextApp1Index]?.name\n\tconst nextApp2 = allAppsFull[nextApp2Index]?.name\n\tconst prevSearchParams = new URLSearchParams(reqUrl.searchParams)\n\tprevSearchParams.set('app1', prevApp1 ?? '')\n\tprevSearchParams.set('app2', prevApp2 ?? '')\n\tconst nextSearchParams = new URLSearchParams(reqUrl.searchParams)\n\tnextSearchParams.set('app1', nextApp1 ?? '')\n\tnextSearchParams.set('app2', nextApp2 ?? '')\n\treturn {\n\t\tallApps,\n\t\tdiff,\n\t\tprevLink:\n\t\t\tprevApp1 && prevApp2\n\t\t\t\t? { to: `/diff?${prevSearchParams}`, 'aria-label': 'Previous App' }\n\t\t\t\t: { to: '/diff' },\n\t\tnextLink:\n\t\t\tnextApp1 && nextApp2\n\t\t\t\t? { to: `/diff?${nextSearchParams}`, 'aria-label': 'Next App' }\n\t\t\t\t: { to: '/diff' },\n\t}\n}\n\nexport default function DiffViewer() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst [params] = useSearchParams()\n\tconst paramsWithForcedRefresh = new URLSearchParams(params)\n\tparamsWithForcedRefresh.set('forceFresh', 'diff')\n\tconst navigation = useNavigation()\n\tconst isNavigating = useSpinDelay(navigation.state !== 'idle', {\n\t\tdelay: 200,\n\t\tminDuration: 200,\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('grid h-full grid-rows-[1fr,auto]', {\n\t\t\t\t'cursor-wait opacity-30': isNavigating,\n\t\t\t})}\n\t\t>\n\t\t\t<div className=\"overflow-y-auto\">\n\t\t\t\t<Diff diff={data.diff} allApps={data.allApps} />\n\t\t\t</div>\n\t\t\t<div className=\"flex h-16 items-center justify-end border-t\">\n\t\t\t\t<NavChevrons prev={data.prevLink} next={data.nextLink} />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],"names":["diff","_UNSAFE_withComponentProps","data","useLoaderData","params","useSearchParams","URLSearchParams","set","navigation","useNavigation","isNavigating","useSpinDelay","state","delay","minDuration","jsxs","className","cn","children","jsx","Diff","allApps","NavChevrons","prev","prevLink","next","nextLink"],"mappings":"+rBA6GA,MAAAA,EAAAC,EAAA,UAAqC,CACpC,MAAMC,EAAOC,EAAA,EACP,CAACC,CAAM,EAAIC,EAAA,EACe,IAAIC,gBAAgBF,CAAM,EAClCG,IAAI,aAAc,MAAM,EAChD,MAAMC,EAAaC,EAAA,EACbC,EAAeC,EAAAA,aAAaH,EAAWI,QAAU,OAAQ,CAC9DC,MAAO,IACPC,YAAa,GACd,CAAC,EAED,OACCC,EAAAA,KAAC,MAAA,CACAC,UAAWC,EAAG,mCAAoC,CACjD,yBAA0BP,CAC3B,CAAC,EAEDQ,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAIH,UAAU,kBACdE,SAAAC,EAAAA,IAACC,EAAA,CAAKpB,KAAME,EAAKF,KAAMqB,QAASnB,EAAKmB,QAAS,CAAA,CAC/C,EACAF,EAAAA,IAAC,MAAA,CAAIH,UAAU,8CACdE,SAAAC,EAAAA,IAACG,EAAA,CAAYC,KAAMrB,EAAKsB,SAAUC,KAAMvB,EAAKwB,SAAU,CAAA,CACxD,CAAA,CAAA,CACD,CAEF,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./jsx-runtime-EKYJJIwR.js";import{R as u,A as j}from"./accordion-PSsenYUI.js";import{R as w,T as b,I as g,P as N,C as v,S as y,a as S,G as k,L as D,b as R,V as A,c as C,d as I,e as T}from"./index-CZ8q0Nf8.js";import{d as P,I as o,a as V,c as x}from"./misc-COGqV2fm.js";import{k as $,l as L,f as E,r as F,A as U,L as B,F as G}from"./chunk-QMGIS6GS-CG5cA6CX.js";import{M as H,u as M}from"./mdx-BEhxx-X4.js";import{D as W}from"./epic-video-CCv7QINN.js";import{u as z}from"./revalidation-ws-DJwDeSaI.js";import{S as m}from"./tooltip-Cm7A1uIP.js";import{b as Y}from"./user-BQ8D2Fty.js";const q=t=>e.jsx("pre",{...t}),J={Accordion:j,pre:q};function K({app1:t,app2:a}){const n=M(),r=n.find(l=>l.name===t),i=n.find(l=>l.name===a);return z({watchPaths:[r?.fullPath,i?.fullPath].filter(Boolean)}),null}function ie({diff:t,allApps:a}){const n=Y(),r=$(),[i]=L(),l=new URLSearchParams(i);l.set("forceFresh","diff");const h=E(),f=P.useSpinDelay(h.state!=="idle",{delay:0,minDuration:1e3}),p=[];for(const[s,c]of i.entries())s==="app1"||s==="app2"||p.push(e.jsx("input",{type:"hidden",name:s,value:c},s));return n?e.jsx(F.Suspense,{fallback:e.jsx("div",{className:"flex items-center justify-center p-8",children:e.jsx(m,{content:"Loading diff",children:e.jsx(o,{name:"Refresh",className:"animate-spin"})})}),children:e.jsx(U,{resolve:t,errorElement:e.jsx("p",{className:"p-6 text-foreground-destructive",children:"There was an error calculating the diff. Sorry."}),children:s=>e.jsxs("div",{className:"flex h-full w-full flex-col",children:[e.jsxs("div",{className:"flex h-14 min-h-14 w-full overflow-x-hidden border-b",children:[e.jsx("div",{className:"border-r",children:e.jsx(m,{content:"Reload diff",children:e.jsx(B,{to:`.?${l}`,className:"flex h-full w-14 items-center justify-center",children:e.jsx(o,{name:"Refresh",className:V({"animate-spin":f})})})})}),e.jsxs(G,{onChange:c=>r(c.currentTarget),className:"flex h-full flex-1 items-center overflow-x-auto scrollbar-thin scrollbar-thumb-scrollbar",children:[p,e.jsx(d,{name:"app1",label:"App 1",className:"border-r",allApps:a,defaultValue:s.app1}),e.jsx(d,{name:"app2",label:"App 2",allApps:a,defaultValue:s.app2})]},`${s.app1}${s.app2}`)]}),e.jsx("div",{className:"flex-grow overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar",children:s.diffCode?e.jsx("div",{children:e.jsx(u,{className:"w-full",type:"multiple",children:e.jsx(H,{code:s.diffCode,components:J})})}):s.app1&&s.app2?e.jsx("p",{className:"m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background",children:"There was a problem generating the diff"}):e.jsx("p",{className:"m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background",children:"Select two apps to compare"})}),e.jsx(K,{app1:s.app1,app2:s.app2})]})})}):e.jsxs("div",{className:"w-full p-12",children:[e.jsxs("div",{className:"flex w-full flex-col gap-4 text-center",children:[e.jsx("p",{className:"text-2xl font-bold",children:"Access Denied"}),e.jsx("p",{className:"text-lg",children:"You must login or register for the workshop to view the diff."})]}),e.jsx("div",{className:"h-16"}),e.jsx("p",{className:"pb-4",children:"Check out this video to see how the diff tab works."}),e.jsx(W,{url:"https://www.epicweb.dev/tips/epic-workshop-diff-tab-demo"})]})}function d({name:t,label:a,className:n,allApps:r,defaultValue:i}){return e.jsxs(w,{name:t,defaultValue:i,children:[e.jsxs(b,{className:x("flex h-full w-full max-w-[50%] items-center justify-between px-3 text-left radix-placeholder:text-gray-500 focus-visible:outline-none",n),"aria-label":`Select ${a} for git Diff`,children:[e.jsxs("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:[a,":"," ",e.jsx(Q,{placeholder:`Select ${a}`,className:"inline-block w-40 text-ellipsis"})]}),e.jsx(g,{className:"",children:e.jsx(o,{name:"TriangleDownSmall"})})]}),e.jsx(N,{children:e.jsxs(v,{position:"popper",align:"start",className:"z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",children:[e.jsx(y,{className:"flex h-5 cursor-default items-center justify-center",children:e.jsx(o,{name:"ChevronUp"})}),e.jsx(S,{className:"p-3",children:e.jsxs(k,{children:[e.jsx(D,{className:"px-5 pb-3 font-mono uppercase",children:a}),r.map(l=>e.jsx(O,{value:l.name,children:l.displayName},l.name))]})}),e.jsx(R,{className:"flex h-5 cursor-default items-center justify-center",children:e.jsx(o,{name:"ChevronDown"})})]})})]})}const O=({ref:t,children:a,className:n,...r})=>e.jsxs(C,{className:x("relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100",n),...r,ref:t,children:[e.jsx(I,{children:a}),e.jsx(T,{className:"absolute left-0 inline-flex w-[25px] items-center justify-center",children:e.jsx(o,{name:"CheckSmall"})})]}),Q=({ref:t,children:a,className:n,...r})=>e.jsx(A,{...r,ref:t,children:r.value});export{ie as D};
2
+ //# sourceMappingURL=diff-DpX_9FU6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-DpX_9FU6.js","sources":["../../../app/components/diff.tsx"],"sourcesContent":["import * as Accordion from '@radix-ui/react-accordion'\nimport * as Select from '@radix-ui/react-select'\nimport { clsx } from 'clsx'\nimport React, { Suspense } from 'react'\nimport {\n\tAwait,\n\tForm,\n\tLink,\n\tuseNavigation,\n\tuseSearchParams,\n\tuseSubmit,\n} from 'react-router'\nimport { useSpinDelay } from 'spin-delay'\nimport AccordionComponent from '#app/components/accordion.tsx'\nimport { Mdx } from '#app/utils/mdx.tsx'\nimport { cn } from '#app/utils/misc.tsx'\nimport { useApps } from './apps.tsx'\nimport { DeferredEpicVideo } from './epic-video.tsx'\nimport { Icon } from './icons.tsx'\nimport { useRevalidationWS } from './revalidation-ws.tsx'\nimport { SimpleTooltip } from './ui/tooltip.tsx'\nimport { useUserHasAccess } from './user.tsx'\n\ntype diffProp = {\n\tapp1?: string\n\tapp2?: string\n\tdiffCode?: string | null\n}\n\nconst pre = (props: any) => <pre {...props} />\n\nconst mdxComponents = {\n\tAccordion: AccordionComponent,\n\t// override the pre-with-buttons\n\tpre,\n}\n\nfunction RevalidateApps({\n\tapp1: app1Name,\n\tapp2: app2Name,\n}: {\n\tapp1?: string\n\tapp2?: string\n}) {\n\tconst apps = useApps()\n\tconst app1 = apps.find((app) => app.name === app1Name)\n\tconst app2 = apps.find((app) => app.name === app2Name)\n\n\tuseRevalidationWS({\n\t\twatchPaths: [app1?.fullPath, app2?.fullPath].filter(Boolean),\n\t})\n\treturn null\n}\n\nexport function Diff({\n\tdiff,\n\tallApps,\n}: {\n\tdiff: Promise<diffProp> | diffProp\n\tallApps: Array<{ name: string; displayName: string }>\n}) {\n\tconst userHasAccess = useUserHasAccess()\n\tconst submit = useSubmit()\n\tconst [params] = useSearchParams()\n\tconst paramsWithForcedRefresh = new URLSearchParams(params)\n\tparamsWithForcedRefresh.set('forceFresh', 'diff')\n\tconst navigation = useNavigation()\n\tconst spinnerNavigating = useSpinDelay(navigation.state !== 'idle', {\n\t\tdelay: 0,\n\t\tminDuration: 1000,\n\t})\n\n\tconst hiddenInputs: Array<React.ReactNode> = []\n\tfor (const [key, value] of params.entries()) {\n\t\tif (key === 'app1' || key === 'app2') continue\n\t\thiddenInputs.push(\n\t\t\t<input key={key} type=\"hidden\" name={key} value={value} />,\n\t\t)\n\t}\n\n\tif (!userHasAccess) {\n\t\treturn (\n\t\t\t<div className=\"w-full p-12\">\n\t\t\t\t<div className=\"flex w-full flex-col gap-4 text-center\">\n\t\t\t\t\t<p className=\"text-2xl font-bold\">Access Denied</p>\n\t\t\t\t\t<p className=\"text-lg\">\n\t\t\t\t\t\tYou must login or register for the workshop to view the diff.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"h-16\" />\n\t\t\t\t<p className=\"pb-4\">\n\t\t\t\t\tCheck out this video to see how the diff tab works.\n\t\t\t\t</p>\n\t\t\t\t<DeferredEpicVideo url=\"https://www.epicweb.dev/tips/epic-workshop-diff-tab-demo\" />\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<Suspense\n\t\t\tfallback={\n\t\t\t\t<div className=\"flex items-center justify-center p-8\">\n\t\t\t\t\t<SimpleTooltip content=\"Loading diff\">\n\t\t\t\t\t\t<Icon name=\"Refresh\" className=\"animate-spin\" />\n\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t</div>\n\t\t\t}\n\t\t>\n\t\t\t<Await\n\t\t\t\tresolve={diff}\n\t\t\t\terrorElement={\n\t\t\t\t\t<p className=\"p-6 text-foreground-destructive\">\n\t\t\t\t\t\tThere was an error calculating the diff. Sorry.\n\t\t\t\t\t</p>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{(diff) => (\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">\n\t\t\t\t\t\t<div className=\"flex h-14 min-h-14 w-full overflow-x-hidden border-b\">\n\t\t\t\t\t\t\t<div className=\"border-r\">\n\t\t\t\t\t\t\t\t<SimpleTooltip content=\"Reload diff\">\n\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\tto={`.?${paramsWithForcedRefresh}`}\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex h-full w-14 items-center justify-center\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tname=\"Refresh\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn({ 'animate-spin': spinnerNavigating })}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Form\n\t\t\t\t\t\t\t\tonChange={(e) => submit(e.currentTarget)}\n\t\t\t\t\t\t\t\tclassName=\"flex h-full flex-1 items-center overflow-x-auto scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\t\tkey={`${diff.app1}${diff.app2}`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{hiddenInputs}\n\t\t\t\t\t\t\t\t<SelectFileToDiff\n\t\t\t\t\t\t\t\t\tname=\"app1\"\n\t\t\t\t\t\t\t\t\tlabel=\"App 1\"\n\t\t\t\t\t\t\t\t\tclassName=\"border-r\"\n\t\t\t\t\t\t\t\t\tallApps={allApps}\n\t\t\t\t\t\t\t\t\tdefaultValue={diff.app1}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<SelectFileToDiff\n\t\t\t\t\t\t\t\t\tname=\"app2\"\n\t\t\t\t\t\t\t\t\tlabel=\"App 2\"\n\t\t\t\t\t\t\t\t\tallApps={allApps}\n\t\t\t\t\t\t\t\t\tdefaultValue={diff.app2}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex-grow overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t\t{diff.diffCode ? (\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<Accordion.Root className=\"w-full\" type=\"multiple\">\n\t\t\t\t\t\t\t\t\t\t<Mdx code={diff.diffCode} components={mdxComponents} />\n\t\t\t\t\t\t\t\t\t</Accordion.Root>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : diff.app1 && diff.app2 ? (\n\t\t\t\t\t\t\t\t<p className=\"m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background\">\n\t\t\t\t\t\t\t\t\tThere was a problem generating the diff\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<p className=\"m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background\">\n\t\t\t\t\t\t\t\t\tSelect two apps to compare\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<RevalidateApps app1={diff.app1} app2={diff.app2} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Await>\n\t\t</Suspense>\n\t)\n}\n\nfunction SelectFileToDiff({\n\tname,\n\tlabel,\n\tclassName,\n\tallApps,\n\tdefaultValue,\n}: {\n\tname: string\n\tlabel: string\n\tclassName?: string\n\tallApps: Array<{ name: string; displayName: string }>\n\tdefaultValue?: string\n}) {\n\treturn (\n\t\t<Select.Root name={name} defaultValue={defaultValue}>\n\t\t\t<Select.Trigger\n\t\t\t\tclassName={clsx(\n\t\t\t\t\t'flex h-full w-full max-w-[50%] items-center justify-between px-3 text-left radix-placeholder:text-gray-500 focus-visible:outline-none',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\taria-label={`Select ${label} for git Diff`}\n\t\t\t>\n\t\t\t\t<span className=\"overflow-hidden text-ellipsis whitespace-nowrap\">\n\t\t\t\t\t{label}:{' '}\n\t\t\t\t\t<SelectValue\n\t\t\t\t\t\tplaceholder={`Select ${label}`}\n\t\t\t\t\t\tclassName=\"inline-block w-40 text-ellipsis\"\n\t\t\t\t\t/>\n\t\t\t\t</span>\n\t\t\t\t<Select.Icon className=\"\">\n\t\t\t\t\t<Icon name=\"TriangleDownSmall\" />\n\t\t\t\t</Select.Icon>\n\t\t\t</Select.Trigger>\n\t\t\t<Select.Portal>\n\t\t\t\t<Select.Content\n\t\t\t\t\tposition=\"popper\"\n\t\t\t\t\talign=\"start\"\n\t\t\t\t\tclassName=\"z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]\"\n\t\t\t\t>\n\t\t\t\t\t<Select.ScrollUpButton className=\"flex h-5 cursor-default items-center justify-center\">\n\t\t\t\t\t\t<Icon name=\"ChevronUp\" />\n\t\t\t\t\t</Select.ScrollUpButton>\n\t\t\t\t\t<Select.Viewport className=\"p-3\">\n\t\t\t\t\t\t<Select.Group>\n\t\t\t\t\t\t\t<Select.Label className=\"px-5 pb-3 font-mono uppercase\">\n\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t</Select.Label>\n\t\t\t\t\t\t\t{allApps.map((app) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<SelectItem key={app.name} value={app.name}>\n\t\t\t\t\t\t\t\t\t\t{app.displayName}\n\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Select.Group>\n\t\t\t\t\t</Select.Viewport>\n\t\t\t\t\t<Select.ScrollDownButton className=\"flex h-5 cursor-default items-center justify-center\">\n\t\t\t\t\t\t<Icon name=\"ChevronDown\" />\n\t\t\t\t\t</Select.ScrollDownButton>\n\t\t\t\t</Select.Content>\n\t\t\t</Select.Portal>\n\t\t</Select.Root>\n\t)\n}\n\nconst SelectItem: React.FC<any> = ({\n\tref: forwardedRef,\n\tchildren,\n\tclassName,\n\t...props\n}) => {\n\treturn (\n\t\t<Select.Item\n\t\t\tclassName={clsx(\n\t\t\t\t'relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100',\n\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tref={forwardedRef}\n\t\t>\n\t\t\t<Select.ItemText>{children}</Select.ItemText>\n\t\t\t<Select.ItemIndicator className=\"absolute left-0 inline-flex w-[25px] items-center justify-center\">\n\t\t\t\t<Icon name=\"CheckSmall\" />\n\t\t\t</Select.ItemIndicator>\n\t\t</Select.Item>\n\t)\n}\n\nconst SelectValue: React.FC<any> = ({\n\tref: forwardedRef,\n\tchildren,\n\tclassName,\n\t...props\n}) => {\n\treturn (\n\t\t<Select.Value {...props} ref={forwardedRef}>\n\t\t\t{props.value}\n\t\t</Select.Value>\n\t)\n}\n"],"names":["pre","props","jsx","mdxComponents","AccordionComponent","RevalidateApps","app1Name","app2Name","apps","useApps","app1","app","app2","useRevalidationWS","Diff","diff","allApps","userHasAccess","useUserHasAccess","submit","useSubmit","params","useSearchParams","paramsWithForcedRefresh","navigation","useNavigation","spinnerNavigating","useSpinDelay","hiddenInputs","key","value","Suspense","SimpleTooltip","Icon","Await","jsxs","Link","cn","Form","e","SelectFileToDiff","Accordion.Root","Mdx","DeferredEpicVideo","name","label","className","defaultValue","Select.Root","Select.Trigger","clsx","SelectValue","Select.Icon","Select.Portal","Select.Content","Select.ScrollUpButton","Select.Viewport","Select.Group","Select.Label","SelectItem","Select.ScrollDownButton","forwardedRef","children","Select.Item","Select.ItemText","Select.ItemIndicator","Select.Value"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{d,h as e}from"./discord-DOEtvB6W.js";import"./chunk-QMGIS6GS-CG5cA6CX.js";import"./jsx-runtime-EKYJJIwR.js";import"./misc-COGqV2fm.js";import"./user-BQ8D2Fty.js";import"./workshop-config-5VcXxeyp.js";export{d as default,e as handle};
2
+ //# sourceMappingURL=discord-C86FbV-j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-C86FbV-j.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{w as d,L as s}from"./chunk-QMGIS6GS-CG5cA6CX.js";import{j as e}from"./jsx-runtime-EKYJJIwR.js";import{I as t}from"./misc-COGqV2fm.js";import{c as i,a as c}from"./user-BQ8D2Fty.js";import{u as a}from"./workshop-config-5VcXxeyp.js";const j={getSitemapEntries:()=>null};function l(){const{product:{host:r}}=a();return`https://${r}/discord`}function g(){const r=i(),n=c(),o=l();return r?n?"https://discord.com/channels/715220730605731931/1161045224907341972":o:"/login"}function h(){const r=i(),n=c(),o=l();return r?n?e.jsxs("div",{className:"flex items-center justify-center gap-2 text-xl underline",children:[e.jsx(s,{to:"discord://discord.com/channels/715220730605731931/1161045224907341972",children:e.jsx(t,{name:"Discord",size:"2xl"})}),e.jsx(s,{to:"https://discord.com/channels/715220730605731931/1161045224907341972",target:"_blank",rel:"noreferrer noopener",children:"Open Discord"})]}):e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xl",children:[e.jsxs(s,{to:o,className:"flex items-center gap-2 underline",children:[e.jsx(t,{name:"Discord",size:"2xl"}),"Connect Discord"]})," ",e.jsxs("span",{children:["to get access to the exclusive"," ",e.jsx(s,{to:"/discord",className:"underline",children:"discord channel"}),"."]})]}):e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xl",children:[e.jsxs(s,{to:"/login",className:"inline-flex items-center gap-2 underline",children:[e.jsx(t,{name:"Discord",size:"2xl"}),"Login"]})," ",e.jsxs("span",{children:["to get access to the exclusive"," ",e.jsx(s,{to:"/discord",className:"underline",children:"discord channel"}),"."]})]})}const D=d(function(){return e.jsxs("div",{className:"container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12",children:[e.jsx(h,{}),e.jsxs("p",{children:["The"," ",e.jsx(s,{target:"_blank",rel:"noreferrer noopener",className:"underline",to:"https://kentcdodds.com/discord",children:"Epic Web Community on Discord"})," ","is a great place to hang out with other developers who are working through this workshop. You can ask questions, get help, and solidify what you're learning by helping others."]}),e.jsx("p",{children:e.jsxs("small",{className:"text-sm",children:["If you've not joined the Epic Web Community on Discord yet, you'll be required to go through a short onboarding process first. A friendly bot will explain the process when you"," ",e.jsx(s,{to:"https://kcd.im/discord",target:"_blank",rel:"noreferrer noopener",className:"underline",children:"join"}),"."]})})]})});export{h as D,D as d,j as h,g as u};
2
+ //# sourceMappingURL=discord-DOEtvB6W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-DOEtvB6W.js","sources":["../../../app/routes/_app+/discord.tsx"],"sourcesContent":["import { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { Link } from 'react-router'\nimport { Icon } from '#app/components/icons.tsx'\nimport {\n\tuseOptionalDiscordMember,\n\tuseOptionalUser,\n} from '#app/components/user.tsx'\nimport { useWorkshopConfig } from '#app/components/workshop-config.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nfunction useConnectDiscordURL() {\n\tconst {\n\t\tproduct: { host },\n\t} = useWorkshopConfig()\n\treturn `https://${host}/discord`\n}\n\nexport function useDiscordCTALink() {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\tconst connectDiscordURL = useConnectDiscordURL()\n\n\tif (!user) {\n\t\treturn '/login'\n\t}\n\tif (!discordMember) {\n\t\treturn connectDiscordURL\n\t}\n\n\treturn 'https://discord.com/channels/715220730605731931/1161045224907341972'\n}\n\nexport function DiscordCTA() {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\tconst connectDiscordURL = useConnectDiscordURL()\n\tif (!user) {\n\t\treturn (\n\t\t\t<div className=\"flex flex-wrap items-center justify-center gap-2 text-xl\">\n\t\t\t\t<Link to=\"/login\" className=\"inline-flex items-center gap-2 underline\">\n\t\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t\t\tLogin\n\t\t\t\t</Link>{' '}\n\t\t\t\t<span>\n\t\t\t\t\tto get access to the exclusive{' '}\n\t\t\t\t\t<Link to=\"/discord\" className=\"underline\">\n\t\t\t\t\t\tdiscord channel\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t)\n\t}\n\tif (!discordMember) {\n\t\treturn (\n\t\t\t<div className=\"flex flex-wrap items-center justify-center gap-2 text-xl\">\n\t\t\t\t<Link\n\t\t\t\t\tto={connectDiscordURL}\n\t\t\t\t\tclassName=\"flex items-center gap-2 underline\"\n\t\t\t\t>\n\t\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t\t\tConnect Discord\n\t\t\t\t</Link>{' '}\n\t\t\t\t<span>\n\t\t\t\t\tto get access to the exclusive{' '}\n\t\t\t\t\t<Link to=\"/discord\" className=\"underline\">\n\t\t\t\t\t\tdiscord channel\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className=\"flex items-center justify-center gap-2 text-xl underline\">\n\t\t\t<Link to=\"discord://discord.com/channels/715220730605731931/1161045224907341972\">\n\t\t\t\t<Icon name=\"Discord\" size=\"2xl\" />\n\t\t\t</Link>\n\t\t\t<Link\n\t\t\t\tto=\"https://discord.com/channels/715220730605731931/1161045224907341972\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t>\n\t\t\t\tOpen Discord\n\t\t\t</Link>\n\t\t</div>\n\t)\n}\n\nexport default function DiscordRoute() {\n\treturn (\n\t\t<div className=\"container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12\">\n\t\t\t<DiscordCTA />\n\t\t\t<p>\n\t\t\t\tThe{' '}\n\t\t\t\t<Link\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\tto=\"https://kentcdodds.com/discord\"\n\t\t\t\t>\n\t\t\t\t\tEpic Web Community on Discord\n\t\t\t\t</Link>{' '}\n\t\t\t\tis a great place to hang out with other developers who are working\n\t\t\t\tthrough this workshop. You can ask questions, get help, and solidify\n\t\t\t\twhat you're learning by helping others.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<small className=\"text-sm\">\n\t\t\t\t\tIf you've not joined the Epic Web Community on Discord yet, you'll be\n\t\t\t\t\trequired to go through a short onboarding process first. A friendly\n\t\t\t\t\tbot will explain the process when you{' '}\n\t\t\t\t\t<Link\n\t\t\t\t\t\tto=\"https://kcd.im/discord\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\tjoin\n\t\t\t\t\t</Link>\n\t\t\t\t\t.\n\t\t\t\t</small>\n\t\t\t</p>\n\t\t</div>\n\t)\n}\n"],"names":["handle","getSitemapEntries","useConnectDiscordURL","product","host","useWorkshopConfig","useDiscordCTALink","user","useOptionalUser","discordMember","useOptionalDiscordMember","connectDiscordURL","DiscordCTA","jsxs","className","children","jsx","Link","to","Icon","name","size","target","rel","discord","_UNSAFE_withComponentProps"],"mappings":"6OASO,MAAMA,EAAoB,CAChCC,kBAAmBA,IAAM,IAC1B,EAEA,SAASC,GAAuB,CAC/B,KAAM,CACLC,QAAS,CAAEC,KAAAA,CAAK,GACbC,EAAA,EACJ,MAAO,WAAWD,CAAI,UACvB,CAEO,SAASE,GAAoB,CACnC,MAAMC,EAAOC,EAAA,EACPC,EAAgBC,EAAA,EAChBC,EAAoBT,EAAA,EAE1B,OAAKK,EAGAE,EAIE,sEAHCE,EAHA,QAOT,CAEO,SAASC,GAAa,CAC5B,MAAML,EAAOC,EAAA,EACPC,EAAgBC,EAAA,EAChBC,EAAoBT,EAAA,EAC1B,OAAKK,EAiBAE,EAsBJI,EAAAA,KAAC,MAAA,CAAIC,UAAU,2DACdC,SAAA,CAAAC,EAAAA,IAACC,EAAA,CAAKC,GAAG,wEACRH,SAAAC,EAAAA,IAACG,GAAKC,KAAK,UAAUC,KAAK,MAAM,CAAA,CACjC,EACAL,EAAAA,IAACC,EAAA,CACAC,GAAG,sEACHI,OAAO,SACPC,IAAI,sBACJR,SAAA,cAAA,CAED,CAAA,CAAA,CACD,EA/BCF,EAAAA,KAAC,MAAA,CAAIC,UAAU,2DACdC,SAAA,CAAAF,EAAAA,KAACI,EAAA,CACAC,GAAIP,EACJG,UAAU,oCAEVC,SAAA,CAAAC,EAAAA,IAACG,EAAA,CAAKC,KAAK,UAAUC,KAAK,MAAM,EAAE,iBAAA,EAEnC,EAAQ,WACP,OAAA,CAAKN,SAAA,CAAA,iCAC0B,UAC9BE,EAAA,CAAKC,GAAG,WAAWJ,UAAU,YAAYC,SAAA,kBAE1C,EAAO,GAAA,CAAA,CAER,CAAA,CAAA,CACD,EAhCAF,EAAAA,KAAC,MAAA,CAAIC,UAAU,2DACdC,SAAA,CAAAF,EAAAA,KAACI,EAAA,CAAKC,GAAG,SAASJ,UAAU,2CAC3BC,SAAA,CAAAC,EAAAA,IAACG,EAAA,CAAKC,KAAK,UAAUC,KAAK,MAAM,EAAE,OAAA,EAEnC,EAAQ,WACP,OAAA,CAAKN,SAAA,CAAA,iCAC0B,UAC9BE,EAAA,CAAKC,GAAG,WAAWJ,UAAU,YAAYC,SAAA,kBAE1C,EAAO,GAAA,CAAA,CAER,CAAA,CAAA,CACD,CAsCH,CAEA,MAAAS,EAAAC,EAAA,UAAuC,CACtC,OACCZ,EAAAA,KAAC,MAAA,CAAIC,UAAU,kFACdC,SAAA,CAAAC,EAAAA,IAACJ,EAAA,CAAA,CAAW,SACX,IAAA,CAAEG,SAAA,CAAA,MACE,IACJC,EAAAA,IAACC,EAAA,CACAK,OAAO,SACPC,IAAI,sBACJT,UAAU,YACVI,GAAG,iCACHH,SAAA,+BAAA,CAED,EAAQ,IAAI,iLAAA,CAAA,CAIb,EACAC,EAAAA,IAAC,IAAA,CACAD,SAAAF,EAAAA,KAAC,QAAA,CAAMC,UAAU,UAAUC,SAAA,CAAA,kLAGY,IACtCC,EAAAA,IAACC,EAAA,CACAC,GAAG,yBACHI,OAAO,SACPC,IAAI,sBACJT,UAAU,YACVC,SAAA,OAED,EAAO,GAAA,EAER,CAAA,CACD,CAAA,CAAA,CACD,CAEF,CAAA"}