@epic-web/workshop-app 4.2.8 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/build/client/assets/{_-CsdFvUbA.js → _-ByTWgb53.js} +2 -2
  2. package/build/client/assets/{_-CsdFvUbA.js.map → _-ByTWgb53.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-9RwIhGRW.js +2 -0
  4. package/build/client/assets/{_exerciseNumber-DWZNkWZM.js.map → _exerciseNumber-9RwIhGRW.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-P76hDsE6.js → _exerciseNumber_._stepNumber-D1wwEMQx.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-P76hDsE6.js.map → _exerciseNumber_._stepNumber-D1wwEMQx.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-BhpKVn4e.js +2 -0
  8. package/build/client/assets/{_exerciseNumber_.finished-CpC-flTW.js.map → _exerciseNumber_.finished-BhpKVn4e.js.map} +1 -1
  9. package/build/client/assets/{_layout-DEZ-aTmx.js → _layout-BaPtC79F.js} +2 -2
  10. package/build/client/assets/{_layout-DEZ-aTmx.js.map → _layout-BaPtC79F.js.map} +1 -1
  11. package/build/client/assets/_layout-Bj9PyQQD.js +2 -0
  12. package/build/client/assets/{_layout-D1A2zp9y.js.map → _layout-Bj9PyQQD.js.map} +1 -1
  13. package/build/client/assets/_layout-DPfeFZ1b.js +2 -0
  14. package/build/client/assets/{_layout-BSoUgboG.js.map → _layout-DPfeFZ1b.js.map} +1 -1
  15. package/build/client/assets/_layout-PTTX5RMb.js +2 -0
  16. package/build/client/assets/_layout-PTTX5RMb.js.map +1 -0
  17. package/build/client/assets/account-C6GYxzo4.js +2 -0
  18. package/build/client/assets/{account-BeKnQB9r.js.map → account-C6GYxzo4.js.map} +1 -1
  19. package/build/client/assets/{button-Da1iG51o.js → button-DnQOyJAN.js} +2 -2
  20. package/build/client/assets/{button-Da1iG51o.js.map → button-DnQOyJAN.js.map} +1 -1
  21. package/build/client/assets/{client-hints-B2pbEa_9.js → client-hints-BsCjbOX0.js} +3 -3
  22. package/build/client/assets/client-hints-BsCjbOX0.js.map +1 -0
  23. package/build/client/assets/{components-BM_XUa9h.js → components-Dj3sm47B.js} +15 -15
  24. package/build/client/assets/{components-BM_XUa9h.js.map → components-Dj3sm47B.js.map} +1 -1
  25. package/build/client/assets/{diff-BQhWtDyS.js → diff-BQB9RSaR.js} +2 -2
  26. package/build/client/assets/{diff-BQhWtDyS.js.map → diff-BQB9RSaR.js.map} +1 -1
  27. package/build/client/assets/diff-SN_GIbcP.js +2 -0
  28. package/build/client/assets/{diff-BDeBUdSw.js.map → diff-SN_GIbcP.js.map} +1 -1
  29. package/build/client/assets/discord-CK7yz4w6.js +2 -0
  30. package/build/client/assets/discord-CK7yz4w6.js.map +1 -0
  31. package/build/client/assets/{discord-BMNnObT9.js → discord-CsluX01E.js} +2 -2
  32. package/build/client/assets/{discord-BMNnObT9.js.map → discord-CsluX01E.js.map} +1 -1
  33. package/build/client/assets/{entry.client-XC5tKTFs.js → entry.client-DBBrAxtJ.js} +2 -2
  34. package/build/client/assets/{entry.client-XC5tKTFs.js.map → entry.client-DBBrAxtJ.js.map} +1 -1
  35. package/build/client/assets/{epic-video-CxRPT-8l.js → epic-video-21h2ikhz.js} +2 -2
  36. package/build/client/assets/{epic-video-CxRPT-8l.js.map → epic-video-21h2ikhz.js.map} +1 -1
  37. package/build/client/assets/{error-boundary-tJSWbP6w.js → error-boundary-Bg54_knF.js} +2 -2
  38. package/build/client/assets/{error-boundary-tJSWbP6w.js.map → error-boundary-Bg54_knF.js.map} +1 -1
  39. package/build/client/assets/finished-BcwIbl76.js +2 -0
  40. package/build/client/assets/{finished-CMGRmsnb.js.map → finished-BcwIbl76.js.map} +1 -1
  41. package/build/client/assets/{index-B8G3eD8F.js → index-BL4aE6WC.js} +2 -2
  42. package/build/client/assets/{index-B8G3eD8F.js.map → index-BL4aE6WC.js.map} +1 -1
  43. package/build/client/assets/{index-BymJEf3X.js → index-BfoHqrT5.js} +2 -2
  44. package/build/client/assets/{index-BymJEf3X.js.map → index-BfoHqrT5.js.map} +1 -1
  45. package/build/client/assets/index-CsvysmWA.js +2 -0
  46. package/build/client/assets/{index-CQZ5FyEE.js.map → index-CsvysmWA.js.map} +1 -1
  47. package/build/client/assets/index-D1WEsmVZ.js +36 -0
  48. package/build/client/assets/{index-BDqSZ0-h.js.map → index-D1WEsmVZ.js.map} +1 -1
  49. package/build/client/assets/index-HBgMKyVf.js +2 -0
  50. package/build/client/assets/{index-Dc59VwXx.js.map → index-HBgMKyVf.js.map} +1 -1
  51. package/build/client/assets/{loading-DsjO-T0W.js → loading-Ba880UMD.js} +2 -2
  52. package/build/client/assets/{loading-DsjO-T0W.js.map → loading-Ba880UMD.js.map} +1 -1
  53. package/build/client/assets/login-BQY-a6kw.js +2 -0
  54. package/build/client/assets/{login-CcuvIoiW.js.map → login-BQY-a6kw.js.map} +1 -1
  55. package/build/client/assets/manifest-0d62be17.js +1 -0
  56. package/build/client/assets/mdx-wWk4dtHt.js +2 -0
  57. package/build/client/assets/{mdx-CZ_BPVoS.js.map → mdx-wWk4dtHt.js.map} +1 -1
  58. package/build/client/assets/misc-CXGQ7VS9.js +2 -0
  59. package/build/client/assets/{misc-C1rq7sPa.js.map → misc-CXGQ7VS9.js.map} +1 -1
  60. package/build/client/assets/{nav-chevrons-C-dN3WfT.js → nav-chevrons-D8c9lJW6.js} +2 -2
  61. package/build/client/assets/{nav-chevrons-C-dN3WfT.js.map → nav-chevrons-D8c9lJW6.js.map} +1 -1
  62. package/build/client/assets/onboarding-gD8f59tE.js +2 -0
  63. package/build/client/assets/{onboarding-CfXLKsN3.js.map → onboarding-gD8f59tE.js.map} +1 -1
  64. package/build/client/assets/presence-B2xpI37C.js +28 -0
  65. package/build/client/assets/presence-B2xpI37C.js.map +1 -0
  66. package/build/client/assets/{progress-mfa_5CZx.js → progress-CBZt2pmu.js} +2 -2
  67. package/build/client/assets/{progress-mfa_5CZx.js.map → progress-CBZt2pmu.js.map} +1 -1
  68. package/build/client/assets/{progress-bar-BmszwN_j.js → progress-bar-DX6yYES2.js} +2 -2
  69. package/build/client/assets/{progress-bar-BmszwN_j.js.map → progress-bar-DX6yYES2.js.map} +1 -1
  70. package/build/client/assets/request-info-BHMoxBaT.js +2 -0
  71. package/build/client/assets/request-info-BHMoxBaT.js.map +1 -0
  72. package/build/client/assets/{root-1Cc21xa6.js → root-BcFXTrBQ.js} +2 -2
  73. package/build/client/assets/{root-1Cc21xa6.js.map → root-BcFXTrBQ.js.map} +1 -1
  74. package/build/client/assets/{support--jou3sWH.js → support-QTdmLyE7.js} +2 -2
  75. package/build/client/assets/{support--jou3sWH.js.map → support-QTdmLyE7.js.map} +1 -1
  76. package/build/client/assets/{tooltip-BlVFw-is.js → tooltip-CVFWPOu0.js} +2 -2
  77. package/build/client/assets/{tooltip-BlVFw-is.js.map → tooltip-CVFWPOu0.js.map} +1 -1
  78. package/build/client/assets/{use-event-source-DPLyo0Bh.js → use-event-source-DXlRuRq2.js} +2 -2
  79. package/build/client/assets/{use-event-source-DPLyo0Bh.js.map → use-event-source-DXlRuRq2.js.map} +1 -1
  80. package/build/client/assets/{user-p2QVtDZI.js → user-DiGtbaa7.js} +2 -2
  81. package/build/client/assets/{user-p2QVtDZI.js.map → user-DiGtbaa7.js.map} +1 -1
  82. package/build/client/img/tiffany.png +0 -0
  83. package/build/server/index.js +10 -4
  84. package/build/server/index.js.map +1 -1
  85. package/package.json +3 -3
  86. package/build/client/assets/_exerciseNumber-DWZNkWZM.js +0 -2
  87. package/build/client/assets/_exerciseNumber_.finished-CpC-flTW.js +0 -2
  88. package/build/client/assets/_layout-BSoUgboG.js +0 -2
  89. package/build/client/assets/_layout-C8fK4Z98.js +0 -2
  90. package/build/client/assets/_layout-C8fK4Z98.js.map +0 -1
  91. package/build/client/assets/_layout-D1A2zp9y.js +0 -2
  92. package/build/client/assets/account-BeKnQB9r.js +0 -2
  93. package/build/client/assets/client-hints-B2pbEa_9.js.map +0 -1
  94. package/build/client/assets/diff-BDeBUdSw.js +0 -2
  95. package/build/client/assets/discord-DdAReDkL.js +0 -2
  96. package/build/client/assets/discord-DdAReDkL.js.map +0 -1
  97. package/build/client/assets/finished-CMGRmsnb.js +0 -2
  98. package/build/client/assets/index-B8k-Gd1G.js +0 -2
  99. package/build/client/assets/index-B8k-Gd1G.js.map +0 -1
  100. package/build/client/assets/index-BDqSZ0-h.js +0 -36
  101. package/build/client/assets/index-CQZ5FyEE.js +0 -2
  102. package/build/client/assets/index-Dc59VwXx.js +0 -2
  103. package/build/client/assets/login-CcuvIoiW.js +0 -2
  104. package/build/client/assets/manifest-1656ae4d.js +0 -1
  105. package/build/client/assets/mdx-CZ_BPVoS.js +0 -2
  106. package/build/client/assets/misc-C1rq7sPa.js +0 -2
  107. package/build/client/assets/onboarding-CfXLKsN3.js +0 -2
  108. package/build/client/assets/presence-BF7lWuVd.js +0 -28
  109. package/build/client/assets/presence-BF7lWuVd.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{c as e,j as r}from"./index-D1WEsmVZ.js";import{d as o,c as m}from"./misc-CXGQ7VS9.js";import{D as n}from"./diff-BQB9RSaR.js";import{N as p}from"./nav-chevrons-D8c9lJW6.js";import{u as f,d as c}from"./components-Dj3sm47B.js";import"./clsx-B-dksMZM.js";import"./tooltip-CVFWPOu0.js";import"./mdx-wWk4dtHt.js";import"./epic-video-21h2ikhz.js";import"./loading-Ba880UMD.js";import"./client-hints-BsCjbOX0.js";import"./request-info-BHMoxBaT.js";import"./index-HBgMKyVf.js";import"./progress-bar-DX6yYES2.js";function S(){const s=f(),[a]=c();new URLSearchParams(a).set("forceFresh","diff");const i=e(),t=o.useSpinDelay(i.state!=="idle",{delay:200,minDuration:200});return r.jsxs("div",{className:m("grid h-full grid-rows-[1fr,auto]",{"cursor-wait opacity-30":t}),children:[r.jsx("div",{className:"overflow-y-auto",children:r.jsx(n,{diff:s.diff,allApps:s.allApps})}),r.jsx("div",{className:"flex h-16 items-center justify-end border-t",children:r.jsx(p,{prev:s.prevLink,next:s.nextLink})})]})}export{S as default};
2
+ //# sourceMappingURL=diff-SN_GIbcP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-BDeBUdSw.js","sources":["../../../app/routes/diff.tsx"],"sourcesContent":["import {\n\tgetAppByName,\n\tgetApps,\n\tisExerciseStepApp,\n\tgetAppDisplayName,\n} from '@epic-web/workshop-utils/apps.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport { defer, type LoaderFunctionArgs } from '@remix-run/node'\nimport { useLoaderData, useNavigation, useSearchParams } from '@remix-run/react'\nimport { useSpinDelay } from 'spin-delay'\nimport { Diff } from '#app/components/diff.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { getDiffCode } from '#app/utils/diff.server.ts'\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 defer({\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":["DiffViewer","data","useLoaderData","params","useSearchParams","navigation","useNavigation","isNavigating","useSpinDelay","jsxs","jsx","Diff","NavChevrons"],"mappings":"ufAKO,SAAAA,GAAA,CACP,MAAAC,EAA4BC,IAC5B,CAASC,CAAsC,EAAAC,wBACeD,CAAA,EACjC,IAAA,aAAA,MAAA,EAC7B,MAAAE,EAAqBC,IACrBC,EAA4BC,EAAA,aAAAH,EAAA,QAAA,OAAA,CAC5B,MAA4B,IAC5B,YAAmB,GAEnB,CAAsB,EACrB,OAAuBI,EAAAA,KAAA,MAAW,CAClC,+CAA4B,CACtB,yBAAkCF,CACxC,CAAM,EACA,SAAA,CAA4BG,EAAA,IAAA,MAAA,CAClC,UAAiB,kBACjB,SAAqCA,EAAA,IAAAC,EAAA,CAE/B,YAGA,QACHV,EAAA,OAIH,CAAM,CAIN,CAAA,EAA6BS,EAAA,IAAA,MAAA,CACxB,UAAS,8CACL,SAAAA,EAAA,IAAAE,EAAA,CACN,KAAMX,EAAM,SACZ,KAAMA,EAAM,QAAA,CAAA,CACF,CACX,CAAA,CAAA,CACD,CACA"}
1
+ {"version":3,"file":"diff-SN_GIbcP.js","sources":["../../../app/routes/diff.tsx"],"sourcesContent":["import {\n\tgetAppByName,\n\tgetApps,\n\tisExerciseStepApp,\n\tgetAppDisplayName,\n} from '@epic-web/workshop-utils/apps.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport { defer, type LoaderFunctionArgs } from '@remix-run/node'\nimport { useLoaderData, useNavigation, useSearchParams } from '@remix-run/react'\nimport { useSpinDelay } from 'spin-delay'\nimport { Diff } from '#app/components/diff.tsx'\nimport { NavChevrons } from '#app/components/nav-chevrons.tsx'\nimport { getDiffCode } from '#app/utils/diff.server.ts'\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 defer({\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":["DiffViewer","data","useLoaderData","params","useSearchParams","navigation","useNavigation","isNavigating","useSpinDelay","jsxs","jsx","Diff","NavChevrons"],"mappings":"8fAKO,SAAAA,GAAA,CACP,MAAAC,EAA4BC,IAC5B,CAASC,CAAsC,EAAAC,wBACeD,CAAA,EACjC,IAAA,aAAA,MAAA,EAC7B,MAAAE,EAAqBC,IACrBC,EAA4BC,EAAA,aAAAH,EAAA,QAAA,OAAA,CAC5B,MAA4B,IAC5B,YAAmB,GAEnB,CAAsB,EACrB,OAAuBI,EAAAA,KAAA,MAAW,CAClC,+CAA4B,CACtB,yBAAkCF,CACxC,CAAM,EACA,SAAA,CAA4BG,EAAA,IAAA,MAAA,CAClC,UAAiB,kBACjB,SAAqCA,EAAA,IAAAC,EAAA,CAE/B,YAGA,QACHV,EAAA,OAIH,CAAM,CAIN,CAAA,EAA6BS,EAAA,IAAA,MAAA,CACxB,UAAS,8CACL,SAAAA,EAAA,IAAAE,EAAA,CACN,KAAMX,EAAM,SACZ,KAAMA,EAAM,QAAA,CAAA,CACF,CACX,CAAA,CAAA,CACD,CACA"}
@@ -0,0 +1,2 @@
1
+ import{a as e}from"./discord-CsluX01E.js";import"./index-D1WEsmVZ.js";import"./misc-CXGQ7VS9.js";import"./clsx-B-dksMZM.js";import"./components-Dj3sm47B.js";import"./user-DiGtbaa7.js";export{e as default};
2
+ //# sourceMappingURL=discord-CK7yz4w6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discord-CK7yz4w6.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-BDqSZ0-h.js";import{I as i}from"./misc-C1rq7sPa.js";import{b as t,a as c}from"./user-p2QVtDZI.js";import{u as l,L as s}from"./components-BM_XUa9h.js";function m({discordAuthUrl:r}){const n=t(),o=c();return n?o?"https://discord.com/channels/715220730605731931/1161045224907341972":r:"/login"}function a({discordAuthUrl:r}){const n=t(),o=c();return n?o?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(i,{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:r,className:"flex items-center gap-2 underline",children:[e.jsx(i,{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(i,{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"}),"."]})]})}function p(){const r=l();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(a,{discordAuthUrl:r.discordAuthUrl}),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{a as D,p as a,m as u};
2
- //# sourceMappingURL=discord-BMNnObT9.js.map
1
+ import{j as e}from"./index-D1WEsmVZ.js";import{I as i}from"./misc-CXGQ7VS9.js";import{b as t,a as c}from"./user-DiGtbaa7.js";import{u as l,L as s}from"./components-Dj3sm47B.js";function m({discordAuthUrl:r}){const n=t(),o=c();return n?o?"https://discord.com/channels/715220730605731931/1161045224907341972":r:"/login"}function a({discordAuthUrl:r}){const n=t(),o=c();return n?o?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(i,{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:r,className:"flex items-center gap-2 underline",children:[e.jsx(i,{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(i,{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"}),"."]})]})}function p(){const r=l();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(a,{discordAuthUrl:r.discordAuthUrl}),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{a as D,p as a,m as u};
2
+ //# sourceMappingURL=discord-CsluX01E.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discord-BMNnObT9.js","sources":["../../../app/routes/_app+/discord.tsx"],"sourcesContent":["import { json } from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport { getDiscordAuthURL } from '../discord.callback.ts'\nimport { Icon } from '#app/components/icons.tsx'\nimport {\n\tuseOptionalDiscordMember,\n\tuseOptionalUser,\n} from '#app/components/user.tsx'\n\nexport async function loader() {\n\treturn json({ discordAuthUrl: getDiscordAuthURL() })\n}\n\nexport function useDiscordCTALink({\n\tdiscordAuthUrl,\n}: {\n\tdiscordAuthUrl: string\n}) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\n\tif (!user) {\n\t\treturn '/login'\n\t}\n\tif (!discordMember) {\n\t\treturn discordAuthUrl\n\t}\n\n\treturn 'https://discord.com/channels/715220730605731931/1161045224907341972'\n}\n\nexport function DiscordCTA({ discordAuthUrl }: { discordAuthUrl: string }) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\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 to={discordAuthUrl} className=\"flex items-center gap-2 underline\">\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\tconst data = useLoaderData<typeof loader>()\n\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 discordAuthUrl={data.discordAuthUrl} />\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":["useDiscordCTALink","discordAuthUrl","user","useOptionalUser","discordMember","useOptionalDiscordMember","DiscordCTA","jsxs","jsx","Link","Icon","DiscordRoute","data","useLoaderData"],"mappings":"iLAGA,SAAqBA,EAAA,CACrB,eAAAC,CAAA,EACC,CACA,MAAAC,EAAAC,IACMC,EAAAC,IAEP,OAAAH,EAIOE,wEACNH,EAJY,QASZ,CAEK,SAAMK,EAAA,CACH,eAAAL,CAAA,EACR,CACA,MAAoBC,EAAAC,IACZC,EAAAC,IACR,OAAAH,EAuBEE,EA0BAG,EAAAA,KAAA,MAAA,CAAC,UAAA,2DAAA,SAAA,CAAAC,EAAA,IAAAC,EAAA,CAAA,GACG,wEAAA,SACID,EAAA,IAAAE,EAAA,CACP,KAAI,UACJ,KAAA,KAAA,CAAA,CAAA,CAED,EAAAF,EAAA,IAAAC,EAAA,CACD,GAAA,sEAEF,OAAA,SAEA,IAAA,sBACC,SAA0C,cAE1C,CACC,CAAA,CACC,CAAC,EAxCHF,EAAAA,KAAA,MAAA,CACI,UAAgB,2DAElB,SAAA,CAACA,EAAI,KAAAE,EAAA,CACJ,GAAAR,EACC,UAAA,oCAAkC,SAAA,CAAAO,EAAA,IAAAE,EAAA,CAEnC,KAAA,UAAQ,KAAA,yBACF,CAAA,CAAA,EAAA,IAAAH,EAAA,KAAA,OAAA,CAC0B,SAAA,CAAA,iCAAA,IAAAC,EAAAA,IAAAC,EAAA,eAGxB,UAAA,YAER,SAAA,iBACD,CAAA,EAAA,GAAA,CAAA,CAEF,CAAA,CAEA,CACC,EA3CMF,EAAAA,KAAA,MAAA,CACR,UAAA,2DAEgB,SAAA,CAAaA,EAAA,KAAAE,EAAA,CACtB,YACA,qDAEK,SAAA,CAAAD,EAAA,IAAAE,EAAA,CAET,KAAA,UACC,KAAA,KACC,CAAA,EAAA,OAAA,CAAgC,CAAE,EAAA,IAAAH,EAAA,KAAA,OAAA,CAEnC,SAAA,CAAA,iCAAA,IAAAC,EAAAA,IAAAC,EAAA,CAAQ,GAAA,iCACF,SAAA,iBAC0B,CAAA,EAAA,GAAA,CAAA,CAAA,CAC/B,CAEA,CAAO,CA6CwC,CAC9C,SAAAE,GAAA,CACE,MAAAC,EAAAC,IACJ,OAAAN,EAAAA,KAAA,MAAA,CAAC,UAAA,kFAAA,SAAA,CAAAC,EAAA,IAAAF,EAAA,CAAA,eACOM,EAAA,cAAA,CAAA,EACHL,EAAA,KAAA,IAAA,CAAA,SACM,CAAA,MAAA,IAAAC,EAAAA,IAAAC,EAAA,CAAA,OACP,SACH,IAAA,sBAAA,UAAA,YAED,GAAA,iCAAQ,SAAA,+BAAA,CAAI,EAAA,IAAA,iLAAA,CAAA,CAIb,EAAAD,EAAA,IAAA,IAAA,CACC,SACAD,EAAC,KAAA,QAAA,CAA0B,UAAA,UAGY,SAAA,CAAA,kLAAA,IAAAC,EAAAA,IAAAC,EAAA,CACtC,GAAA,yBAAC,OAAA,SAAA,IAAA,sBACA,UAAG,YACH,SAAO,MAAA,CAAA,EACH,GAAA,CAAA,CAAA,CACM,CACV,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"discord-CsluX01E.js","sources":["../../../app/routes/_app+/discord.tsx"],"sourcesContent":["import { json } from '@remix-run/node'\nimport { Link, useLoaderData } from '@remix-run/react'\nimport { getDiscordAuthURL } from '../discord.callback.ts'\nimport { Icon } from '#app/components/icons.tsx'\nimport {\n\tuseOptionalDiscordMember,\n\tuseOptionalUser,\n} from '#app/components/user.tsx'\n\nexport async function loader() {\n\treturn json({ discordAuthUrl: getDiscordAuthURL() })\n}\n\nexport function useDiscordCTALink({\n\tdiscordAuthUrl,\n}: {\n\tdiscordAuthUrl: string\n}) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\n\tif (!user) {\n\t\treturn '/login'\n\t}\n\tif (!discordMember) {\n\t\treturn discordAuthUrl\n\t}\n\n\treturn 'https://discord.com/channels/715220730605731931/1161045224907341972'\n}\n\nexport function DiscordCTA({ discordAuthUrl }: { discordAuthUrl: string }) {\n\tconst user = useOptionalUser()\n\tconst discordMember = useOptionalDiscordMember()\n\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 to={discordAuthUrl} className=\"flex items-center gap-2 underline\">\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\tconst data = useLoaderData<typeof loader>()\n\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 discordAuthUrl={data.discordAuthUrl} />\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":["useDiscordCTALink","discordAuthUrl","user","useOptionalUser","discordMember","useOptionalDiscordMember","DiscordCTA","jsxs","jsx","Link","Icon","DiscordRoute","data","useLoaderData"],"mappings":"iLAGA,SAAqBA,EAAA,CACrB,eAAAC,CAAA,EACC,CACA,MAAAC,EAAAC,IACMC,EAAAC,IAEP,OAAAH,EAIOE,wEACNH,EAJY,QASZ,CAEK,SAAMK,EAAA,CACH,eAAAL,CAAA,EACR,CACA,MAAoBC,EAAAC,IACZC,EAAAC,IACR,OAAAH,EAuBEE,EA0BAG,EAAAA,KAAA,MAAA,CAAC,UAAA,2DAAA,SAAA,CAAAC,EAAA,IAAAC,EAAA,CAAA,GACG,wEAAA,SACID,EAAA,IAAAE,EAAA,CACP,KAAI,UACJ,KAAA,KAAA,CAAA,CAAA,CAED,EAAAF,EAAA,IAAAC,EAAA,CACD,GAAA,sEAEF,OAAA,SAEA,IAAA,sBACC,SAA0C,cAE1C,CACC,CAAA,CACC,CAAC,EAxCHF,EAAAA,KAAA,MAAA,CACI,UAAgB,2DAElB,SAAA,CAACA,EAAI,KAAAE,EAAA,CACJ,GAAAR,EACC,UAAA,oCAAkC,SAAA,CAAAO,EAAA,IAAAE,EAAA,CAEnC,KAAA,UAAQ,KAAA,yBACF,CAAA,CAAA,EAAA,IAAAH,EAAA,KAAA,OAAA,CAC0B,SAAA,CAAA,iCAAA,IAAAC,EAAAA,IAAAC,EAAA,eAGxB,UAAA,YAER,SAAA,iBACD,CAAA,EAAA,GAAA,CAAA,CAEF,CAAA,CAEA,CACC,EA3CMF,EAAAA,KAAA,MAAA,CACR,UAAA,2DAEgB,SAAA,CAAaA,EAAA,KAAAE,EAAA,CACtB,YACA,qDAEK,SAAA,CAAAD,EAAA,IAAAE,EAAA,CAET,KAAA,UACC,KAAA,KACC,CAAA,EAAA,OAAA,CAAgC,CAAE,EAAA,IAAAH,EAAA,KAAA,OAAA,CAEnC,SAAA,CAAA,iCAAA,IAAAC,EAAAA,IAAAC,EAAA,CAAQ,GAAA,iCACF,SAAA,iBAC0B,CAAA,EAAA,GAAA,CAAA,CAAA,CAC/B,CAEA,CAAO,CA6CwC,CAC9C,SAAAE,GAAA,CACE,MAAAC,EAAAC,IACJ,OAAAN,EAAAA,KAAA,MAAA,CAAC,UAAA,kFAAA,SAAA,CAAAC,EAAA,IAAAF,EAAA,CAAA,eACOM,EAAA,cAAA,CAAA,EACHL,EAAA,KAAA,IAAA,CAAA,SACM,CAAA,MAAA,IAAAC,EAAAA,IAAAC,EAAA,CAAA,OACP,SACH,IAAA,sBAAA,UAAA,YAED,GAAA,iCAAQ,SAAA,+BAAA,CAAI,EAAA,IAAA,iLAAA,CAAA,CAIb,EAAAD,EAAA,IAAA,IAAA,CACC,SACAD,EAAC,KAAA,QAAA,CAA0B,UAAA,UAGY,SAAA,CAAA,kLAAA,IAAAC,EAAAA,IAAAC,EAAA,CACtC,GAAA,yBAAC,OAAA,SAAA,IAAA,sBACA,UAAG,YACH,SAAO,MAAA,CAAA,EACH,GAAA,CAAA,CAAA,CACM,CACV,CAAA,CAAA,CAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import{r as C,i as Sr,a as Dr,g as Pr,m as Mr,h as Lr,j as jr}from"./index-BDqSZ0-h.js";import{f as Ar,S as Cr,i as Mt,l as Tr,p as Vt,R as Fr,g as Or,r as Ur}from"./components-BM_XUa9h.js";/**
1
+ import{r as C,i as Sr,a as Dr,f as Pr,m as Mr,g as Lr,j as jr}from"./index-D1WEsmVZ.js";import{f as Ar,S as Cr,i as Mt,l as Tr,p as Vt,R as Fr,g as Or,r as Ur}from"./components-Dj3sm47B.js";/**
2
2
  * @remix-run/router v1.15.3
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
@@ -70,4 +70,4 @@ import{r as C,i as Sr,a as Dr,g as Pr,m as Mr,h as Lr,j as jr}from"./index-BDqSZ
70
70
  *
71
71
  * @license MIT
72
72
  */function or(e){let t={};return Object.values(e).forEach(r=>{let n=r.parentId||"";t[n]||(t[n]=[]),t[n].push(r)}),t}function Xn(e,t,r){let n=lr(t),a=t.HydrateFallback&&(!r||e.id==="root")?t.HydrateFallback:e.id==="root"?Wn:void 0,l=t.ErrorBoundary?t.ErrorBoundary:e.id==="root"?()=>C.createElement(nr,{error:Dr()}):void 0;return e.id==="root"&&t.Layout?{...n?{element:C.createElement(t.Layout,null,C.createElement(n,null))}:{Component:n},...l?{errorElement:C.createElement(t.Layout,null,C.createElement(l,null))}:{ErrorBoundary:l},...a?{hydrateFallbackElement:C.createElement(t.Layout,null,C.createElement(a,null))}:{HydrateFallback:a}}:{Component:n,ErrorBoundary:l,HydrateFallback:a}}function Vn(e,t,r,n,a,l){return gt(t,r,n,a,l,"",or(t),e)}function Je(e,t,r){if(r){let d=`You cannot call ${e==="action"?"serverAction()":"serverLoader()"} in SPA Mode (routeId: "${t.id}")`;throw console.error(d),new De(400,"Bad Request",new Error(d),!0)}let a=`You are trying to call ${e==="action"?"serverAction()":"serverLoader()"} on a route that does not have a server ${e} (routeId: "${t.id}")`;if(e==="loader"&&!t.hasLoader||e==="action"&&!t.hasAction)throw console.error(a),new De(400,"Bad Request",new Error(a),!0)}function lt(e,t){let r=e==="clientAction"?"a":"an",n=`Route "${t}" does not have ${r} ${e}, but you are trying to submit to it. To fix this, please add ${r} \`${e}\` function to the route`;throw console.error(n),new De(405,"Method Not Allowed",new Error(n),!0)}function gt(e,t,r,n,a,l="",d=or(e),u){return(d[l]||[]).map(o=>{let m=t[o.id];async function h(b){return o.hasLoader?Wt(b,o):null}async function y(b){if(!o.hasAction)throw lt("action",o.id);return Wt(b,o)}async function w(b){let A=t[o.id],W=A?Vt(o,A):Promise.resolve();try{return b()}finally{await W}}let D={id:o.id,index:o.index,path:o.path};if(m){var j,S,v;Object.assign(D,{...D,...Xn(o,m,a),handle:m.handle,shouldRevalidate:u?Kt(o.id,m.shouldRevalidate,u):m.shouldRevalidate});let b=r==null||(j=r.loaderData)===null||j===void 0?void 0:j[o.id],A=r==null||(S=r.errors)===null||S===void 0?void 0:S[o.id],W=u==null&&(((v=m.clientLoader)===null||v===void 0?void 0:v.hydrate)===!0||!o.hasLoader);D.loader=async({request:I,params:c})=>{try{return await w(async()=>(Mt(m,"No `routeModule` available for critical-route loader"),m.clientLoader?m.clientLoader({request:I,params:c,async serverLoader(){if(Je("loader",o,a),W){if(A!==void 0)throw A;return b}let N=await h(I);return await Ge(N)}}):a?null:h(I)))}finally{W=!1}},D.loader.hydrate=sr(o,m,a),D.action=({request:I,params:c})=>w(async()=>{if(Mt(m,"No `routeModule` available for critical-route action"),!m.clientAction){if(a)throw lt("clientAction",o.id);return y(I)}return m.clientAction({request:I,params:c,async serverAction(){Je("action",o,a);let F=await y(I);return await Ge(F)}})})}else o.hasClientLoader||(D.loader=({request:b})=>w(()=>a?Promise.resolve(null):h(b))),o.hasClientAction||(D.action=({request:b})=>w(()=>{if(a)throw lt("clientAction",o.id);return y(b)})),D.lazy=async()=>{let b=await Yn(o,t),A={...b};if(b.clientLoader){let W=b.clientLoader;A.loader=I=>W({...I,async serverLoader(){Je("loader",o,a);let c=await h(I.request);return await Ge(c)}})}if(b.clientAction){let W=b.clientAction;A.action=I=>W({...I,async serverAction(){Je("action",o,a);let c=await y(I.request);return await Ge(c)}})}return u&&(A.shouldRevalidate=Kt(o.id,b.shouldRevalidate,u)),{...A.loader?{loader:A.loader}:{},...A.action?{action:A.action}:{},hasErrorBoundary:A.hasErrorBoundary,shouldRevalidate:A.shouldRevalidate,handle:A.handle,Component:A.Component,ErrorBoundary:A.ErrorBoundary}};let x=gt(e,t,r,n,a,o.id,d,u);return x.length>0&&(D.children=x),D})}function Kt(e,t,r){let n=!1;return a=>n?t?t(a):a.defaultShouldRevalidate:(n=!0,r.has(e))}async function Yn(e,t){let r=await Tr(e,t);return await Vt(e,r),{Component:lr(r),ErrorBoundary:r.ErrorBoundary,clientAction:r.clientAction,clientLoader:r.clientLoader,handle:r.handle,links:r.links,meta:r.meta,shouldRevalidate:r.shouldRevalidate}}async function Wt(e,t){let r=await ir(e,t.id);if(r instanceof Error)throw r;if(In(r))throw Jn(r);if(Un(r))throw r;return $n(r)&&r.body?await Nn(r.body):r}function Ge(e){if(zn(e))return e.data;if(ar(e)){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.json():e.text()}return e}function Jn(e){let t=parseInt(e.headers.get("X-Remix-Status"),10)||302,r=e.headers.get("X-Remix-Redirect"),n={},a=e.headers.get("X-Remix-Revalidate");a&&(n["X-Remix-Revalidate"]=a);let l=e.headers.get("X-Remix-Reload-Document");return l&&(n["X-Remix-Reload-Document"]=l),Pr(r,{status:t,headers:n})}function lr(e){if(e.default==null)return;if(!(typeof e.default=="object"&&Object.keys(e.default).length===0))return e.default}function sr(e,t,r){return r&&e.id!=="root"||t.clientLoader!=null&&(t.clientLoader.hydrate===!0||e.hasLoader!==!0)}let te,st=!1;let pt,ea=new Promise(e=>{pt=e}).catch(()=>{});function Gn(e){if(!te){let l=window.__remixContext.url,d=window.location.pathname;if(l!==d&&!window.__remixContext.isSpaMode){let m=`Initial URL (${l}) does not match URL at time of hydration (${d}), reloading page...`;return console.error(m),window.location.reload(),C.createElement(C.Fragment,null)}let u=gt(window.__remixManifest.routes,window.__remixRouteModules,window.__remixContext.state,window.__remixContext.future,window.__remixContext.isSpaMode),o;if(!window.__remixContext.isSpaMode){o={...window.__remixContext.state,loaderData:{...window.__remixContext.state.loaderData}};let m=Mr(u,window.location);if(m)for(let h of m){let y=h.route.id,w=window.__remixRouteModules[y],D=window.__remixManifest.routes[y];w&&sr(D,w,window.__remixContext.isSpaMode)&&(w.HydrateFallback||!D.hasLoader)?o.loaderData[y]=void 0:D&&!D.hasLoader&&(o.loaderData[y]=null)}o&&o.errors&&(o.errors=On(o.errors))}te=bn({routes:u,history:kr(),basename:window.__remixContext.basename,future:{v7_normalizeFormMethod:!0,v7_fetcherPersist:window.__remixContext.future.v3_fetcherPersist,v7_partialHydration:!0,v7_prependBasename:!0,v7_relativeSplatPath:window.__remixContext.future.v3_relativeSplatPath},hydrationData:o,mapRouteProperties:Lr}),te.state.initialized&&(st=!0,te.initialize()),te.createRoutesForHMR=Vn,window.__remixRouter=te,pt&&pt(te)}let[t,r]=C.useState(void 0),[n,a]=C.useState(te.state.location);return C.useLayoutEffect(()=>{st||(st=!0,te.initialize())},[]),C.useLayoutEffect(()=>te.subscribe(l=>{l.location!==n&&a(l.location)}),[n]),C.createElement(Fr.Provider,{value:{manifest:window.__remixManifest,routeModules:window.__remixRouteModules,future:window.__remixContext.future,criticalCss:t,isSpaMode:window.__remixContext.isSpaMode}},C.createElement(Fn,{location:n},C.createElement(Or,{router:te,fallbackElement:null,future:{v7_startTransition:!0}})))}var dr,Xt=Ur;Xt.createRoot,dr=Xt.hydrateRoot;dr(document,jr.jsx(Gn,{}));
73
- //# sourceMappingURL=entry.client-XC5tKTFs.js.map
73
+ //# sourceMappingURL=entry.client-DBBrAxtJ.js.map