|
|
|
@ -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) {
|
|
|
|
|