From 990456e51f6b6d201f25326316e2894deb64ca4d Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Mon, 12 Jun 2023 11:49:15 +0200 Subject: [PATCH] Repairs example urls --- .vscode/launch.json | 6 ++++ .../pages/playground/PlaygroundModel.ts | 33 ++++++++++++------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 2d19c83314..44c09c98e2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,6 +15,12 @@ "order": 1 } }, + { + "name": "Website", + "type": "chrome", + "request": "launch", + "url": "http://localhost:8080/" + }, { // Clone VS Code and make sure the task "Launch Http Server" runs. // Then the editor is build from sources. diff --git a/website/src/website/pages/playground/PlaygroundModel.ts b/website/src/website/pages/playground/PlaygroundModel.ts index 3133d9ba2c..c21bfa313a 100644 --- a/website/src/website/pages/playground/PlaygroundModel.ts +++ b/website/src/website/pages/playground/PlaygroundModel.ts @@ -322,12 +322,18 @@ function projectEquals( project2: IPlaygroundProject ): boolean { return ( - project1.css === project2.css && - project1.html === project2.html && - project1.js === project2.js + normalizeLineEnding(project1.css) === + normalizeLineEnding(project2.css) && + normalizeLineEnding(project1.html) === + normalizeLineEnding(project2.html) && + normalizeLineEnding(project1.js) === normalizeLineEnding(project2.js) ); } +function normalizeLineEnding(str: string): string { + return str.replace(/\r\n/g, "\n"); +} + class StateUrlSerializer implements IHistoryModel { public readonly dispose = Disposable.fn(); @@ -443,16 +449,21 @@ class StateUrlSerializer implements IHistoryModel { this._sourceOverride = source; } + function findExample(hashValue: string): PlaygroundExample | undefined { + if (hashValue.startsWith("example-")) { + hashValue = hashValue.substring("example-".length); + } + return getPlaygroundExamples() + .flatMap((e) => e.examples) + .find((e) => e.id === hashValue); + } + + let example: PlaygroundExample | undefined; + if (!hashValue) { this.model.selectedExample = getPlaygroundExamples()[0].examples[0]; - } else if (hashValue.startsWith("example-")) { - const exampleName = hashValue.substring("example-".length); - const example = getPlaygroundExamples() - .flatMap((e) => e.examples) - .find((e) => e.id === exampleName); - if (example) { - this.model.selectedExample = example; - } + } else if ((example = findExample(hashValue))) { + this.model.selectedExample = example; } else { let p: IPlaygroundProject | undefined = undefined; if (this.cachedState?.hash === hashValue) {