Skip to content

Commit 9ce7121

Browse files
committed
fixes
1 parent b7ba93f commit 9ce7121

File tree

14 files changed

+153
-226
lines changed

14 files changed

+153
-226
lines changed

app/root.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ let default = () => {
3434
<Links />
3535
<Meta />
3636
<link rel="icon" href="/favicon.ico" />
37+
<meta charSet="UTF-8" />
3738
</head>
3839
<body>
3940
<Navigation isOverlayOpen setOverlayOpen />

app/routes/TryRoute.res

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,55 @@
1-
@react.component
1+
type props = {
2+
bundleBaseUrl: string,
3+
versions: array<string>,
4+
}
5+
6+
let loader = async () => {
7+
let (bundleBaseUrl, versionsBaseUrl) = switch (
8+
Node.Process.Env.playgroundBundleEndpoint,
9+
Node.Process.Env.nodeEnv,
10+
) {
11+
| (Some(baseUrl), _) => (baseUrl, baseUrl)
12+
| (None, "development") => {
13+
// Use remote bundles in dev
14+
let baseUrl = "https://cdn.rescript-lang.org"
15+
(baseUrl, baseUrl)
16+
}
17+
| (None, _) => (
18+
// Use same-origin requests for the bundle
19+
"/playground-bundles",
20+
// There is no version endpoint in the build phase
21+
"https://cdn.rescript-lang.org",
22+
)
23+
}
24+
25+
let versions = {
26+
let response = await fetch(versionsBaseUrl + "/playground-bundles/versions.json")
27+
let json = await WebAPI.Response.json(response)
28+
json
29+
->JSON.Decode.array
30+
->Option.getOrThrow
31+
->Array.map(json => json->JSON.Decode.string->Option.getOrThrow)
32+
}
33+
34+
{
35+
bundleBaseUrl,
36+
versions,
37+
}
38+
}
39+
40+
module ClientOnly = {
41+
@react.component
42+
let make = (~bundleBaseUrl, ~versions) => {
43+
<React.Suspense>
44+
<LazyPlayground bundleBaseUrl versions />
45+
</React.Suspense>
46+
}
47+
}
48+
249
let default = () => {
3-
<div></div>
50+
let {bundleBaseUrl, versions} = ReactRouter.useLoaderData()
51+
52+
<div className="text-gray-40 text-14 overflow-scroll">
53+
<ClientOnly bundleBaseUrl versions />
54+
</div>
455
}

app/routes/TryRoute.resi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type props = {
2+
bundleBaseUrl: string,
3+
versions: array<string>,
4+
}
5+
6+
let loader: unit => promise<props>
7+
8+
let default: unit => React.element

scripts/test-examples.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ fs.writeFileSync(tempFileName, "");
130130
let success = true;
131131

132132
glob
133-
.sync(__dirname + "/../pages/docs/{manual/latest,react/latest}/**/*.mdx")
133+
.sync(__dirname + "/../docs/{manual,react}/**/*.mdx")
134134
.forEach((file) => {
135135
let content = fs.readFileSync(file, { encoding: "utf-8" });
136136
let parsedResult = parseFile(content);

src/BlogLoader.res

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ let transform = (mdx: Mdx.attributes): BlogApi.post => {
22
// Archived posts are those in the archived folder
33

44
// The path isn't included when we are rending a post vs listing them
5-
let archived = mdx.path->String.includes("/archived/")
5+
let archived = try {
6+
mdx.path->String.includes("/archived/")
7+
} catch {
8+
| _ => false
9+
}
10+
611
{
712
path: mdx.slug->Option.getOr("/blog"),
813
archived,

src/DocsOverview.res

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ module Card = {
1616

1717
@react.component
1818
let default = (~showVersionSelect=true) => {
19-
let router = Next.Router.useRouter()
20-
let url = router.route->Url.parse
19+
let {pathname} = ReactRouter.useLocation()
20+
let url = (pathname :> string)->Url.parse
2121

2222
let version = url->Url.getVersionString
2323

src/LazyPlayground.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
let make = React.lazy_(() => import(Playground.make))

src/Playground.res

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,7 @@ let initialReContent = `Js.log("Hello Reason 3.6!");`
15031503

15041504
@react.component
15051505
let make = (~bundleBaseUrl: string, ~versions: array<string>) => {
1506-
let router = Next.Router.useRouter()
1506+
let (searchParams, setSearchParams) = ReactRouter.useSearchParams()
15071507

15081508
let versions =
15091509
versions
@@ -1523,7 +1523,7 @@ let make = (~bundleBaseUrl: string, ~versions: array<string>) => {
15231523
| [v] => Some(v) // only single version available. maybe local dev.
15241524
| versions => {
15251525
let lastStableVersion = versions->Array.find(version => version.preRelease->Option.isNone)
1526-
switch Dict.get(router.query, (CompilerManagerHook.Version :> string)) {
1526+
switch searchParams->Object.get((CompilerManagerHook.Version :> string)) {
15271527
| Some(version) => version->Semver.parse
15281528
| None =>
15291529
switch Url.getVersionFromStorage(Playground) {
@@ -1534,20 +1534,20 @@ let make = (~bundleBaseUrl: string, ~versions: array<string>) => {
15341534
}
15351535
}
15361536

1537-
let initialLang = switch Dict.get(router.query, (CompilerManagerHook.Ext :> string)) {
1537+
let initialLang = switch searchParams->Object.get((CompilerManagerHook.Ext :> string)) {
15381538
| Some("re") => Api.Lang.Reason
15391539
| _ => Api.Lang.Res
15401540
}
15411541

1542-
let initialModuleSystem = Dict.get(router.query, (Module :> string))
1543-
let initialJsxPreserveMode = Dict.get(router.query, (JsxPreserve :> string))->Option.isSome
1542+
let initialModuleSystem = searchParams->Object.get((Module :> string))
1543+
let initialJsxPreserveMode = searchParams->Object.get((JsxPreserve :> string))->Option.isSome
15441544

15451545
let initialExperimentalFeatures =
1546-
Dict.get(router.query, (Experiments :> string))->Option.mapOr([], str =>
1547-
str->String.split(",")->Array.map(String.trim)
1548-
)
1546+
searchParams
1547+
->Object.get((Experiments :> string))
1548+
->Option.mapOr([], str => str->String.split(",")->Array.map(String.trim))
15491549

1550-
let initialContent = switch (Dict.get(router.query, (Code :> string)), initialLang) {
1550+
let initialContent = switch (searchParams->Object.get((Code :> string)), initialLang) {
15511551
| (Some(compressedCode), _) => LzString.decompressToEncodedURIComponent(compressedCode)
15521552
| (None, Reason) => initialReContent
15531553
| (None, Res) =>
@@ -1597,7 +1597,11 @@ let make = (~bundleBaseUrl: string, ~versions: array<string>) => {
15971597
we take any success results and set the editor code to the new formatted code */
15981598
switch compilerState {
15991599
| Ready({result: FinalResult.Nothing} as ready) =>
1600-
compilerDispatch(CompileCode(ready.targetLang, editorCode.current))
1600+
try {
1601+
compilerDispatch(CompileCode(ready.targetLang, editorCode.current))
1602+
} catch {
1603+
| err => Console.error(err)
1604+
}
16011605
| Ready({result: FinalResult.Conv(Api.ConversionResult.Success({code}))}) =>
16021606
editorCode.current = code
16031607
| _ => ()
@@ -1617,7 +1621,12 @@ let make = (~bundleBaseUrl: string, ~versions: array<string>) => {
16171621
React.useEffect(() => {
16181622
timeoutCompile.current = () =>
16191623
switch compilerState {
1620-
| Ready(ready) => compilerDispatch(CompileCode(ready.targetLang, editorCode.current))
1624+
| Ready(ready) =>
1625+
try {
1626+
compilerDispatch(CompileCode(ready.targetLang, editorCode.current))
1627+
} catch {
1628+
| err => Console.error(err)
1629+
}
16211630
| _ => ()
16221631
}
16231632

src/Try.res

Lines changed: 0 additions & 82 deletions
This file was deleted.

src/Try.resi

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)