@vscode/markdown-editor 0.0.2-2 → 0.0.2-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_observables/observableInternal/index.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/consoleObservableLogger.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/debugger/devToolsLogger.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/logging.d.ts +1 -1
- package/dist/_observables/observableInternal/reactions/{autorun.d.ts → createEffect.d.ts} +11 -3
- package/dist/index.d.ts +1000 -52
- package/dist/index.js +4005 -2074
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.css +1 -0
- package/dist/observables.js +79 -101
- package/dist/observables.js.map +1 -1
- package/dist/{runOnChange-owE1SMC0.js → runOnChange-CkxK2gSn.js} +191 -163
- package/dist/runOnChange-CkxK2gSn.js.map +1 -0
- package/dist/stringEdit-DzLs4E1d.js +177 -0
- package/dist/stringEdit-DzLs4E1d.js.map +1 -0
- package/dist/web-editors.d.ts +125 -0
- package/dist/web-editors.js +5185 -0
- package/dist/web-editors.js.map +1 -0
- package/package.json +36 -9
- package/src/contrib/comments/commentInput.css +150 -0
- package/src/contrib/comments/comments.css +129 -0
- package/src/contrib/commentsVscode/vscodeCommentWidgetV2.css +166 -0
- package/src/view/editor.css +526 -32
- package/src/view/themes/default.css +11 -3
- package/src/view/themes/github.css +12 -9
- package/src/view/themes/vscode-default.css +347 -0
- package/src/view/themes/vscode-github.css +349 -0
- package/dist/runOnChange-owE1SMC0.js.map +0 -1
- /package/dist/_observables/observableInternal/reactions/{autorunImpl.d.ts → createEffectImpl.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runOnChange-CkxK2gSn.js","sources":["../../../../vscode-observables/observables/dist/observableInternal/logging/logging.js","../../../../vscode-observables/observables/dist/observableInternal/debugLocation.js","../../../../vscode-observables/observables/dist/observableInternal/debugName.js","../../../../vscode-observables/observables/dist/observableInternal/observables/baseObservable.js","../../../../vscode-observables/observables/dist/observableInternal/commonFacade/deps.js","../../../../vscode-observables/observables/dist/disposables.js","../../../../vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js","../../../../vscode-observables/observables/dist/observableInternal/observables/derived.js","../../../../vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js","../../../../vscode-observables/observables/dist/observableInternal/reactions/createEffect.js","../../../../vscode-observables/observables/dist/observableInternal/base.js","../../../../vscode-observables/observables/dist/observableInternal/transaction.js","../../../../vscode-observables/observables/dist/observableInternal/observables/observableValue.js","../../../../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js","../../../../vscode-observables/observables/dist/observableInternal/observables/observableSignal.js","../../../../vscode-observables/observables/dist/observableInternal/utils/utils.js","../../../../vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js","../../../../vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js","../../../../vscode-observables/observables/dist/observableInternal/index.js","../../../../vscode-observables/observables/dist/observableInternal/commonFacade/cancellation.js","../../../../vscode-observables/observables/dist/observableInternal/observables/constObservable.js","../../../../vscode-observables/observables/dist/observableInternal/utils/runOnChange.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nlet globalObservableLogger;\nfunction addLogger(logger) {\n if (!globalObservableLogger) {\n globalObservableLogger = logger;\n }\n else if (globalObservableLogger instanceof ComposedLogger) {\n globalObservableLogger.loggers.push(logger);\n }\n else {\n globalObservableLogger = new ComposedLogger([globalObservableLogger, logger]);\n }\n}\nfunction getLogger() {\n return globalObservableLogger;\n}\nlet globalObservableLoggerFn = undefined;\nfunction setLogObservableFn(fn) {\n globalObservableLoggerFn = fn;\n}\nfunction logObservable(obs) {\n if (globalObservableLoggerFn) {\n globalObservableLoggerFn(obs);\n }\n}\nclass ComposedLogger {\n constructor(loggers) {\n this.loggers = loggers;\n }\n handleObservableCreated(observable, location) {\n for (const logger of this.loggers) {\n logger.handleObservableCreated(observable, location);\n }\n }\n handleOnListenerCountChanged(observable, newCount) {\n for (const logger of this.loggers) {\n logger.handleOnListenerCountChanged(observable, newCount);\n }\n }\n handleObservableUpdated(observable, info) {\n for (const logger of this.loggers) {\n logger.handleObservableUpdated(observable, info);\n }\n }\n handleAutorunCreated(autorun, location) {\n for (const logger of this.loggers) {\n logger.handleAutorunCreated(autorun, location);\n }\n }\n handleAutorunDisposed(autorun) {\n for (const logger of this.loggers) {\n logger.handleAutorunDisposed(autorun);\n }\n }\n handleAutorunDependencyChanged(autorun, observable, change) {\n for (const logger of this.loggers) {\n logger.handleAutorunDependencyChanged(autorun, observable, change);\n }\n }\n handleAutorunStarted(autorun) {\n for (const logger of this.loggers) {\n logger.handleAutorunStarted(autorun);\n }\n }\n handleAutorunFinished(autorun) {\n for (const logger of this.loggers) {\n logger.handleAutorunFinished(autorun);\n }\n }\n handleDerivedDependencyChanged(derived, observable, change) {\n for (const logger of this.loggers) {\n logger.handleDerivedDependencyChanged(derived, observable, change);\n }\n }\n handleDerivedCleared(observable) {\n for (const logger of this.loggers) {\n logger.handleDerivedCleared(observable);\n }\n }\n handleBeginTransaction(transaction) {\n for (const logger of this.loggers) {\n logger.handleBeginTransaction(transaction);\n }\n }\n handleEndTransaction(transaction) {\n for (const logger of this.loggers) {\n logger.handleEndTransaction(transaction);\n }\n }\n}\n\nexport { addLogger, getLogger, logObservable, setLogObservableFn };\n//# sourceMappingURL=logging.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar DebugLocation;\n(function (DebugLocation) {\n let enabled = false;\n function enable() {\n enabled = true;\n }\n DebugLocation.enable = enable;\n function ofCaller() {\n return ofNthCaller(1);\n }\n DebugLocation.ofCaller = ofCaller;\n function ofNthCaller(n) {\n if (!enabled) {\n return undefined;\n }\n const Err = Error; // For the monaco editor checks, which don't have the nodejs types.\n const l = Err.stackTraceLimit;\n Err.stackTraceLimit = 3;\n const stack = new Error().stack;\n Err.stackTraceLimit = l;\n return DebugLocationImpl.fromStack(stack, n + 1);\n }\n DebugLocation.ofNthCaller = ofNthCaller;\n})(DebugLocation || (DebugLocation = {}));\nclass DebugLocationImpl {\n static fromStack(stack, parentIdx) {\n const lines = stack.split('\\n');\n const location = parseLine(lines[parentIdx + 1]);\n if (location) {\n return new DebugLocationImpl(location.fileName, location.line, location.column, location.id);\n }\n else {\n return undefined;\n }\n }\n constructor(fileName, line, column, id) {\n this.fileName = fileName;\n this.line = line;\n this.column = column;\n this.id = id;\n }\n}\nfunction parseLine(stackLine) {\n if (!stackLine) {\n return undefined;\n }\n const match = stackLine.match(/\\((.*):(\\d+):(\\d+)\\)/);\n if (match) {\n return {\n fileName: match[1],\n line: parseInt(match[2]),\n column: parseInt(match[3]),\n id: stackLine,\n };\n }\n const match2 = stackLine.match(/at ([^\\(\\)]*):(\\d+):(\\d+)/);\n if (match2) {\n return {\n fileName: match2[1],\n line: parseInt(match2[2]),\n column: parseInt(match2[3]),\n id: stackLine,\n };\n }\n return undefined;\n}\n\nexport { DebugLocation };\n//# sourceMappingURL=debugLocation.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass DebugNameData {\n constructor(owner, debugNameSource, referenceFn) {\n this.owner = owner;\n this.debugNameSource = debugNameSource;\n this.referenceFn = referenceFn;\n }\n getDebugName(target) {\n return getDebugName(target, this);\n }\n}\nconst countPerName = new Map();\nconst cachedDebugName = new WeakMap();\nfunction getDebugName(target, data) {\n const cached = cachedDebugName.get(target);\n if (cached) {\n return cached;\n }\n const dbgName = computeDebugName(target, data);\n if (dbgName) {\n let count = countPerName.get(dbgName) ?? 0;\n count++;\n countPerName.set(dbgName, count);\n const result = count === 1 ? dbgName : `${dbgName}#${count}`;\n cachedDebugName.set(target, result);\n return result;\n }\n return undefined;\n}\nfunction computeDebugName(self, data) {\n const cached = cachedDebugName.get(self);\n if (cached) {\n return cached;\n }\n const ownerStr = data.owner ? formatOwner(data.owner) + `.` : '';\n let result;\n const debugNameSource = data.debugNameSource;\n if (debugNameSource !== undefined) {\n if (typeof debugNameSource === 'function') {\n result = debugNameSource();\n if (result !== undefined) {\n return ownerStr + result;\n }\n }\n else {\n return ownerStr + debugNameSource;\n }\n }\n const referenceFn = data.referenceFn;\n if (referenceFn !== undefined) {\n result = getFunctionName(referenceFn);\n if (result !== undefined) {\n return ownerStr + result;\n }\n }\n if (data.owner !== undefined) {\n const key = findKey(data.owner, self);\n if (key !== undefined) {\n return ownerStr + key;\n }\n }\n return undefined;\n}\nfunction findKey(obj, value) {\n for (const key in obj) {\n if (obj[key] === value) {\n return key;\n }\n }\n return undefined;\n}\nconst countPerClassName = new Map();\nconst ownerId = new WeakMap();\nfunction formatOwner(owner) {\n const id = ownerId.get(owner);\n if (id) {\n return id;\n }\n const className = getClassName(owner) ?? 'Object';\n let count = countPerClassName.get(className) ?? 0;\n count++;\n countPerClassName.set(className, count);\n const result = count === 1 ? className : `${className}#${count}`;\n ownerId.set(owner, result);\n return result;\n}\nfunction getClassName(obj) {\n const ctor = obj.constructor;\n if (ctor) {\n if (ctor.name === 'Object') {\n return undefined;\n }\n return ctor.name;\n }\n return undefined;\n}\nfunction getFunctionName(fn) {\n const fnSrc = fn.toString();\n // Pattern: /** @description ... */\n const regexp = /\\/\\*\\*\\s*@description\\s*([^*]*)\\*\\//;\n const match = regexp.exec(fnSrc);\n const result = match ? match[1] : undefined;\n return result?.trim();\n}\n\nexport { DebugNameData, getClassName, getDebugName, getFunctionName };\n//# sourceMappingURL=debugName.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { DebugLocation } from '../debugLocation.js';\nimport { getFunctionName } from '../debugName.js';\nimport { logObservable, getLogger } from '../logging/logging.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nlet _derived;\n/**\n * @internal\n * This is to allow splitting files.\n*/\nfunction _setDerivedOpts(derived) {\n _derived = derived;\n}\nlet _recomputeInitiallyAndOnChange;\nfunction _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange) {\n _recomputeInitiallyAndOnChange = recomputeInitiallyAndOnChange;\n}\nlet _keepObserved;\nfunction _setKeepObserved(keepObserved) {\n _keepObserved = keepObserved;\n}\nlet _debugGetDependencyGraph;\nfunction _setDebugGetDependencyGraph(debugGetDependencyGraph) {\n _debugGetDependencyGraph = debugGetDependencyGraph;\n}\nclass ConvenientObservable {\n get TChange() { return null; }\n reportChanges() {\n this.get();\n }\n /** @sealed */\n read(reader) {\n if (reader) {\n return reader.readObservable(this);\n }\n else {\n return this.get();\n }\n }\n map(fnOrOwner, fnOrUndefined, debugLocation = DebugLocation.ofCaller()) {\n const owner = fnOrUndefined === undefined ? undefined : fnOrOwner;\n const fn = fnOrUndefined === undefined ? fnOrOwner : fnOrUndefined;\n return _derived({\n owner,\n debugName: () => {\n const name = getFunctionName(fn);\n if (name !== undefined) {\n return name;\n }\n // regexp to match `x => x.y` or `x => x?.y` where x and y can be arbitrary identifiers (uses backref):\n const regexp = /^\\s*\\(?\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*\\)?\\s*=>\\s*\\1(?:\\??)\\.([a-zA-Z_$][a-zA-Z_$0-9]*)\\s*$/;\n const match = regexp.exec(fn.toString());\n if (match) {\n return `${this.debugName}.${match[2]}`;\n }\n if (!owner) {\n return `${this.debugName} (mapped)`;\n }\n return undefined;\n },\n debugReferenceFn: fn,\n }, (reader) => fn(this.read(reader), reader), debugLocation);\n }\n /**\n * @sealed\n * Converts an observable of an observable value into a direct observable of the value.\n */\n flatten() {\n return _derived({\n owner: undefined,\n debugName: () => `${this.debugName} (flattened)`,\n }, (reader) => this.read(reader).read(reader));\n }\n recomputeInitiallyAndOnChange(store, handleValue) {\n store.add(_recomputeInitiallyAndOnChange(this, handleValue));\n return this;\n }\n /**\n * Ensures that this observable is observed. This keeps the cache alive.\n * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get).\n * Use `recomputeInitiallyAndOnChange` for eager evaluation.\n */\n keepObserved(store) {\n store.add(_keepObserved(this));\n return this;\n }\n get debugValue() {\n return this.get();\n }\n debugGetDependencyGraph() {\n return _debugGetDependencyGraph(this);\n }\n}\nclass BaseObservable extends ConvenientObservable {\n constructor(debugLocation) {\n super();\n this._observers = new Set();\n getLogger()?.handleObservableCreated(this, debugLocation);\n }\n addObserver(observer) {\n const len = this._observers.size;\n this._observers.add(observer);\n if (len === 0) {\n this.onFirstObserverAdded();\n }\n if (len !== this._observers.size) {\n getLogger()?.handleOnListenerCountChanged(this, this._observers.size);\n }\n }\n removeObserver(observer) {\n const deleted = this._observers.delete(observer);\n if (deleted && this._observers.size === 0) {\n this.onLastObserverRemoved();\n }\n if (deleted) {\n getLogger()?.handleOnListenerCountChanged(this, this._observers.size);\n }\n }\n onFirstObserverAdded() { }\n onLastObserverRemoved() { }\n log() {\n const hadLogger = !!getLogger();\n logObservable(this);\n if (!hadLogger) {\n getLogger()?.handleObservableCreated(this, DebugLocation.ofCaller());\n }\n return this;\n }\n debugGetObservers() {\n return this._observers;\n }\n}\n\nexport { BaseObservable, ConvenientObservable, _setDebugGetDependencyGraph, _setDerivedOpts, _setKeepObserved, _setRecomputeInitiallyAndOnChange };\n//# sourceMappingURL=baseObservable.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction toDisposable(fn) {\n return {\n dispose: fn\n };\n}\nclass BugIndicatingError extends Error {\n constructor(message) {\n super(message || 'An unexpected bug occurred.');\n Object.setPrototypeOf(this, BugIndicatingError.prototype);\n // Because we know for sure only buggy code throws this,\n // we definitely want to break here and fix the bug.\n // eslint-disable-next-line no-debugger\n // debugger;\n }\n}\nfunction onBugIndicatingError(error) {\n // debugger;\n throw error;\n}\nfunction onUnexpectedError(error) {\n console.error('Unexpected error:', error);\n}\n/**\n * Compares two items for equality using strict equality.\n*/\nconst strictEquals = (a, b) => a === b;\n\nexport { BugIndicatingError, onBugIndicatingError, onUnexpectedError, strictEquals, toDisposable };\n//# sourceMappingURL=deps.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass DisposableStore {\n constructor() {\n this.disposables = [];\n this._isDisposed = false;\n }\n get isDisposed() { return this._isDisposed; }\n dispose() {\n this.clear();\n this._isDisposed = true;\n }\n add(disposable) {\n if (disposable) {\n this.disposables.push(disposable);\n }\n return disposable;\n }\n remove(disposable) {\n if (!disposable) {\n return disposable;\n }\n const index = this.disposables.indexOf(disposable);\n if (index !== -1) {\n this.disposables.splice(index, 1);\n }\n return disposable;\n }\n clear() {\n for (const disposable of this.disposables) {\n disposable.dispose();\n }\n this.disposables = [];\n }\n leakItems() {\n this.disposables = [];\n }\n}\nclass Disposable {\n constructor() {\n this._store = new DisposableStore();\n }\n dispose() {\n this._store.dispose();\n }\n _register(t) {\n this._store.add(t);\n return t;\n }\n _registerOrDispose(t) {\n if (t) {\n if (this._store.isDisposed) {\n t.dispose();\n }\n else {\n this._store.add(t);\n }\n }\n return t;\n }\n}\n\nexport { Disposable, DisposableStore };\n//# sourceMappingURL=disposables.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { BaseObservable } from './baseObservable.js';\nimport { BugIndicatingError, onBugIndicatingError } from '../commonFacade/deps.js';\nimport { getLogger } from '../logging/logging.js';\nimport { DisposableStore } from '../../disposables.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction derivedStateToString(state) {\n switch (state) {\n case 0 /* DerivedState.initial */: return 'initial';\n case 1 /* DerivedState.dependenciesMightHaveChanged */: return 'dependenciesMightHaveChanged';\n case 2 /* DerivedState.stale */: return 'stale';\n case 3 /* DerivedState.upToDate */: return 'upToDate';\n default: return '<unknown>';\n }\n}\nclass Derived extends BaseObservable {\n get debugName() {\n return this._debugNameData.getDebugName(this) ?? '(anonymous)';\n }\n constructor(_debugNameData, _computeFn, _changeTracker, _handleLastObserverRemoved = undefined, _equalityComparator, debugLocation) {\n super(debugLocation);\n this._debugNameData = _debugNameData;\n this._computeFn = _computeFn;\n this._changeTracker = _changeTracker;\n this._handleLastObserverRemoved = _handleLastObserverRemoved;\n this._equalityComparator = _equalityComparator;\n this._state = 0 /* DerivedState.initial */;\n this._value = undefined;\n this._updateCount = 0;\n this._dependencies = new Set();\n this._dependenciesToBeRemoved = new Set();\n this._changeSummary = undefined;\n this._isUpdating = false;\n this._isComputing = false;\n this._didReportChange = false;\n this._isInBeforeUpdate = false;\n this._isReaderValid = false;\n this._store = undefined;\n this._delayedStore = undefined;\n this._removedObserverToCallEndUpdateOn = null;\n this._changeSummary = this._changeTracker?.createChangeSummary(undefined);\n }\n onLastObserverRemoved() {\n /**\n * We are not tracking changes anymore, thus we have to assume\n * that our cache is invalid.\n */\n this._state = 0 /* DerivedState.initial */;\n this._value = undefined;\n getLogger()?.handleDerivedCleared(this);\n for (const d of this._dependencies) {\n d.removeObserver(this);\n }\n this._dependencies.clear();\n if (this._store !== undefined) {\n this._store.dispose();\n this._store = undefined;\n }\n if (this._delayedStore !== undefined) {\n this._delayedStore.dispose();\n this._delayedStore = undefined;\n }\n this._handleLastObserverRemoved?.();\n }\n get() {\n const checkEnabled = false; // TODO set to true\n if (this._isComputing && checkEnabled) {\n // investigate why this fails in the diff editor!\n throw new BugIndicatingError('Cyclic deriveds are not supported yet!');\n }\n if (this._observers.size === 0) {\n let result;\n // Without observers, we don't know when to clean up stuff.\n // Thus, we don't cache anything to prevent memory leaks.\n try {\n this._isReaderValid = true;\n let changeSummary = undefined;\n if (this._changeTracker) {\n changeSummary = this._changeTracker.createChangeSummary(undefined);\n this._changeTracker.beforeUpdate?.(this, changeSummary);\n }\n result = this._computeFn(this, changeSummary);\n }\n finally {\n this._isReaderValid = false;\n }\n // Clear new dependencies\n this.onLastObserverRemoved();\n return result;\n }\n else {\n do {\n // We might not get a notification for a dependency that changed while it is updating,\n // thus we also have to ask all our depedencies if they changed in this case.\n if (this._state === 1 /* DerivedState.dependenciesMightHaveChanged */) {\n for (const d of this._dependencies) {\n /** might call {@link handleChange} indirectly, which could make us stale */\n d.reportChanges();\n if (this._state === 2 /* DerivedState.stale */) {\n // The other dependencies will refresh on demand, so early break\n break;\n }\n }\n }\n // We called report changes of all dependencies.\n // If we are still not stale, we can assume to be up to date again.\n if (this._state === 1 /* DerivedState.dependenciesMightHaveChanged */) {\n this._state = 3 /* DerivedState.upToDate */;\n }\n if (this._state !== 3 /* DerivedState.upToDate */) {\n this._recompute();\n }\n // In case recomputation changed one of our dependencies, we need to recompute again.\n } while (this._state !== 3 /* DerivedState.upToDate */);\n return this._value;\n }\n }\n _recompute() {\n let didChange = false;\n this._isComputing = true;\n this._didReportChange = false;\n const emptySet = this._dependenciesToBeRemoved;\n this._dependenciesToBeRemoved = this._dependencies;\n this._dependencies = emptySet;\n try {\n const changeSummary = this._changeSummary;\n this._isReaderValid = true;\n if (this._changeTracker) {\n this._isInBeforeUpdate = true;\n this._changeTracker.beforeUpdate?.(this, changeSummary);\n this._isInBeforeUpdate = false;\n this._changeSummary = this._changeTracker?.createChangeSummary(changeSummary);\n }\n const hadValue = this._state !== 0 /* DerivedState.initial */;\n const oldValue = this._value;\n this._state = 3 /* DerivedState.upToDate */;\n const delayedStore = this._delayedStore;\n if (delayedStore !== undefined) {\n this._delayedStore = undefined;\n }\n try {\n if (this._store !== undefined) {\n this._store.dispose();\n this._store = undefined;\n }\n /** might call {@link handleChange} indirectly, which could invalidate us */\n this._value = this._computeFn(this, changeSummary);\n }\n finally {\n this._isReaderValid = false;\n // We don't want our observed observables to think that they are (not even temporarily) not being observed.\n // Thus, we only unsubscribe from observables that are definitely not read anymore.\n for (const o of this._dependenciesToBeRemoved) {\n o.removeObserver(this);\n }\n this._dependenciesToBeRemoved.clear();\n if (delayedStore !== undefined) {\n delayedStore.dispose();\n }\n }\n didChange = this._didReportChange || (hadValue && !(this._equalityComparator(oldValue, this._value)));\n getLogger()?.handleObservableUpdated(this, {\n oldValue,\n newValue: this._value,\n change: undefined,\n didChange,\n hadValue,\n });\n }\n catch (e) {\n onBugIndicatingError(e);\n }\n this._isComputing = false;\n if (!this._didReportChange && didChange) {\n for (const r of this._observers) {\n r.handleChange(this, undefined);\n }\n }\n else {\n this._didReportChange = false;\n }\n }\n toString() {\n return `LazyDerived<${this.debugName}>`;\n }\n // IObserver Implementation\n beginUpdate(_observable) {\n if (this._isUpdating) {\n throw new BugIndicatingError('Cyclic deriveds are not supported yet!');\n }\n this._updateCount++;\n this._isUpdating = true;\n try {\n const propagateBeginUpdate = this._updateCount === 1;\n if (this._state === 3 /* DerivedState.upToDate */) {\n this._state = 1 /* DerivedState.dependenciesMightHaveChanged */;\n // If we propagate begin update, that will already signal a possible change.\n if (!propagateBeginUpdate) {\n for (const r of this._observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n if (propagateBeginUpdate) {\n for (const r of this._observers) {\n r.beginUpdate(this); // This signals a possible change\n }\n }\n }\n finally {\n this._isUpdating = false;\n }\n }\n endUpdate(_observable) {\n this._updateCount--;\n if (this._updateCount === 0) {\n // End update could change the observer list.\n const observers = [...this._observers];\n for (const r of observers) {\n r.endUpdate(this);\n }\n if (this._removedObserverToCallEndUpdateOn) {\n const observers = [...this._removedObserverToCallEndUpdateOn];\n this._removedObserverToCallEndUpdateOn = null;\n for (const r of observers) {\n r.endUpdate(this);\n }\n }\n }\n }\n handlePossibleChange(observable) {\n // In all other states, observers already know that we might have changed.\n if (this._state === 3 /* DerivedState.upToDate */ && this._dependencies.has(observable) && !this._dependenciesToBeRemoved.has(observable)) {\n this._state = 1 /* DerivedState.dependenciesMightHaveChanged */;\n for (const r of this._observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n handleChange(observable, change) {\n if (this._dependencies.has(observable) && !this._dependenciesToBeRemoved.has(observable) || this._isInBeforeUpdate) {\n getLogger()?.handleDerivedDependencyChanged(this, observable, change);\n let shouldReact = false;\n try {\n shouldReact = this._changeTracker ? this._changeTracker.handleChange({\n changedObservable: observable,\n change,\n didChange: (o) => o === observable,\n }, this._changeSummary) : true;\n }\n catch (e) {\n onBugIndicatingError(e);\n }\n const wasUpToDate = this._state === 3 /* DerivedState.upToDate */;\n if (shouldReact && (this._state === 1 /* DerivedState.dependenciesMightHaveChanged */ || wasUpToDate)) {\n this._state = 2 /* DerivedState.stale */;\n if (wasUpToDate) {\n for (const r of this._observers) {\n r.handlePossibleChange(this);\n }\n }\n }\n }\n }\n // IReader Implementation\n _ensureReaderValid() {\n if (!this._isReaderValid) {\n throw new BugIndicatingError('The reader object cannot be used outside its compute function!');\n }\n }\n readObservable(observable) {\n this._ensureReaderValid();\n // Subscribe before getting the value to enable caching\n observable.addObserver(this);\n /** This might call {@link handleChange} indirectly, which could invalidate us */\n const value = observable.get();\n // Which is why we only add the observable to the dependencies now.\n this._dependencies.add(observable);\n this._dependenciesToBeRemoved.delete(observable);\n return value;\n }\n reportChange(change) {\n this._ensureReaderValid();\n this._didReportChange = true;\n // TODO add logging\n for (const r of this._observers) {\n r.handleChange(this, change);\n }\n }\n get store() {\n this._ensureReaderValid();\n if (this._store === undefined) {\n this._store = new DisposableStore();\n }\n return this._store;\n }\n get delayedStore() {\n this._ensureReaderValid();\n if (this._delayedStore === undefined) {\n this._delayedStore = new DisposableStore();\n }\n return this._delayedStore;\n }\n addObserver(observer) {\n const shouldCallBeginUpdate = !this._observers.has(observer) && this._updateCount > 0;\n super.addObserver(observer);\n if (shouldCallBeginUpdate) {\n if (this._removedObserverToCallEndUpdateOn && this._removedObserverToCallEndUpdateOn.has(observer)) {\n this._removedObserverToCallEndUpdateOn.delete(observer);\n }\n else {\n observer.beginUpdate(this);\n }\n }\n }\n removeObserver(observer) {\n if (this._observers.has(observer) && this._updateCount > 0) {\n if (!this._removedObserverToCallEndUpdateOn) {\n this._removedObserverToCallEndUpdateOn = new Set();\n }\n this._removedObserverToCallEndUpdateOn.add(observer);\n }\n super.removeObserver(observer);\n }\n debugGetState() {\n return {\n state: this._state,\n stateStr: derivedStateToString(this._state),\n updateCount: this._updateCount,\n isComputing: this._isComputing,\n dependencies: this._dependencies,\n value: this._value,\n };\n }\n debugSetValue(newValue) {\n this._value = newValue;\n }\n debugRecompute() {\n if (!this._isComputing) {\n this._recompute();\n }\n else {\n this._state = 2 /* DerivedState.stale */;\n }\n }\n setValue(newValue, tx, change) {\n this._value = newValue;\n const observers = this._observers;\n tx.updateObserver(this, this);\n for (const d of observers) {\n d.handleChange(this, change);\n }\n }\n}\nclass DerivedWithSetter extends Derived {\n constructor(debugNameData, computeFn, changeTracker, handleLastObserverRemoved = undefined, equalityComparator, set, debugLocation) {\n super(debugNameData, computeFn, changeTracker, handleLastObserverRemoved, equalityComparator, debugLocation);\n this.set = set;\n }\n}\n\nexport { Derived, DerivedWithSetter };\n//# sourceMappingURL=derivedImpl.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { strictEquals } from '../commonFacade/deps.js';\nimport { DebugLocation } from '../debugLocation.js';\nimport { DebugNameData } from '../debugName.js';\nimport { _setDerivedOpts } from './baseObservable.js';\nimport { Derived, DerivedWithSetter } from './derivedImpl.js';\nimport { DisposableStore } from '../../disposables.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction derived(computeFnOrOwner, computeFn, debugLocation = DebugLocation.ofCaller()) {\n if (computeFn !== undefined) {\n return new Derived(new DebugNameData(computeFnOrOwner, undefined, computeFn), computeFn, undefined, undefined, strictEquals, debugLocation);\n }\n return new Derived(new DebugNameData(undefined, undefined, computeFnOrOwner), computeFnOrOwner, undefined, undefined, strictEquals, debugLocation);\n}\nfunction derivedWithSetter(owner, computeFn, setter, debugLocation = DebugLocation.ofCaller()) {\n return new DerivedWithSetter(new DebugNameData(owner, undefined, computeFn), computeFn, undefined, undefined, strictEquals, setter, debugLocation);\n}\nfunction derivedOpts(options, computeFn, debugLocation = DebugLocation.ofCaller()) {\n return new Derived(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn), computeFn, undefined, options.onLastObserverRemoved, options.equalsFn ?? strictEquals, debugLocation);\n}\n_setDerivedOpts(derivedOpts);\n/**\n * Represents an observable that is derived from other observables.\n * The value is only recomputed when absolutely needed.\n *\n * {@link computeFn} should start with a JS Doc using `@description` to name the derived.\n *\n * Use `createEmptyChangeSummary` to create a \"change summary\" that can collect the changes.\n * Use `handleChange` to add a reported change to the change summary.\n * The compute function is given the last change summary.\n * The change summary is discarded after the compute function was called.\n *\n * @see derived\n */\nfunction derivedHandleChanges(options, computeFn, debugLocation = DebugLocation.ofCaller()) {\n return new Derived(new DebugNameData(options.owner, options.debugName, undefined), computeFn, options.changeTracker, undefined, options.equalityComparer ?? strictEquals, debugLocation);\n}\nfunction derivedWithStore(computeFnOrOwner, computeFnOrUndefined, debugLocation = DebugLocation.ofCaller()) {\n let computeFn;\n let owner;\n if (computeFnOrUndefined === undefined) {\n computeFn = computeFnOrOwner;\n owner = undefined;\n }\n else {\n owner = computeFnOrOwner;\n computeFn = computeFnOrUndefined;\n }\n // Intentionally re-assigned in case an inactive observable is re-used later\n // eslint-disable-next-line local/code-no-potentially-unsafe-disposables\n let store = new DisposableStore();\n return new Derived(new DebugNameData(owner, undefined, computeFn), r => {\n if (store.isDisposed) {\n store = new DisposableStore();\n }\n else {\n store.clear();\n }\n return computeFn(r, store);\n }, undefined, () => store.dispose(), strictEquals, debugLocation);\n}\nfunction derivedDisposable(computeFnOrOwner, computeFnOrUndefined, debugLocation = DebugLocation.ofCaller()) {\n let computeFn;\n let owner;\n if (computeFnOrUndefined === undefined) {\n computeFn = computeFnOrOwner;\n owner = undefined;\n }\n else {\n owner = computeFnOrOwner;\n computeFn = computeFnOrUndefined;\n }\n let store = undefined;\n return new Derived(new DebugNameData(owner, undefined, computeFn), r => {\n if (!store) {\n store = new DisposableStore();\n }\n else {\n store.clear();\n }\n const result = computeFn(r);\n if (result) {\n store.add(result);\n }\n return result;\n }, undefined, () => {\n if (store) {\n store.dispose();\n store = undefined;\n }\n }, strictEquals, debugLocation);\n}\n\nexport { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore };\n//# sourceMappingURL=derived.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { onBugIndicatingError, BugIndicatingError } from '../commonFacade/deps.js';\nimport { getLogger } from '../logging/logging.js';\nimport { DisposableStore } from '../../disposables.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction autorunStateToString(state) {\n switch (state) {\n case 1 /* AutorunState.dependenciesMightHaveChanged */: return 'dependenciesMightHaveChanged';\n case 2 /* AutorunState.stale */: return 'stale';\n case 3 /* AutorunState.upToDate */: return 'upToDate';\n default: return '<unknown>';\n }\n}\nclass AutorunObserver {\n get debugName() {\n return this._debugNameData.getDebugName(this) ?? '(anonymous)';\n }\n constructor(_debugNameData, _runFn, _changeTracker, debugLocation) {\n this._debugNameData = _debugNameData;\n this._runFn = _runFn;\n this._changeTracker = _changeTracker;\n this._state = 2 /* AutorunState.stale */;\n this._updateCount = 0;\n this._disposed = false;\n this._dependencies = new Set();\n this._dependenciesToBeRemoved = new Set();\n this._isRunning = false;\n this._store = undefined;\n this._delayedStore = undefined;\n this._changeSummary = this._changeTracker?.createChangeSummary(undefined);\n getLogger()?.handleAutorunCreated(this, debugLocation);\n this._run();\n }\n dispose() {\n if (this._disposed) {\n return;\n }\n this._disposed = true;\n for (const o of this._dependencies) {\n o.removeObserver(this); // Warning: external call!\n }\n this._dependencies.clear();\n if (this._store !== undefined) {\n this._store.dispose();\n }\n if (this._delayedStore !== undefined) {\n this._delayedStore.dispose();\n }\n getLogger()?.handleAutorunDisposed(this);\n }\n _run() {\n const emptySet = this._dependenciesToBeRemoved;\n this._dependenciesToBeRemoved = this._dependencies;\n this._dependencies = emptySet;\n this._state = 3 /* AutorunState.upToDate */;\n try {\n if (!this._disposed) {\n getLogger()?.handleAutorunStarted(this);\n const changeSummary = this._changeSummary;\n const delayedStore = this._delayedStore;\n if (delayedStore !== undefined) {\n this._delayedStore = undefined;\n }\n try {\n this._isRunning = true;\n if (this._changeTracker) {\n this._changeTracker.beforeUpdate?.(this, changeSummary);\n this._changeSummary = this._changeTracker.createChangeSummary(changeSummary); // Warning: external call!\n }\n if (this._store !== undefined) {\n this._store.dispose();\n this._store = undefined;\n }\n this._runFn(this, changeSummary); // Warning: external call!\n }\n catch (e) {\n onBugIndicatingError(e);\n }\n finally {\n this._isRunning = false;\n if (delayedStore !== undefined) {\n delayedStore.dispose();\n }\n }\n }\n }\n finally {\n if (!this._disposed) {\n getLogger()?.handleAutorunFinished(this);\n }\n // We don't want our observed observables to think that they are (not even temporarily) not being observed.\n // Thus, we only unsubscribe from observables that are definitely not read anymore.\n for (const o of this._dependenciesToBeRemoved) {\n o.removeObserver(this); // Warning: external call!\n }\n this._dependenciesToBeRemoved.clear();\n }\n }\n toString() {\n return `Autorun<${this.debugName}>`;\n }\n // IObserver implementation\n beginUpdate(_observable) {\n if (this._state === 3 /* AutorunState.upToDate */) {\n this._state = 1 /* AutorunState.dependenciesMightHaveChanged */;\n }\n this._updateCount++;\n }\n endUpdate(_observable) {\n try {\n if (this._updateCount === 1) {\n do {\n if (this._state === 1 /* AutorunState.dependenciesMightHaveChanged */) {\n this._state = 3 /* AutorunState.upToDate */;\n for (const d of this._dependencies) {\n d.reportChanges(); // Warning: external call!\n if (this._state === 2 /* AutorunState.stale */) {\n // The other dependencies will refresh on demand\n break;\n }\n }\n }\n if (this._state !== 3 /* AutorunState.upToDate */) {\n this._run(); // Warning: indirect external call!\n }\n } while (this._state !== 3 /* AutorunState.upToDate */);\n }\n }\n finally {\n this._updateCount--;\n }\n }\n handlePossibleChange(observable) {\n if (this._state === 3 /* AutorunState.upToDate */ && this._isDependency(observable)) {\n this._state = 1 /* AutorunState.dependenciesMightHaveChanged */;\n }\n }\n handleChange(observable, change) {\n if (this._isDependency(observable)) {\n getLogger()?.handleAutorunDependencyChanged(this, observable, change);\n try {\n // Warning: external call!\n const shouldReact = this._changeTracker ? this._changeTracker.handleChange({\n changedObservable: observable,\n change,\n didChange: (o) => o === observable,\n }, this._changeSummary) : true;\n if (shouldReact) {\n this._state = 2 /* AutorunState.stale */;\n }\n }\n catch (e) {\n onBugIndicatingError(e);\n }\n }\n }\n _isDependency(observable) {\n return this._dependencies.has(observable) && !this._dependenciesToBeRemoved.has(observable);\n }\n // IReader implementation\n _ensureNoRunning() {\n if (!this._isRunning) {\n throw new BugIndicatingError('The reader object cannot be used outside its compute function!');\n }\n }\n readObservable(observable) {\n this._ensureNoRunning();\n // In case the run action disposes the autorun\n if (this._disposed) {\n return observable.get(); // warning: external call!\n }\n observable.addObserver(this); // warning: external call!\n const value = observable.get(); // warning: external call!\n this._dependencies.add(observable);\n this._dependenciesToBeRemoved.delete(observable);\n return value;\n }\n get store() {\n this._ensureNoRunning();\n if (this._disposed) {\n throw new BugIndicatingError('Cannot access store after dispose');\n }\n if (this._store === undefined) {\n this._store = new DisposableStore();\n }\n return this._store;\n }\n get delayedStore() {\n this._ensureNoRunning();\n if (this._disposed) {\n throw new BugIndicatingError('Cannot access store after dispose');\n }\n if (this._delayedStore === undefined) {\n this._delayedStore = new DisposableStore();\n }\n return this._delayedStore;\n }\n debugGetState() {\n return {\n isRunning: this._isRunning,\n updateCount: this._updateCount,\n dependencies: this._dependencies,\n state: this._state,\n stateStr: autorunStateToString(this._state),\n };\n }\n debugRerun() {\n if (!this._isRunning) {\n this._run();\n }\n else {\n this._state = 2 /* AutorunState.stale */;\n }\n }\n}\n\nexport { AutorunObserver };\n//# sourceMappingURL=createEffectImpl.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { toDisposable } from '../commonFacade/deps.js';\nimport { DebugNameData } from '../debugName.js';\nimport { AutorunObserver } from './createEffectImpl.js';\nimport { DebugLocation } from '../debugLocation.js';\nimport { DisposableStore } from '../../disposables.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Runs immediately and whenever a transaction ends and an observed observable changed.\n * {@link fn} should start with a JS Doc using `@description` to name the effect.\n */\nfunction createEffect(fn, debugLocation = DebugLocation.ofCaller()) {\n return new AutorunObserver(new DebugNameData(undefined, undefined, fn), fn, undefined, debugLocation);\n}\n/**\n * @deprecated Use {@link createEffect} instead.\n */\nconst autorun = createEffect;\n/**\n * Runs immediately and whenever a transaction ends and an observed observable changed.\n * {@link fn} should start with a JS Doc using `@description` to name the autorun.\n */\nfunction createEffectOpts(options, fn, debugLocation = DebugLocation.ofCaller()) {\n return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, undefined, debugLocation);\n}\n/**\n * @deprecated Use {@link createEffectOpts} instead.\n */\nconst autorunOpts = createEffectOpts;\n/**\n * Runs immediately and whenever a transaction ends and an observed observable changed.\n * {@link fn} should start with a JS Doc using `@description` to name the autorun.\n *\n * Use `changeTracker.createChangeSummary` to create a \"change summary\" that can collect the changes.\n * Use `changeTracker.handleChange` to add a reported change to the change summary.\n * The run function is given the last change summary.\n * The change summary is discarded after the run function was called.\n *\n * @see autorun\n */\nfunction autorunHandleChanges(options, fn, debugLocation = DebugLocation.ofCaller()) {\n return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, options.changeTracker, debugLocation);\n}\n/**\n * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose)\n */\nfunction autorunWithStoreHandleChanges(options, fn) {\n const store = new DisposableStore();\n const disposable = autorunHandleChanges({\n owner: options.owner,\n debugName: options.debugName,\n debugReferenceFn: options.debugReferenceFn ?? fn,\n changeTracker: options.changeTracker,\n }, (reader, changeSummary) => {\n store.clear();\n fn(reader, changeSummary, store);\n });\n return toDisposable(() => {\n disposable.dispose();\n store.dispose();\n });\n}\n/**\n * @see autorun (but with a disposable store that is cleared before the next run or on dispose)\n *\n * @deprecated Use `autorun(reader => { reader.store.add(...) })` instead!\n */\nfunction autorunWithStore(fn) {\n const store = new DisposableStore();\n const disposable = createEffectOpts({\n owner: undefined,\n debugName: undefined,\n debugReferenceFn: fn,\n }, reader => {\n store.clear();\n fn(reader, store);\n });\n return toDisposable(() => {\n disposable.dispose();\n store.dispose();\n });\n}\nfunction autorunDelta(observable, handler) {\n let _lastValue;\n return createEffectOpts({ debugReferenceFn: handler }, (reader) => {\n const newValue = observable.read(reader);\n const lastValue = _lastValue;\n _lastValue = newValue;\n handler({ lastValue, newValue });\n });\n}\nfunction autorunIterableDelta(getValue, handler, getUniqueIdentifier = v => v) {\n const lastValues = new Map();\n return createEffectOpts({ debugReferenceFn: getValue }, (reader) => {\n const newValues = new Map();\n const removedValues = new Map(lastValues);\n for (const value of getValue(reader)) {\n const id = getUniqueIdentifier(value);\n if (lastValues.has(id)) {\n removedValues.delete(id);\n }\n else {\n newValues.set(id, value);\n lastValues.set(id, value);\n }\n }\n for (const id of removedValues.keys()) {\n lastValues.delete(id);\n }\n if (newValues.size || removedValues.size) {\n handler({ addedValues: [...newValues.values()], removedValues: [...removedValues.values()] });\n }\n });\n}\n/**\n * An autorun with a `dispose()` method on its `reader` which cancels the autorun.\n * It it safe to call `dispose()` synchronously.\n */\nfunction autorunSelfDisposable(fn, debugLocation = DebugLocation.ofCaller()) {\n let ar;\n let disposed = false;\n // eslint-disable-next-line prefer-const\n ar = createEffect(reader => {\n fn({\n delayedStore: reader.delayedStore,\n store: reader.store,\n readObservable: reader.readObservable.bind(reader),\n dispose: () => {\n ar?.dispose();\n disposed = true;\n }\n });\n }, debugLocation);\n if (disposed) {\n ar.dispose();\n }\n return ar;\n}\n\nexport { autorun, autorunDelta, autorunHandleChanges, autorunIterableDelta, autorunOpts, autorunSelfDisposable, autorunWithStore, autorunWithStoreHandleChanges, createEffect, createEffectOpts };\n//# sourceMappingURL=createEffect.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { onUnexpectedError } from './commonFacade/deps.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * This function is used to indicate that the caller recovered from an error that indicates a bug.\n*/\nfunction handleBugIndicatingErrorRecovery(message) {\n const err = new Error('BugIndicatingErrorRecovery: ' + message);\n onUnexpectedError(err);\n console.error('recovered from an error that indicates a bug', err);\n}\n\nexport { handleBugIndicatingErrorRecovery };\n//# sourceMappingURL=base.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { handleBugIndicatingErrorRecovery } from './base.js';\nimport { getFunctionName } from './debugName.js';\nimport { getLogger } from './logging/logging.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Starts a transaction in which many observables can be changed at once.\n * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name.\n * Reaction run on demand or when the transaction ends.\n */\nfunction transaction(fn, getDebugName) {\n const tx = new TransactionImpl(fn, getDebugName);\n try {\n fn(tx);\n }\n finally {\n tx.finish();\n }\n}\nlet _globalTransaction = undefined;\nfunction globalTransaction(fn) {\n if (_globalTransaction) {\n fn(_globalTransaction);\n }\n else {\n const tx = new TransactionImpl(fn, undefined);\n _globalTransaction = tx;\n try {\n fn(tx);\n }\n finally {\n tx.finish(); // During finish, more actions might be added to the transaction.\n // Which is why we only clear the global transaction after finish.\n _globalTransaction = undefined;\n }\n }\n}\n/** @deprecated */\nasync function asyncTransaction(fn, getDebugName) {\n const tx = new TransactionImpl(fn, getDebugName);\n try {\n await fn(tx);\n }\n finally {\n tx.finish();\n }\n}\n/**\n * Allows to chain transactions.\n */\nfunction subtransaction(tx, fn, getDebugName) {\n if (!tx) {\n transaction(fn, getDebugName);\n }\n else {\n fn(tx);\n }\n}\nclass TransactionImpl {\n constructor(_fn, _getDebugName) {\n this._fn = _fn;\n this._getDebugName = _getDebugName;\n this._updatingObservers = [];\n getLogger()?.handleBeginTransaction(this);\n }\n getDebugName() {\n if (this._getDebugName) {\n return this._getDebugName();\n }\n return getFunctionName(this._fn);\n }\n updateObserver(observer, observable) {\n if (!this._updatingObservers) {\n // This happens when a transaction is used in a callback or async function.\n // If an async transaction is used, make sure the promise awaits all users of the transaction (e.g. no race).\n handleBugIndicatingErrorRecovery('Transaction already finished!');\n // Error recovery\n transaction(tx => {\n tx.updateObserver(observer, observable);\n });\n return;\n }\n // When this gets called while finish is active, they will still get considered\n this._updatingObservers.push({ observer, observable });\n observer.beginUpdate(observable);\n }\n finish() {\n const updatingObservers = this._updatingObservers;\n if (!updatingObservers) {\n handleBugIndicatingErrorRecovery('transaction.finish() has already been called!');\n return;\n }\n for (let i = 0; i < updatingObservers.length; i++) {\n const { observer, observable } = updatingObservers[i];\n observer.endUpdate(observable);\n }\n // Prevent anyone from updating observers from now on.\n this._updatingObservers = null;\n getLogger()?.handleEndTransaction(this);\n }\n debugGetUpdatingObservers() {\n return this._updatingObservers;\n }\n}\n\nexport { TransactionImpl, asyncTransaction, globalTransaction, subtransaction, transaction };\n//# sourceMappingURL=transaction.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { TransactionImpl } from '../transaction.js';\nimport { BaseObservable } from './baseObservable.js';\nimport { strictEquals } from '../commonFacade/deps.js';\nimport { DebugNameData } from '../debugName.js';\nimport { getLogger } from '../logging/logging.js';\nimport { DebugLocation } from '../debugLocation.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction observableValue(nameOrOwner, initialValue, debugLocation = DebugLocation.ofCaller()) {\n let debugNameData;\n if (typeof nameOrOwner === 'string') {\n debugNameData = new DebugNameData(undefined, nameOrOwner, undefined);\n }\n else {\n debugNameData = new DebugNameData(nameOrOwner, undefined, undefined);\n }\n return new ObservableValue(debugNameData, initialValue, strictEquals, debugLocation);\n}\nclass ObservableValue extends BaseObservable {\n get debugName() {\n return this._debugNameData.getDebugName(this) ?? 'ObservableValue';\n }\n constructor(_debugNameData, initialValue, _equalityComparator, debugLocation) {\n super(debugLocation);\n this._debugNameData = _debugNameData;\n this._equalityComparator = _equalityComparator;\n this._value = initialValue;\n getLogger()?.handleObservableUpdated(this, { hadValue: false, newValue: initialValue, change: undefined, didChange: true, oldValue: undefined });\n }\n get() {\n return this._value;\n }\n set(value, tx, change) {\n if (change === undefined && this._equalityComparator(this._value, value)) {\n return;\n }\n let _tx;\n if (!tx) {\n tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`);\n }\n try {\n const oldValue = this._value;\n this._setValue(value);\n getLogger()?.handleObservableUpdated(this, { oldValue, newValue: value, change, didChange: true, hadValue: true });\n for (const observer of this._observers) {\n tx.updateObserver(observer, this);\n observer.handleChange(this, change);\n }\n }\n finally {\n if (_tx) {\n _tx.finish();\n }\n }\n }\n toString() {\n return `${this.debugName}: ${this._value}`;\n }\n _setValue(newValue) {\n this._value = newValue;\n }\n debugGetState() {\n return {\n value: this._value,\n };\n }\n debugSetValue(value) {\n this._value = value;\n }\n}\n/**\n * A disposable observable. When disposed, its value is also disposed.\n * When a new value is set, the previous value is disposed.\n */\nfunction disposableObservableValue(nameOrOwner, initialValue, debugLocation = DebugLocation.ofCaller()) {\n let debugNameData;\n if (typeof nameOrOwner === 'string') {\n debugNameData = new DebugNameData(undefined, nameOrOwner, undefined);\n }\n else {\n debugNameData = new DebugNameData(nameOrOwner, undefined, undefined);\n }\n return new DisposableObservableValue(debugNameData, initialValue, strictEquals, debugLocation);\n}\nclass DisposableObservableValue extends ObservableValue {\n _setValue(newValue) {\n if (this._value === newValue) {\n return;\n }\n if (this._value) {\n this._value.dispose();\n }\n this._value = newValue;\n }\n dispose() {\n this._value?.dispose();\n }\n}\n\nexport { DisposableObservableValue, ObservableValue, disposableObservableValue, observableValue };\n//# sourceMappingURL=observableValue.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { subtransaction } from '../transaction.js';\nimport { strictEquals } from '../commonFacade/deps.js';\nimport { DebugNameData } from '../debugName.js';\nimport { getLogger } from '../logging/logging.js';\nimport { BaseObservable } from './baseObservable.js';\nimport { DebugLocation } from '../debugLocation.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction observableFromEvent(...args) {\n let owner;\n let event;\n let getValue;\n let debugLocation;\n if (args.length === 2) {\n [event, getValue] = args;\n }\n else {\n [owner, event, getValue, debugLocation] = args;\n }\n return new FromEventObservable(new DebugNameData(owner, undefined, getValue), event, getValue, () => FromEventObservable.globalTransaction, strictEquals, debugLocation ?? DebugLocation.ofCaller());\n}\nfunction observableFromEventOpts(options, event, getValue, debugLocation = DebugLocation.ofCaller()) {\n return new FromEventObservable(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? getValue), event, getValue, () => FromEventObservable.globalTransaction, options.equalsFn ?? strictEquals, debugLocation);\n}\nclass FromEventObservable extends BaseObservable {\n constructor(_debugNameData, event, _getValue, _getTransaction, _equalityComparator, debugLocation) {\n super(debugLocation);\n this._debugNameData = _debugNameData;\n this.event = event;\n this._getValue = _getValue;\n this._getTransaction = _getTransaction;\n this._equalityComparator = _equalityComparator;\n this._hasValue = false;\n this.handleEvent = (args) => {\n const newValue = this._getValue(args);\n const oldValue = this._value;\n const didChange = !this._hasValue || !(this._equalityComparator(oldValue, newValue));\n let didRunTransaction = false;\n if (didChange) {\n this._value = newValue;\n if (this._hasValue) {\n didRunTransaction = true;\n subtransaction(this._getTransaction(), (tx) => {\n getLogger()?.handleObservableUpdated(this, { oldValue, newValue, change: undefined, didChange, hadValue: this._hasValue });\n for (const o of this._observers) {\n tx.updateObserver(o, this);\n o.handleChange(this, undefined);\n }\n }, () => {\n const name = this.getDebugName();\n return 'Event fired' + (name ? `: ${name}` : '');\n });\n }\n this._hasValue = true;\n }\n if (!didRunTransaction) {\n getLogger()?.handleObservableUpdated(this, { oldValue, newValue, change: undefined, didChange, hadValue: this._hasValue });\n }\n };\n }\n getDebugName() {\n return this._debugNameData.getDebugName(this);\n }\n get debugName() {\n const name = this.getDebugName();\n return 'From Event' + (name ? `: ${name}` : '');\n }\n onFirstObserverAdded() {\n this._subscription = this.event(this.handleEvent);\n }\n onLastObserverRemoved() {\n this._subscription.dispose();\n this._subscription = undefined;\n this._hasValue = false;\n this._value = undefined;\n }\n get() {\n if (this._subscription) {\n if (!this._hasValue) {\n this.handleEvent(undefined);\n }\n return this._value;\n }\n else {\n // no cache, as there are no subscribers to keep it updated\n const value = this._getValue(undefined);\n return value;\n }\n }\n debugSetValue(value) {\n this._value = value;\n }\n debugGetState() {\n return { value: this._value, hasValue: this._hasValue };\n }\n}\n(function (observableFromEvent) {\n observableFromEvent.Observer = FromEventObservable;\n function batchEventsGlobally(tx, fn) {\n let didSet = false;\n if (FromEventObservable.globalTransaction === undefined) {\n FromEventObservable.globalTransaction = tx;\n didSet = true;\n }\n try {\n fn();\n }\n finally {\n if (didSet) {\n FromEventObservable.globalTransaction = undefined;\n }\n }\n }\n observableFromEvent.batchEventsGlobally = batchEventsGlobally;\n})(observableFromEvent || (observableFromEvent = {}));\n\nexport { FromEventObservable, observableFromEvent, observableFromEventOpts };\n//# sourceMappingURL=observableFromEvent.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { transaction } from '../transaction.js';\nimport { DebugNameData } from '../debugName.js';\nimport { BaseObservable } from './baseObservable.js';\nimport { DebugLocation } from '../debugLocation.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction observableSignal(debugNameOrOwner, debugLocation = DebugLocation.ofCaller()) {\n if (typeof debugNameOrOwner === 'string') {\n return new ObservableSignal(debugNameOrOwner, undefined, debugLocation);\n }\n else {\n return new ObservableSignal(undefined, debugNameOrOwner, debugLocation);\n }\n}\nclass ObservableSignal extends BaseObservable {\n get debugName() {\n return new DebugNameData(this._owner, this._debugName, undefined).getDebugName(this) ?? 'Observable Signal';\n }\n toString() {\n return this.debugName;\n }\n constructor(_debugName, _owner, debugLocation) {\n super(debugLocation);\n this._debugName = _debugName;\n this._owner = _owner;\n }\n trigger(tx, change) {\n if (!tx) {\n transaction(tx => {\n this.trigger(tx, change);\n }, () => `Trigger signal ${this.debugName}`);\n return;\n }\n for (const o of this._observers) {\n tx.updateObserver(o, this);\n o.handleChange(this, change);\n }\n }\n get() {\n // NO OP\n }\n}\n\nexport { observableSignal };\n//# sourceMappingURL=observableSignal.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createEffect } from '../reactions/createEffect.js';\nimport { transaction } from '../transaction.js';\nimport { observableValue } from '../observables/observableValue.js';\nimport { toDisposable } from '../commonFacade/deps.js';\nimport { derivedOpts, derived } from '../observables/derived.js';\nimport { observableFromEvent } from '../observables/observableFromEvent.js';\nimport { observableSignal } from '../observables/observableSignal.js';\nimport { _setKeepObserved, _setRecomputeInitiallyAndOnChange } from '../observables/baseObservable.js';\nimport { DisposableStore } from '../../disposables.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction observableFromPromise(promise) {\n const observable = observableValue('promiseValue', {});\n promise.then((value) => {\n observable.set({ value }, undefined);\n });\n return observable;\n}\nfunction signalFromObservable(owner, observable) {\n return derivedOpts({\n owner,\n equalsFn: () => false,\n }, reader => {\n observable.read(reader);\n });\n}\n/**\n * @deprecated Use `debouncedObservable` instead.\n */\nfunction debouncedObservableDeprecated(observable, debounceMs, disposableStore) {\n const debouncedObservable = observableValue('debounced', undefined);\n let timeout = undefined;\n disposableStore.add(createEffect(reader => {\n /** @description debounce */\n const value = observable.read(reader);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n transaction(tx => {\n debouncedObservable.set(value, tx);\n });\n }, debounceMs);\n }));\n return debouncedObservable;\n}\n/**\n * Creates an observable that debounces the input observable.\n */\nfunction debouncedObservable(observable, debounceMs) {\n let hasValue = false;\n let lastValue;\n let timeout = undefined;\n return observableFromEvent(cb => {\n const d = createEffect(reader => {\n const value = observable.read(reader);\n if (!hasValue) {\n hasValue = true;\n lastValue = value;\n }\n else {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n lastValue = value;\n cb();\n }, debounceMs);\n }\n });\n return {\n dispose() {\n d.dispose();\n hasValue = false;\n lastValue = undefined;\n },\n };\n }, () => {\n if (hasValue) {\n return lastValue;\n }\n else {\n return observable.get();\n }\n });\n}\nfunction wasEventTriggeredRecently(event, timeoutMs, disposableStore) {\n const observable = observableValue('triggeredRecently', false);\n let timeout = undefined;\n disposableStore.add(event(() => {\n observable.set(true, undefined);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n observable.set(false, undefined);\n }, timeoutMs);\n }));\n return observable;\n}\n/**\n * This makes sure the observable is being observed and keeps its cache alive.\n */\nfunction keepObserved(observable) {\n const o = new KeepAliveObserver(false, undefined);\n observable.addObserver(o);\n return toDisposable(() => {\n observable.removeObserver(o);\n });\n}\n_setKeepObserved(keepObserved);\n/**\n * This converts the given observable into an autorun.\n */\nfunction recomputeInitiallyAndOnChange(observable, handleValue) {\n const o = new KeepAliveObserver(true, handleValue);\n observable.addObserver(o);\n try {\n o.beginUpdate(observable);\n }\n finally {\n o.endUpdate(observable);\n }\n return toDisposable(() => {\n observable.removeObserver(o);\n });\n}\n_setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange);\nclass KeepAliveObserver {\n constructor(_forceRecompute, _handleValue) {\n this._forceRecompute = _forceRecompute;\n this._handleValue = _handleValue;\n this._counter = 0;\n }\n beginUpdate(observable) {\n this._counter++;\n }\n endUpdate(observable) {\n if (this._counter === 1 && this._forceRecompute) {\n if (this._handleValue) {\n this._handleValue(observable.get());\n }\n else {\n observable.reportChanges();\n }\n }\n this._counter--;\n }\n handlePossibleChange(observable) {\n // NO OP\n }\n handleChange(observable, change) {\n // NO OP\n }\n}\nfunction derivedObservableWithCache(owner, computeFn) {\n let lastValue = undefined;\n const observable = derivedOpts({ owner, debugReferenceFn: computeFn }, reader => {\n lastValue = computeFn(reader, lastValue);\n return lastValue;\n });\n return observable;\n}\nfunction derivedObservableWithWritableCache(owner, computeFn) {\n let lastValue = undefined;\n const onChange = observableSignal('derivedObservableWithWritableCache');\n const observable = derived(owner, reader => {\n onChange.read(reader);\n lastValue = computeFn(reader, lastValue);\n return lastValue;\n });\n return Object.assign(observable, {\n clearCache: (tx) => {\n lastValue = undefined;\n onChange.trigger(tx);\n },\n setCache: (newValue, tx) => {\n lastValue = newValue;\n onChange.trigger(tx);\n }\n });\n}\n/**\n * When the items array changes, referential equal items are not mapped again.\n */\nfunction mapObservableArrayCached(owner, items, map, keySelector) {\n let m = new ArrayMap(map, keySelector);\n const self = derivedOpts({\n debugReferenceFn: map,\n owner,\n onLastObserverRemoved: () => {\n m.dispose();\n m = new ArrayMap(map);\n }\n }, (reader) => {\n m.setItems(items.read(reader));\n return m.getItems();\n });\n return self;\n}\nclass ArrayMap {\n constructor(_map, _keySelector) {\n this._map = _map;\n this._keySelector = _keySelector;\n this._cache = new Map();\n this._items = [];\n }\n dispose() {\n this._cache.forEach(entry => entry.store.dispose());\n this._cache.clear();\n }\n setItems(items) {\n const newItems = [];\n const itemsToRemove = new Set(this._cache.keys());\n for (const item of items) {\n const key = this._keySelector ? this._keySelector(item) : item;\n let entry = this._cache.get(key);\n if (!entry) {\n const store = new DisposableStore();\n const out = this._map(item, store);\n entry = { out, store };\n this._cache.set(key, entry);\n }\n else {\n itemsToRemove.delete(key);\n }\n newItems.push(entry.out);\n }\n for (const item of itemsToRemove) {\n const entry = this._cache.get(item);\n entry.store.dispose();\n this._cache.delete(item);\n }\n this._items = newItems;\n }\n getItems() {\n return this._items;\n }\n}\n\nexport { KeepAliveObserver, debouncedObservable, debouncedObservableDeprecated, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, mapObservableArrayCached, observableFromPromise, recomputeInitiallyAndOnChange, signalFromObservable, wasEventTriggeredRecently };\n//# sourceMappingURL=utils.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { addLogger } from './logging.js';\nimport { getClassName } from '../debugName.js';\nimport { Derived } from '../observables/derivedImpl.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nlet consoleObservableLogger;\nfunction logObservableToConsole(obs) {\n if (!consoleObservableLogger) {\n consoleObservableLogger = new ConsoleObservableLogger();\n addLogger(consoleObservableLogger);\n }\n consoleObservableLogger.addFilteredObj(obs);\n}\nclass ConsoleObservableLogger {\n constructor() {\n this.indentation = 0;\n this.changedObservablesSets = new WeakMap();\n }\n addFilteredObj(obj) {\n if (!this._filteredObjects) {\n this._filteredObjects = new Set();\n }\n this._filteredObjects.add(obj);\n }\n _isIncluded(obj) {\n return this._filteredObjects?.has(obj) ?? true;\n }\n textToConsoleArgs(text) {\n return consoleTextToArgs([\n normalText(repeat('| ', this.indentation)),\n text,\n ]);\n }\n formatInfo(info) {\n if (!info.hadValue) {\n return [\n normalText(` `),\n styled(formatValue(info.newValue, 60), {\n color: 'green',\n }),\n normalText(` (initial)`),\n ];\n }\n return info.didChange\n ? [\n normalText(` `),\n styled(formatValue(info.oldValue, 70), {\n color: 'red',\n strikeThrough: true,\n }),\n normalText(` `),\n styled(formatValue(info.newValue, 60), {\n color: 'green',\n }),\n ]\n : [normalText(` (unchanged)`)];\n }\n handleObservableCreated(observable) {\n if (observable instanceof Derived) {\n const derived = observable;\n this.changedObservablesSets.set(derived, new Set());\n }\n }\n handleOnListenerCountChanged(observable, newCount) {\n }\n handleObservableUpdated(observable, info) {\n if (!this._isIncluded(observable)) {\n return;\n }\n if (observable instanceof Derived) {\n this._handleDerivedRecomputed(observable, info);\n return;\n }\n console.log(...this.textToConsoleArgs([\n formatKind('observable value changed'),\n styled(observable.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n ]));\n }\n formatChanges(changes) {\n if (changes.size === 0) {\n return undefined;\n }\n return styled(' (changed deps: ' +\n [...changes].map((o) => o.debugName).join(', ') +\n ')', { color: 'gray' });\n }\n handleDerivedDependencyChanged(derived, observable, change) {\n if (!this._isIncluded(derived)) {\n return;\n }\n this.changedObservablesSets.get(derived)?.add(observable);\n }\n _handleDerivedRecomputed(derived, info) {\n if (!this._isIncluded(derived)) {\n return;\n }\n const changedObservables = this.changedObservablesSets.get(derived);\n if (!changedObservables) {\n return;\n }\n console.log(...this.textToConsoleArgs([\n formatKind('derived recomputed'),\n styled(derived.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n this.formatChanges(changedObservables),\n { data: [{ fn: derived._debugNameData.referenceFn ?? derived._computeFn }] }\n ]));\n changedObservables.clear();\n }\n handleDerivedCleared(derived) {\n if (!this._isIncluded(derived)) {\n return;\n }\n console.log(...this.textToConsoleArgs([\n formatKind('derived cleared'),\n styled(derived.debugName, { color: 'BlueViolet' }),\n ]));\n }\n handleFromEventObservableTriggered(observable, info) {\n if (!this._isIncluded(observable)) {\n return;\n }\n console.log(...this.textToConsoleArgs([\n formatKind('observable from event triggered'),\n styled(observable.debugName, { color: 'BlueViolet' }),\n ...this.formatInfo(info),\n { data: [{ fn: observable._getValue }] }\n ]));\n }\n handleAutorunCreated(autorun) {\n if (!this._isIncluded(autorun)) {\n return;\n }\n this.changedObservablesSets.set(autorun, new Set());\n }\n handleAutorunDisposed(autorun) {\n }\n handleAutorunDependencyChanged(autorun, observable, change) {\n if (!this._isIncluded(autorun)) {\n return;\n }\n this.changedObservablesSets.get(autorun).add(observable);\n }\n handleAutorunStarted(autorun) {\n const changedObservables = this.changedObservablesSets.get(autorun);\n if (!changedObservables) {\n return;\n }\n if (this._isIncluded(autorun)) {\n console.log(...this.textToConsoleArgs([\n formatKind('autorun'),\n styled(autorun.debugName, { color: 'BlueViolet' }),\n this.formatChanges(changedObservables),\n { data: [{ fn: autorun._debugNameData.referenceFn ?? autorun._runFn }] }\n ]));\n }\n changedObservables.clear();\n this.indentation++;\n }\n handleAutorunFinished(autorun) {\n this.indentation--;\n }\n handleBeginTransaction(transaction) {\n let transactionName = transaction.getDebugName();\n if (transactionName === undefined) {\n transactionName = '';\n }\n if (this._isIncluded(transaction)) {\n console.log(...this.textToConsoleArgs([\n formatKind('transaction'),\n styled(transactionName, { color: 'BlueViolet' }),\n { data: [{ fn: transaction._fn }] }\n ]));\n }\n this.indentation++;\n }\n handleEndTransaction() {\n this.indentation--;\n }\n}\nfunction consoleTextToArgs(text) {\n const styles = new Array();\n const data = [];\n let firstArg = '';\n function process(t) {\n if ('length' in t) {\n for (const item of t) {\n if (item) {\n process(item);\n }\n }\n }\n else if ('text' in t) {\n firstArg += `%c${t.text}`;\n styles.push(t.style);\n if (t.data) {\n data.push(...t.data);\n }\n }\n else if ('data' in t) {\n data.push(...t.data);\n }\n }\n process(text);\n const result = [firstArg, ...styles];\n result.push(...data);\n return result;\n}\nfunction normalText(text) {\n return styled(text, { color: 'black' });\n}\nfunction formatKind(kind) {\n return styled(padStr(`${kind}: `, 10), { color: 'black', bold: true });\n}\nfunction styled(text, options = {\n color: 'black',\n}) {\n function objToCss(styleObj) {\n return Object.entries(styleObj).reduce((styleString, [propName, propValue]) => {\n return `${styleString}${propName}:${propValue};`;\n }, '');\n }\n const style = {\n color: options.color,\n };\n if (options.strikeThrough) {\n style['text-decoration'] = 'line-through';\n }\n if (options.bold) {\n style['font-weight'] = 'bold';\n }\n return {\n text,\n style: objToCss(style),\n };\n}\nfunction formatValue(value, availableLen) {\n try {\n return formatValueUnsafe(value, availableLen);\n }\n catch {\n // Value could not be formatted (e.g., a Proxy that throws on coercion)\n return '[[???]]';\n }\n}\nfunction formatValueUnsafe(value, availableLen) {\n switch (typeof value) {\n case 'number':\n return '' + value;\n case 'string':\n if (value.length + 2 <= availableLen) {\n return `\"${value}\"`;\n }\n return `\"${value.substr(0, availableLen - 7)}\"+...`;\n case 'boolean':\n return value ? 'true' : 'false';\n case 'undefined':\n return 'undefined';\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return formatArray(value, availableLen);\n }\n return formatObject(value, availableLen);\n case 'symbol':\n return value.toString();\n case 'function':\n return `[[Function${value.name ? ' ' + value.name : ''}]]`;\n default:\n return '' + value;\n }\n}\nfunction formatArray(value, availableLen) {\n let result = '[ ';\n let first = true;\n for (const val of value) {\n if (!first) {\n result += ', ';\n }\n if (result.length - 5 > availableLen) {\n result += '...';\n break;\n }\n first = false;\n result += `${formatValue(val, availableLen - result.length)}`;\n }\n result += ' ]';\n return result;\n}\nfunction formatObject(value, availableLen) {\n // Avoid drilling into Proxies - wrap operations that could trigger traps\n try {\n if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString) {\n const val = value.toString();\n if (val.length <= availableLen) {\n return val;\n }\n return val.substring(0, availableLen - 3) + '...';\n }\n }\n catch {\n // toString triggered a Proxy trap or threw - bail out\n return '[[Object]]';\n }\n const className = getClassName(value);\n let result = className ? className + '(' : '{ ';\n let first = true;\n let entries;\n try {\n entries = Object.entries(value);\n }\n catch {\n // Object.entries triggered a Proxy trap - bail out\n return className ? `${className}(...)` : '[[Object]]';\n }\n for (const [key, val] of entries) {\n if (!first) {\n result += ', ';\n }\n if (result.length - 5 > availableLen) {\n result += '...';\n break;\n }\n first = false;\n result += `${key}: ${formatValue(val, availableLen - result.length)}`;\n }\n result += className ? ')' : ' }';\n return result;\n}\nfunction repeat(str, count) {\n let result = '';\n for (let i = 1; i <= count; i++) {\n result += str;\n }\n return result;\n}\nfunction padStr(str, length) {\n while (str.length < length) {\n str += ' ';\n }\n return str;\n}\n\nexport { ConsoleObservableLogger, formatValue, logObservableToConsole };\n//# sourceMappingURL=consoleObservableLogger.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Derived } from '../observables/derivedImpl.js';\nimport { FromEventObservable } from '../observables/observableFromEvent.js';\nimport { ObservableValue } from '../observables/observableValue.js';\nimport { AutorunObserver } from '../reactions/createEffectImpl.js';\nimport { formatValue } from './consoleObservableLogger.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction debugGetDependencyGraph(obs, options) {\n const debugNamePostProcessor = options?.debugNamePostProcessor ?? ((str) => str);\n const info = Info.from(obs, debugNamePostProcessor);\n if (!info) {\n return '';\n }\n const alreadyListed = new Set();\n return formatObservableInfo(info, 0, alreadyListed).trim();\n}\nfunction formatObservableInfo(info, indentLevel, alreadyListed) {\n const indent = '\\t\\t'.repeat(indentLevel);\n const lines = [];\n const isAlreadyListed = alreadyListed.has(info.sourceObj);\n if (isAlreadyListed) {\n lines.push(`${indent}* ${info.type} ${info.name} (already listed)`);\n return lines.join('\\n');\n }\n alreadyListed.add(info.sourceObj);\n lines.push(`${indent}* ${info.type} ${info.name}:`);\n lines.push(`${indent} value: ${formatValue(info.value, 50)}`);\n lines.push(`${indent} state: ${info.state}`);\n if (info.dependencies.length > 0) {\n lines.push(`${indent} dependencies:`);\n for (const dep of info.dependencies) {\n lines.push(formatObservableInfo(dep, indentLevel + 1, alreadyListed));\n }\n }\n return lines.join('\\n');\n}\nclass Info {\n static from(obs, debugNamePostProcessor) {\n if (obs instanceof AutorunObserver) {\n const state = obs.debugGetState();\n return new Info(obs, debugNamePostProcessor(obs.debugName), 'autorun', undefined, state.stateStr, Array.from(state.dependencies).map(dep => Info.from(dep, debugNamePostProcessor) || Info.unknown(dep)));\n }\n else if (obs instanceof Derived) {\n const state = obs.debugGetState();\n return new Info(obs, debugNamePostProcessor(obs.debugName), 'derived', state.value, state.stateStr, Array.from(state.dependencies).map(dep => Info.from(dep, debugNamePostProcessor) || Info.unknown(dep)));\n }\n else if (obs instanceof ObservableValue) {\n const state = obs.debugGetState();\n return new Info(obs, debugNamePostProcessor(obs.debugName), 'observableValue', state.value, 'upToDate', []);\n }\n else if (obs instanceof FromEventObservable) {\n const state = obs.debugGetState();\n return new Info(obs, debugNamePostProcessor(obs.debugName), 'fromEvent', state.value, state.hasValue ? 'upToDate' : 'initial', []);\n }\n return undefined;\n }\n static unknown(obs) {\n return new Info(obs, '(unknown)', 'unknown', undefined, 'unknown', []);\n }\n constructor(sourceObj, name, type, value, state, dependencies) {\n this.sourceObj = sourceObj;\n this.name = name;\n this.type = type;\n this.value = value;\n this.state = state;\n this.dependencies = dependencies;\n }\n}\n\nexport { debugGetDependencyGraph };\n//# sourceMappingURL=debugGetDependencyGraph.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { setLogObservableFn } from './logging/logging.js';\nimport { _setDebugGetDependencyGraph } from './observables/baseObservable.js';\nexport { DebugLocation } from './debugLocation.js';\nexport { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore } from './observables/derived.js';\nexport { debouncedObservable, debouncedObservableDeprecated, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, mapObservableArrayCached, observableFromPromise, recomputeInitiallyAndOnChange, signalFromObservable, wasEventTriggeredRecently } from './utils/utils.js';\nexport { observableFromEvent, observableFromEventOpts } from './observables/observableFromEvent.js';\nimport { logObservableToConsole } from './logging/consoleObservableLogger.js';\nimport { debugGetDependencyGraph } from './logging/debugGetDependencyGraph.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n// This is a facade for the observable implementation. Only import from here!\n_setDebugGetDependencyGraph(debugGetDependencyGraph);\nsetLogObservableFn(logObservableToConsole);\n//# sourceMappingURL=index.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nclass CancellationError extends Error {\n constructor(message = 'Operation was cancelled') {\n super(message);\n this.name = 'CancellationError';\n }\n}\nclass CancellationTokenSource {\n constructor() {\n this._isCancelled = false;\n this._listeners = new Set();\n }\n get token() {\n return {\n isCancellationRequested: this._isCancelled,\n onCancellationRequested: (listener) => {\n this._listeners.add(listener);\n if (this._isCancelled) {\n listener();\n }\n return {\n dispose: () => {\n this._listeners.delete(listener);\n }\n };\n }\n };\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n for (const listener of this._listeners) {\n listener();\n }\n }\n }\n dispose() {\n this.cancel();\n this._listeners.clear();\n }\n}\n/**\n * Creates a CancellationToken that is cancelled when the given disposable is disposed.\n */\nfunction cancelOnDispose(disposable) {\n const source = new CancellationTokenSource();\n disposable.add(source);\n return source.token;\n}\n\nexport { CancellationError, CancellationTokenSource, cancelOnDispose };\n//# sourceMappingURL=cancellation.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ConvenientObservable } from './baseObservable.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Represents an efficient observable whose value never changes.\n */\nfunction constObservable(value) {\n return new ConstObservable(value);\n}\nclass ConstObservable extends ConvenientObservable {\n constructor(value) {\n super();\n this.value = value;\n }\n get debugName() {\n return this.toString();\n }\n get() {\n return this.value;\n }\n addObserver(observer) {\n // NO OP\n }\n removeObserver(observer) {\n // NO OP\n }\n log() {\n return this;\n }\n toString() {\n return `Const: ${this.value}`;\n }\n}\n\nexport { constObservable };\n//# sourceMappingURL=constObservable.js.map\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { cancelOnDispose } from '../commonFacade/cancellation.js';\nimport { DisposableStore } from '../../disposables.js';\nimport { autorunWithStoreHandleChanges } from '../reactions/createEffect.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction runOnChange(observable, cb) {\n let _previousValue;\n let _firstRun = true;\n return autorunWithStoreHandleChanges({\n changeTracker: {\n createChangeSummary: () => ({ deltas: [], didChange: false }),\n handleChange: (context, changeSummary) => {\n if (context.didChange(observable)) {\n const e = context.change;\n if (e !== undefined) {\n changeSummary.deltas.push(e);\n }\n changeSummary.didChange = true;\n }\n return true;\n },\n }\n }, (reader, changeSummary) => {\n const value = observable.read(reader);\n const previousValue = _previousValue;\n if (changeSummary.didChange) {\n _previousValue = value;\n // didChange can never be true on the first autorun, so we know previousValue is defined\n cb(value, previousValue, changeSummary.deltas);\n }\n if (_firstRun) {\n _firstRun = false;\n _previousValue = value;\n }\n });\n}\nfunction runOnChangeWithStore(observable, cb) {\n const store = new DisposableStore();\n const disposable = runOnChange(observable, (value, previousValue, deltas) => {\n store.clear();\n cb(value, previousValue, deltas, store);\n });\n return {\n dispose() {\n disposable.dispose();\n store.dispose();\n }\n };\n}\nfunction runOnChangeWithCancellationToken(observable, cb) {\n return runOnChangeWithStore(observable, (value, previousValue, deltas, store) => {\n cb(value, previousValue, deltas, cancelOnDispose(store));\n });\n}\n\nexport { runOnChange, runOnChangeWithCancellationToken, runOnChangeWithStore };\n//# sourceMappingURL=runOnChange.js.map\n"],"names":["globalObservableLogger","addLogger","logger","ComposedLogger","getLogger","globalObservableLoggerFn","setLogObservableFn","fn","logObservable","obs","loggers","observable","location","newCount","info","autorun","change","derived","transaction","DebugLocation","enabled","enable","ofCaller","ofNthCaller","n","Err","l","stack","DebugLocationImpl","parentIdx","lines","parseLine","fileName","line","column","id","stackLine","match","match2","DebugNameData","owner","debugNameSource","referenceFn","target","getDebugName","countPerName","cachedDebugName","data","cached","dbgName","computeDebugName","count","result","self","ownerStr","formatOwner","getFunctionName","key","findKey","obj","value","countPerClassName","ownerId","className","getClassName","ctor","fnSrc","_derived","_setDerivedOpts","_recomputeInitiallyAndOnChange","_setRecomputeInitiallyAndOnChange","recomputeInitiallyAndOnChange","_keepObserved","_setKeepObserved","keepObserved","_debugGetDependencyGraph","_setDebugGetDependencyGraph","debugGetDependencyGraph","ConvenientObservable","reader","fnOrOwner","fnOrUndefined","debugLocation","name","store","handleValue","BaseObservable","observer","len","deleted","hadLogger","toDisposable","BugIndicatingError","message","onBugIndicatingError","error","onUnexpectedError","strictEquals","a","b","DisposableStore","disposable","index","Disposable","t","derivedStateToString","state","Derived","_debugNameData","_computeFn","_changeTracker","_handleLastObserverRemoved","_equalityComparator","d","changeSummary","didChange","emptySet","hadValue","oldValue","delayedStore","o","e","r","_observable","propagateBeginUpdate","observers","shouldReact","wasUpToDate","shouldCallBeginUpdate","newValue","tx","DerivedWithSetter","debugNameData","computeFn","changeTracker","handleLastObserverRemoved","equalityComparator","set","computeFnOrOwner","derivedWithSetter","setter","derivedOpts","options","derivedHandleChanges","derivedWithStore","computeFnOrUndefined","derivedDisposable","autorunStateToString","AutorunObserver","_runFn","createEffect","createEffectOpts","autorunOpts","autorunHandleChanges","autorunWithStoreHandleChanges","autorunWithStore","autorunDelta","handler","_lastValue","lastValue","autorunIterableDelta","getValue","getUniqueIdentifier","v","lastValues","newValues","removedValues","autorunSelfDisposable","ar","disposed","handleBugIndicatingErrorRecovery","err","TransactionImpl","_globalTransaction","globalTransaction","asyncTransaction","subtransaction","_fn","_getDebugName","updatingObservers","i","observableValue","nameOrOwner","initialValue","ObservableValue","_tx","disposableObservableValue","DisposableObservableValue","observableFromEvent","args","event","FromEventObservable","observableFromEventOpts","_getValue","_getTransaction","didRunTransaction","batchEventsGlobally","didSet","observableSignal","debugNameOrOwner","ObservableSignal","_debugName","_owner","observableFromPromise","promise","signalFromObservable","debouncedObservableDeprecated","debounceMs","disposableStore","debouncedObservable","timeout","hasValue","cb","wasEventTriggeredRecently","timeoutMs","KeepAliveObserver","_forceRecompute","_handleValue","derivedObservableWithCache","derivedObservableWithWritableCache","onChange","mapObservableArrayCached","items","map","keySelector","m","ArrayMap","_map","_keySelector","entry","newItems","itemsToRemove","item","consoleObservableLogger","logObservableToConsole","ConsoleObservableLogger","text","consoleTextToArgs","normalText","repeat","styled","formatValue","formatKind","changes","changedObservables","transactionName","styles","firstArg","process","kind","padStr","objToCss","styleObj","styleString","propName","propValue","style","availableLen","formatValueUnsafe","formatArray","formatObject","first","val","entries","str","length","debugNamePostProcessor","Info","formatObservableInfo","indentLevel","alreadyListed","indent","dep","sourceObj","type","dependencies","CancellationError","CancellationTokenSource","listener","cancelOnDispose","source","constObservable","ConstObservable","runOnChange","_previousValue","_firstRun","context","previousValue","runOnChangeWithStore","deltas","runOnChangeWithCancellationToken"],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
class r {
|
|
2
|
+
constructor(e, t) {
|
|
3
|
+
if (this.start = e, this.endExclusive = t, e > t)
|
|
4
|
+
throw new Error(`Invalid range: [${e}, ${t})`);
|
|
5
|
+
}
|
|
6
|
+
static fromTo(e, t) {
|
|
7
|
+
return new r(e, t);
|
|
8
|
+
}
|
|
9
|
+
static ofLength(e) {
|
|
10
|
+
return new r(0, e);
|
|
11
|
+
}
|
|
12
|
+
static ofStartAndLength(e, t) {
|
|
13
|
+
return new r(e, e + t);
|
|
14
|
+
}
|
|
15
|
+
static emptyAt(e) {
|
|
16
|
+
return new r(e, e);
|
|
17
|
+
}
|
|
18
|
+
get isEmpty() {
|
|
19
|
+
return this.start === this.endExclusive;
|
|
20
|
+
}
|
|
21
|
+
get length() {
|
|
22
|
+
return this.endExclusive - this.start;
|
|
23
|
+
}
|
|
24
|
+
delta(e) {
|
|
25
|
+
return new r(this.start + e, this.endExclusive + e);
|
|
26
|
+
}
|
|
27
|
+
deltaStart(e) {
|
|
28
|
+
return new r(this.start + e, this.endExclusive);
|
|
29
|
+
}
|
|
30
|
+
deltaEnd(e) {
|
|
31
|
+
return new r(this.start, this.endExclusive + e);
|
|
32
|
+
}
|
|
33
|
+
contains(e) {
|
|
34
|
+
return this.start <= e && e < this.endExclusive;
|
|
35
|
+
}
|
|
36
|
+
containsRange(e) {
|
|
37
|
+
return this.start <= e.start && e.endExclusive <= this.endExclusive;
|
|
38
|
+
}
|
|
39
|
+
intersects(e) {
|
|
40
|
+
return Math.max(this.start, e.start) < Math.min(this.endExclusive, e.endExclusive);
|
|
41
|
+
}
|
|
42
|
+
intersectsOrTouches(e) {
|
|
43
|
+
return Math.max(this.start, e.start) <= Math.min(this.endExclusive, e.endExclusive);
|
|
44
|
+
}
|
|
45
|
+
intersect(e) {
|
|
46
|
+
const t = Math.max(this.start, e.start), s = Math.min(this.endExclusive, e.endExclusive);
|
|
47
|
+
if (t <= s)
|
|
48
|
+
return new r(t, s);
|
|
49
|
+
}
|
|
50
|
+
join(e) {
|
|
51
|
+
return new r(
|
|
52
|
+
Math.min(this.start, e.start),
|
|
53
|
+
Math.max(this.endExclusive, e.endExclusive)
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
isBefore(e) {
|
|
57
|
+
return this.endExclusive <= e.start;
|
|
58
|
+
}
|
|
59
|
+
isAfter(e) {
|
|
60
|
+
return this.start >= e.endExclusive;
|
|
61
|
+
}
|
|
62
|
+
substring(e) {
|
|
63
|
+
return e.substring(this.start, this.endExclusive);
|
|
64
|
+
}
|
|
65
|
+
slice(e) {
|
|
66
|
+
return e.slice(this.start, this.endExclusive);
|
|
67
|
+
}
|
|
68
|
+
equals(e) {
|
|
69
|
+
return this.start === e.start && this.endExclusive === e.endExclusive;
|
|
70
|
+
}
|
|
71
|
+
toString() {
|
|
72
|
+
return `[${this.start}, ${this.endExclusive})`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
class i {
|
|
76
|
+
constructor(e, t) {
|
|
77
|
+
this.replaceRange = e, this.newText = t;
|
|
78
|
+
}
|
|
79
|
+
static insert(e, t) {
|
|
80
|
+
return new i(r.emptyAt(e), t);
|
|
81
|
+
}
|
|
82
|
+
static replace(e, t) {
|
|
83
|
+
return new i(e, t);
|
|
84
|
+
}
|
|
85
|
+
static delete(e) {
|
|
86
|
+
return new i(e, "");
|
|
87
|
+
}
|
|
88
|
+
get isEmpty() {
|
|
89
|
+
return this.replaceRange.isEmpty && this.newText.length === 0;
|
|
90
|
+
}
|
|
91
|
+
equals(e) {
|
|
92
|
+
return this.replaceRange.equals(e.replaceRange) && this.newText === e.newText;
|
|
93
|
+
}
|
|
94
|
+
toString() {
|
|
95
|
+
return `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
class a {
|
|
99
|
+
static empty = new a([]);
|
|
100
|
+
static single(e) {
|
|
101
|
+
return new a([e]);
|
|
102
|
+
}
|
|
103
|
+
static replace(e, t) {
|
|
104
|
+
return new a([i.replace(e, t)]);
|
|
105
|
+
}
|
|
106
|
+
static insert(e, t) {
|
|
107
|
+
return new a([i.insert(e, t)]);
|
|
108
|
+
}
|
|
109
|
+
static delete(e) {
|
|
110
|
+
return new a([i.delete(e)]);
|
|
111
|
+
}
|
|
112
|
+
replacements;
|
|
113
|
+
constructor(e) {
|
|
114
|
+
let t = -1;
|
|
115
|
+
for (const s of e) {
|
|
116
|
+
if (s.replaceRange.start < t)
|
|
117
|
+
throw new Error(
|
|
118
|
+
`Edits must be disjoint and sorted. Found ${s} after ${t}`
|
|
119
|
+
);
|
|
120
|
+
t = s.replaceRange.endExclusive;
|
|
121
|
+
}
|
|
122
|
+
this.replacements = e;
|
|
123
|
+
}
|
|
124
|
+
get isEmpty() {
|
|
125
|
+
return this.replacements.length === 0;
|
|
126
|
+
}
|
|
127
|
+
apply(e) {
|
|
128
|
+
const t = [];
|
|
129
|
+
let s = 0;
|
|
130
|
+
for (const n of this.replacements)
|
|
131
|
+
t.push(e.substring(s, n.replaceRange.start)), t.push(n.newText), s = n.replaceRange.endExclusive;
|
|
132
|
+
return t.push(e.substring(s)), t.join("");
|
|
133
|
+
}
|
|
134
|
+
inverse(e) {
|
|
135
|
+
const t = [];
|
|
136
|
+
let s = 0;
|
|
137
|
+
for (const n of this.replacements) {
|
|
138
|
+
const l = e.substring(n.replaceRange.start, n.replaceRange.endExclusive);
|
|
139
|
+
t.push(
|
|
140
|
+
i.replace(
|
|
141
|
+
r.ofStartAndLength(n.replaceRange.start + s, n.newText.length),
|
|
142
|
+
l
|
|
143
|
+
)
|
|
144
|
+
), s += n.newText.length - n.replaceRange.length;
|
|
145
|
+
}
|
|
146
|
+
return new a(t);
|
|
147
|
+
}
|
|
148
|
+
equals(e) {
|
|
149
|
+
if (this.replacements.length !== e.replacements.length)
|
|
150
|
+
return !1;
|
|
151
|
+
for (let t = 0; t < this.replacements.length; t++)
|
|
152
|
+
if (!this.replacements[t].equals(e.replacements[t]))
|
|
153
|
+
return !1;
|
|
154
|
+
return !0;
|
|
155
|
+
}
|
|
156
|
+
mapOffset(e) {
|
|
157
|
+
let t = 0;
|
|
158
|
+
for (const s of this.replacements) {
|
|
159
|
+
if (s.replaceRange.start > e)
|
|
160
|
+
break;
|
|
161
|
+
if (s.replaceRange.endExclusive <= e)
|
|
162
|
+
t += s.newText.length - s.replaceRange.length;
|
|
163
|
+
else
|
|
164
|
+
return s.replaceRange.start + t + s.newText.length;
|
|
165
|
+
}
|
|
166
|
+
return e + t;
|
|
167
|
+
}
|
|
168
|
+
toString() {
|
|
169
|
+
return `[${this.replacements.map((e) => e.toString()).join(", ")}]`;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export {
|
|
173
|
+
r as O,
|
|
174
|
+
a as S,
|
|
175
|
+
i as a
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=stringEdit-DzLs4E1d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringEdit-DzLs4E1d.js","sources":["../src/core/offsetRange.ts","../src/core/stringEdit.ts"],"sourcesContent":["export class OffsetRange {\n\tpublic static fromTo(start: number, endExclusive: number): OffsetRange {\n\t\treturn new OffsetRange(start, endExclusive);\n\t}\n\n\tpublic static ofLength(length: number): OffsetRange {\n\t\treturn new OffsetRange(0, length);\n\t}\n\n\tpublic static ofStartAndLength(start: number, length: number): OffsetRange {\n\t\treturn new OffsetRange(start, start + length);\n\t}\n\n\tpublic static emptyAt(offset: number): OffsetRange {\n\t\treturn new OffsetRange(offset, offset);\n\t}\n\n\tconstructor(\n\t\tpublic readonly start: number,\n\t\tpublic readonly endExclusive: number,\n\t) {\n\t\tif (start > endExclusive) {\n\t\t\tthrow new Error(`Invalid range: [${start}, ${endExclusive})`);\n\t\t}\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.start === this.endExclusive;\n\t}\n\n\tget length(): number {\n\t\treturn this.endExclusive - this.start;\n\t}\n\n\tpublic delta(offset: number): OffsetRange {\n\t\treturn new OffsetRange(this.start + offset, this.endExclusive + offset);\n\t}\n\n\tpublic deltaStart(offset: number): OffsetRange {\n\t\treturn new OffsetRange(this.start + offset, this.endExclusive);\n\t}\n\n\tpublic deltaEnd(offset: number): OffsetRange {\n\t\treturn new OffsetRange(this.start, this.endExclusive + offset);\n\t}\n\n\tpublic contains(offset: number): boolean {\n\t\treturn this.start <= offset && offset < this.endExclusive;\n\t}\n\n\tpublic containsRange(other: OffsetRange): boolean {\n\t\treturn this.start <= other.start && other.endExclusive <= this.endExclusive;\n\t}\n\n\tpublic intersects(other: OffsetRange): boolean {\n\t\treturn Math.max(this.start, other.start) < Math.min(this.endExclusive, other.endExclusive);\n\t}\n\n\tpublic intersectsOrTouches(other: OffsetRange): boolean {\n\t\treturn Math.max(this.start, other.start) <= Math.min(this.endExclusive, other.endExclusive);\n\t}\n\n\tpublic intersect(other: OffsetRange): OffsetRange | undefined {\n\t\tconst start = Math.max(this.start, other.start);\n\t\tconst end = Math.min(this.endExclusive, other.endExclusive);\n\t\tif (start <= end) {\n\t\t\treturn new OffsetRange(start, end);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic join(other: OffsetRange): OffsetRange {\n\t\treturn new OffsetRange(\n\t\t\tMath.min(this.start, other.start),\n\t\t\tMath.max(this.endExclusive, other.endExclusive),\n\t\t);\n\t}\n\n\tpublic isBefore(other: OffsetRange): boolean {\n\t\treturn this.endExclusive <= other.start;\n\t}\n\n\tpublic isAfter(other: OffsetRange): boolean {\n\t\treturn this.start >= other.endExclusive;\n\t}\n\n\tpublic substring(str: string): string {\n\t\treturn str.substring(this.start, this.endExclusive);\n\t}\n\n\tpublic slice<T>(arr: readonly T[]): T[] {\n\t\treturn arr.slice(this.start, this.endExclusive);\n\t}\n\n\tpublic equals(other: OffsetRange): boolean {\n\t\treturn this.start === other.start && this.endExclusive === other.endExclusive;\n\t}\n\n\tpublic toString(): string {\n\t\treturn `[${this.start}, ${this.endExclusive})`;\n\t}\n}\n","import { OffsetRange } from './offsetRange.js';\n\nexport class StringReplacement {\n\tpublic static insert(offset: number, text: string): StringReplacement {\n\t\treturn new StringReplacement(OffsetRange.emptyAt(offset), text);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringReplacement {\n\t\treturn new StringReplacement(range, text);\n\t}\n\n\tpublic static delete(range: OffsetRange): StringReplacement {\n\t\treturn new StringReplacement(range, '');\n\t}\n\n\tconstructor(\n\t\tpublic readonly replaceRange: OffsetRange,\n\t\tpublic readonly newText: string,\n\t) {}\n\n\tget isEmpty(): boolean {\n\t\treturn this.replaceRange.isEmpty && this.newText.length === 0;\n\t}\n\n\tpublic equals(other: StringReplacement): boolean {\n\t\treturn this.replaceRange.equals(other.replaceRange) && this.newText === other.newText;\n\t}\n\n\tpublic toString(): string {\n\t\treturn `${this.replaceRange} -> ${JSON.stringify(this.newText)}`;\n\t}\n}\n\nexport class StringEdit {\n\tpublic static readonly empty = new StringEdit([]);\n\n\tpublic static single(replacement: StringReplacement): StringEdit {\n\t\treturn new StringEdit([replacement]);\n\t}\n\n\tpublic static replace(range: OffsetRange, text: string): StringEdit {\n\t\treturn new StringEdit([StringReplacement.replace(range, text)]);\n\t}\n\n\tpublic static insert(offset: number, text: string): StringEdit {\n\t\treturn new StringEdit([StringReplacement.insert(offset, text)]);\n\t}\n\n\tpublic static delete(range: OffsetRange): StringEdit {\n\t\treturn new StringEdit([StringReplacement.delete(range)]);\n\t}\n\n\tpublic readonly replacements: readonly StringReplacement[];\n\n\tconstructor(replacements: readonly StringReplacement[]) {\n\t\tlet lastEndEx = -1;\n\t\tfor (const replacement of replacements) {\n\t\t\tif (replacement.replaceRange.start < lastEndEx) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Edits must be disjoint and sorted. Found ${replacement} after ${lastEndEx}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlastEndEx = replacement.replaceRange.endExclusive;\n\t\t}\n\t\tthis.replacements = replacements;\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.replacements.length === 0;\n\t}\n\n\tpublic apply(base: string): string {\n\t\tconst parts: string[] = [];\n\t\tlet pos = 0;\n\t\tfor (const r of this.replacements) {\n\t\t\tparts.push(base.substring(pos, r.replaceRange.start));\n\t\t\tparts.push(r.newText);\n\t\t\tpos = r.replaceRange.endExclusive;\n\t\t}\n\t\tparts.push(base.substring(pos));\n\t\treturn parts.join('');\n\t}\n\n\tpublic inverse(original: string): StringEdit {\n\t\tconst edits: StringReplacement[] = [];\n\t\tlet offset = 0;\n\t\tfor (const r of this.replacements) {\n\t\t\tconst oldText = original.substring(r.replaceRange.start, r.replaceRange.endExclusive);\n\t\t\tedits.push(\n\t\t\t\tStringReplacement.replace(\n\t\t\t\t\tOffsetRange.ofStartAndLength(r.replaceRange.start + offset, r.newText.length),\n\t\t\t\t\toldText,\n\t\t\t\t),\n\t\t\t);\n\t\t\toffset += r.newText.length - r.replaceRange.length;\n\t\t}\n\t\treturn new StringEdit(edits);\n\t}\n\n\tpublic equals(other: StringEdit): boolean {\n\t\tif (this.replacements.length !== other.replacements.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (let i = 0; i < this.replacements.length; i++) {\n\t\t\tif (!this.replacements[i].equals(other.replacements[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic mapOffset(offset: number): number {\n\t\tlet delta = 0;\n\t\tfor (const r of this.replacements) {\n\t\t\tif (r.replaceRange.start > offset) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (r.replaceRange.endExclusive <= offset) {\n\t\t\t\tdelta += r.newText.length - r.replaceRange.length;\n\t\t\t} else {\n\t\t\t\t// offset is inside a replaced range — map to end of replacement\n\t\t\t\treturn r.replaceRange.start + delta + r.newText.length;\n\t\t\t}\n\t\t}\n\t\treturn offset + delta;\n\t}\n\n\tpublic toString(): string {\n\t\treturn `[${this.replacements.map(r => r.toString()).join(', ')}]`;\n\t}\n}\n"],"names":["OffsetRange","start","endExclusive","length","offset","other","end","str","arr","StringReplacement","replaceRange","newText","text","range","StringEdit","replacement","replacements","lastEndEx","base","parts","pos","r","original","edits","oldText","i","delta"],"mappings":"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"}
|