monaco-editor-core
Version:
A browser based code editor
44 lines • 1.69 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { isHotReloadEnabled, registerHotReloadHandler } from './hotReload.js';
import { constObservable, observableSignalFromEvent, observableValue } from './observable.js';
export function readHotReloadableExport(value, reader) {
observeHotReloadableExports([value], reader);
return value;
}
export function observeHotReloadableExports(values, reader) {
if (isHotReloadEnabled()) {
const o = observableSignalFromEvent('reload', event => registerHotReloadHandler(({ oldExports }) => {
if (![...Object.values(oldExports)].some(v => values.includes(v))) {
return undefined;
}
return (_newExports) => {
event(undefined);
return true;
};
}));
o.read(reader);
}
}
const classes = new Map();
export function createHotClass(clazz) {
if (!isHotReloadEnabled()) {
return constObservable(clazz);
}
// eslint-disable-next-line local/code-no-any-casts
const id = clazz.name;
let existing = classes.get(id);
if (!existing) {
existing = observableValue(id, clazz);
classes.set(id, existing);
}
else {
setTimeout(() => {
existing.set(clazz, undefined);
}, 0);
}
return existing;
}
//# sourceMappingURL=hotReloadHelpers.js.map