Adds "use latest dev" button

This commit is contained in:
Henning Dieterichs 2023-08-28 20:48:44 +02:00 committed by Henning Dieterichs
parent 31b04afb94
commit 04ece42881
3 changed files with 34 additions and 9 deletions

View file

@ -404,6 +404,16 @@ class StateUrlSerializer implements IHistoryModel {
this.historyId++; this.historyId++;
} }
@action
useLatestDev(): void {
this._sourceOverride = undefined;
this.model.settings.setSettings({
...this.model.settings.settings,
...Source.useLatestDev().toPartialSettings(),
});
this.historyId++;
}
@action @action
saveSourceOverride(): void { saveSourceOverride(): void {
if (this._sourceOverride) { if (this._sourceOverride) {
@ -662,22 +672,26 @@ function findLastIndex<T>(
} }
class Source { class Source {
public static useLatestDev(sourceLanguagesStr?: string): Source {
// Assume the versions are already loaded
const versions = getNpmVersionsSync(undefined);
const version = versions.find((v) => v.indexOf("-dev-") !== -1);
return new Source(version, undefined, sourceLanguagesStr);
}
public static useLatest(sourceLanguagesStr?: string): Source {
return new Source(monacoEditorVersion, undefined, sourceLanguagesStr);
}
public static parse( public static parse(
sourceStr: string | undefined, sourceStr: string | undefined,
sourceLanguagesStr: string | undefined sourceLanguagesStr: string | undefined
): Source { ): Source {
if (sourceStr === "latest-dev") { if (sourceStr === "latest-dev") {
// The versions are already loaded return Source.useLatestDev(sourceLanguagesStr);
const versions = getNpmVersionsSync(undefined);
const version = versions.find((v) => v.indexOf("-dev-") !== -1);
return new Source(version, undefined, sourceLanguagesStr);
} }
if (sourceStr === "latest") { if (sourceStr === "latest") {
return new Source( return Source.useLatest(sourceLanguagesStr);
monacoEditorVersion,
undefined,
sourceLanguagesStr
);
} }
if (sourceStr && sourceStr.startsWith("v")) { if (sourceStr && sourceStr.startsWith("v")) {

View file

@ -192,6 +192,15 @@ export class PlaygroundPageContent extends React.Component<
.version ?? "url"}{" "} .version ?? "url"}{" "}
override override
</button> </button>
<button
type="button"
className="btn btn-secondary"
onClick={() =>
model.serializer.useLatestDev()
}
>
Use latest dev
</button>
<button <button
type="button" type="button"
className="btn btn-secondary" className="btn btn-secondary"

View file

@ -20,6 +20,8 @@ export async function getNpmVersions(): Promise<string[]> {
return npmVersionsPromise!; return npmVersionsPromise!;
} }
getNpmVersions();
async function loadNpmVersions(): Promise<string[]> { async function loadNpmVersions(): Promise<string[]> {
if (npmVersionsPromise === undefined) { if (npmVersionsPromise === undefined) {
npmVersionsPromise = _getNpmVersions(); npmVersionsPromise = _getNpmVersions();