UNPKG

monaco-editor-core

Version:

A browser based code editor

22 lines (21 loc) 1.29 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { autorunOpts } from '../../../base/common/observable.js'; import { observableFromEventOpts } from '../../../base/common/observableInternal/utils.js'; /** Creates an observable update when a configuration key updates. */ export function observableConfigValue(key, defaultValue, configurationService) { return observableFromEventOpts({ debugName: () => `Configuration Key "${key}"`, }, (handleChange) => configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration(key)) { handleChange(e); } }), () => configurationService.getValue(key) ?? defaultValue); } /** Update the configuration key with a value derived from observables. */ export function bindContextKey(key, service, computeValue) { const boundKey = key.bindTo(service); return autorunOpts({ debugName: () => `Set Context Key "${key.key}"` }, reader => { boundKey.set(computeValue(reader)); }); }