UNPKG

monaco-editor-core

Version:
44 lines 1.69 kB
/*--------------------------------------------------------------------------------------------- * 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